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

Типы многозадачности.
По еще одной классификации все множество алгоритмов планирования процессов может быть разделено на две группы:
Non preernptive multitasking – не вытесняющая многозадачность -это
способ планирования процессов, при котором некоторый процесс выполняется до тех пор, пока он сам не отдаст управление планировщику операционной системы.
Preemptive multitaskiпg - вытесняющая многозадачность -это такой
способ управления, при котором решение о переключении процессора с
выполнения одного процесса на выполнение другого процесса принимается планировщиком операционной системы.
В системах с не вытесняющей многозадачностью используется схема относительных приоритетов, а в системах с вытесняющей многозадачностью, как правило, используется схема с абсолютными приоритетами. А кроме того, может использоваться и безприоритетная схема, при которой всем процессам назначаются равные кванты времени
Основным различием между методами с вытесняющей иневытесняющей многозадачностью является уровень концентрации управления у планировщика процессов.
При вытесняющей многозадачности управление планированием полностью определяется планировщиком системы и программисту не нужно заботиться о том, как оно будет выполняться параллельно с другими процессами. При этом планировщик сам определяет моменты переключения активных процессов, запоминает текущее состояние операционной среды.
Определяет процесс, который должен быть задушен следующим, запускает его с восстановлением операционной среды этого процесса. ,
При невытесняющей многозадачности управление планированием распределено между планировщиком и прикладными процессами. Процесс. получив управление от операционной системы, исполняется либо до своего завершения, либо до того момента, когда он сам передает управление ОС. Планировщик по некоторому алгоритму определяет следующий процесс и запускает его на выполнение. Использование такой схемы управления создает сложности как для разработчиков, так для пользователей.
Исполнение некоторой задачи с точки зрения пользователя означает, что система "замирает" на некоторое время, период которого определяется не ОС, а сложностью задачи, которая выполняется. При этом пользователь не может выполнить никаких действий в системе и должен ждать, пока задача выполнится до конца.
Поэтому разработчики приложений в ОС с невытесняющей многозадачностью обязаны создавать приложения так, чтобы они выполнялись небольшими частями, а затем передавали 6ы управление планировщику. Фактически это означает, что на разработчика перекладываются функции планирования выполнением задач в ОС. Такие требования значительно усложняют разработку программ в ОС с невытесняющей многозадачностью. Ошибка программиста в алгоритме управления может привести к длительному "зависанию" всей системы, а то и к краху ОС. В системах с вытесняющей многозадачностью такие ситуации исключены, так как планировщик автоматически снимает задачу, которая не отвечает некоторое время
