Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОПЕРАЦИОННЫЕ СИСТЕМЫ И ОБОЛОЧКИ.doc
Скачиваний:
46
Добавлен:
21.09.2019
Размер:
799.74 Кб
Скачать

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

Чтобы ОС могла управлять процессами, она должна располагать полной

информацией о них. Для этого на каждый процесс заводится специальная

информационная структура, называемая дескриптором процесса (описателем задач,

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

информацию:

- идентификатор процесса (PID);

- тип (класс) процесса, по которому супервизор определяет правила

обслуживания;

- приоритет процесса, по которому супервизор предоставляет ресурсы;

- переменную состояния (готов к работе, в состоянии выполнения, ожидание

устройства ввода/вывода и т.д.);

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

процесс прерывается, не закончив работу. Эта область называется контекстом

задачи;

- информацию о ресурсах, которыми процесс владеет или имеет право

пользоваться;

- место (или адрес) памяти для общения с другими процессами;

- параметры времени запуска;

- в случае отсутствия системы управления файлами – адрес задачи на диске в ее

исходном состоянии и адрес на диске, куда она выгружается из оперативной

памяти.

Описатели задач, как правило, располагаются в оперативной памяти для ускорения

работы супервизора. Для каждого состояния (кроме выполнения) ведется список задач.

1.2.5 Процессы и треды

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

процессов, которые в настоящее время получили названия потоки или треды (нити).

Понятие процесс в плоскости ОС подчеркивает их обособленность:

11

- у каждого процесса свое виртуальное адресное пространство;

- каждому процессу выделяются свои ресурсы – файлы, семафоры и т.д.

Обособленность процессов нужна для защиты процессов друг от друга, т.к. они,

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

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

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

несвязанными и независимыми.

В самих процессах также имеется внутренний параллелизм, использование которого

позволяет повысить производительность вычислительной системы. Например,

некоторые операции, выполняемые приложением, могут требовать большого количества

процессорного времени, в этом случае пользователь долго будет ждать результата. Если

программные модули, выполняющие такие длительные операции, оформить в виде

самостоятельных «подпроцессов» (легковесных или облегченных потоков, тредов,

«задач»), то у пользователя появляется возможность параллельно выполнять несколько

операций в рамках одного процесса. Для этих задач ОС не создает полноценной

виртуальной машины:

- задачи не имеют собственных ресурсов;

- находятся в том же виртуальном адресном пространстве, что и данный

процесс;

- могут пользоваться теми же файлами, виртуальными устройствами и прочими

ресурсами.

Единственный собственный ресурс для потоков – процессорный.

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

а в многопроцессорных – могут выполняться параллельно, если нет конкуренции из-за

других ресурсов.

Главный результат многопоточности – возможность параллельно выполнять

несколько видов операций в одной прикладной программе. Параллельное вычисление

(более эффективное использование ресурсов центрального процессора и уменьшение

суммарного времени выполнения задачи) реализуется на уровне потоков и программа,

оформленная в виде нескольких потоков в рамках одного процесса, выполняется быстрее

за счет параллельного выполнения отдельных ее частей.

Особенно эффективно можно использовать многопоточность для выполнения

распределенных приложений.

С понятием «поток» связано распределение процессорного времени.

С понятием «процесс» связано распределение всех ресурсов, при диспетчеризации

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

Каждый процесс всегда состоит, по крайней мере, из одного потока, и только при

наличии внутреннего параллелизма программист может расщепить один поток на

несколько.