- •/Классификация операционных систем
- •Сравнительные характеристики ос.
- •/Процессы и примитивы.
- •Примитивы.
- •Процессы.
- •/Предполагаемая среда выполнения процессов.
- •/ Диаграмма переходов.
- •/Создание процессов.
- •/Уровневое представление ос unix
- •/Функции ядра операционной системы.
- •/Понятие прерываний в ос
- •/Структура ос
- •/Обзор подсистем ядра Unix
- •Описание подсистем ядра unix
- •Планирование но наивысшему приоритету (hpf)
- •Метод круговорота (карусель)
- •Очереди с обратной связно (fв)
- •Планирование в unix.
- •Типы многозадачности.
- •Состав планировщика
- •Зависимости подсистем ядра
- •Контроллер памяти (Метоrу Manager)
- •Механизм свопинга (Swapping)
- •Механизм пейджинга (Paging)
- •Внешний интерфейс
- •Verify_area()– проверка прав на доступ к выделенному региону памяти; get_free_page() / free_page() – выделение и освобождение физической памяти.
- •Реализация программ выделения памяти
- •Сборка мусора
- •Типы сборщиков памяти
- •Взаимодействие внутренних модулей мм
- •Архитектура vfs
- •Интерфейсы файловой системы
- •Ioctlo: установить атрибуты файла;
- •Защита файлов
- •Списки прав доступа
- •Механизмы обмена данными в vfs
- •Буферный кэш.
- •Механизмы обмена данными.
- •Логическая файловая система
- •Физическая организация файловой системы
- •Структура файла обычного типа
- •Примечания к физической организации vfs
- •Сетевая подсистема (Net)
- •Состав сетевой подсистемы
- •Представление и структуры данных
- •Внутренняя структура подсистемы
- •Зависимости сетевой подсистемы
- •Подсистема межпроцессного взаимодействия
Состав планировщика
В планировщике Unix можно выделить четыре модуля (смотри рис. 3.3.):
Модуль стратегии управления (scheduling policy) отвечает за распределение между процессами времени доступа к процессору в соответствии с механизмом системы разделении времени.
Аппаратно-зависимый модуль (architecture-specific) образован для обеспечения интерфейса с конкретными устройствами, входящими в вычислительную систему. Этот модуль непосредственно взаимодействует с процессором для приостановки и запуска процессов. Для выполнения этих операций необходимо знание о внутренних регистрах процессора и ин‑
формации, которую нужно сохранять во время переключения процессора между процессами.

Аппаратно-независимый модуль – выполняет функции связи с другими модулями для определения последовательности выполнения процессов с учетом занятости устройств в системе. Также этот модуль использует вызовы ММ для того, чтобы гарантировать, что физическая память выделяется под все процессы правильно, особенно при возобновлении работы процесса.
Интерфейс планировщика (system саll interface) обеспечивает пользовательским процессам доступ только к тем ресурсам, которые явно используются ядром. Эти ограничения на пользовательские процессы определяются реализацией самого ядра и, как правило, никогда не изменяются; несмотря на модификацию модулей ядра.
fork() - системный вызов, порождающий процесс.
рtrасе() - системный вызов, который дает возможность одному процессу
управлять исполнением другого. Кроме того, он позволяет изменять содержимое памяти трассируемого процесса
wait() - системный вызов, позволяющий синхронизировать продолжение
своего выполнения с моментом завершения потомка.
Exec() – загружает и запускает новую программу, которая полностью замещает текущий процесс.
Exit() – прекращает ход выполнения процесса.
Зависимости подсистем ядра
Рис. 3.5 показывает зависимости планировщика от других подсистем ядра. Планировщик требует от ММ управления механизмом выделения памяти как под создаваемые процессы, так и в процессе управления ими. С другой стороны, планировщик зависит от IPC подсистемы из-за использования планировщиком механизма семафоров, так как именно этот механизм управляет очередями процессов. И, кроме того, планировщик зависит от файловой системы, так как именно из нее происходит загрузка всех модулей ОС.

Все подсистемы ядра прямо или косвенно зависят от планировщика, поскольку именно он запускает и приостанавливает процессы, особенно связанные с работой аппаратного обеспечения.
Контроллер памяти (Метоrу Manager)
Основная задача контроллера памяти (ММ) заключается в управлении доступом процессов к физической памяти. Собственно ММ является таким же процессом в ОС, как и все остальные. Он является совершенной подсистемой, которая обеспечивает планирование распределения виртуальной памяти вычислительной системы на физическую память. Основной задачей ММ является распределение памяти между процессами в системе, а также управление разделяемой памятью (shared memory), то есть памятью, к которой имеют доступ несколько процессов одновременно.
Все ОС подразделяются на те, которые сохраняют часть данных на диске и тех, которые этого не делают. К последним относятся устаревшие однопроцёссорные системы, как правило, со статическим заранее фиксированным расположением разделов в оперативной памяти для исполнения задач.
Фиксированные разделы.
В самом простом и исторически раннем варианте для исполнения процессов в ОС выделялись фиксированные в пространстве и времени разделы памяти (часто различной величины). Для каждого процесса определялся необходимый размер памяти, а процесс ставился в очередь на выполнение к тому разделу, который наиболее подходит по размеру для его выполнения. Простота решения компенсировала очевидные недостатки в виде увеличения времени ожидания процессов. требующих определенного
размера памяти для исполнения, а также неэффективности использования памяти.
Динамическое распределение памяти
Введение динамического распределения памяти в многозадачных системах означало революцию в системном и прикладном программном обеспечении. Возможность загрузки программы в помять с произвольного адреса привела к существенному изменению алгоритмов работы компиляторов -компиляции с инкрементальным приращением адресов команд. Этот механизм дает возможность не только загрузки задачи (или её части) в память с произвольного адреса, но и обеспечивает перемещение программы в памяти в процессе ее работы. С введением инкрементальной адресации появилось сразу несколько дополнительных возможностей управления памятью в ОС. А именно:
-
динамически создавать разделы памяти с требуемым размером;
-
перемещать эти разделы вдоль по адресному пространству оперативной памяти;
-
перераспределять объем памяти, требуемый процессу для выполнения;
-
совместного использования одного пространства памяти несколькими процессами для обмена данными.
ОС с динамическим распределением при наличии большой оперативной памяти обладают высокой эффективностью при одновременной обработке множества процессов. Но их эффективность снижается с ростом очереди на выполнение и увеличением размеров выполняемых задач.
