Устройство ядра Linux (НОВ) 2024
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ас-систентов и студентов образовательной программы «Системное программирование»,«Программная инженерия», изучающих дисциплину «Конструирование ядра операционной системы».
Содержание
Команда курса
- ______, руководитель курса, лекции, семинарист
- ______, семинарист
Цель курса
Целью освоения дисциплины является изучение основных принципов внутреннего устройства яд-ра операционной системы и вспомогательного ПО для его запуска, механизмов аппаратной под-держки работы ядра, начальной инициализации платформы и периферийных устройств, интерфей-сов базового программного обеспечения (BIOS) на основе современных спецификаций ACPI, SMBIOS, UEFI и пр., а также получение навыков проектирования и программирования компо-нентов ядра операционной системы и отладки программ в различных режимах работы процессо-ра.
Задачи курса
- Освоение студентами базовых современных достижений в области проектирования опера-ционных систем и базового программного обеспечения;
- Формирование практических навыков проектирования и программирования компонентов ядра и загрузчика операционной системы и отладки программ в различных режимах рабо-ты процессора.
- В результате освоения дисциплины студент должен обладать следующими компе-тенциями:
Универсальные компетенции:
- Способен рефлексировать (оценивать и перерабатывать) освоенные научные методы и способы деятельности (УК-1).
- Способен создавать новые теории, изобретать новые способы и инструменты профессио-нальной деятельности (УК-2).
- Способен к самостоятельному освоению новых методов исследований, изменению науч-ного и производственного профиля своей деятельности (УК-3).
- • Способен анализировать, верифицировать, оценивать полноту информации в ходе профес-сиональной деятельности, при необходимости восполнять и синтезировать недостающую информацию (УК-6).
Общепрофессиональные компетенции:
- Способен разрабатывать оригинальные алгоритмы и программные средства, в том числе с использованием современных интеллектуальных технологий, для решения профессио-нальных задач (ОПК-2).
- Способен разрабатывать и модернизировать программное систем (ОПК-5).
Профессиональные компетенции:
- Способен проводить анализ, синтез, оптимизацию решений с целью обеспечения качества объектов профессиональной деятельности (ПК-2).
- Способен планировать, управлять и контролировать выполнение требований заказчика к программному продукту в процессе разработки (ПК-4).
- Способен выполнять проекты в области программной инженерии на основе системного подхода, строить и использовать модели для описания и прогнозирования различных яв-лений, осуществлять их качественный и количественный анализ (ПК-6).
- Способен оценить и выбрать методологию проектирования объектов профессиональной деятельности (ПК-8).
- Способен применять современные технологии разработки программных комплексов с ис-пользованием автоматизированных систем планирования и управления, осуществлять контроль качества разрабатываемых программных продуктов (ПК-9).
* Так же изучение данной дисциплины базируется на знаниях, полученных студентами при освоении учеб-ных дисциплин:
- «Дискретная математика»,
- «Программирование»,
- «Построение и анализ алгоритмов»,
- «Архитектура вычислительных систем»,
- «Операционные системы».
План курса
- Курс рассчитан на 64 часа аудиторной нагрузки, из них 24 часов лекций и 40 часов практи-ческих занятий, общим объемом 5 зачетных единиц (190 часов).
- План курса ссылка https://docs.google.com/spreadsheets/d/1HydWJV8y1LIwH-CAcba3NZ0U6uqRl1StP70VsHNjQrM/edit?usp=sharing
Задачи курса
- Освоение студентами базовых современных достижений в области проектирования опера-ционных систем и базового программного обеспечения;
- Формирование практических навыков проектирования и программирования компонентов ядра и загрузчика операционной системы и отладки программ в различных режимах рабо-ты процессора.
Критерии получения оценки
- В рамках курса слушателям предлагается выполнить 12 лабораторных работ. Каждая ла-бораторная работа сдаётся преподавателю или ассистенту посредством демонстрации результатов и устного ответа на вопросы. За сдачу лабораторных работ в срок начисляются баллы (максимум 33 балла). Максимальное количество начисленных баллов за лабораторную работу составляет от 1 до 4 в зависимости от сложности лабораторной работы.
Домашняя работа заключается в выполнении индивидуального задания, которое можно получить после сдачи 9-й лабораторной работы. Задание состоит из нескольких частей (не ме-нее 2), за выполнение каждой из которых начисляются баллы (максимум 42 балла). Задание мо-жет предназначаться как для индивидуального выполнения, так и для выполнения в группе. В случае выполнения задания в группе некоторые части задания засчитываются всем участникам группы, а остальные индивидуальны для одного из участников.
Итоговый контроль по дисциплине
Проверка качества освоения дисциплины производится в форме письменного экзамена. Письменный экзамен проводится в форме ответов на вопросы экзаменационного билета. Экзаме-национный билет содержит два вопроса из перечня вопросов к экзамену. За ответ на вопросы на экзамене начисляются баллы (максим 25 баллов). На подготовку ответа выделяется 4 часа.
Важные ссылки
* 1.1 Базовый учебник 1.Д.В. Ефремов, Н.Ю. Комаров, А.В. Хорошилов. "Конструирование ядра операционной системы", Издательский отдел факультета ВМК МГУ имени М.В. Ломоносова, Москва, 2015. ISBN: 978-5-89407-549-5 * 1.2О Oсновная литература
- 1.Э. Таненбаум “Архитектура компьютера”, Питер, 2012 г.
- 2.Э. Таненбаум “Современные операционные системы”, Питер, 2011 г.
- 3.Э. Таненбаум “Операционные системы. Разработка и реализация”, Питер, 2006 г.
- 4.А. Робачевский, С. Немнюгин, О. Стесик «Операционная система UNIX», БХВ Санкт-Петербург, 2010 г.
Дополнительная литература
- 1.C. A. R. Hoare, Monitors: An Operating System Structuring Concept. Communications of the ACM, 17(10):549--557, 1974.
- 2.Thomas W. Doeppner “Operating Systems In Depth: Design and Programming” Wiley, 2010
- 3.Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman. “Linux Device Drivers”.
- 4.Ellen Siever, Stephen Figgins, Robert Love, Arnold Robbins. “Linux in a Nutshell”. O'Relly Media, 2009.
- 5.Скотт Шакон. «Про Git». Apress. Перевод на русский. (http://git-scm.com/book/ru).
- 6.Веб-страница дисциплины: http://forge.ispras.ru/projects/oscourse-hse-YEAR/wiki
- 7.Unified Extensible Firmware Interface (UEFI) Specification (2.8A).
- 8.Advanced Configuration and Power Interface (ACPI) Specification (6.3).
- 9.ISO/IEC 9899:2018 Information technology — Programming languages — C.
- 10.IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture. Basic 80x86 architecture and programming environment. http://developer.intel.com.
- 11.IA-32 Intel Architecture Software Developer's Manual Volume 3A: System Programming Guide. Operating system support, including segmentation, paging, tasks, interrupt and exception handling. http://developer.intel.com.
- 12.DWARF Debugging Information Format Committee. DWARF Debugging Information Format. Version 4.
- 13.IA-PC HPET (High Precision Event Timers) Specification (1.0a).
- 14.Tool Interface Standard Executable and Linking Format (ELF) Specification Version 1.2.
Рекомендации для самостоятельной работы студентов
- Самостоятельная работа является важным элементом в успешном освоении курса. Вне аудиторных занятий рекомендуется изучать вспомогательные материалы, прикладываемые к ла-бораторным работам, дополнительную литературу и выполнять задание лабораторной работы, если аудиторного времени для её выполнения оказалось недостаточно или были обнаружены ошибки при прохождении тестов или сдаче лабораторной работы.