Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС (ШПОРЫ).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
267.26 Кб
Скачать

13. Условия выделения ресурсов задачам

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

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

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

14. Диаграмма состояний процесса; дескриптор процесса

Оно как бы объединяет в себе и обычный процесс, и поток выполнения (тред). Это понятие и поддерживаемая для него на уровне аппаратуры информационная структура позволяют в дальней­шем при разработке операционной системы строить соответствующие дескрипто­ры как для задач, так и для процессов. И отличаться эти дескрипторы будут прежде всего тем, что дескриптор задачи может хранить только контекст приостановлен­ного вычислительного процесса, тогда как дескриптор процесса должен содержать поля, описывающие тем или иным способом ресурсы, выделенные этому процес­су. Для хранения контекста задачи в микропроцессорах с архитектурой i32 имеет­ся специальный сегмент состояния задачи (Task State Segment, TSS). А для отобра­жения информации о процессе используется уже иная информационная структура, однако она включает в себя TSS. Сегмент состояния задачи используется как основа для дескриптора процесса. Т.о. дескриптор процесса больше по разме­ру, чем TSS, и включает в себя такие традиционные поля, как идентификатор про­цесса, его имя, тип, приоритет и проч. Каждый поток может быть оформлен в виде самостоятельного сегмента, что приводит к тому, что простая (не многопоточная) программа будет иметь всего один сегмент кода в виртуальном адресном пространстве.