- •Введение
- •Требования к содержанию лекций
- •Организация лабораторного практикума
- •Программа лабораторного практикума
- •Лабораторная работа 1. Краткосрочное планирование задач
- •Лабораторная работа 2. Замещение областей памяти
- •Лабораторная работа 3. Синхронизация процессов/потоков
- •Лабораторная работа 5. Файловые системы
- •Литература
- •Основные понятия и определения
- •Распределение ресурса «центральный процессор»
- •Процесс и поток – типы ресурсов операционной системы
- •Классификация ОС по признаку поддержки процессов и потоков
- •1. Однозадачные ОС
- •2. Многозадачные ОС без поддержки многопоточности
- •3. Многозадачные ОС с поддержкой многопоточности
- •Реализация многопоточности внутри программы пользователя
- •Состояния потока
- •Дескрипторы процессов и потоков
- •Операции над процессами
- •1. Создание процесса
- •2. Завершение процесса
- •Операции над потоками
- •1. Создание потока
- •2. Завершение потока
- •Планирование
- •Модель поведения процесса с одним потоком
- •Критерии оценки алгоритмов планирования
- •Алгоритмы планирования в системах пакетной обработки данных
- •«Кратчайшая задача - первая» (Shortest Job First, SJF)
- •«Наименьшее оставшееся время выполнения»
- •Алгоритмы планирования в интерактивных системах
- •«Циклическое планирование» (Round Robin, RR)
- •«Приоритетное планирование»
- •«Самый короткий поток - следующий»
- •«Гарантированное планирование»
- •Лотерейное планирование
- •Планирование с использованием многоуровневых очередей
- •Алгоритм планирования Windows NT
- •Алгоритм планирования UNIX
- •Алгоритм планирования UNIX System V Release 4
- •Алгоритм планирования Linux (версия ядра 2.2 и ниже)
- •Заключение
- •Управление памятью
- •Архитектура оперативной памяти
- •Способ описания физической памяти
- •Алгоритм обеспечения пространственного мультиплексирования
- •Схема с фиксированными разделами
- •Оверлейная структура
- •Свопинг
- •Схема с переменными разделами
- •Общие вопросы управления страничной памятью
- •Алгоритмы замещения страниц
- •Оптимальный алгоритм
- •Алгоритм FIFO - Выталкивание первой пришедшей страницы
- •Алгоритм Second-Chance - Вторая попытка
- •Алгоритм «часы»
- •Заключение
- •Взаимодействие потоков – передача данных и синхронизация
- •Взаимодействие потоков
- •Критическая секция
- •Задача взаимного исключения
- •Семафоры
- •Тупики
- •Синхронизирующие объекты ОС
- •Сигналы
- •Обмен сообщениями (message passing) (Хоар, 1978 год)
- •Реализация взаимоисключений
- •Алгоритм Петерсона
- •Алгоритм булочной (Bakery algorithm)
- •Аппаратная поддержка взаимоисключений
- •Команда Test-and-Set (Проверить и присвоить 1)
- •Команда Swap (Обменять значения)
- •Классические задачи взаимодействия потоков
- •Задача "Производитель-потребитель"
- •Задача "Читатели-писатели"
- •Задача "Обедающие философы"
- •Проблема спящего брадобрея
- •Передача данных между взаимодействующими потоками
- •Архитектура файловой системы
- •Файлы с точки зрения пользователя
- •Типы объектов файловой системы
- •Имена объектов файловой системы
- •Операции над файлами
- •Директории – логическая структура файлового архива
- •Операции над директориями
- •Пользовательский интерфейс системы управления файлами
- •Виртуальная Файловая Система
- •Принцип работы
- •Структура VFS
- •Типы объектов в VFS
- •Символьные связи (мягкие ссылки)
- •Именованные конвейеры (именованные каналы)
- •Реализация VFS
- •Лабораторная работа 1. Краткосрочное планирование задач
- •Симулятор многозадачной системы
- •Модель эксперимента
- •Архитектура программной лаборатории
- •Проведение эксперимента
- •Выполнение лабораторной работы
- •Архитектура планировщика в Linux (Ядро 2.4.18)
- •Очередь процессов
- •Кванты времени центрального процессора
- •Выбор процесса на исполнение
- •Вычисление эффективного приоритета и размера кванта
- •Вытеснение процесса
- •Изменение алгоритма планирования
- •Компиляция и установка ядра Linux
- •Литература по лабораторной работе 1
- •Лабораторная работа 2. Замещение областей памяти
- •Симулятор многозадачной системы
- •Управление памятью в Linux (ядро 2.4.18)
- •Описание физической памяти в Linux
- •Узлы
- •Зоны
- •Отметки уровня воды (watermarks)
- •Страницы
- •Адресное пространство процесса
- •Страничные сбои
- •Выделение памяти по запросу
- •Подкачка по запросу
- •Демон выгрузки страниц (kswapd)
- •Кэш страниц
- •Добавление страниц в кэш страниц
- •Заполнения списка «холодных» страниц
- •Стратегия замещения страниц
- •Изменение стратегии замещения
- •Литература по лабораторной работе 2
- •Механизмы межпроцессного взаимодействия ОС UNIX
- •Семафоры.
- •Очереди сообщений.
- •Работа с разделяемой памятью.
- •Механизмы межпроцессного взаимодействия ОС Windows
- •Wait-функции
- •События
- •Ожидаемые таймеры
- •Семафоры
- •Мьютексы
- •Литература по лабораторным работам 3-4
- •Лабораторная работа 5. Файловые системы
- •Предлагаемые к реализации файловые системы
- •Файловая система 1
- •Файловая система 2
- •Файловая система 3
- •Симулятор работы с файловой системой
- •Постановка задачи
- •Операции над файлами
- •Операции над директориями
- •Требования к лабораторной работе
- •Архитектура программной лаборатории
- •Обзор архитектуры модуля поддержки файловой системы в Linux
- •Модули драйвера файловой системы Minix
- •Описание суперблока файловой системы
- •Описание индексного дескриптора (inode)
- •Основной файл заголовков
- •Исходные тексты функций работы с индексным дескриптором
- •Исходные тексты функций работы с объектами ФС разных типов
- •Другие модули
- •Реализация драйвера файловой системы
- •Литература по лабораторной работе 5
- •Литература
- •Дополнительная литература
Лабораторный практикум по курсу "Операционные системы"
-Накладные расходы – отношение времени центрального процессора, использованного на работу алгоритма планировщика и переключения контекстов ко времени работы потоков пользовательских процессов.
-Масштабируемость – рост накладных расходов при увеличении числа процессов/потоков
всистеме должен происходить гладко.
2. Системы пакетной обработки данных.
-Пропускная способность – количество задач, выполненных за час (среднее число процессов, которые были созданы и завершили свое выполнение за единицу времени).
-Оборотное время – статистически усредненное время от момента создания процесса до его завершения. Характеризует время, которое среднестатистический пользователь ожидает выходных данных. Отметим, что прямая связь данного параметра с предыдущим отсутствует.
-Эффективность – определяется степенью загрузки центрального процессора. Цель – загрузить центральный процессор работой на все 100% рабочего времени.
3. Интерактивные системы.
-Время отклика – время между введением команды и получением результата, иначе, время, которое требуется потоку для ответа на запрос пользователя. Первоочередная обработка всех интерактивных запросов рассматривается как хорошее обслуживание.
-Время ожидания – среднестатистическое время, которое проводят потоки в состоянии «готов к исполнению» и задания в очереди для загрузки.
-Соразмерность – соответствие реального времени выполнения операций с представлениями пользователя о требуемом для этого времени. Данных параметр является число субъективно-психологическим и зависит от конкретного пользователя, но имеет немаловажное значение при рыночных реалиях.
4. Системы реального времени.
-Окончание обслуживания к сроку – строго говоря, это не является параметром оценки системы реального времени, поскольку в случае невыполнения данного требования система не может быть отнесена к рассматриваемому классу.
-Предсказуемость – одно и то же задание должно выполняться в течение сопоставимых сроков. На практике достаточно часто для систем реального времени указывают максимальное время выполнения различных внутренних операций ядра системы и исполнения некоторого множества системных вызовов.
Алгоритмы планирования в системах пакетной обработки данных
«Первым пришел – первым обслужен» (First-Come - First-Served, FCFS)
Невытесняющий алгоритм «первым пришел – первым обслужен» является самым простым алгоритмом планирования. Потокам предоставляется доступ к процессору в том порядке, в котором они его запрашивают. Чаще всего формируется единая очередь ждущих потоков. Как только появляется первая задача, она немедленно запускается и ее первичный поток работает столько, сколько необходимо. Остальные появляющиеся потоки образуют очередь в порядке их возникновения. Когда текущий поток блокируется, запускается следующий в очереди, а когда блокировка снимается, поток становится в конец очереди.
Учебно-исследовательская лаборатория «Информационные технологии» 27
Лабораторный практикум по курсу "Операционные системы"
Основным преимуществом данного алгоритма является легкость его понимания и программирования. Все потоки в состоянии готовности к выполнению контролируются с использованием одной структурой данных – очереди.
Список еще не |
|
|
|
|
|
H |
|
I |
|
|
запущенных потоков |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Список потоков в состоянии |
|
|
|
|
|
|
|
|
|
|
A |
|
|
B |
|
C |
|
D |
|
|
|
«готов к выполнению» |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
текущий |
следующий |
|
|
|
|
|
|
|||
|
E |
|
F |
|
G |
|||||
поток |
|
поток |
|
|
|
|||||
|
|
|
|
|
|
|
||||
Потоки в состоянии ожидания
Рис. 13 Очередь потоков при планировании
Однако представим, что у нас есть два потока; первый в цикле производит вычисления в течение 1 с и потом пишет число в файл, второй записывает в цикле в файл последовательность из 1000 небольших блоков. Если позволить сначала выполниться второму потоку, и затем запустить первый, то время работы второго потока будет составлять считанные секунды. Если же запустить потоки вместе, то второй поток после каждой операции записи будет ждать 1 с, пока выполняется первый поток, и его общее время выполнения будет 1000 с.
«Кратчайшая задача - первая» (Shortest Job First, SJF)
Данный алгоритм также является невытесняющим. Он предполагает, что временные отрезки работы потоков известны заранее. Если в очереди готовых к исполнению потоков имеется несколько одинаково важных задач, планировщик выбирает на выполнение самую короткую задачу.
Подобная стратегия приводит к уменьшению среднего оборотного времени, однако, в случае стабильного поступления новых задач для выполнения, часть потоков с большими планируемыми временами исполнения может не получать центральный процессор очень долго.
Отметим также, что для реализации данного алгоритма необходим механизм сообщения планировщику информации о планируемом времени исполнения однопотоковых процессов и всех потоков многопоточных процессов. Обычно это реализуется посредством использования языка управления заданиями.
Еще одним моментом является невозможность в общем случае предсказать точное время выполнения процесса/потока и связанное с этим несоответствие планируемого и реального времен исполнения, а также намеренное уменьшение планируемого времени исполнения. Практически с этим можно бороться следующим способом – поток, израсходовавший запланированное время всегда находится в конце очереди готовых к исполнению.
Для реализации данного алгоритма также достаточно одного связного списка, с выполнением операции вставки в его середину.
28 Учебно-исследовательская лаборатория «Информационные технологии»
