
- •8 Взаимодействие процессов 79
- •9 Синхронизация процессов 87
- •10 Тупиковые ситуации 101
- •11 Управление памятью 114
- •12 Управление виртуальной памятью 132
- •13 Интерфейс файловой системы 138
- •14 Некоторые аспекты Реализации файловой системы 156
- •Литература 166 введение
- •Понятие операционной системы
- •Контрольные вопросы
- •Организация компьютерной системы
- •Архитектура компьютера с общей шиной
- •Структура памяти
- •Структура ввода-вывода
- •Контрольные вопросы
- •Классификация Операционных Систем
- •Поддержка многопользовательского режима.
- •Поддержка многопоточности
- •Многопроцессорная обработка
- •Особенности областей использования
- •Контрольные вопросы
- •Функциональные компоненты операционной системы
- •Управление процессами
- •Управление памятью
- •Управление файлами и внешними устройствами
- •Безопасность и защита данных
- •Интерфейс прикладного программирования
- •Пользовательский интерфейс
- •Контрольные вопросы
- •Структура операционной системы
- •Монолитные системы
- •Многоуровневые системы
- •Виртуальные машины
- •Экзоядро
- •Модель клиент-сервер
- •Контрольные вопросы
- •Процессы и потоки
- •Концепция процесса
- •Состояния процесса
- •Реализация процессов
- •Операции над процессами
- •1Создание процессов
- •2Завершение процессов
- •Контрольные вопросы
- •Планирование процессора
- •Планирование процессов. Очереди
- •Планировщики
- •Моменты перепланировки. Вытеснение
- •Переключение контекста
- •Диспетчеризация
- •Критерии планирования процессора
- •Стратегии планирования процессора
- •3Планирование в порядке поступления
- •Пример.
- •4Стратегия sjf
- •5Приоритетное планирование
- •6Карусельная стратегия планирования
- •7Очереди с обратной связью
- •8Гарантированное планирование
- •9Лотерейное планирование
- •10Планирование в системах реального времени
- •Планирование потоков
- •Оценка алгоритмов планирования
- •11Детерминированное моделирование
- •12Моделирование очередей
- •13Имитация
- •Контрольные вопросы
- •Взаимодействие процессов
- •Разделяемая память. Проблема производителя и потребителя
- •Взаимодействие путем передачи сообщений
- •14Буферизация
- •15Исключительные ситуации
- •Потерянные сообщения
- •Вызов удаленных процедур (rpc)
- •Контрольные вопросы
- •Синхронизация процессов
- •Взаимное исключение и критические участки
- •Синхронизация с помощью элементарных приемов нижнего уровня
- •16Запрещение прерываний
- •17Переменные блокировки
- •18Операция проверки и установки
- •Семафоры
- •19Использование семафоров
- •20Реализация семафоров
- •21Тупики и зависания
- •Классические проблемы синхронизации
- •22Проблема ограниченного буфера
- •23Проблема читателей и писателей
- •24Задача об обедающих философах
- •Двоичные семафоры
- •Сигналы
- •Контрольные вопросы
- •Тупиковые ситуации
- •Необходимые условия возникновения тупиков
- •Граф выделения и закрепления ресурсов
- •Методы решения проблемы тупиков
- •25Предотвращение тупиков
- •Взаимное исключение
- •Захват и ожидание
- •Отсутствие перераспределения
- •Условие кругового ожидания
- •26Обход тупиков
- •27Простейший алгоритм обхода тупика
- •28Алгоритм банкира
- •29Обнаружение тупиков
- •30Восстановление после тупика
- •Контрольные вопросы
- •Управление памятью
- •Функции операционной системы по управлению памятью
- •Типы адресов
- •Физическое и логическое адресное пространство
- •Связывание адресов
- •Динамическая загрузка
- •Динамическое связывание
- •Перекрытие программ в памяти
- •Свопинг
- •Смежное размещение процессов
- •31Простое непрерывное распределение
- •32Распределение с несколькими непрерывными разделами
- •Фрагментация
- •Страничная организация памяти
- •Сегментная организация памяти
- •Защита и совместное использование
- •Фрагментация
- •Сегментация в сочетании со страничной памятью
- •Контрольные вопросы
- •Управление виртуальной памятью
- •Подкачка страниц
- •Алгоритмы вытеснения страниц
- •33Случайный выбор (Random)
- •34«Первым пришел первым ушел» (fifo)
- •35Вытеснение по давности использования (lru)
- •36Вытеснение редко используемых страниц (lfu)
- •37Оптимальный алгоритм (opt)
- •Аномалии в алгоритмах страничной реализации
- •38«Толкотня» в памяти
- •39Аномалия Биледи
- •Эффективность и применимость виртуальной памяти
- •Пример.
- •Контрольные вопросы
- •Интерфейс файловой системы
- •Понятие файла. Атрибуты файла и операции с файлами
- •Операции над файлами
- •Типы файлов
- •Структура файлов
- •Методы доступа
- •40Последовательный метод доступа
- •41 Прямой метод доступа
- •42Другие методы доступа
- •Каталоги
- •Логическая структура каталога
- •43Одноуровневая структура каталога
- •44Двухуровневая структура каталога
- •45 Древовидная структура каталога
- •46Организация каталога в виде графа без циклов
- •47Организация каталога в виде произвольного (простого) графа
- •Проблемы защиты файлов
- •48Типы доступа
- •49Списки прав доступа
- •50Другие подходы к защите
- •Контрольные вопросы
- •Некоторые аспекты Реализации файловой системы
- •Общая структура файловой системы
- •Методы выделения дискового пространства
- •51Выделение непрерывной последовательностью блоков
- •52Связный список
- •53Таблица отображения файлов
- •54Индексные узлы
- •Управление свободным и занятым дисковым пространством
- •55Учет при помощи организации битового вектора
- •56Учет при помощи организации связного списка
- •57Размер блока
- •58Структура файловой системы на диске
- •Контрольные вопросы Литература
2Завершение процессов
Процесс завершает свою работу, когда завершается выполнение его последней команды, и передает ОС запрос на удаление процесса с помощью соответствующего системного вызова (в ОС UNIX – exit). При этом процесс может вернуть результирующие данные своему отцу. ОС удаляет процесс и освобождает все его ресурсы, включая физическую и виртуальную память, открытые файлы, буферы ввода-вывода.
Возможны и другие причины завершения процесса. Процесс может быть принудительно завершен с помощью соответствующего системного вызова (abort). Кроме того, пользователь может прекратить выполнение любой своей задачи. Заметим, что родительский процесс должен знать идентификаторы своих сыновей.
Родительский процесс может прекратить выполнение своих сыновей по многим причинам, например:
запросы процесса-сына превышают возможности некоторых выделенных ему ресурсов;
задача, решаемая процессом-сыном, более не потребуется;
процесс-отец завершается, и ОС не разрешает сыну продолжаться после прекращения работы процесса-отца.
Чтобы выявить первую причину, процесс-отец должен иметь механизм проверки состояния своих сыновей.
Во многих операционных системах при завершении процесса-отца автоматически удаляются все порожденные ими процессы. Это носит название каскадного удаления процессов (cascading termination).
Контрольные вопросы
Что такое процесс? Чем отличается процесс от программы? Какие состояния процесса Вы знаете?
Изобразите диаграмму состояний процесса, поясните все возможные переходы из одного состояния в другое.
В чем состоит принципиальное отличие состояний «ожидание» и «готовность» ?
Какую информацию о процессе хранит операционная система в блоке управления процессами (дескрипторе процесса)?
Опишите схему обработки прерывания нижним уровнем операционной системы.
Что такое потоки (нити)? Чем они отличаются от обыкновенных процессов?
Укажите синонимы в следующих сочетаниях: А) процесс, поток; B) поток, нить; C) процесс, нить; D) программа, процесс
Потоки создаются с целью:
a. ускорения работы процесса
b. защиты областей памяти
c. улучшения межпроцессного взаимодействия
Как с точки зрения экономии ресурсов лучше распараллелить работу:
a. создать несколько процессов
b. создать несколько потоков
c. случаи a) и b) равнозначны, можно выбирать любой из них
Каких смен состояний не существует в системе:
a. выполнение → готовность
b. ожидание →выполнение
c. ожидание → готовность
d. готовность → ожидание
Планирование процессора
Планирование процессов. Очереди
Идея многозадачности относительно проста. Процесс выполняется до тех пор, пока не будет вынужден ожидать, обычно из-за выполнения некоторого запроса ввода-вывода. В простых компьютерных системах процессор в это время простаивает. Все это время ожидания является потерянным, так как не выполняется никакой полезной работы. С помощью многозадачности мы пытаемся продуктивно использовать это время. В то время как некоторый процесс ожидает окончания запроса, операционная система переключает процессор на выполнение другого процесса.
Основное назначение мультипрограммирования – параллельное выполнение нескольких процессов с целью максимального использования ресурсов. Назначение разделения времени – обеспечение настолько быстрого переключения CPU между процессами, чтобы пользователь, ведущий интерактивный диалог с программой, не заметил замедления. В каждой момент времени на однопроцессорной системе может выполниться только один процесс. Если имеется несколько процессов, то остальные должны ожидать освобождения CPU и могут быть перепланированы.
Распределение процессов между имеющимися ресурсами носит наименование планирования процессов. Планирование процессов должно обеспечивать эффективное использование всех ресурсов (то есть их максимальную загрузку). Планирование является важнейшей функцией ОС. Практически все ресурсы компьютера распределяются перед их использованием.
Одним из методов планирования процессов, ориентированных на эффективную загрузку ресурсов является метод очередей к ресурсам.
Когда процесс поступает в систему, он попадает во входную очередь или очередь заданий (job queue). Очередь заданий содержит информацию обо всех процессах системы. Она располагается во внешней памяти, и процессы ожидают в ней освобождения адресного пространства и основной памяти. Процессы, размещенные в оперативной памяти и готовые к выполнению, связаны с очередью готовых процессов (ready queue). Обычно эта очередь представляется в виде связного списка. Заголовок этой очереди содержит указатели на первый и последний блок управления процессами РСВ в списке. Каждый РСВ содержит указатель на следующий процесс в очереди. В этой очереди процессы ожидают освобождение центрального процессора.
В системе существуют и другие очереди. Например, если процесс прерывается для выполнения операции ввода, может случиться, что требуемый ресурс уже занят другим процессом. Список процессов, ожидающих освобождения соответствующего устройства, называется очередью к устройству (device queue). Каждому устройству соответствует собственная очередь. Общее представление о планировании очередей дает диаграмма очередей на рис.7.1.
Рисунок 7.12 - Диаграмма очередей
Прямоугольные блоки представляют очередь готовых процессов и множество очередей к устройствам. Овалы представляют ресурсы, обслуживаемые очередями, а стрелки – потоки процессов в системе.
Новый процесс сначала попадает в очередь готовых заданий. Здесь он ожидает до тех пор, пока не будет выбран для выполнения и подан на центральный процессор.
Если процессу распределен CPU и процесс выполняется, то может случиться одно из нескольких событий:
Процесс выработал запрос ввода-вывода и помещен в соответствующую очередь.
Процесс создал новый подпроцесс и ожидает его завершения.
Процесс насильственно прерван, и в результате возвращен в очередь готовых процессов.
В двух первых случаях процесс, в конце концов, перейдет из состояния ожидания в состояние «готовый» и попадет в очередь готовых процессов.
Такой цикл продолжается до тех пор, пока процесс не завершится, после чего он будет удален из всех очередей.