Лекция: Определение процессов, потоков и ресурсов ВС

 

Для реализации мультипрограммного способа организации вычислительного процесса необходимо определить единицы работы, между которыми ОС разделяются ресурсы компьютера. Такими базовыми единицами работы ОС являются процессы (process) и потоки (threads — нити) /1,7,8/.

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

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

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

Основными видами ресурсов являются: процессор (точнее – процессорное время), оперативная и внешняя память, каналы ввода – вывода и периферийные устройства. Большая часть ресурсов являются разделяемыми, но некоторые, например, принтер относятся к неразделяемым.

Важным видом ресурсов являются системные программные модули и объекты для организации синхронизации процессов и потоков (семафоры и мониторы), обеспечения их взаимодействия (почтовые ящики, конвейеры и очереди сообщений), контроля взаимных блокировок и тупиков /1,7,8,10/.

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

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

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

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

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

При манипулировании с задачами-процессами нужно учитывать все ресурсы, закрепленные за каждой из них. При манипулировании с задачами-потоками нужно менять только контекст задачи, если производится переключение с одной задачи на другую в рамках одного процесса. Для хранения контекста задачи имеется специальный сегмент состояния задачи – Task State Segment (TSS), в котором при переключении с задачи на задачу автоматически сохраняется содержимое регистров процессора. На местоположение TSS в процессорах с архитектурой i32 указывает специальный регистр – Task Register (TR).

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

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

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

тип процесса;

приоритет процесса;

переменную состояния, которая определяет состояние процесса (ожидание, готовность, выполнение);

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

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

указатель на место и его адрес для организации общения с другими процессами;

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

Упражнение 2.1. Осуществить просмотр и анализ текущего количества дескрипторов процессов и потоков для Windows 2000/XP.

Для этого следует нажать одновременно комбинацию клавиш Ctrl+Shift+Esc и открыть окно «Диспетчер задач». На вкладке «Быстродействие» этой программы в поле «Всего дескрипторов» указано их число. Определить количество дескрипторов для управления потоками, число вычислительных процессов и их назначение.

 

еще рефераты
Еще работы по информатике