Тема 2.3 Планирование процессов
Процессы и потоки. Состояния процессов и потоков.
Понятия: задание, процесс, планирование процесса. Состояния существования процесса. Диспетчеризация процесса. Блок состояния процесса. Алгоритм диспетчеризации. Способ выбора процесса для диспетчеризации. Понятие события. Блок состояния события. Механизм установления соответствия между процессом и событием.
ПЛАНИРОВЩИК!!!!!!!
Понятие вычислительного процесса и ресурса.
Понятие процесса является одним из основных в современных операционных системах. Дадим несколько определений процесса (process), отражающих различные стороны этого важного понятия:
· Процесс — это абстракция, описывающая выполняющуюся программу.
· Процесс— исполнение последовательности действий в среде, включающей собственно выполняющуюся программу, а также связанных с ней данных и состояний (открытых файлов, текущего каталога и т. п.).
· С точки зрения операционной системы, процесс — единица работы, заявка на потребление системных ресурсов.
· Процесс — объект, которому выделяется процессор.
Первое упоминание о процессе появилось в 60-е годы XX века в операционной системе MULTICS.
Если говорить о соотношении между процессом и программой, то справедливы следующие два утверждения:
· программа — это часть состояния процесса. С этой точки зрения процесс — нечто большее, чем просто программа;
· программа может вызывать более чем один процесс для выполнения работы. С этой точки зрения программа — нечто большее, чем процесс.
Определение концепции процесса преследует цель выработать механизмы распределения и управления ресурсами. Понятие ресурса, так же как и понятие процесса, является одним из основных при рассмотрении ОС.
2. ОСНОВНАЯ Ф-ЦИЯ ОС: Повышение эффективности использования компьютера за счет рационального управления его ресурсами.
Ресурсом называется всякий объект, который может распределяться внутри системы.
Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно (в один и тот же момент времени) или параллельно (в течении некоторого интервала времени процессы используют ресурс попеременно), а могут быть неделимыми
![]() |
Рис. 1. Классификация ресурсов
При разработке первых систем ресурсами считались процессорное время, память, каналы ввода/вывода и периферийные устройства. Однако сегодня понятие ресурса стало более универсальным и общим. Оно превратилось в некоторую абстрактную структуру с целым рядом атрибутов, характеризующих способы доступа к этой структуре и ее физическое представление в системе
Современная операционная система поддерживает мультипрограммирование (многопроцессность) и старается эффективно использовать ресурсы путем организации к ним очередей запросов, составляемых тем или иным способом. Это требование достигается поддерживанием в памяти более одного процесса, ожидающего процессор, и более одного процесса, готового использовать другие ресурсы, как только последние станут доступными. Общая схема выделения ресурсов такова. При необходимости использовать какой-либо ресурс (оперативную память, устройство ввода/вывода, массив данник и т. п.) задача обращается к супервизору операционной системы — ее центральному управляющему модулю, посредством специальных вызовов, команд, директив и сообщает о своем требовании. При этом указывается вид ресурса и, если надо, его объем (например, количество адресуемых ячеек оперативной памяти, количество дорожек или секторов на системном диске, устройство печати и объем выводимых данных и т. п.). Директива обращения к операционной системе передает ей управление, переводя процессор в привилегированный режим, если такой существует. Не все вычислительные комплексы имеют два (и более), режима работы: привилегированный (режим супервизора), пользовательский, режим эмуляции какого-нибудь другой компьютера и т. д.
Ресурс может быть выделен задаче, обратившейся к супервизору с соответствующим запросом, если:
· он свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;
· текущий запрос и ранее выданные запросы допускают совместное использование ресурсов;
· ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс).
Получив запрос, операционная система либо удовлетворяет его и возвращает управление задаче, выдавшей данный запрос, либо, если ресурс занят, ставит задачу в очередь; к ресурсу, переводя его в состояние ожидания (блокируя). Очередь к ресурсу может быть организована несколькими способами, но чаще всего это осуществляется с помощью списковой структуры.
После окончания работы с ресурсом задача опять с помощью специального вызова супервизора (посредством соответствующей директивы) сообщает операционной системе об отказе от ресурса, или операционная система забирает ресурс сама, если управление возвращается супервизору после выполнения какой-либо системной функции.
Для каждого вновь созданного процесса ОС генерирует информационные структуры, которые содержат данные о потребностях процесса в ресурсах и о фактически выделенных ему ресурсах. Важнейшей задачей ОС является защита ресурсов, выделенных данному процессу, от остальных процессов.
Адресное пространство процесса– совокупность всех областей оперативной памяти, выделенных ОС данному процессу.
Во время выполнения процесса может быть многократно прервана и продолжена его работа. Чтобы возобновить выполнение процесса, необходимо возобновить состояние его операционной среды, которое идентифицируется состоянием регистров, программы-счётчика, режимом работы процессора, информацией о незавершённых операциях ввода-вывода и т.д. Совокупность этих сведений называется контекстом процесса. В ОС нет однозначного соответствия между процессами и программами, т.е. один программный файл может породить несколько параллельно выполняемых процессов, а процесс в ходе выполнения может сменить программный файл и начать выполнять другую программу. Основные задачи подсистемы управления процессами:
1. Планирование выполнения процессов;
2. Создание, уничтожение, возобновление, приостановление выполнения процессов;
Основные состояния процесса (рис. 2):
· на процессоре — активное состояние, в котором процесс обладает всеми необходимыми ресурсами, в том числе самим процессором;
· готовность — процесс находится в очереди на выполнение;
· ожидание — процесс ожидает завершение события (например, освобождения ресурса);
· остановлен — процесс остановлен, как правило, в отладочном режиме;
· создание — выполнение действий, необходимых для создания процесса;
· завершение — выполнение действий, связанных с успешным завершением процесса;
· зомби — процесс закончен, но предок не принял его завершения.
Рис. 2. Основные состояния процесса
При создании процесса должны быть выполнены следующие действия:
· присвоение процессу уникального номера (ID);
· добавление процесса в список процессов, известных системе;
· определение начального приоритета;
· формирование блока управления процессом;
· выделение необходимых ресурсов.
За время своего существования процесс может неоднократно совершать переход из одного состояния в другое.
Процесс из состояния бездействия может перейти в состояние готовности в следующих случаях:
· по команде пользователя. Имеет место в тех диалоговых операционных системах, где программа может иметь статус задачи, а не просто быть исполняемым файлом.
· при выборе из очереди планировщиком (характерно для операционных систем, работающих в пакетном режиме);
· по вызову из другой задачи (посредством обращения к супервизору один процесс может создать, инициировать, приостановить, остановить, уничтожить другой процесс);
· по прерыванию от внешнего инициативного устройства (сигнал о свершении некоторого события может запускать соответствующую задачу);
· при наступлении запланированного времени запуска программы.
Последние два способа запуска задачи, при которых процесс из состояния бездействия переходит в состояние готовности, характерны для операционных систем реального времени.
Процесс, который может исполняться, как только ему будет предоставлен процессор, находится в состоянии готовности. Считается, что такому процессу уже выделены все необходимые ресурсы за исключением процессора.
Из состояния выполнения процесс может выйти по одной из следующих причин:
· процесс завершается, при этом он посредством обращения к супервизору передает управление операционной системе и сообщает о своем завершении. В результате этих действий супервизор либо переводит его в список бездействующих процессов (процесс переходит в пассивное состояние), либо уничтожает (уничтожается, естественно, не сама программа, а именно задача, которая соответствовала исполнению некоторой программы). В состояние бездействия процесс может быть переведен принудительно: по команде оператора (действие этой и других команд оператора реализуется системным процессом, который «транслирует» команду в запрос к супервизору с требованием перевести указанный процесс в состояние бездействия), или путем обращения к супервизору операционной системы из другой задачи с требованием остановить данный процесс;
· процесс переводится супервизором операционной системы в состояние готовности к исполнению в связи с появлением более приоритетной задачи или в связи с окончанием выделенного ему кванта времени;
· процесс блокируется (переводится в состояние ожидания) либо вследствие запроса операции ввода/вывода (которая должна быть выполнена прежде, чем он сможет продолжить исполнение), либо в силу невозможности предоставить ему ресурс, запрошенный в настоящий момент (причиной перевода в состояние ожидания может быть и отсутствие сегмента или страницы в случае организации механизмов виртуальной памяти), а также по команде оператора на приостановку задачи или по требованию через супервизор от другой задачи.
При наступлении соответствующего события (завершилась операция ввода/вывода, освободился затребованный ресурс, в оперативную память загружена необходимая страница виртуальной памяти и т. д.) процесс деблокируется и переводится в состояние готовности к исполнению.
Таким образом, движущей силой, меняющей состояния процессов, являются события. Один из основных видов событий — это прерывания.
Для того чтобы операционная система могла управлять процессами, она должна располагать всей необходимой для этого информацией. С этой целью на каждый процесс заводится специальная информационная структура, называемая дескриптором процесса (описателем задачи, блоком управления задачей). В общем случае дескриптор процесса содержит следующую информацию:
· идентификатор процесса (так называемый PID — process identificator);
· тип (или класс) процесса, который определяет для супервизора некоторые правила предоставления ресурсов;
· приоритет процесса, в соответствии с которым супервизор предоставляет ресурсы. В рамках одного класса процессов в первую очередь обслуживаются более приоритетные процессы;
· переменную состояния, которая определяет, в каком состоянии находится процесс (готов к работе, в состоянии выполнения, ожидание устройства ввода/вывода и т. д.);
· защищенную область памяти (или адрес такой зоны), в которой хранятся текущие значения регистров процессора, если процесс прерывается, не закончив работы. Эта информация называется контекстом задачи;
· информацию о ресурсах, которыми процесс владеет и/или имеет право пользоваться (указатели на открытые файлы, информация о незавершенных операциях ввода/вывода и т.п.)
· место (или его адрес) для организации общения с другими процессами;
· параметры времени запуска;
· в случае отсутствия системы управления файлами – адрес задачи на диске в ее исходном состоянии и адрес на диске, куда она выгружается из оперативной памяти, если ее вытесняет другая.
Процессы делятся на традиционные (имеющие один поток управления) и многопоточные (многонитевые). Поток (нить) управления (thread) — исполнение команд программы в естественном порядке.
Многопоточность в рамках одного процесса имеет существенные преимущества. Переключение контекста между двумя потоками в одном процессе значительно проще, чем переключение контекста между двумя процессами. Все данные, за исключением стека исполнения и содержимого регистров процессора, разделяются между потоками. Таким образом, многопоточность предоставляет эффективный параллелизм.
Можно указать целые классы программ, где необходима многопоточность:
· операционные системы;
· сетевые серверы;
· встроенные системы;
· вычислительные программы.
Об использовании потоков
Как правило, технику явного распараллеливания не следует использовать при прикладном программировании. Нужно переложить заботу о распараллеливании на компиляторы, возможно помогая ему директивами. Однако системному программисту знание и умение применять нити в своих программах необходимо.
Многие операционные системы, ориентированные на рабочие станции и персональные компьютеры, начиная с середины 80-х годов XX века, включают поддержку многопоточности. Впервые стандарт на потоки появился в 1995 году. Это был стандарт IEEE POSIX 1003.1с-1995. Однако стандарт появился достаточно поздно, и некоторые компании успели выпустить свои версии многопоточных библиотек, существенно отличающихся от стандарта. Можно выделить следующие основные семейства потоков:
1. Потоки, поддерживающие стиль POSIX-стандарта. Это семейство состоит из трех подгрупп:
· "истинные" POSIX-потоки. Это потоки, базирующиеся на стандарте IEEE POSIX 1003.1с-1995 (также известного как ISO/IEC 9945-1:1996), являющегося частью стандарта ANSI/IEEE 1003.1;
· DCE-потоки, базирующиеся на ранней версии стандарта POSIX — 1003.1;
· Unix International потоки, также известные как Solaris-потоки. Они достаточно близки к стандарту и поддерживаются в операционных системах Solaris компании Sun Microsystems и UnixWare 2 компании SCO;
2. Потоки Microsoft. Это семейство состоит из двух подгрупп, причем обе разработаны в компании Microsoft:
· потоки WIN32, являющиеся стандартными для семейства операционных систем Windows, включая Windows 2000, Windows 95, Windows 98, Windows ME и Windows СЕ;
· потоки OS/2, являющиеся стандартными для операционной системы OS/2 компании IBM.
3. Другие варианты потоков. Их не так много. Отдельного упоминания заслуживает лишь пакет С threads, имеющийся в операционной системе Маch.
Различные семейства предлагают различный синтаксис основных функций потоковых библиотек. Основными группами функций являются: функции создания потоков и функции синхронизации потоков (как правило, набор таких функций достаточно богат и разнообразен).
Контрольные вопросы:
| Домашнее задание: 1. Конспект лекций 2. В ТЕТРАДИ ВЫПИСАТЬ ОТВЕТЫ НА ВОПРОСЫ |
Лекция 10 (2/20)
![]() | Проверка Д/З: | 1). У 3 чел. Проверить конспекты 2). 3 чел. спросить по предыдущему (см. выше) |
Алгоритмы планирования