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

Автор работы: Пользователь скрыл имя, 16 Октября 2012 в 10:10, контрольная работа

Краткое описание

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

Прикрепленные файлы: 1 файл

ОС_КР_готово.doc

— 62.00 Кб (Скачать документ)

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

 

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

Термин «процесс»  впервые появился при разработке операционной системы Multix и имеет несколько определений, которые используются в зависимости от контекста, согласно которым процесс — это:

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

- "объект", которому выделено процессорное время;

- асинхронная работа.

Для описания состояний процессов используется несколько моделей. Самая простая — модель трех состояний. Она определяет следующие состояния процесса:

- состояния выполнения;

- состояния ожидания;

- состояния готовности.

Выполнение  — это активное состояние, во время которого процесс обладает всеми необходимыми ему ресурсами. В этом состоянии процесс непосредственно выполняется процессором.

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

Готовность  — это тоже пассивное состояние, процесс тоже заблокирован, но в  отличие от состояния ожидания, он заблокирован не по внутренним причинам (ведь ожидание ввода данных — это  внутренняя, «личная» проблема процесса — он может ведь и не ожидать ввода данных и свободно выполняться — никто ему не мешает), а по внешним, независящим от процесса, причинам.

Из состояния  готовности процесс может перейти  только в состояние выполнения. В  состоянии выполнения может находится только один процесс на один процессор. Если у вас n-процессорная машина, у вас одновременно в состоянии выполнения могут быть n процессов. Из состояния выполнения процесс может перейти либо в состояние ожидания, либо в состояние готовности.

Более сложная  модель — это модель, состоящая  из пяти состояний. В этой модели появилось  два дополнительных состояния: рождение процесса и смерть процесса.

Рождение процесса — это пассивное состояние, когда  самого процесса еще нет, но уже готова структура для появления процесса.

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

Над процессами можно производить следующие операции:

- Создание процесса — это переход из состояния рождения в состояние готовности;

- Уничтожение процесса — это переход из состояния выполнения в состояние смерти;

- Восстановление процесса — переход из состояния готовности в состояние выполнения;

- Изменение приоритета процесса — переход из выполнения в готовность;

- Блокирование процесса — переход в состояние ожидания из состояния выполнения;

- Пробуждение процесса — переход из состояния ожидания в состояние готовности;

- Запуск процесса (или его выбор) — переход из состояния готовности в состояние выполнения.

Процесс не может взяться  из ниоткуда: его обязательно должен запустить какой-то процесс. Процесс, запущенный другим процессом, называется дочерним (child) процессом или потомком. Процесс, который запустил новый процесс называется родительским (parent), родителем или просто — предком. У каждого процесса есть два атрибута — PID (Process ID) - идентификатор процесса и PPID (Parent Process ID) — идентификатор родительского процесса.

Процессы создают иерархию в виде дерева. Самым «главным» предком, то есть процессом, стоящим на вершине этого дерева, является процесс init (PID=1).

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

Под словом «поток» имеется  в виду «поток команд», то есть последовательность инструкций, которые считывает и исполняет процессор.

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

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

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

- меньше времени для завершения потока;

- меньше времени для переключения между двумя потоками в пределах процесса;

- меньше коммуникационных расходов, поскольку потоки разделяют все ресурсы, и в частности адресное пространство. Данные, продуцируемые одним из потоков, немедленно становятся доступными всем другим потокам.

Преимущества многопоточности.

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

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

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

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

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

С каждым потоком  связывается:

- Счетчик выполнения команд;

- Регистры для текущих переменных;

- Стек;

- Состояние.

Потоки делят  между собой элементы своего процесса:

- Адресное пространство;

- Глобальные переменные;

- Открытые файлы;

- Таймеры;

- Семафоры;

- Статистическую информацию.

Состояние потоков 

ВЫПОЛНЕНИЕ – активное состояние потоков, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

ОЖИДАНИЕ – пассивное состояние потока, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого потока, освобождения какого-либо необходимого ему ресурса;

ГОТОВНОСТЬ – также пассивное состояние потока, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: поток имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого потока.

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

В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно "вытеснен" из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет.

 

 

 

 

 

 

 

 

 

 

Подсистема  управления памятью. Функции ОС по управлению памятью.

 

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

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

Как правило, происходит условное разбиение физического адресного пространства. Связывание логических адресов процесса и физических происходит на этапе его загрузки в конкретный раздел.

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

а)      b)

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

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

Функциями ОС по управлению памятью в мультипрограммной  системе являются:

- отслеживание свободной и занятой памяти;

- выделение памяти процессам и освобождение памяти по завершении процессов;

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

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

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

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

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

 

 

Информация о работе Понятия процесса и потока. Состояния потока