Подсистема управления процессами. Понятие процесса

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

Подсистема управления процессами.

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

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

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

1) распределение процессорного времени между несколькими одновременно существующими в системе процессами;

2) создание и уничтожение процессов;

3) обеспечение процессов необходимыми системными ресурсами;

4) поддержка взаимодействия между процессами.

Обычно процесс представляется как совокупность двух следующих компонентов:

1) объект ядра, через который операционная система управляет процессом, и где хранится статистическая информация о процессе;

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

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

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

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

Состояния процесса (потока).

В многозадачной системе выделяют три основных состояний процесса:

1) выполнение - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

2) ожидание - пассивное состояние процесса, процесс заблокирован и ждет осуществления некоторого события (например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса);


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

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

Контекст и дескриптор процесса (потока).

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

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

Планирование и диспетчеризация потоков.

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

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

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

1 - определение момента времени для смены текущего активного потока;

2 - выбор для выполнения потока из очереди готовых потоков.

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

Статический тип планирования используется в специализированных системах, в которых весь набор одновременно выполняемых задач определен заранее, например в системах реального времени. Планировщик называется статическим (или предварительным планировщиком), если он принимает решения о планировании не во время работы системы, а заранее (off-line).

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

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

Диспетчеризация сводится к следующему:

Сохранение контекста текущего потока, который требуется сменить;

Запуск нового потока на выполнение.

Вытесняющие и невытесняющие алгоритмы планирования.

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

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

Достоинство: высокая надёжность системы в целом.

Недостаток: снижение производительности за счёт траты процессорного времени на переключение задач.

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

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

Достоинство: высокая производительность, более высокая скорость переключения с потока на поток.

Недостаток: низкая надёжность, сложность разработки пользовательских приложений.

Алгоритмы планирования, основанные на приоритетах.

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

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

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

Существуют две разновидности приоритетного планирования: обслуживание с относительными приоритетами и обслуживание с абсолютными приоритетами.

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

В системах с абсолютными приоритетами выполнение активного потока прерывается кроме указанных выше причин, еще при одном условии: если в очереди готовых потоков появился поток, приоритет которого выше приоритета активного потока.

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

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

Алгоритмы планирования, основанные на квантовании.

В основе многих вытесняющих алгоритмов планирования лежит концепция квантования. В соответствии с этой концепцией каждому потоку поочередно для выполнения предоставляется ограниченный непрерывный период процессорного времени — квант.

Смена активного потока происходит, если:

1 - поток завершился и покинул систему;

2 - произошла ошибка;

3 - поток перешел в состояние ожидания;

4 - исчерпан квант процессорного времени, отведенный данному потоку.

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

Кванты, выделяемые потокам, могут быть одинаковыми для всех потоков или различными.

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

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

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

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

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

    Создание и удаление процессов.

    Распределение системных ресурсов (памяти, вычислительных ре­сурсов) между процессами.

    Синхронизацию процессов.

    Межпроцессорное взаимодействие.

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

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

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

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

Подсистема ввода/вывода.

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

Файловая система ос unix.

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

Доступ к файлам любого вида однотипен, то есть доступ к внешним устройствам такой же как к обычным файлам.

Такой подход обеспечивает независимость программы пользо­вателя от особенностей ввода-вывода на конкретное устройство. Помимо этого, файлы в UNIX определяют привилегии пользовате­лей, поскольку права пользователя контролируются с помощью прав доступа к файлам.

Как и во многих ОС-ах, в UNIX файлы организованы в виде древовидной структуры, называемой файловой системой. Корнем этого дерева является корневой каталог , имеющий имя «/». Имена всех остальных файлов содержат путь – список каталогов (ветвей), которые необходимо пройти, чтобы достичь файла. Таким образом, полное имя любого файла начинается с «/» и не содержит идентифи­катора устройства, на котором он фактически хранится. UNIX до­пускает существование нескольких файловых систем, присоединен­ных к корневому каталогу.

В UNIX существует 6 типов файлов, различающихся по функ­циональному назначению и действиям операционной системы при выполнении операций над файлами.

    Обычный файл (regular file).

    Каталог (directory).

    Специальный файл устройства (special device file).

    FIFO или именованный канал (named pipe).

    Связь (link).

Обычный файл представляет собой наиболее общий тип фай­лов, содержащий данные в некотором формате. Для ОС такие файлы представляют собой просто последовательность байтов. Эти файлы обрабатываются прикладной программой.

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

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

10245 . - текущий каталог

12432 .. - родительский каталог

номер имя

метаданные файла

Специальный файл устройства обеспечивает доступ к физиче­скому устройству. В UNIX различают символьные (character) и блочные (block) файлы устройств. Доступ к устройствам осуществ­ляется путем открытия, чтения и записи в специальный файл уст­ройства.

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

FIFO или именованный канал – это файл, используемый для связи между процессами. FIFO впервые появился в System V UNIX, и большинство современных систем поддерживают этот механизм.

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

Сокеты предназначены для взаимодействия между процес­сами. Интерфейс сокетов часто используется для доступа к сети TCP/IP. В системах, ветви BSDINIX на базе сокетов реализована система межпроцессорного взаимодействия, с помощью которой ра­ботают многие системные сервисы, например, система печати.

Функции операционной системы автономного компьютера обычно группируются либо в соответствии с типами локальных ресурсов, которыми управляет ОС, либо в соответствии со специфическими задачами, применимыми ко всем ресурсам. Иногда такие группы функций называют подсистемами. Наиболее важными подсистемами управления ресурсами являются подсистемы управления процессами, памятью, файлами и внешними устройствами, а подсистемами, общими для всех ресурсов, являются подсистемы пользовательского интерфейса, защиты данных и администрирования. Важнейшей частью операционной системы, непосредственно влияющей на функционирование вычислительной машины, является подсистема управления процессами. Для каждого вновь создаваемого процесса ОС генерирует системные информационные структуры, которые содержат данные о потребностях процесса в ресурсах вычислительной системы, а также о фактически выделенных ему ресурсах. Таким образом, процесс можно также определить как некоторую заявку на потребление системных ресурсов. В мультипрограммной операционной системе одновременно может существовать несколько процессов. Часть процессов порождается по инициативе пользователей и их приложений, такие процессы обычно называют пользовательскими. Другие процессы, называемые системными, инициализируются самой операционной системой для выполнения своих функций. Важной задачей операционной системы является защита ресурсов, выделенных данному процессу, от остальных процессов. Одним из наиболее тщательно защищаемых ресурсов процесса являются области оперативной памяти, в которой хранятся коды и данные процесса. Совокупность всех областей оперативной памяти, выделенных операционной системой процессу, называется его адресным пространством. Говорят, что каждый процесс работает в своем адресном пространстве, имея в виду защиту адресных пространств, осуществляемую ОС. Защищаются и другие типы ресурсов, такие как файлы, внешние устройства и т. д. Операционная система может не только защищать ресурсы, выделенные одному процессу, но и организовывать их совместное использование, например разрешать доступ к некоторой области памяти нескольким процессам. На протяжении периода существования процесса его выполнение может быть многократно прервано и продолжено. Для того чтобы возобновить выполнение процесса, необходимо восстановить состояние его операционной среды. Состояние операционной среды идентифицируется состоянием регистров и программного счетчика, режимом работы процессора, указателями на открытые файлы, информацией о незавершенных операциях ввода-вывода, кодами ошибок выполняемых данным процессом системных вызовов и т. д. Эта информация называется контекстом прогресса. Говорят, что при смене процесса происходит переключение контекстов. Таким образом, подсистема управления процессами планирует выполнение процессов, то есть распределяет процессорное время между несколькими одновременно существующими в системе процессами, занимается созданием и уничтожением процессов, обеспечивает процессы необходимыми системными ресурсами, поддерживает синхронизацию процессов, а также обеспечивает взаимодействие между процессами.

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

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

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

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

Единицы работы ОС

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

И с процессом, и с потоком связывается оп­ределенный программный код, который для этих целей оформляется в виде ис­полняемого модуля. Чтобы этот программный код мог быть выполнен, его необ­ходимо загрузить в оперативную память, возможно, выделить некоторое место на диске для хранения данных, предоставить доступ к устройствам ввода-выво­да, например к последовательному порту для получения данных по подключен­ному к этому порту модему, и т. д. В ходе выполнения программе может также понадобиться доступ к информационным ресурсам, например файлам, портам TCP/UPD. И, конечно же, невозможно выполнение программы без предоставления ей процессорного времени, то есть времени, в течение которого процессор выполняет коды данной программы.

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

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

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

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

    создание процессов и потоков;

    обеспечение процессов и потоков необходимыми ресурсами;

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

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

    диспетчеризация потоков;

    организация межпроцессного взаимодействия;

    синхронизация процессов и потоков;

    завершение и уничтожение процессов и потоков.

1. К созданию процесса приводят пять основных событий:

    выполнение запроса работающего процесса на создание процесса;

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

    инициирование пакетного задания;

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

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

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

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

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

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

5. Диспетчеризация заключается в реализации найденного в результате планирования решения, т.е. в переключении процессора с одного потока на другой. Диспетчеризация проходит в три этапа:

    сохранение контекста текущего потока;

    запуск нового потока на выполнение.

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

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

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