Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системное программное обеспечение. Учебник
.pdf
31
Глава 1. Принципы организации системного программного обеспечения
Получив запрос, операционная система либо удовлетворяет
его и возвращает управление задаче, выдавшей данный запрос,
либо, если ресурс занят, ставит задачу в очередь к ресурсу, переводя ее в состояние ожидания (блокируя). Очередь к ресурсу может быть организована несколькими способами, но чаще
всего это осуществляется с помощью списковой структуры.
После окончания работы с ресурсом задача опять с помощью
специального вызова супервизора (посредством соответствующей директивы) сообщает операционной системе об отказе
от ресурса, или операционная система забирает ресурс сама,
если управление возвращается супервизору после выполнения
какой-либо системной функции. Супервизор операционной системы, получив управление по этому обращению, освобождает ресурс и проверяет, имеется ли очередь к освободившемуся
ресурсу. Если очередь есть, в зависимости от принятой дисциплины обслуживания (правила обслуживания) и приоритетов
заявок он выводит из состояния ожидания задачу, ждущую ресурс, и переводит ее в состояние готовности к выполнению. После этого управление либо передается данной задаче, либо возвращается той, которая только что освободила ресурс [1, 4].
При выдаче запроса на ресурс задача может указать, хочет ли
она владеть ресурсом монопольно или допускает совместное использование с другими задачами. Например, с файлом можно работать монопольно, а можно и совместно с другими задачами.
Если в системе имеется некоторая совокупность ресурсов,
то управлять их использованием можно на основе определенной стратегии. Стратегия подразумевает четкую формулировку целей, следуя которым можно добиться эффективного распределения ресурсов.
При организации управления ресурсами всегда требуется
принять решение о том, что в данной ситуации выгоднее: быстро обслуживать отдельные наиболее важные запросы, предоставлять всем процессам равные возможности либо обслуживать максимально возможное количество процессов и наиболее
полно использовать ресурсы.
Операционная система реализует множество разных функ-
ций, в том числе:
• определяет интерфейс пользователя;

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
32
• обеспечивает разделение аппаратных ресурсов между поль-
зователями;
• дает возможность работать с общими данными в режиме
коллективного пользования;
• планирует доступ пользователя к общим ресурсам;
• обеспечивает операции ввода-вывода;
• осуществляет восстановление информации и вычислитель-
ного процесса в случае ошибок.
Основными функциями, которые выполняет операционная
система, являются следующие [1, 4]:
• прием от пользователя (или от оператора системы) за-
даний или команд, сформулированных на соответствующем
языке – в виде директив оператора или в виде указаний с помощью манипулятора (например, мыши), и их обработка;
• прием и исполнение программных запросов на запуск,
приостановку, остановку других программ;
• загрузка в оперативную память подлежащих исполне-
нию программ;
• инициация программы (передача ей управления, в ре-
зультате чего процессор исполняет программу);
• идентификация всех программ и данных;
• обеспечение работы системы управления файлами и/или
системы управления базой данных, что позволяет резко увеличить эффективность всего программного обеспечения;
• обеспечение режима мультипрограммирования, то есть
выполнения двух или более программ на одном процессоре,
создающее видимость их одновременного выполнения;
• обеспечение функций по организации и управлению все-
ми операциями ввода-вывода;
• удовлетворение жестким ограничениям на время ответа
в режиме реального времени (для операционной системы реального времени);
• распределение памяти, а в большинстве современных си-
стем и организация виртуальной памяти;
• планирование и диспетчеризация задач в соответствии
с заданными стратегией и дисциплинами обслуживания;
• организация механизмов обмена сообщениями и данны-
ми между выполняющимися программами;

33
• защита одной программы от влияния другой, обеспечение
сохранности данных;
• предоставление услуг на случай частичного сбоя системы;
• обеспечение работы систем программирования, с помощью
которых пользователи готовят свои программы.
Операционная система управляет следующими основными
ресурсами:
• процессорами;
• памятью;
• устройствами ввода-вывода;
• данными.
Операционная система взаимодействует:
• с операторами ЭВМ;
• прикладными программистами;
• системными программистами;
• административным персоналом;
• программами;
• аппаратными средствами;
• пользователями.
Системные программисты занимаются обычно сопрово-
ждением операционной системы, осуществляют ее настройку
применительно к требованиям конкретной машины и при необходимости доработку для обслуживания новых типов устройств.
Администратор систем устанавливает принципы и поря-
док работы ЭВМ, взаимодействуя с операционной системой,
чтобы обеспечить соблюдение этого порядка.
Операционной системе присваивается статус полномочного
пользователя, так как она имеет доступ ко всем видам аппаратных ресурсов, данным и программам пользователей.
Глава 1. Принципы организации системного программного обеспечения
1.6. Концепция процесса и управление
процессами
Понятие «вычислительный процесс» (или просто «процесс») является одним из основных при рассмотрении операционных систем. Как понятие процесс является определенным видом абстракции.

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
34
Последовательный процесс (иногда называемый задачей) –
это выполнение отдельной программы с ее данными на последовательном процессоре. В концепции, которая получила распространение в 1970-е годы, задача (task) – это совокупность
связанных между собой и образующих единое целое программных модулей и данных, требующая ресурсов вычислительной
системы для своей реализации. Далее задачей стали называть
единицу работы, для выполнения которой предоставляется центральный процессор. Вычислительный процесс может включать
несколько задач.
Концептуально процессор рассматривается в двух аспектах: во-первых, он является носителем данных, а во-вторых,
(одновременно) выполняет операции, связанные с их обработкой. Процессом может быть редактирование какого-либо текста, трансляция исходной программы, ее компоновка, исполнение. Причем трансляция какой-нибудь исходной программы
является одним процессом, а трансляция следующей исходной
программы – другим процессом, поскольку, хотя транслятор
как объединение программных модулей здесь выступает как
одна и та же программа, но данные, которые он обрабатывает,
являются разными.
Определение концепции процесса преследует цель выработать механизм распределения и управления ресурсами.
Как было отмечено выше, при разработке первых систем ресурсами считались процессорное время, память, каналы ввода-вывода и периферийные устройства. Однако очень скоро
понятие ресурса стало более универсальным. Различного рода
программные и информационные ресурсы также могут быть
определены для системы как объекты, которые могут разделяться и распределяться, а доступ к ним необходимо контролировать. Помимо системных ресурсов как ресурс стали
толковать и такие объекты, как сообщения и синхросигналы,
которыми обмениваются задачи. Как указано выше, для первых вычислительных систем было характерно то, что любая
программа могла выполняться только после полного завершения предыдущей программы. Эти вычислительные системы были построены в соответствии с принципом Джона фон
Неймана, по которому все подсистемы и устройства компью-

35
Глава 1. Принципы организации системного программного обеспечения
тера управлялись центральным процессором. Центральный
процессор осуществлял и выполнение вычислений, и управление операциями ввода-вывода данных. Поскольку за время
своего существования процесс может неоднократно совершать
переходы из одного состояния в другое, то это связано с необходимостью обращения к операционной системе с запросами ресурсов для выполнения системных функций, а также
с взаимодействием с другими процессами, появлением сигналов прерывания от таймера, каналов ввода-вывода и других
устройств.
Из состояния выполнения процесс может выйти по одной
из следующих причин:
• процесс завершается, при этом он посредством обращения к супервизору передает управление операционной системе
и сообщает о своем завершении;
• процесс переводится супервизором операционной системы в состояние готовности к исполнению в связи с окончанием
выделенного ему кванта времени;
• процесс блокируется (переводится в состояние ожидания)
либо вследствие запроса операции ввода-вывода (которая должна быть выполнена прежде, чем он сможет продолжить исполнение), либо из-за невозможности предоставить ему ресурс (запрошенный в настоящий момент), либо по требованию супервизора
от другой задачи.
При наступлении соответствующего события процесс деблокируется и переводится в состояние готовности к исполнению. Таким образом, движущей силой, меняющей состояния
процессов, являются события. Один из основных видов событий – это прерывание.
Для управления процессами операционная система должна располагать всей необходимой для этого информацией.
Итак, на каждый процесс заводится специальная информационная структура, называемая дескриптором процесса (описателем задачи, блоком управления задачей).
Дескриптор процесса содержит следующую информацию:
• идентификатор процесса (PID-process identificator);
• тип (или класс) процесса, который определяет для супер-
визора некоторые правила предоставления ресурсов;

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
36
• приоритет процесса, в соответствии с которым супервизор
предоставляет ресурсы (в рамках одного класса процессов в первую очередь обслуживаются более приоритетные процессы);
• переменная состояния, которая определяет, в каком состоянии находится процесс (готов, выполняется, ожидает устройства ввода-вывода);
• защищенная область памяти (или адрес такой зоны),
в которой хранятся текущие значения регистров процессора,
если процесс прерывается, не закончив работы. Эта информация называется контекстом задачи;
• информация о ресурсах, которыми процесс владеет и/или
имеет право пользоваться (указатели на открытые файлы, информация о незавершенных операциях ввода-вывода);
• место (или его адрес) для организации общения с другими процессами.
Термин «процесс» впервые начали применять разработчики системы MULTICS в 1960-х годах. Затем термин «процесс»,
используемый в ряде случаев как синоним задачи, получил
много различных определений [1, 4]:
• программа в стадии выполнения;
• асинхронная работа;
• «живая душа» процедуры;
• «концентрация средств управления» для выполняемой
процедуры;
• нечто, представленное в виде блока управления процес-
сом в операционной системе;
• объект, которому выделяются процессоры;
• диспетчируемый модуль.
Наиболее распространенное определение процесса – это
программа в стадии выполнения. Это стадия, когда в распоряжение процесса выделен центральный процессор. Процесс находится в состоянии готовности, если бы он мог выполняться
при условии выделения ему центрального процессора.
В период своего существования процесс проходит через ряд
дискретных состояний. Смену состояний процесса могут вызывать различные события. Возможные переходы процесса
из одного состояния в другое отображаются в виде графа состояний.

37
Глава 1. Принципы организации системного программного обеспечения
Процесс из состояния бездействия может перейти в состояние готовности в следующих случаях:
1) по команде оператора (пользователя); имеет место в тех
диалоговых операционных системах, где программа может
иметь статус задачи (и при этом являться пассивной), а не просто быть исполняемым файлом и только на время исполнения
получать статус задачи (как это происходит в большинстве современных ОС для ПК);
2) при выборе из очереди планировщиком (характерно для
операционных систем, работающих в пакетном режиме);
3) по вызову из другой задачи (посредством обращения к супервизору один процесс может создать, инициировать, приостановить, остановить, уничтожить другой процесс);
4) по прерыванию от внешнего устройства (сигнал о наступлении некоторого события может запускать соответствующую задачу);
5) при наступлении запланированного времени запуска программы.
Последние два способа запуска задачи, при которых процесс
из состояния бездействия переходит в состояние готовности, характерны для операционных систем реального времени.
Говорят, что процесс выполняется (то есть находится в состоянии выполнения), если в данный момент ему выделен
центральный процессор. Говорят, что процесс готов (то есть
находится в состоянии готовности), если он мог бы сразу использовать центральный процессор, предоставленный в его
распоряжение. Говорят, что процесс заблокирован (то есть находится в состоянии блокировки), если он ожидает появления
некоторого события (например, завершения операции вводавывода), чтобы получить возможность продолжать выполнение. Существуют и другие состояния процесса, но пока будем
рассматривать только эти три. Диаграмма, или граф, переходов процесса из состояния в состояние приведена на рис. 1.2.
Рассмотрим машину с одним центральным процессором,
хотя все рассуждения можно распространить и на мультипроцессорную систему. В однопроцессорной машине в каждый
момент времени может выполняться только один процесс, однако несколько процессов могут находиться в состоянии готов-

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Выполняется
Блокирован
Готов
38
ности, а несколько – в состоянии блокировки. Поэтому можно
составить список готовых к выполнению процессов и список
заблокированных. Список готовых процессов (СГП) упорядочен по приоритету, так что первый процесс этого списка будет следующим процессом, получающим в свое распоряжение
центральный процессор. Список заблокированных процессов
не упорядочен. Разблокировка процессов осуществляется в том
порядке, в котором происходят ожидаемые ими события.
Рис. 1.2. Диаграмма состояний процесса
Когда в систему поступает некоторое задание, она создает соответствующий процесс, который затем устанавливается
в конец списка готовых процессов. Этот процесс постепенно
продвигается к головной части списка – по мере завершения
выполнения предыдущих процессов. Когда процесс оказывается первым в списке готовых процессов и когда освобождается
центральный процессор, этому процессу выделяется центральный процессор, и говорят, что происходит смена состояния процессора – он переходит из состояния готовности в состояние выполнения. Предоставление центрального процессора первому
процессу списка готовых процессов называют запуском или выбором процесса для выполнения. Это делается при помощи системной программы, которая называется диспетчером. Подобную смену состояния процесса обозначают следующим образом:
запуск (имя процесса): готов → выполняется.
О процессе, имеющем в своем распоряжении центральный
процессор, говорят, что он выполняется. Для предотвращения
случайного или умышленного монопольного захвата ресурсов
машины каким-то одним процессом операционная система ус-

39
Глава 1. Принципы организации системного программного обеспечения
танавливает в специальном аппаратном таймере прерываний
некоторое значение, определяющее временной интервал, или
квант времени, в течение которого данному процессу пользователя разрешается занимать центральный процессор. Таймер
вырабатывает сигнал прерывания, по которому управление передается операционной системе.
Операционная система переводит выполнявшийся ранее
процесс в состояние готовности, а первый процесс списка готовых процессов – в состояние выполнения. Эти смены состояний обозначаются следующим образом:
истечение кванта (имя процесса): выполняется → готов;
запуск (имя процесса): готов → выполняется.
Если выполняющийся процесс до истечения своего кванта
инициирует операцию ввода-вывода, то этот процесс тем самым добровольно освобождает центральный процессор, то есть
сам себя блокирует в ожидании завершения указанной операции ввода-вывода. Эта смена состояния изображается так:
блокирование (имя процесса): выполняется → блокирован.
В нашей модели с тремя состояниями может быть еще одна
допустимая смена состояния, когда завершается операция ввода-вывода (или происходит какое-либо другое событие, ожидаемое процессом). Эта смена состояния обозначается так:
пробуждение (имя процесса): блокирован → готов.
Таким образом, мы определили четыре возможные смены
состояния:
запуск (имя процесса): готов → выполняется;
истечение кванта (имя процесса): выполняется → готов;
блокирование (имя процесса): выполняется → блокирован;
пробуждение (имя процесса): блокирован → готов.
Единственная смена состояния, инициируемая самим процессом, – это блокирование, остальные три смены состояния
инициируются объектами, внешними по отношению к данному процессу.
Блок управления процессом. Представителем процесса в
операционной системе является блок управления процессом
(Process Control Block, PCB). Это структура данных, содержащая важную информацию о процессе, в том числе:
• текущее состояние процесса:

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
40
• уникальный идентификатор процесса;
• приоритет процесса;
• указатель памяти процесса;
• указатели выделенных процессу ресурсов;
• область сохранения регистров.
Когда операционная система переключает центральный процессор с процесса на процесс, она использует области сохранения
регистров, предусмотренные в PCB, чтобы запомнить информацию, необходимую для рестарта (повторного запуска) каждого
процесса в следующий квант времени (то есть когда опять он получит центральный процессор в свое распоряжение).
Таким образом, PCB – это объект, который определяет процесс для операционной системы. Так как операционная система должна иметь возможность быстро выполнять операции
с различными РСВ, то во многих вычислительных машинах
есть специальный аппаратный регистр, который всегда указывает на РСВ текущего выполняемого процесса. Обычно есть
и аппаратно-реализованные команды, которые обеспечивают
быструю загрузку информации состояния в РСВ и последующее быстрое восстановление этой информации.
Системы, управляющие процессами, должны иметь возможность выполнять определенные операции над процессами, в том
числе:
• создание (образование процесса);
• возобновление;
• уничтожение;
• изменение приоритета;
• блокирование;
• пробуждение;
• запуск (выбор процесса).
Создание процесса, в свою очередь, состоит из следующих
операций:
1) присвоение имени процессу;
2) включение этого имени в список имен процессов, из-
вестных системе;
3) определение начального приоритета процесса;
4) формирование блока управления процессом (РСВ);
5) выделение процессу начальных ресурсов.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
