- •Информация о курсе
 - •5. Тупики
 - •6. Организация памяти компьютера. Схемы управления памятью.
 - •7. Аппаратно-независимый уровень управления виртуальной памятью
 - •1. Лекция: Введение
 - •Что такое операционная система Структура вычислительной системы
 - •Что такое ос
 - •Операционная система как виртуальная машина
 - •Операционная система как менеджер ресурсов
 - •Операционная система как защитник пользователей и программ
 - •Операционная система как постоянно функционирующее ядро
 - •Краткая история эволюции вычислительных систем
 - •Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет
 - •Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
 - •Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
 - •Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
 - •Основные понятия, концепции ос
 - •Системные вызовы
 - •Прерывания
 - •Исключительные ситуации
 - •Архитектурные особенности ос
 - •Монолитное ядро
 - •Многоуровневые системы (Layered systems)
 - •Виртуальные машины
 - •Микроядерная архитектура
 - •Смешанные системы
 - •Классификация ос
 - •Реализация многозадачности
 - •Поддержка многопользовательского режима
 - •Многопроцессорная обработка
 - •Системы реального времени
 - •Заключение
 - •Приложение 1. Некоторые сведения об архитектуре компьютера
 - •Взаимодействие с периферийными устройствами
 - •2. Лекция: Процессы
 - •Понятие процесса
 - •Состояния процесса
 - •Операции над процессами и связанные с ними понятия Набор операций
 - •Process Control Block и контекст процесса
 - •Одноразовые операции
 - •Многоразовые операции
 - •Переключение контекста
 - •Заключение
 - •3. Лекция: Планирование процессов
 - •Уровни планирования
 - •Критерии планирования и требования к алгоритмам
 - •Параметры планирования
 - •Вытесняющее и невытесняющее планирование
 - •Алгоритмы планирования
 - •Гарантированное планирование
 - •Приоритетное планирование
 - •Многоуровневые очереди (Multilevel Queue)
 - •Многоуровневые очереди с обратной связью (Multilevel Feedback Queue)
 - •Заключение
 - •4. Лекция: Кооперация процессов. Алгоритмы синхронизации
 - •Взаимодействующие процессы
 - •Категории средств обмена информацией
 - •Сигнальные
 - •Канальные
 - •Разделяемая память
 - •Логическая организация механизма передачи информации
 - •Как устанавливается связь?
 - •Информационная валентность процессов и средств связи
 - •Особенности передачи информации с помощью линий связи
 - •Буферизация
 - •Поток ввода/вывода и сообщения
 - •Надежность средств связи
 - •Как завершается связь?
 - •Алгоритмы синхронизации
 - •Interleaving, race condition и взаимоисключения
 - •Достаточные условия Бернстайна
 - •Механизмы синхронизации
 - •Критическая секция
 - •Алгоритмы организации взаимодействия процессов Требования, предъявляемые к алгоритмам
 - •Запрет прерываний
 - •Переменная-замок
 - •Аппаратная поддержка взаимоисключений
 - •Команда Test-and-Set (проверить и присвоить 1)
 - •Команда Swap (обменять значения)
 - •Заключение
 - •5. Лекция: Тупики Введение
 - •Условия возникновения тупиков
 - •Основные направления борьбы с тупиками
 - •Игнорирование проблемы тупиков
 - •Способы предотвращения тупиков
 - •Способы предотвращения тупиков путем тщательного распределения ресурсов. Алгоритм банкира
 - •Предотвращение тупиков за счет нарушения условий возникновения тупиков
 - •Нарушение условия взаимоисключения
 - •Нарушение условия ожидания дополнительных ресурсов
 - •Нарушение принципа отсутствия перераспределения
 - •Hарушение условия кругового ожидания
 - •Обнаружение тупиков
 - •Восстановление после тупиков
 - •Заключение
 - •6. Лекция: Организация памяти компьютера. Простейшие схемы управления памятью Введение
 - •Физическая организация памяти компьютера
 - •Локальность
 - •Логическая память
 - •Связывание адресов
 - •Функции системы управления памятью
 - •Простейшие схемы управления памятью
 - •Один процесс в памяти
 - •Оверлейная структура
 - •Динамическое распределение. Свопинг
 - •Страничная память
 - •Сегментная и сегментно-страничная организация памяти
 - •Понятие виртуальной памяти
 - •Архитектурные средства поддержки виртуальной памяти
 - •Страничная виртуальная память
 - •Сегментно-страничная организации виртуальной памяти
 - •Структура таблицы страниц
 - •Ассоциативная память
 - •Инвертированная таблица страниц
 - •Размер страницы
 - •Заключение
 - •7. Лекция: Аппаратно-независимый уровень управления виртуальной памятью
 - •Исключительные ситуации при работе с памятью
 - •Стратегии управления страничной памятью
 - •Алгоритмы замещения страниц
 - •Алгоритм fifo. Выталкивание первой пришедшей страницы
 - •Аномалия Билэди (Belady)
 - •Оптимальный алгоритм (opt)
 - •Выталкивание дольше всего не использовавшейся страницы. Алгоритм lru
 - •Выталкивание редко используемой страницы. Алгоритм nfu
 - •Другие алгоритмы
 - •Управление количеством страниц, выделенным процессу. Модель рабочего множества
 - •Трешинг (Thrashing)
 - •Модель рабочего множества
 - •Страничные демоны
 - •Заключение
 
Основные понятия, концепции ос
В процессе эволюции возникло несколько важных концепций, которые стали неотъемлемой частью теории и практики ОС. Рассматриваемые в данном разделе понятия будут встречаться и разъясняться на протяжении всего курса. Здесь дается их краткое описание.
Системные вызовы
В любой операционной системе поддерживается механизм, который позволяет пользовательским программам обращаться к услугам ядра ОС. В операционных системах наиболее известной советской вычислительной машины БЭСМ-6 соответствующие средства «общения» с ядром назывались экстракодами, в операционных системах IBM они назывались системными макрокомандами и т.д. В ОС Unix такие средства называют системными вызовами.
Системные вызовы (system calls) – это интерфейс между операционной системой и пользовательской программой. Они создают, удаляют и используют различные объекты, главные из которых – процессы и файлы. Пользовательская программа запрашивает сервис у операционной системы, осуществляя системный вызов. Имеются библиотеки процедур, которые загружают машинные регистры определенными параметрами и осуществляют прерывание процессора, после чего управление передается обработчику данного вызова, входящему в ядро операционной системы. Цель таких библиотек – сделать системный вызов похожим на обычный вызов подпрограммы.
Основное отличие состоит в том, что при системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode). Поэтому системные вызовы иногда еще называют программными прерываниями, в отличие от аппаратных прерываний, которые чаще называют просто прерываниями.
В этом режиме работает код ядра операционной системы, причем исполняется он в адресном пространстве и в контексте вызвавшей его задачи. Таким образом, ядро операционной системы имеет полный доступ к памяти пользовательской программы, и при системном вызове достаточно передать адреса одной или нескольких областей памяти с параметрами вызова и адреса одной или нескольких областей памяти для результатов вызова.
В большинстве операционных систем системный вызов осуществляется командой программного прерывания (INT). Программное прерывание – это синхронное событие, которое может быть повторено при выполнении одного и того же программного кода.
Прерывания
Прерывание (hardware interrupt) – это событие, генерируемое внешним (по отношению к процессору) устройством. Посредством аппаратных прерываний аппаратура либо информирует центральный процессор о том, что произошло какое-либо событие, требующее немедленной реакции (например, пользователь нажал клавишу), либо сообщает о завершении асинхронной операции ввода-вывода (например, закончено чтение данных с диска в основную память). Важный тип аппаратных прерываний – прерывания таймера, которые генерируются периодически через фиксированный промежуток времени. Прерывания таймера используются операционной системой при планировании процессов. Каждый тип аппаратных прерываний имеет собственный номер, однозначно определяющий источник прерывания. Аппаратное прерывание – это асинхронное событие, то есть оно возникает вне зависимости от того, какой код исполняется процессором в данный момент. Обработка аппаратного прерывания не должна учитывать, какой процесс является текущим.
