- •Классификация ос по назначению:
- •Монолитная структура ос.
- •Переносимость ос может быть достигнута при соблюдении:
- •Процесс – отдельная программа в момент ее выполнения, а также выделенные ей ресурсы.
- •Описание процессов.
- •Создание процесса.
- •Сигнал в ос unix — это асинхронное уведомление процесса о каком-либо событии.
- •Поток — это независимо планируемый контекст выполнения, разделяющий единое адресное пространство с другими потоками своего процесса.
- •Два процесса называются параллельными, если их выполнение может перекрываться во времени.
- •Аппаратные способы достижения взаимного исключения.
- •Семафор – специальная переменная, имеющая целое значение и связанную с ним очередь
- •Классические проблемы межпроцессорного взаимодействия.
- •Планирование – обеспечение поочередного доступа процессов к одному процессору.
- •Фиксированное распределение памяти.
- •Система двойников.
- •Алгоритмы управления виртуальной памятью.
- •Цели и задачи файловой системы.
- •Устройство диска.
- •Атрибуты файлов.
- •Переменные окружения (переменные среды) используются для настройки многих ос. Они задаются в реестре Windows и программным обеспечением.
Процесс – отдельная программа в момент ее выполнения, а также выделенные ей ресурсы.
Часть ОС, которая управляет процессами, называется диспетчером или планировщиком.
Причины создания процессов:
Инициализация системы
создание процесса другим работающим процессом
запрос пользователя на создание процесса
инициирование пакетного задания
Причины завершения процессов:
обычное завершение – успешное
выход из процесса по нейтральной ошибке
уничтожение процесса другим процессом
Модели процесса.
Модель с двумя состояниями
Использование очереди (пул).
Модель с пятью состояниями
Две ситуации, когда процесс не выполняется:
ОС решила на некоторое время предоставить процессор другому процессу
процесс блокирован
Описание процессов.
Для управления процессами ОС создает и поддерживает таблицы процессов.
Образ процесса содержит программу, данные, стек и атрибуты процесса.
Структура данных вместе с атрибутами процесса часто называется его управляющим доком.
Атрибуты процесса:
Идентификаторы
Информация о состоянии процесса
Управляющая информация о процессе
Управление процессом:
Присвоить новому процессу уникальный идентификатор, при этом в таблицу процессов вносится новая запись
Выделить пространство для процесса
Инициализировать управляющий блок процесса
Установить необходимые связи
Создать или расширить другие структуры данных
Переключение процессов может произойти в любой момент, когда управление передается ОС в случае аппаратного прерывания срабатывания ловушки, при системном вызове.
Действия ОС при переключении процессов:
Сохранение контекста процессора в управляющем блоке процесса
Обновление управляющего блока выполняющегося в данный момент процесса – требуется изменить состояние этого процесса и сохранить информацию по учету использования им ресурсов
Помещение управляющего блока данного процесса в соответствующую очередь
выбор требуемого процесса для выполнения
Обновление управляющего блока выбранного процесса
Обновление структур данных по управлению памятью
Восстановление контекста процессора для выбранного процесса
Создание процесса.
Для создания нового процесса в ОС UNIX предназначен системный вызов fork. Вызывающий процесс - родитель, новый - его потомок.
Функция fork возвращает в дочерний процесс значение 0; в родительский процесс - PID потомка; при ошибке функция fork возвращает значение - 1.
Процесс-потомок является точной копией своего родителя.
Его адресное пространство полностью повторяет адресное пространство родительского процесса.
После завершения функции fork оба процесса начинают работать в пользовательском режиме и выполняют команды, следующие за fork.
Дочерний процесс сразу после его создания получает копию адресного пространства родителя путем копирования только таблицы страниц, причем все страницы помечаются атрибутом «только для чтения».
Если теперь один из процессов пытается произвести запись, то возникает исключение, ОС создает новую страницу и снимает атрибут «только для чтения» с соответствующей страницы в обоих процессах.
Таким способом процессы разделяют страницы кода и страницы с теми данными, которые не изменялись. Страницы же, данные на которых изменялись, — разные для обоих процессов.
Завершение процесса.
Системный вызов exit завершает процесс. Системный вызов exit освобождает адресное пространство процесса и другие ресурсы, но не освобождает управляющий блок процесса и посылает родителю сигнал SIGCHLD.
Если же родительский процесс завершается раньше дочернего, то последний «удочеряется» системным процессом init (с PID = 1).
Изменение образа памяти процесса.
Чаще всего после fork потомок сразу же вызывает exec.
В каждый момент времени процесс выполняет одну программу, но в течение своего времени жизни он может последовательно загружать несколько программ при помощи exec.
Существование отдельных вызовов fork и exec дает следующие преимущества:
гибкость - два процесса могут исполнять одну и ту же программу без ее дополнительной загрузки в память, и наоборот, в один процесс можно загружать разные программы;
производительность - уменьшается время на создание нового процесса, так как требуется скопировать только таблицу страниц.
Состояние «Зомби».
Если дочерний процесс завершается раньше, чем родитель вызовет функцию wait, то этот дочерний процесс переходит в состояние «зомби»: он завершен, но остается в списке процессов; при этом он виден по команде ps, но не может быть снят командой kill, так как уже завершен.
Его управляющий блок остается неосвобожденным, пока родитель не вызовет wait, чтобы прочитать код завершения потомка.