1. Архангельский А. Я. Разработка прикладных программ для Windows в Delphi 5 / А.Я. Архангельский. - М.: БИНОМ, 1999. - 256 с.
2. Бобровский С. И. Delphi 7: учеб. курс / С.И. Бобровский. - СПб.: Питер, 2004. - 736 с.
3. Фаронов В. Программирование баз данных в Delphi 6: Учебный курс / В. Фаронов. - СПб.: Питер, 2002. - 352 с:ил
4. Фаронов В. В. Delphi : программирование на языке высокого уровня : учебник для студ., обуч. по напр. подготовки дипломир. спец. "Информатика и вычис. техника" / В. В. Фаронов. - СПб.: Питер, 2005. - 640 с.
Термин "процесс" имеет несколько определений, которые используются в зависимости от контекста. Процесс - это:
-программа на стадии выполнения
-"объект", которому выделено процессорное время
-асинхронная работа
Для описания состояний процессов используется несколько моделей. Самая простая модель - это модель трех состояний. Модель состоит из:
-состояния выполнения
-состояния ожидания
-состояния готовности
Выполнение - это активное состояние, во время которого процесс обладает всеми необходимыми ему ресурсами. В этом состоянии процесс непосредственно выполняется процессором.
Ожидание - это пассивное состояние, во время которого процесс заблокирован, он не может быть выполнен, потому что ожидает какое-то событие, например, ввода данных или освобождения нужного ему устройства.
Готовность - это тоже пассивное состояние, процесс тоже заблокирован, но в отличие от состояния ожидания, он заблокирован не по внутренним причинам а по внешним, независящим от процесса, причинам. Когда процесс может перейти в состояние готовности? Предположим, что наш процесс выполнялся до ввода данных. До этого момента он был в состоянии выполнения, потом перешел в состояние ожидания - ему нужно подождать, пока мы введем нужную для работы процесса информацию. Затем процесс хотел уже перейти в состояние выполнения, так как все необходимые ему данные уже введены, но так как он не единственный процесс в системе, пока он был в состоянии ожидания, его место занято - процессор выполняет другой процесс. Тогда процессу ничего не остается как перейти в состояние готовности: ждать ему нечего, а выполняться он тоже не может. Из состояния готовности процесс может перейти только в состояние выполнения.
Из состояния выполнения процесс может перейти либо в состояние ожидания или состояние готовности. Почему процесс может оказаться в состоянии ожидания, мы уже знаем - ему просто нужны дополнительные данные или он ожидает освобождения какого-нибудь ресурса, например, устройства или файла. В состояние готовности процесс может перейти, если во время его выполнения, квант времени выполнения "вышел". Другими словами, в операционной системе есть специальная программа - планировщик, которая следит за тем, чтобы все процессы выполнялись отведенное им время. Например, у нас есть три процесса. Один из них находится в состоянии выполнения. Два других - в состоянии готовности. Планировщик следит за временем выполнения первого процесса, если "время вышло", планировщик переводит процесс 1 в состояние готовности, а процесс 2 - в состояние выполнения. Затем, когда, время отведенное, на выполнение процесса 2, закончится, процесс 2 перейдет в состояние готовности, а процесс 3 - в состояние выполнения.
Рисунок 1. Модель трех состояний
Более сложная модель - это модель, состоящая из пяти состояний. В этой модели появилось два дополнительных состояния: рождение процесса и смерть процесса. Рождение процесса - это пассивное состояние, когда самого процесса еще нет, но уже готова структура для появления процесса. Как говорится в афоризме: "Мало найти хорошее место, надо его еще застолбить", так вот во время рождения как раз и происходит "застолбление" этого места. Смерть процесса - самого процесса уже нет, но может случиться, что его "место", то есть структура, осталась в списке процессов.
Рисунок 2. Модель пяти состояний
Над процессами можно производить следующие операции:
Создание процесса - это переход из состояния рождения в состояние готовности
Уничтожение процесса - это переход из состояния выполнения в состояние смерти
Восстановление процесса - переход из состояния готовности в состояние выполнения
Изменение приоритета процесса - переход из выполнения в готовность
Блокирование процесса - переход в состояние ожидания из состояния выполнения
Пробуждение процесса - переход из состояния ожидания в состояние готовности
Запуск процесса (или его выбор) - переход из состояния готовности в состояние выполнения
Для создания процесса операционной системе нужно:
-Присвоить процессу имя
-Добавить информацию о процессе в список процессов
-Определить приоритет процесса
-Сформировать блок управления процессом
-Предоставить процессу нужные ему ресурсы
Процесс не может взяться из ниоткуда: его обязательно должен запустить какой-то процесс. Процесс, запущенный другим процессом, называется дочерним (child) процессом или потомком. Процесс, который запустил процесс называется родительским (parent), родителем или просто - предком. У каждого процесса есть два атрибута - PID (Process ID) - идентификатор процесса и PPID (Parent Process ID) - идентификатор родительского процесса.
Процессы создают иерархию в виде дерева. Самым "главным" предком, то есть процессом, стоящим на вершине этого дерева, является процесс init (PID=1).