Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системное программное обеспечение. Учебник

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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) выделение процессу начальных ресурсов.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]