Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Понятия процесса и потока



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

Программный код только тогда начнёт выполняться, когда для него операционной системой будет создан процесс. Создать про­цесс — это значит:

- создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст;

- включить дескриптор нового процесса в очередь готовых про­цессов;

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

В современных ОС в рамках одного процесса может выполняться несколько потоков.

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

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

В многозадачной (многопроцессной) системе процесс (или поток, если процесс состоит из нескольких потоков) может находиться в од­ном из трёх основных состояний (рис. 12.1):

АКТИВЕН — процесс (поток) обладает всеми необходимыми ре­сурсами и непосредственно выполняется процессором;

БЛОКИРОВАН — процесс не может выполняться по своим вну­тренним причинам, он ждёт осуществления некоторого события, на­пример, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;

Рис. 12.1. Граф состояния процессов

ГОТОВ — процесс (поток) обладает всеми необходимыми ресур­сами для продолжения работы и ожидает освобождения процессора, который занят выполнением другого процесса (потока).

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

В активном состоянии в однопроцессорной системе в каждый мо­мент времени может находиться только один процесс (поток).

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

В некоторых системах для временного уменьшения нагруз­ки предусмотрена возможность приостановки отдельных процессов.

В этом случае появляется два дополнительных состояния, в которых могут оказываться процессы:

ПРИОСТАНОВЛЕН БЛОКИРОВАН приостанавливается процесс, находившийся в состоянии блокировки;

ПРИОСТАНОВЛЕН ГОТОВ — приостанавливается процесс, находившийся в состоянии готовности.

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


Планирование процессов как функция ядра операционной системы

Планирование процессов на уровне ядра ОС включает в себя решение следующих задач:

- определение момента времени для смены выполняемого про­цесса;

- выбор процесса на выполнение из очереди готовых процессов;

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

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

1. Алгоритмы с применением прерываний процессов и без них. (Иногда применяются термины «вытесняющая многозадачность» и «невытесняющая многозадачность».)

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

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

Кванты, выделяемые процессам, могут быть одинаковыми для всех процессов или различными. Кванты, выделяемые одному про­цессу, могут быть фиксированной величины или изменяться в разные периоды жизни процесса. Процессы, которые не полностью исполь­зовали выделенный им квант (например, из-за ухода на выполнение операций ввода-вывода), могут получить или не получить компенса­цию в виде привилегий при последующем обслуживании. По разному может быть организована очередь готовых процессов: циклически, по правилу «первый пришёл — первый обслужен» (FIFO) или по какому-либо другому принципу.

Такой порядок планирования применяется в системах разделе­ния времени, ориентированных на интерактивное взаимодействие с пользователями.

В случае непрерываемого планирования каждый процесс, полу­чивший управление, работает на процессоре до тех пор, пока сам его не освободит. Процессор освобождается если:

- процесс завершился;

- процесс перешёл в состояние блокировки;

- процесс самостоятельно передал управление другим процессам.
Такие алгоритмы планирования наиболее эффективны в пакет­
ных системах обработки.

2. Алгоритмы с использованием приоритетов и без них.

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

При бесприоритетном планировании очередной процесс выбира­ется из очереди в соответствии со стратегией, учитывающей равен­ство процессов. Это могут быть: случайная выборка, выборка по принципу FIFO и т. п.

Во многих ОС планировщики построены как комбинация опи­санных выше принципов планирования.





Дата публикования: 2015-02-03; Прочитано: 5458 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...