Операционные системы

Кафедра программной инженерии

Специальность: Прикладная математика и информатика

Преподаватель: Линев А.В.

Освоение дисциплины «Операционные системы» преследует следующие цели:

  • изучение принципов построения и функционирования операционных систем;
  • изучение базовых методов и алгоритмов используемых различными подсистемами ОС;
  • формирование у слушателей целостного представления об условиях выполнения прикладных программ;
  • изучение особенностей работы многопроцессных и многопоточных приложений;
  • получение навыков разработки программ для различных операционных сред.

Содержание

  1. Основные понятия и определения теории операционных систем. Цели и задачи курса. История появления и направления эволюции ОС. Функции ОС. Классификации ОС (по назначению, по режиму обработки задач, по особенностям архитектуры, по способам взаимодействия с пользователем). Дополнительные критерии оценки ОС. Недетализированные примеры архитектур (Windows семейства NT, UNIX).  Ресурс, классификация ресурсов. Операционная среда (прикладная среда). Процесс. Поток. Диаграмма состояний потока. Создание и завершение процесса. Создание и завершение потока.
  2. Недетализованные модели объектов аппаратного уровня. Способы адресации памяти и соответствующие им управляющие структуры; линейная; сегментная; страничная; сегментно-страничная. Многозадачный режим работы процессора. Контекст задачи; переключение задач; уровни привилегий; передача управления между уровнями привилегий. Прерывания и их обработка.
  3. Управление ресурсом «Центральный процессор». Виды планирования. Критерии оценки алгоритмов планирования. Вытесняющие и невытесняющие алгоритмы. Алгоритмы, использующие приоритеты. Алгоритмы краткосрочного планирования FIFO, SJN, SRT, RR, MLFQ. Алгоритмы планирования Windows и UNIX/Linux.
  4. Синхронизация выполнения потоков/процессов. Критические ресурсы и критические секции. Задача взаимного исключения. Использование запрета прерываний. Алгоритм Деккера (Петерсона), алгоритм булочной. Активное ожидание: использование операций "проверка и установка", "обмен". Семафоры. Мьютексы. Мониторы, условные переменные. Задачи "поставщик-потребитель", "читатели-писатели", "Обедающие философы". Взаимоблокировка (тупик). Необходимые условия возникновения тупика. Предотвращение тупиков. Избегание тупиков. Алгоритм банкира. Граф процесс-ресурс. Редукция. Устранение тупиков.
  5. Передача данных между потоками/процессами. Типы механизмов передачи. Разделяемая память. Потоковая передача. Очереди сообщений.
  6. Управление ресурсом «оперативная память». Простое непрерывное распределение памяти. Схема с разделами фиксированного размера. Схема с разделами переменного  размера. Использование ВАП на основе страничного преобразования. Стратегии выборки, размещения, замещения. Алгоритмы замещения областей памяти: Biledy, Random, FIFO, LRU, NFU, Second chance, Clock. Внешняя и внутренняя фрагментация, перемещаемость программ, оверлеи, рабочее множество, своппинг.
  7. Примеры механизмов межпоточного (межпроцессного) взаимодействия в UNIX и Win32/Win64. Объекты синхронизации в Windows. Реализации семафоров, мьютексов, очередей сообщений, разделяемой памяти в Windows. Реализации неименованных и именованных каналов, сигналов, семафоров, мьютексов, очередей сообщений, разделяемой памяти в UNIX.
  8. Долгосрочное хранение данных. Уровни архитектуры подсистемы управления файлами. Типы объектов файловых систем в UNIX. Структура адресного пространства устройств долговременного хранения, временные характеристики устройств. Структура UNIX FS. Атрибуты суперблока. Атрибуты i-node. Хранение информации о размещении данных файла в UNIX FS. Структура каталога в UNIX FS. UNIX Fast File System (FFS). Journalled FS, Log-Structured FS. Структуры, используемые ядром для обеспечения доступа процессов к файлам. Атрибуты записей. Операции open() и close().

Лабораторный практикум

  1. Процессы и операции над ними.
  2. Потоки и операции над ними.
  3. Именованные и неименованные каналы.
  4. Файлы, отображаемый в память.
  5. Задача Читатели-Писатели.
  6. Алгоритм банкира.

 

Литература

а) основная литература:

  1. Таненбаум Э. Современные операционные системы. 2-е изд. СПб.: Питер, 2002.
  2. Карпов В.Е., Коньков К.А. Введение в операционные системы. Курс лекций. 2-е изд. М.: ИНТУИТ.РУ, 2005.
  3. Карпов В.Е., Коньков К.А. Введение в операционные системы. Курс лекций. (Электронный источник – http://cs.mipt.ru/docs/courses/osstud/os.html)
  4. Рихтер Дж. Windows для профессионалов (Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows). 4-е изд. М.: Русская Редакция; пер. с англ. – СПб.: Питер, 2001.

б) дополнительная литература:

  1. Рихтер Дж., Кларк Дж. Программирование серверных приложений для Microsoft Windows 2000. М.: Русская Редакция; пер. с англ. – СПб.: Питер, 2001.
  2. Вильямс А. Системное программирование в Windows 2000 для профессионалов. СПб.: Питер, 2001.
  3. Робачевский А. М. Операционная система UNIX. СПб.: BHV - Санкт-Петербург, 1998.
  4. Соломон Д., Руссинович М. Внутреннее устройство Microsoft Windows 2000. М.: Русская Редакция; пер. с англ. - СПб: Питер, 2001.
  5. Love R. Linux Kernel Development. SAMS, 2003.
  6. Максвелл С. Ядро Linux в комментариях. Киев: Издательство «ДиаСофт», 2000.

в) программное обеспечение и Интернет-ресурсы:

  1. Gorman M. Understanding The Linux Virtual Memory Manager. 2003 (Электронный источник – http://www.csn.ul.ie/~mel/projects/vm/guide/html/understand/).
  2. Rusling D. The Linux Kernel (Электронный источник – http://www.linuxdoc.org/LDP/tlk/).
  3. Marshall A.D.. Programming in C UNIX System Calls and Subroutines using C. 1999. (Электронный источник – http://www.cs.cf.ac.uk/Dave/C/CE.html).
  4. Cross-Referencing Linux (Электронный источник – http://lxr.linux.no)
  5. The Linux Kernel Archives (www.kernel.org)

Отчетность

  • Семестр 4: Экз