Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_модуль1.doc
Скачиваний:
11
Добавлен:
25.08.2019
Размер:
276.48 Кб
Скачать

Процессы и потоки

Процесс – это программа в момент ее выполнения. С каждым процессом связывается его адресное пространство – список адресов памяти, которые процесс читает и в которые он и пишет. Адресное пространство содержит саму программу, ее данные и ее стек. Со всяким процессом связывается некий набор регистров – счетчик команд, указатель стека и другие аппаратные регистры, и информация для запуска программы. Таким образом, процесс – это сама программа, текущие значения счетчика команд, регистров и переменных.

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

Процесс отличается от программы. Процесс – понятие более общее по отношению к программе, он включает в себя программу. Процесс – это некая активность; у него есть программа, входные и выходные данные, а также состояние.

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

Таблица процессов - массив структур, по одной на каждый существующий в данный момент процесс.

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

Демоны (daemon) – фоновые процессы, связанные с прикладными задачами (почта, Интернет, новости, вывод на печать).

В больших системах работают десятки демонов.

Создать процесс – это прежде всего создать дескриптор (описатель) процесса.

Дескриптор - это одна или несколько информационных структур, содержащих все сведения о процессе, необходимые ОС для его управления.

В дескрипторе содержится:

  1. идентификатор процесса,

  2. данные о расположении в памяти исполняемого модуля,

  3. приоритет процесса,

  4. права доступа и прочее.

В разных ОС эти описатели процессов называются по-разному, и могут быть по-разному организованы. Например, в OS/2 это управляющий блок процесса PCB (Process Control Block), в UNIX – дескриптор процесса, в Windows NT – объект-процесс (object-process).

Реализация процессов

В однопроцессорной ЭВМ активным может быть только один процесс. Количество заблокированных - неограниченно.

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

Кроме того, возможна ситуация, когда процесс останавливает свою работу, по своей логике работы (например, ожидает ввода данных с клавиатуры).

Возможны три состояния процесса:

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

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

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

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

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

Потоки

Поток – набор исполняемых команд, совместно использующих ресурсы процесса.

Поток выполняется всегда в рамках процесса.

Ресурсы процесса – это

- адресное пространство (содержащее текст программы и данные),

- открытые файлы,

- дочерние процессы,

- различная учетная информация.

Внутри процесса может быть несколько потоков.

Каждый поток имеет свой счетчик команд, регистры для хранения текущих переменных, стек, содержащий протокол выполнения программы (на каждую вызванную, но еще не вернувшуюся процедуру там отведена отдельная область). Таким образом

потоки – это объекты, поочередно выполняющиеся на центральном процессоре в рамках одного процесса (справедливо для однопроцессорных ЭВМ).

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