- •Что такое операционная система Структура вычислительной системы
- •Что такое ос
- •Операционная система как виртуальная машина
- •Операционная система как менеджер ресурсов
- •Операционная система как защитник пользователей и программ
- •Операционная система как постоянно функционирующее ядро
- •Краткая история эволюции вычислительных систем
- •Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет
- •Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
- •Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
- •Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
- •Основные понятия, концепции ос
- •Системные вызовы
- •Прерывания
- •Исключительные ситуации
- •Процессы, нити
- •Архитектурные особенности ос
- •Монолитное ядро
- •Многоуровневые системы (Layered systems)
- •Виртуальные машины
- •Микроядерная архитектура
- •Смешанные системы
- •Классификация ос
- •Реализация многозадачности
- •Поддержка многопользовательского режима
- •Многопроцессорная обработка
- •Системы реального времени
- •Заключение
- •Приложение 1. Некоторые сведения об архитектуре компьютера
- •Взаимодействие с периферийными устройствами
- •2. Лекция: Процессы
- •Понятие процесса
- •Состояния процесса
- •Операции над процессами и связанные с ними понятия Набор операций
- •Process Control Block и контекст процесса
- •Одноразовые операции
- •Многоразовые операции
- •Переключение контекста
- •Заключение
- •3. Лекция: Планирование процессов
- •Уровни планирования
- •Критерии планирования и требования к алгоритмам
- •Параметры планирования
- •Вытесняющее и невытесняющее планирование
- •Алгоритмы планирования
- •First-Come, First-Served (fcfs)
- •Round Robin (rr)
- •Shortest-Job-First (sjf)
- •Гарантированное планирование
- •Приоритетное планирование
- •Многоуровневые очереди (Multilevel Queue)
- •Многоуровневые очереди с обратной связью (Multilevel Feedback Queue)
- •Заключение
- •4. Лекция: Кооперация процессов и основные аспекты ее логической организации
- •Взаимодействующие процессы
- •Категории средств обмена информацией
- •Логическая организация механизма передачи информации
- •Как устанавливается связь?
- •Информационная валентность процессов и средств связи
- •Особенности передачи информации с помощью линий связи
- •Буферизация
- •Поток ввода/вывода и сообщения
- •Надежность средств связи
- •Как завершается связь?
- •Нити исполнения
- •Заключение
- •5. Лекция: Алгоритмы синхронизации
- •Interleaving, race condition и взаимоисключения
- •Критическая секция
- •Программные алгоритмы организации взаимодействия процессов Требования, предъявляемые к алгоритмам
- •Запрет прерываний
- •Переменная-замок
- •Строгое чередование
- •Флаги готовности
- •Алгоритм Петерсона
- •Алгоритм булочной (Bakery algorithm)
- •Аппаратная поддержка взаимоисключений
- •Команда Test-and-Set (проверить и присвоить 1)
- •Команда Swap (обменять значения)
- •Заключение
- •6. Лекция: Механизмы синхронизации
- •Семафоры
- •Концепция семафоров
- •Решение проблемы producer-consumer с помощью семафоров
- •Мониторы
- •Сообщения
- •Эквивалентность семафоров, мониторов и сообщений
- •Реализация мониторов и передачи сообщений с помощью семафоров
- •Реализация семафоров и передачи сообщений с помощью мониторов
- •Реализация семафоров и мониторов с помощью очередей сообщений
- •Заключение
- •7. Лекция: Тупики Введение
- •Условия возникновения тупиков
- •Основные направления борьбы с тупиками
- •Игнорирование проблемы тупиков
- •Способы предотвращения тупиков
- •Способы предотвращения тупиков путем тщательного распределения ресурсов. Алгоритм банкира
- •Предотвращение тупиков за счет нарушения условий возникновения тупиков
- •Нарушение условия взаимоисключения
- •Нарушение условия ожидания дополнительных ресурсов
- •Нарушение принципа отсутствия перераспределения
- •Hарушение условия кругового ожидания
- •Обнаружение тупиков
- •Восстановление после тупиков
- •Заключение
- •8. Лекция: Организация памяти компьютера. Простейшие схемы управления памятью Введение
- •Физическая организация памяти компьютера
- •Локальность
- •Логическая память
- •Связывание адресов
- •Функции системы управления памятью
- •Простейшие схемы управления памятью
- •Один процесс в памяти
- •Оверлейная структура
- •Динамическое распределение. Свопинг
- •Страничная память
- •Сегментная и сегментно-страничная организация памяти
- •Заключение
- •9. Лекция: Виртуальная память. Архитектурные средства поддержки виртуальной памяти
- •Понятие виртуальной памяти
- •Архитектурные средства поддержки виртуальной памяти
- •Страничная виртуальная память
- •Сегментно-страничная организации виртуальной памяти
- •Структура таблицы страниц
- •Ассоциативная память
- •Инвертированная таблица страниц
- •Размер страницы
- •Заключение
- •10. Лекция: Аппаратно-независимый уровень управления виртуальной памятью
- •Исключительные ситуации при работе с памятью
- •Стратегии управления страничной памятью
- •Алгоритмы замещения страниц
- •Алгоритм fifo. Выталкивание первой пришедшей страницы
- •Аномалия Билэди (Belady)
- •Оптимальный алгоритм (opt)
- •Выталкивание дольше всего не использовавшейся страницы. Алгоритм lru
- •Выталкивание редко используемой страницы. Алгоритм nfu
- •Другие алгоритмы
- •Управление количеством страниц, выделенным процессу. Модель рабочего множества
- •Трешинг (Thrashing)
- •Модель рабочего множества
- •Страничные демоны
- •Программная поддержка сегментной модели памяти процесса
- •Отдельные аспекты функционирования менеджера памяти
- •Заключение
- •11. Лекция: Файлы с точки зрения пользователя Введение
- •Общие сведения о файлах Имена файлов
- •Типы файлов
- •Атрибуты файлов
- •Организация файлов и доступ к ним
- •Последовательный файл
- •Файл прямого доступа
- •Другие формы организации файлов
- •Операции над файлами
- •Директории. Логическая структура файлового архива
- •Разделы диска. Организация доступа к архиву файлов.
- •Операции над директориями
- •Защита файлов
- •Контроль доступа к файлам
- •Списки прав доступа
- •Заключение
- •12. Лекция: Реализация файловой системы
- •Общая структура файловой системы
- •Управление внешней памятью
- •Методы выделения дискового пространства
- •Выделение непрерывной последовательностью блоков
- •Связный список
- •Индексные узлы
- •Управление свободным и занятым дисковым пространством
- •Учет при помощи организации битового вектора
- •Учет при помощи организации связного списка
- •Размер блока
- •Структура файловой системы на диске
- •Монтирование файловых систем
- •Связывание файлов
- •Кооперация процессов при работе с файлами
- •Примеры разрешения коллизий и тупиковых ситуаций
- •Hадежность файловой системы
- •Целостность файловой системы
- •Порядок выполнения операций
- •Журнализация
- •Проверка целостности файловой системы при помощи утилит
- •Управление "плохими" блоками
- •Производительность файловой системы
- •Кэширование
- •Оптимальное размещение информации на диске
- •Реализация некоторых операций над файлами
- •Системные вызовы, работающие с символическим именем файла Системные вызовы, связывающие pathname с дескриптором файла
- •Связывание файла
- •Удаление файла
- •Системные вызовы, работающие с файловым дескриптором
- •Функции ввода-вывода из файла
- •Современные архитектуры файловых систем
- •Заключение
- •13. Лекция: Система управления вводом-выводом
- •Физические принципы организации ввода-вывода
- •Общие сведения об архитектуре компьютера
- •Структура контроллера устройства
- •Опрос устройств и прерывания. Исключительные ситуации и системные вызовы
- •Прямой доступ к памяти (Direct Memory Access – dma)
- •Логические принципы организации ввода-вывода
- •Структура системы ввода-вывода
- •Систематизация внешних устройств и интерфейс между базовой подсистемой ввода-вывода и драйверами
- •Функции базовой подсистемы ввода-вывода
- •Блокирующиеся, неблокирующиеся и асинхронные системные вызовы
- •Буферизация и кэширование
- •Spooling и захват устройств
- •Обработка прерываний и ошибок
- •Планирование запросов
- •Алгоритмы планирования запросов к жесткому диску
- •Строение жесткого диска и параметры планирования
- •Алгоритм First Come First Served (fcfs)
- •Алгоритм Short Seek Time First (sstf)
- •Алгоритмы сканирования (scan, c-scan, look, c-look)
- •Заключение
- •14. Лекция: Сети и сетевые операционные системы
- •Для чего компьютеры объединяют в сети
- •Сетевые и распределенные операционные системы
- •Взаимодействие удаленных процессов как основа работы вычислительных сетей
- •Основные вопросы логической организации передачи информации между удаленными процессами
- •Понятие протокола
- •Многоуровневая модель построения сетевых вычислительных систем
- •Проблемы адресации в сети
- •Одноуровневые адреса
- •Двухуровневые адреса
- •Удаленная адресация и разрешение адресов
- •Локальная адресация. Понятие порта
- •Полные адреса. Понятие сокета (socket)
- •Проблемы маршрутизации в сетях
- •Связь с установлением логического соединения и передача данных с помощью сообщений
- •Синхронизация удаленных процессов
- •Заключение
- •15. Лекция: Основные понятия информационной безопасности Введение
- •Угрозы безопасности
- •Формализация подхода к обеспечению информационной безопасности
- •Криптография как одна из базовых технологий безопасности ос
- •Шифрование с использованием алгоритма rsa
- •Теорема Эйлера
- •Заключение
- •16. Лекция: Защитные механизмы операционных систем
- •Идентификация и аутентификация
- •Пароли, уязвимость паролей
- •Шифрование пароля
- •Авторизация. Разграничение доступа к объектам ос
- •Домены безопасности
- •Матрица доступа
- •Список прав доступа. Access control list
- •Мандаты возможностей. Capability list
- •Другие способы контроля доступа
- •Смена домена
- •Недопустимость повторного использования объектов
- •Выявление вторжений. Аудит системы защиты
- •Анализ некоторых популярных ос с точки зрения их защищенности
- •NetWare, IntranetWare
- •Windows nt/2000/xp
- •Заключение
- •Список литературы
Shortest-Job-First (sjf)
При рассмотрении алгоритмов FCFSиRRмы видели, насколько существенным для них является порядок расположения процессов в очереди процессов, готовых к исполнению. Если короткие задачи расположены в очереди ближе к ее началу, то общая производительность этих алгоритмов значительно возрастает. Если бы мы знали время следующихCPU burstдля процессов, находящихся в состоянии готовность, то могли бы выбрать для исполнения не процесс из начала очереди, а процесс с минимальной длительностьюCPU burst. Если же таких процессов два или больше, то для выбора одного из них можно использовать уже известный намалгоритм FCFS. Квантование времени при этом не применяется. Описанный алгоритм получил название "кратчайшая работа первой" или Shortest Job First (SJF).
SJF-алгоритм краткосрочного планированияможет быть каквытесняющим, так иневытесняющим. Приневытесняющем SJF-планированиипроцессор предоставляется избранному процессу на все необходимое ему время, независимо от событий, происходящих в вычислительной системе. Привытесняющем SJF-планированииучитывается появление новых процессов в очереди готовых к исполнению (из числа вновь родившихся или разблокированных) во время работы выбранного процесса. ЕслиCPU burstнового процесса меньше, чем остатокCPU burstу исполняющегося, то исполняющийся процесс вытесняется новым.
Рассмотрим пример работы невытесняющего алгоритма SJF. Пусть в состоянии готовность находятся четыре процесса,p0,p1,p2иp3, для которых известны времена их очередныхCPU burst. Эти времена приведены втаблице 3.4. Как и прежде, будем полагать, что вся деятельность процессов ограничивается использованием только одного промежуткаCPU burst, что процессы не совершают операций ввода-вывода и что временем переключения контекста можно пренебречь.
Таблица 3.4. | ||||
Процесс |
p0 |
p1 |
p2 |
p3 |
Продолжительность очередного CPU burst |
5 |
3 |
7 |
1 |
При использовании невытесняющегоалгоритма SJFпервым для исполнения будет выбран процессp3, имеющий наименьшее значение продолжительности очередногоCPU burst. После его завершения для исполнения выбирается процессp1, затемp0и, наконец,p2. Эта картина отражена втаблице 3.5.
Таблица 3.5. | ||||||||||||||||
Время |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
p0 |
Г |
Г |
Г |
Г |
И |
И |
И |
И |
И |
|
|
|
|
|
|
|
p1 |
Г |
И |
И |
И |
|
|
|
|
|
|
|
|
|
|
|
|
p2 |
Г |
Г |
Г |
Г |
Г |
Г |
Г |
Г |
Г |
И |
И |
И |
И |
И |
И |
И |
p3 |
И |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Как мы видим, среднее время ожидания для алгоритма SJFсоставляет(4 + 1 + 9 + 0)/4 = 3,5единицы времени. Легко посчитать, что дляалгоритма FCFSпри порядке процессовp0,p1,p2,p3эта величина будет равняться(0 + 5 + 8 + 15)/4 = 7единицам времени, т. е. будет в два раза больше, чем дляалгоритма SJF. Можно показать, что для заданного набора процессов (если в очереди не появляются новые процессы)алгоритм SJFявляется оптимальным с точки зрения минимизации среднего времени ожидания среди классаневытесняющихалгоритмов.
Для рассмотрения примера вытесняющего SJF планированиямы возьмем ряд процессовp0,p1,p2иp3с различными временамиCPU burstи различными моментами их появления в очереди процессов, готовых к исполнению (см.табл. 3.6.).
Таблица 3.6. | ||
Процесс |
Время появления в очереди очередного CPU burst |
Продолжительность |
p0 |
0 |
6 |
p1 |
2 |
2 |
p2 |
6 |
7 |
p3 |
0 |
5 |
В начальный момент времени в состоянии готовность находятся только два процесса, p0иp3. Меньшее время очередногоCPU burstоказывается у процессаp3, поэтому он и выбирается для исполнения (см.таблицу 3.7.). По прошествии2единиц времени в систему поступает процессp1. Время егоCPU burstменьше, чем остатокCPU burstу процессаp3, который вытесняется из состояния исполнение и переводится в состояние готовность. По прошествии еще2единиц времени процессp1завершается, и для исполнения вновь выбирается процессp3. В момент времениt = 6в очереди процессов, готовых к исполнению, появляется процессp2, но поскольку ему для работы нужно7единиц времени, а процессуp3осталось трудиться всего1единицу времени, то процессp3остается в состоянии исполнение. После его завершения в момент времениt = 7в очереди находятся процессыp0иp2, из которых выбирается процессp0. Наконец, последним получит возможность выполняться процессp2.
Таблица 3.7. | ||||||||||||||||||||
Время |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
p0 |
Г |
Г |
Г |
Г |
Г |
Г |
Г |
И |
И |
И |
И |
И |
И |
|
|
|
|
|
|
|
p1 |
|
|
И |
И |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p2 |
|
|
|
|
|
|
Г |
Г |
Г |
Г |
Г |
Г |
Г |
И |
И |
И |
И |
И |
И |
И |
p3 |
И |
И |
Г |
Г |
И |
И |
И |
|
|
|
|
|
|
|
|
|
|
|
|
|
Основную сложность при реализации алгоритма SJFпредставляет невозможность точного знания продолжительности очередногоCPU burstдля исполняющихся процессов. В пакетных системах количество процессорного времени, необходимое заданию для выполнения, указывает пользователь при формировании задания. Мы можем брать эту величину для осуществлениядолгосрочного SJF-планирования. Если пользователь укажет больше времени, чем ему нужно, он будет ждать результата дольше, чем мог бы, так как задание будет загружено в систему позже. Если же он укажет меньшее количество времени, задача может не досчитаться до конца. Таким образом, в пакетных системах решение задачи оценки времени использования процессора перекладывается на плечи пользователя. Прикраткосрочном планированиимы можем делать только прогноз длительности следующегоCPU burst, исходя из предыстории работы процесса. Пустьτ(n)– величинаn-гоCPU burst,T(n + 1)– предсказываемое значение дляn + 1-гоCPU burst, – некоторая величина в диапазоне от0до1.
Определим рекуррентное соотношение
T(n+1)= τ(n)+(1-)T(n)
T(0)положим произвольной константой. Первое слагаемое учитывает последнее поведение процесса, тогда как второе слагаемое учитывает его предысторию. При = 0мы перестаем следить за последним поведением процесса, фактически полагая
T(n)= T(n+1)=...=T(0)
т. е. оценивая все CPU burstодинаково, исходя из некоторого начального предположения.
Положив = 1, мы забываем о предыстории процесса. В этом случае мы полагаем, что время очередногоCPU burstбудет совпадать со временем последнегоCPU burst:
T(n+1)= τ(n)
Обычно выбирают = 1/2для равноценного учета последнего поведения и предыстории. Надо отметить, что такой выбор удобен и для быстрой организации вычисления оценкиT(n + 1). Для подсчета новой оценки нужно взять старую оценку, сложить с измеренным временемCPU burstи полученную сумму разделить на2, например, сдвинув ее на1бит вправо. Полученные оценкиT(n + 1)применяются как продолжительности очередных промежутков времени непрерывного использования процессора длякраткосрочного SJF-планирования.