Операционные системы
Специальность: Прикладная математика и информатика
Преподаватель: Линев А.В.
Освоение дисциплины «Операционные системы» преследует следующие цели:
- изучение принципов построения и функционирования операционных систем;
- изучение базовых методов и алгоритмов используемых различными подсистемами ОС;
- формирование у слушателей целостного представления об условиях выполнения прикладных программ;
- изучение особенностей работы многопроцессных и многопоточных приложений;
- получение навыков разработки программ для различных операционных сред.
Содержание
- Основные понятия и определения теории операционных систем. Цели и задачи курса. История появления и направления эволюции ОС. Функции ОС. Классификации ОС (по назначению, по режиму обработки задач, по особенностям архитектуры, по способам взаимодействия с пользователем). Дополнительные критерии оценки ОС. Недетализированные примеры архитектур (Windows семейства NT, UNIX). Ресурс, классификация ресурсов. Операционная среда (прикладная среда). Процесс. Поток. Диаграмма состояний потока. Создание и завершение процесса. Создание и завершение потока.
- Недетализованные модели объектов аппаратного уровня. Способы адресации памяти и соответствующие им управляющие структуры; линейная; сегментная; страничная; сегментно-страничная. Многозадачный режим работы процессора. Контекст задачи; переключение задач; уровни привилегий; передача управления между уровнями привилегий. Прерывания и их обработка.
- Управление ресурсом «Центральный процессор». Виды планирования. Критерии оценки алгоритмов планирования. Вытесняющие и невытесняющие алгоритмы. Алгоритмы, использующие приоритеты. Алгоритмы краткосрочного планирования FIFO, SJN, SRT, RR, MLFQ. Алгоритмы планирования Windows и UNIX/Linux.
- Синхронизация выполнения потоков/процессов. Критические ресурсы и критические секции. Задача взаимного исключения. Использование запрета прерываний. Алгоритм Деккера (Петерсона), алгоритм булочной. Активное ожидание: использование операций "проверка и установка", "обмен". Семафоры. Мьютексы. Мониторы, условные переменные. Задачи "поставщик-потребитель", "читатели-писатели", "Обедающие философы". Взаимоблокировка (тупик). Необходимые условия возникновения тупика. Предотвращение тупиков. Избегание тупиков. Алгоритм банкира. Граф процесс-ресурс. Редукция. Устранение тупиков.
- Передача данных между потоками/процессами. Типы механизмов передачи. Разделяемая память. Потоковая передача. Очереди сообщений.
- Управление ресурсом «оперативная память». Простое непрерывное распределение памяти. Схема с разделами фиксированного размера. Схема с разделами переменного размера. Использование ВАП на основе страничного преобразования. Стратегии выборки, размещения, замещения. Алгоритмы замещения областей памяти: Biledy, Random, FIFO, LRU, NFU, Second chance, Clock. Внешняя и внутренняя фрагментация, перемещаемость программ, оверлеи, рабочее множество, своппинг.
- Примеры механизмов межпоточного (межпроцессного) взаимодействия в UNIX и Win32/Win64. Объекты синхронизации в Windows. Реализации семафоров, мьютексов, очередей сообщений, разделяемой памяти в Windows. Реализации неименованных и именованных каналов, сигналов, семафоров, мьютексов, очередей сообщений, разделяемой памяти в UNIX.
- Долгосрочное хранение данных. Уровни архитектуры подсистемы управления файлами. Типы объектов файловых систем в UNIX. Структура адресного пространства устройств долговременного хранения, временные характеристики устройств. Структура UNIX FS. Атрибуты суперблока. Атрибуты i-node. Хранение информации о размещении данных файла в UNIX FS. Структура каталога в UNIX FS. UNIX Fast File System (FFS). Journalled FS, Log-Structured FS. Структуры, используемые ядром для обеспечения доступа процессов к файлам. Атрибуты записей. Операции open() и close().
Лабораторный практикум
- Процессы и операции над ними.
- Потоки и операции над ними.
- Именованные и неименованные каналы.
- Файлы, отображаемый в память.
- Задача Читатели-Писатели.
- Алгоритм банкира.
Литература
а) основная литература:
- Таненбаум Э. Современные операционные системы. 2-е изд. СПб.: Питер, 2002.
- Карпов В.Е., Коньков К.А. Введение в операционные системы. Курс лекций. 2-е изд. М.: ИНТУИТ.РУ, 2005.
- Карпов В.Е., Коньков К.А. Введение в операционные системы. Курс лекций. (Электронный источник – http://cs.mipt.ru/docs/courses/osstud/os.html)
- Рихтер Дж. Windows для профессионалов (Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows). 4-е изд. М.: Русская Редакция; пер. с англ. – СПб.: Питер, 2001.
б) дополнительная литература:
- Рихтер Дж., Кларк Дж. Программирование серверных приложений для Microsoft Windows 2000. М.: Русская Редакция; пер. с англ. – СПб.: Питер, 2001.
- Вильямс А. Системное программирование в Windows 2000 для профессионалов. СПб.: Питер, 2001.
- Робачевский А. М. Операционная система UNIX. СПб.: BHV - Санкт-Петербург, 1998.
- Соломон Д., Руссинович М. Внутреннее устройство Microsoft Windows 2000. М.: Русская Редакция; пер. с англ. - СПб: Питер, 2001.
- Love R. Linux Kernel Development. SAMS, 2003.
- Максвелл С. Ядро Linux в комментариях. Киев: Издательство «ДиаСофт», 2000.
в) программное обеспечение и Интернет-ресурсы:
- Gorman M. Understanding The Linux Virtual Memory Manager. 2003 (Электронный источник – http://www.csn.ul.ie/~mel/projects/vm/guide/html/understand/).
- Rusling D. The Linux Kernel (Электронный источник – http://www.linuxdoc.org/LDP/tlk/).
- Marshall A.D.. Programming in C UNIX System Calls and Subroutines using C. 1999. (Электронный источник – http://www.cs.cf.ac.uk/Dave/C/CE.html).
- Cross-Referencing Linux (Электронный источник – http://lxr.linux.no)
- The Linux Kernel Archives (www.kernel.org)
Отчетность
- Семестр 4: Экз