В. Столлингс - Операционные системы (1114679), страница 22
Текст из файла (страница 22)
3':.'1.'- СОСТОЯНИЯ"-П~ЦЕССО:„ Основной задачей процессора является выполнение машинных команд»: >рые находятся н основной памяти и составляют программу. В пред тане объяснялось, что с целью повышения эффективности и облегчения > программирования процессор может одновременно выполнять несколько >амм, чередуя их во времени. В главе 2, "Обзор операционных систем" упоминалось, что для каждой >эммы, которая должна быть выполнена, создается свой процесс, или зэд точки зрения процесса его работа состоит в выполнении определенного на Взаимоблокировки рассматриваются в главе 6, "Взаимоблокировка и голода о сути, взаимоблокировка происходит тогда, когда каждый из двух процессов ывает ресурсы, которые нужны другому процессу.
Каждый из зтих двух процесса4,, зт ждать освобождения нужных ему ресурсов до бесконечности. т~Ф. анд; последовательность выполнения этих команд задается адресами, котойе за вносятся в счетчик команд. Через некоторое время счетчик команд может ресова вать кад других программ, которые являются частями других процессов, тки зрения данной программы ее выполнение состоит из последовательно~о с т'>чк' в гаалнения ее команд. :„, вы Поведение процесса можно охарактеризовать, последовательно перечислив ,полне ни енные н ходе ега работы команды. Такай перечень выполненных команд ар " са называется ега следом (тгасе) . Поведение процессора можно охарактеать, показав, как чередуются следы различных процессов. разевать.
рассмотрим очень простой пример. На рис. 3.1 показано расположение в памяти тп трех процессов. Чтобы упростить обсуждение, предположим, чта виртуальная ая память не используется; таким образам, все три процесса представлены прогрэ граммами, которые полностью загружены в основную память. Кроме этих прогрэ' * „рамм в памяти находится небольшая программа-диспетчер, выполняющая аерек реключение с одного процесса на другой. В листинге 3.1 показаны следы трех расс сматрнваемых процессов на ранних стадиях их выполнения.
Представлены первы ервые х2 выполненных команд в процессах А и С; в процессе В выполнено че,ыре команды, и мы считаем, что эти команды включают в себя операцию ввода-вывада, завершения которой должен ожидать процесс. Ос>ч>аиая память Счетчик команд 100 Рис. 3.1. Состояние системы в момент выполнения 13 го командного цикла ~ем. листинг 3.3) з Иногда в русскоязычной литературе используются термины траектория и п>па с'а- — Прим.
перев. Рл лава 3. Описание процессов и управление ими Чистннг 3.1. Следы процессов, изображенных на рнс. 3.1 8000 8001 8002 8003 Теперь рассмотрим эти следы с точки зрения процессора. В лис показаны чередующиеся следы, получившиеся в результате выполнения б2 командных циклов (для удобства они пронумерованы). Предполо операционная система позволяет непрерывно выполнять не более шести ных циклов одного и того же процесса, после чего процесс прерывается,' предотвращает монопольное использование всего процессорного времени' из процессов. Из листинга 3.2 видно, что после первых шести команд пра следует перерыв, в течение которого выполняется некоторый код диспе стоящий из шести команд, после чего управление передается процессу полнив четыре команды, процесс В запрашивает операцию ввода-вывода, жен ожидать ее завершения. Поэтому процессор прекращает выполнять В и с помощью диспетчера переходит к выполнению процесса С.
После ного перерыва процессор возобновляет выполнение процесса А. По истеч веденнага этому процессу времени процесс В все еще ожидает заверше Рации ввода-вывода, поэтому диспетчер снова передает управление проц Листинг. 3.2. Составной след процессов, изображенных на рис. 3.1 5000 5001 5002 5003 5004 5005 Указанное количество команд, выполняемых при работе процессов и дис, намного меньше. чем в деаствительноегпи; в этом учебном примере такое не добно маленькое число иепольгуетея для упрощения рассмотрения. 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 503 0 5011 а) След б) След процесса А процесса В 5000 — начальный адрес процесса 8008 — начальньз7 адрес прсцесса 22000 — начальный адрес прсцясса 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 в] След процесса С А Е с 27 12004 28 12005 тайм-аут 29 100 30 101 31 102 32 103 33 104 34 105 35 5006 36 5007 37 5008 38 5009 39 5010 40 5011 тайм †ау 41 100 42 101 43 102 44 103 45 104 46 105 47 12006 48 12007 49 12008 50 12009 51 12010 52 12011 тайм аут 105 8000 8001 8002 8003 Ввод-вывел 100 101 102 103 105 12000 12001 12002 12003 нз чзлькый адрес лрсхраммы диспетчера яантомхс Ба няьи аблй с Ги - Вьы7слнеиия кОма ад диспетчера 8 ьерасм столбик указам: ламара ксмаггдггых циклов, во зтсрсм — адреса выполняемых команд Модель процесса с двумя состояниями Основной задачей операционной системы является управление вьталнением процессов; в эту задачу входит определение схемы чередования процессов и выделения им ресурсов.
Первый шаг, который следует предпринять при составлении программы, предназначенной для управления процессами, состоит в описании ожидаемого поведения процессов. Самую простую модель можно построить, исходя из того, что в любой момент ент времени процесс либо выполняется, либо не выполняется. Таким образом, про Рацесс может быть в одном из двух состояний: выполняющийся или не выполняю ющийся (рис.
3.2,а), Создав новый процесс, операционная система вводит его в сист истему в состоянии не выполняющегося. Созданный процесс, о существовании кото ог Рога известно операционной системе, ждет, пока он сможет быть запущен. сремя я ат времени выполняющиеся процессы будут прерываться, и та часть опеРациощх,- ннои системы, которая выполняет функции диспетчера, будет выбирать для вып ь'полнения другой процесс. Выполняющийся перед этим процесс перейдет из сост выполя я таяния выполняющегося в состояние не выполняющийся, а в состояние лняющегася перейдет один из ожидающих процессов.
Анап телыю в нализируя эту простую модель, можно сделать некоторые выводы относиврхитектуры операционной системы. Необходим способ, с помощью котого б улет представлен каждый процесс, чтобы операционная система могла слеза ни ним. С каждым процессом нужно связать определенную информацию, в Часть 2. П Описание процессов и управление ими Диопегчериззпия Вход в системУ в интетивиам режиме Создаиие операционной системой процесса, необходимога для рабаты каких-либо служб в) Диаграмма перехода состояний Порождение одного про- цессе другим Часть 2. П которую будет входить его текущее состояние и размещение в памяти. юлняющиеся процессы следует организовать в какую-то очередь, где они '. гали бы своего выполнения. Один из возможных вариантов предложе'' >ис.
3.2,6. Здесь имеется одна очередь, ее элементами являются указате гроцессы. Можно предложить и другую схему, в которой очередь состоит из ' ,анного списка блоков данных, где каждый блок представляет отдельный ' гесс; позже мы вернемся к исследованию этой реализации. б~ Диаграмма использования очереди Рис. 3.2. Модель процесса с двумя состояниями Поведение диспетчера можно описать следующим образом. Процесс, оторого прервана, переходит в очередь процессов, ожидающих выполне и же процесс завершен, он выводится из системы. В любом случае для ения диспетчер выбирает из очереди следующий процесс.
'1:::, ',оздание и завершение процессов Перед тем как мы предпримем попытку улучшения нашей простой двумя состояниями, будет полезно обсудить создание и завершение про вдь время жизни процесса ограничивается моментами его создания и з ия вне зависимости от модели поведения. Создание процессов Когда операционная система собирается добавить новый процесс к тем, 'ке состоят на учете, она создает структуры данных, использующиеся при ии этим процессом (как описано в разделе 3.2), и размещает его адресное 'во в основной памяти. С помощью этих действий и создается новый процесс.
":! К созданию процесса могут привести четыре события, перечи гбл. 3.1. * 3 1 В среде пакетной обработки процесс создается в ответ на поступл "д ; в интерактивной среде процесс создается при попытке нового пользователя ' вог йти в систему. В обоих случаях ответственность за создание нового процесса лежит '. иао' , перационной системе. Кроме того, операционная система может создавать прона требованию приложения. Например, если пользователь отправляет запрос на цесс раппе пе латку файла, операционная система может создать процесс, управляющий пе-ью. Затем процесс, производивший запрос, может продолжить свою работу, неза.
чатью. висим има от того, сколько времени понадобится для печати. Т блица 3.1. Причины создания процессов В аперацпоппую систему для обработки поступает управляюгций поток пакетных заданий (обычно с ленты или с диска). Готовясь принять пв обработку новое задание, операционная система считывает очередную последовательность команд управления заданиями В систему с терминала входит новый пользователь Операционная система мажет создать процесс дли выполнении некоторой функции, которая требуется для программы пользователя.
При этом пользователь не должен ждать, пока закончится ее выполнение (как в примере, в котором создавался процесс управления печатью) С целью структуризации программы или использования возможностей параллельных вычислений программа мажет создавать другие процессы Традиционно операционная система создает все процессы незаметно для пользователя или приложения; такой способ принят во многих современных операционных системах. Однако иногда требуется„чтобы один процесс мог послужить причиной создания другого процесса.
Например, процесс приложения может сгенерировать другой процесс, который будет получать данные от первого процесса и приводить их к виду, удобному для дальнейшего анализа. Новый процесс будет работать параллельно с приложением и время от времени активизироваться для получения новых данных. Такая организация может быть очень полезна для структурирования приложений. В качестве другого примера можно привести ситуацию, в которой процесс-сервер (например, сервер печати или Файловый сервер) может генерировать новый процесс для каждого обрабатываемого им запроса.