Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по Операционным системам.docx
Скачиваний:
2
Добавлен:
18.09.2019
Размер:
156 Кб
Скачать
  1. Процесс – отдельная программа в момент ее выполнения, а также выделенные ей ресурсы.

Часть ОС, которая управляет процессами, называется диспетчером или планировщиком.

Причины создания процессов:

  • Инициализация системы

  • создание процесса другим работающим процессом

  • запрос пользователя на создание процесса

  • инициирование пакетного задания

Причины завершения процессов:

  • обычное завершение – успешное

  • выход из процесса по нейтральной ошибке

  • уничтожение процесса другим процессом

Модели процесса.

  • Модель с двумя состояниями

Использование очереди (пул).

  • Модель с пятью состояниями

Две ситуации, когда процесс не выполняется:

  • ОС решила на некоторое время предоставить процессор другому процессу

  • процесс блокирован

  1. Описание процессов.

Для управления процессами ОС создает и поддерживает таблицы процессов.

Образ процесса содержит программу, данные, стек и атрибуты процесса.

Структура данных вместе с атрибутами процесса часто называется его управляющим доком.

Атрибуты процесса:

  • Идентификаторы

  • Информация о состоянии процесса

  • Управляющая информация о процессе

Управление процессом:

  • Присвоить новому процессу уникальный идентификатор, при этом в таблицу процессов вносится новая запись

  • Выделить пространство для процесса

  • Инициализировать управляющий блок процесса

  • Установить необходимые связи

  • Создать или расширить другие структуры данных

Переключение процессов может произойти в любой момент, когда управление передается ОС в случае аппаратного прерывания срабатывания ловушки, при системном вызове.

Действия ОС при переключении процессов:

  • Сохранение контекста процессора в управляющем блоке процесса

  • Обновление управляющего блока выполняющегося в данный момент процесса – требуется изменить состояние этого процесса и сохранить информацию по учету использования им ресурсов

  • Помещение управляющего блока данного процесса в соответствующую очередь

  • выбор требуемого процесса для выполнения

  • Обновление управляющего блока выбранного процесса

  • Обновление структур данных по управлению памятью

  • Восстановление контекста процессора для выбранного процесса

  1. Создание процесса.

Для создания нового процесса в ОС UNIX предназначен системный вызов fork. Вызывающий процесс - родитель, новый - его потомок.

Функция fork возвращает в дочерний процесс значение 0; в родительский процесс - PID потомка; при ошибке функция fork возвращает значение - 1.

  • Процесс-потомок является точной копией своего родителя.

  • Его адресное пространство полностью повторяет адресное пространство родительского процесса.

  • После завершения функции fork оба процесса начинают работать в пользовательском режиме и выполняют команды, следующие за fork.

  • Дочерний процесс сразу после его создания получает копию адресного пространства родителя путем копирования только таблицы страниц, причем все страницы помечаются атрибутом «только для чтения».

  • Если теперь один из процессов пытается произвести запись, то возникает исключение, ОС создает новую страницу и снимает атрибут «только для чтения» с соответствующей страницы в обоих процессах.

  • Таким способом процессы разделяют страницы кода и страницы с теми данными, которые не изменялись. Страницы же, данные на которых изменялись, — разные для обоих процессов.

Завершение процесса.

Системный вызов exit завершает процесс. Системный вызов exit освобождает адресное пространство процесса и другие ресурсы, но не освобождает управляющий блок процесса и посылает родителю сигнал SIGCHLD.

Если же родительский процесс завершается раньше дочернего, то последний «удочеряется» системным процессом init (с PID = 1).

Изменение образа памяти процесса.

Чаще всего после fork потомок сразу же вызывает exec.

В каждый момент времени процесс выполняет одну программу, но в течение своего времени жизни он может последовательно загружать несколько программ при помощи exec.

Существование отдельных вызовов fork и exec дает следующие преимущества:

  • гибкость - два процесса могут исполнять одну и ту же программу без ее дополнительной загрузки в память, и наоборот, в один процесс можно загружать разные программы;

  • производительность - уменьшается время на создание нового процесса, так как требуется скопировать только таблицу страниц.

Состояние «Зомби».

Если дочерний процесс завершается раньше, чем родитель вызовет функцию wait, то этот дочерний процесс переходит в состояние «зомби»: он завершен, но остается в списке процессов; при этом он виден по команде ps, но не может быть снят командой kill, так как уже завершен.

Его управляющий блок остается неосвобожденным, пока родитель не вызовет wait, чтобы прочитать код завершения потомка.