- •Раздел 1. Архитектура операционных систем Тема 1. Принципы построения операционных систем
- •1.1. Понятие об архитектуре аппаратных средств
- •1.1.1. Вводные замечания
- •1.1.2. Классификация программных средств
- •1.1.3. Место и функции системного программного обеспечения
- •1.2. Принципы работы вычислительной системы
- •1.3. Режимы работы операционных систем
- •1.3.1. Режимы обработки данных
- •1.3.1.1. Однопрограммные режимы обработки данных
- •1.3.1.2. Многопрограммные режимы обработки данных
- •1.3.2. Режимы и дисциплины обслуживания
- •1.3.2.1. Режимы обслуживания
- •1.3.3.2. Дисциплины обслуживания
- •1.4. Классификация операционных систем
- •1.4.1. Особенности алгоритмов управления ресурсами
- •1.4.1.1. Поддержка многозадачности
- •1.4.1.2. Поддержка многонитевости
- •1.4.2. Особенности аппаратных платформ
- •1.4.3. Особенности областей использования
- •1.4.4. Особенности методов построения
- •1.5. Основные принципы построения операционных систем
- •1.6. Пользовательский интерфейс операционных систем
- •1.6.1. Классификация интерфейсов
- •1.6.2. Пакетная технология.
- •1.6.3. Технология командной строки.
- •1.6.4. Графический интерфейс
- •1.6.4.1. Простой графический интерфейс.
- •1.6.4.2. Wimp-интерфейс
- •1.6.5. Речевая технология
- •1.6.6. Биометрическая технология)
- •1.6.7. Семантический интерфейс.
- •Контрольные вопросы к теме 1
- •Тема 2. Концептуальные основы операционных систем
- •2.1. Концепция процесса
- •2.2. Концепция ресурса
- •2.3. Концепция виртуальности
- •2.4. Концепция прерывания
- •2.5. Понятие ядра и микроядра ос
- •2.5.1. Понятие ядра ос
- •2.5.2. Понятие микроядра ос
- •Контрольные вопросы к теме 2
- •Тема 3. Понятие управления задачами
- •3.1. Организация управления задачами
- •3.2. Средства и механизмы управления задачами
- •3.2.1. Средства управления задачами на уровне внешнего планирования
- •3.2.2. Средства управления задачами на уровне внутреннего планирования
- •3.3. Алгоритмы управления задачами
- •3.3.1. Алгоритмы управления задачами на уровне внешнего планирования
- •3.3.2. Алгоритмы управления задачами на уровне внутреннего планирования
- •3.3.2.1. Мультизадачность, процессы и нити Мультизадачность
- •Процессы
- •Контекст и дескриптор процесса
- •3.3.2.2. Состав алгоритмов внутреннего планирования
- •3.3.2.3. Алгоритм управления количеством процессов в рабочей смеси
- •3.3.2.4. Алгоритмы выбора очередности обработки
- •3.3.2.5. Алгоритмы выбора величины кванта
- •3.4. Взаимосвязанные и конкурирующие задачи
- •3.4.1. Средства управления ресурсами
- •3.4.2. Механизмы синхронизации процессов
- •3.4.2.1. Параллельные процессы и критические участки
- •3.4.2.2. Примитивы взаимоисключения
- •3.4.2.3. Программная реализация примитивов взаимоисключения
- •3.4.2.4. Реализация примитивов взаимоисключения с использованием аппаратных средств
- •3.4.2.5. Семафоры
- •3.4.2.6. Мониторы
- •3.4.3. Алгоритмы управления ресурсами
- •3.4.3.1. Вводные замечания
- •3.4.3.2. Алгоритм предоставления ресурса по первому обращению
- •3.4.3.3. Алгоритмы предотвращения тупиков
- •3.4.3.3.1. Стратегии предотвращения тупиков
- •3.4.3.3.2. Алгоритм предварительного распределения ресурсов
- •3.4.3.3.3. Алгоритм распределения ресурсов с освобождением при отказе
- •3.4.3.3.3. Алгоритм распределения с линейным упорядочением по типам ресурсов
- •3.4.3.3. Алгоритмы обхода тупиков
- •Контрольные вопросы к теме 3
- •Тема 4. Управление памятью в операционных системах
- •4.1. Понятие об организации и управлении физической памятью
- •4.2. Методы связного распределения основной памяти (без использования дискового пространства)
- •4.2.1. Связное распределение памяти для одного пользователя
- •4.2.2. Связное распределение памяти при мультипрограммной обработке
- •4.2.3. Стратегии размещения информации в памяти
- •4.3. Организация виртуальной памяти (с использованием дискового пространства)
- •4.3.1. Основные концепции виртуальной памяти
- •4.3.2. Схема прямого отображения адресов
- •4.3.3. Отображения адресов при страничной организации виртуальной памяти
- •4.3.4. Отображения адресов при сегментной организации виртуальной памяти
- •4.3.4. Отображения адресов при странично-сегментной организации виртуальной памяти
- •4.4. Управление виртуальной памятью
- •4.4.1. Стратегии управления виртуальной памятью
- •4.4.2. Стратегии вталкивания (подкачки)
- •4.4.3. Стратегии размещения
- •4.4.4. Стратегии выталкивания
- •Контрольные вопросы к теме 4
- •Тема 5. Управление файлами и вводом-выводом в ос
- •5.1.Методы организации данных в операционных системах
- •5.2. Методы доступа к данным
- •5.3. Объединение записей в блоки и буферизация
- •5.4. Управление файлами
- •5.4.1. Понятие файлового способа хранения данных и файловой системы
- •5.4.2. Организация файлов
- •5.4.3. Организация хранения файлов
- •5.4.4. Операции над файлами
- •5.4.5. Файловая система
- •5.4.5.1. Общая модель файловой системы
- •5.4.5.2. Современные архитектуры файловых систем
- •5.5. Система ввода-вывода
- •5.5.1. Общие положения
- •5.5.2. Физическая организация устройств ввода-вывода
- •5.5.3. Организация программного обеспечения ввода-вывода
- •5.5.3.1. Уровни организации программного обеспечения ввода-вывода
- •5.5.3.2. Обработка прерываний
- •5.5.3.3. Драйверы устройств
- •5.5.3.4. Независимый от устройств слой операционной системы
- •5.5.3.5. Пользовательский слой программного обеспечения
- •Контрольные вопросы к теме 5
3.4.2.5. Семафоры
Семафор это защищенная переменная, значение которой можно опрашивать и изменять только при помощи операции инициализация_семафора и двух специальных операций P и V.
Операция P над семафором S записывается как P(S) и выполняется по правилам:
если S > 0 то S: = S-1 иначе ( ожидать на S).
Операция V над семафором S записывается как V(S) и выполняется по правилам:
если (один или более процессов ожидают на S)
то (разрешить одному из процессов продолжить работу) иначе S:= S+1.
Различают два вида семафоров: двоичные семафоры, у которых S может принимать значения 0 и 1, и считающие семафоры, где S может принимать неотрицательные целые значения.
Подобно операции проверить_и_установить, операции инициализация_семафора, P(S) и V(S) являются неделимыми. Участки взаимоисключения по семафору S обрамляются операциями P(S) и V(S). Если одновременно несколько процессов попытаются выполнить операцию P(S), то только одному из них будет позволено это сделать, а остальным придется ждать.
Семафоры и операции над ними могут быть реализованы как программно (рис.3.5), так и аппаратно. При программной реализации они размещаются в той части ядра операционной системы, где осуществляется управление сменой состояний процессов.
program Пример_семафора; var активный: семафор; procedure П1; begin while истина do begin Предшествующие операторы процесса П1; Р(активный); Критический участок процесса П1 V(активный); Прочие операторы процесса П1; end; end; procedure П2; begin while истина do begin Предшествующие операторы процесса П2; Р(активный); Критический участок процесса П2 V(активный); Прочие операторы процесса П2; end; end; { Основной процесс } begin инициализация_семафора(активный, 1); П1; П2; end; |
Рис.3.5. Обеспечение взаимоисключения с помощью семафора.
3.4.2.6. Мониторы
Монитор это механизм организации параллелизма , который содержит как данные, так и процедуры, необходимые для реализации динамического распределения конкретного общего ресурса или группы общих ресурсов.
Чтобы обеспечить выделение нужного ему ресурса, процесс должен обратиться к конкретной процедуре монитора.
Необходимость входа в монитор в различные моменты времени может возникать у многих процессов. Однако вход в монитор находится под жестким контролем: здесь осуществляется взаимоисключение процессов, так что в каждый момент времени только одному процессу разрешается войти в монитор. Процессам, которые хотят войти в монитор, когда он занят, приходится ждать, причем режимом ожидания автоматически управляет сам монитор.
Если процесс обращается к некоторой процедуре монитора и обнаруживается, что соответствующий ресурс уже занят, то эта процедура монитора выдает процессу команду WAIT (ЖДАТЬ). Процесс, получивший такую команду, переводится в режим ожидания вне монитора.
Со временем процесс, занимавший нужный ресурс, освобождает его, обращаясь для этого к монитору. Соответствующая процедура монитора может просто принять уведомление о возвращении ресурса, а затем ждать, пока не поступит запрос от другого процесса, которому потребуется этот ресурс. Однако может оказаться, что уже имеются процессы, ожидающие освобождение данного ресурса. В этом случае монитор выполняет примитив оповещение SIGNAL, чтобы один из ожидающих процессов мог занять данный ресурс и покинуть очередь к монитору. Если процесс сигнализирует об освобождении ресурса и в это время нет процессов, ожидающих этот ресурс, то подобное оповещение не вызывает никаких других последствий, кроме того, что монитор вновь вносит ресурс в список свободных.
На практике у процессов может возникнуть необходимость находиться в режиме ожидания вне монитора по различным причинам. Поэтому было введено понятие переменной-условие. Для каждой отдельно взятой причины, по которой процесс может быть переведен в состояние ожидания, назначается свое условие. В связи с этим команды ожидания и оповещения модифицируются. В них включают имена условий, так что они приобретают вид:
WAIT (имя_условие)
SIGNAL (поле_условие)
Переменные-условия совершенно не похожи на обычные переменные. Когда определяется переменная-условие, заводится очередь. Процесс, выдавший команду ожидания, включается в эту очередь, а процесс, выдавший команду оповещение, тем самым позволяет ожидающему процессу выйти из очереди и войти в монитор (рис.3.6).
monitor Распределитель_ресурса; var ресурс_занят: логический; ресурс_свободен: условие; procedure захватить_ресурс; begin if ресурс_занят then WAIT(ресурс_свободен); ресурс_занят:=истина; end; procedure возвратить_ресурс; begin ресурс_занят:=ложь; SIGNAL(ресурс_свободен); end; begin ресурс_занят:=ложь; end; |
Рис.3.6. Распределение ресурса при помощи монитора