Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы по ОС.doc
Скачиваний:
37
Добавлен:
27.08.2019
Размер:
3.35 Mб
Скачать

Создание и завершение процесса

11 Вопрос. Создание и завершение процесса

Ниже перечислены четыре основных события, приводящие к созданию процессов.

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

  2. Выполнение изданного работающим процессом системного запроса на создание процесса.

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

  4. Инициирование пакетного задания.

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

После того как процесс создан, он начинает выполнять свою работу. Но ничто не длится вечно, даже процесс - рано или поздно он завершится, чаще всего благодаря одному из следующих событий:

  1. Обычный выход (преднамеренно).

  2. Выход по ошибке (преднамеренно).

  3. Выход по неисправимой ошибке (непреднамеренно).

  4. Уничтожение другим процессом (непреднамеренно).

Таненбаум Э. Современные операционные системы. 2-е изд

12 Вопрос. Граф состояний процесса. Причины перехода между состояниями.

На рис. 2.2 представлена диаграмма состояний, показывающая три возможных состояния процесса:

  1. Работающий (в этот конкретный момент использующий процессор).

  2. Готовый к работе (процесс временно приостановлен, чтобы позволить выполняться другому процессу).

  3. Заблокированный (процесс не может быть запущен прежде, чем произойдет некое внешнее событие).

  1. Процесс блокируется, ожидая входных данных

  2. Планировщик выбирает другой процесс

  3. Планировщик выбирает этот процесс

  4. Доступны входные данные

Рис. 2.2. Процесс может находиться в рабочем, готовом и заблокированном состоянии. Стрелками показаны возможные переходы между состояниями

Таненбаум Э. Современные операционные системы. 2-е изд

Все возможные причины блокировки процесса

Проблема обедающих философов

Проблему можно сформулировать следующим образом: пять философов сидят за круглым столом, и у каждого есть тарелка со спагетти. Спагетти настолько скользкие, что каждому философу нужно две вилки, чтобы с ними управиться. Между каждыми двумя тарелками лежит одна вилка (рис. 2.18).

Жизнь философа состоит из чередующихся периодов поглощения пищи и размышлений. (Разумеется, это абстракция, даже применительно к философам, но остальные процессы жизнедеятельности для нашей задачи несущественны.) Когда философ голоден, он пытается получить две вилки, левую и правую, в любом порядке. Если ему удалось получить две вилки, он некоторое время ест, затем кладет вилки обратно и продолжает размышления. Вопрос состоит в следующем: можно ли написать алгоритм, который моделирует эти действия для каждого философа и никогда не застревает?

Проблема читателей и писателей

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

Проблема спящего брадобрея

В парикмахерской есть один брадобрей, его кресло и n стульев для посетителей. Если желающих воспользоваться его услугами нет, брадобрей сидит в своем кресле и спит. Если в парикмахерскую приходит клиент, он должен разбудить брадобрея. Если клиент приходит и видит, что брадобрей занят, он либо садится на стул (если есть место), либо уходит (если места нет). Необходимо запрограммировать брадобрея и посетителей так, чтобы избежать состояния состязания.