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

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

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
41
Глава 1. Принципы организации системного программного обеспечения
Уничтожение процесса означает его удаление из системы. Ресурсы, выделенные этому процессу, возвращаются системе, имя процесса в любых системных списках или таблицах сти­рается, и блок управления процессом освобождается.
Уничтожение процесса усложняется, если это родительский процесс. В некоторых системах дочерний процесс уничтожает­ся автоматически, когда уничтожается его родительский про­цесс, в других системах порожденные процессы начинают су­ществовать независимо от своих родительских процессов, так что уничтожение родительских процессов не оказывает влия­ние на их потомков. Изменение приоритетов процесса означает модификацию значения приоритета в РСВ данного процесса.
Приостановка – важная операция, которая реализуется во многих различных операционных системах. Приостановка, как правило, длится лишь небольшое время. Часто система прибе­гает к приостановкам для кратковременного исключения оп­ределенных процессов в периоды пиковой нагрузки. В случае длительной приостановки процесса его ресурсы должны быть освобождены. Решение о необходимости освобождения ресурса зависит от его природы. Основная память в случае приостанов­ки процесса должна освобождаться немедленно. Приостанов­ленный процесс не может продолжить свое выполнение до тех пор, пока его не активизирует какой-либо другой процесс.
Возобновление (или активизация) процесса – операция подготовки процесса к повторному запуску с той точки, в ко­торой он был приостановлен.
Процесс может породить новый процесс. В этом случае пер­вый, порождающий процесс называется родительским процес­сом, а второй, созданный процесс – дочерним процессом. Для создания дочернего процесса, необходим только один роди­тельский процесс. При таком подходе создается иерархическая структура процессов, в которой у дочернего процесса есть толь­ко один родительский процесс, но у каждого родительского про­цесса может быть много дочерних процессов (рис. 1.3).
Рисунок 1.2 может быть модифицирован с учетом операций приостановки и возобновления таким образом: в этой диаграмме могут быть введены два новых состояния, а именно: «приоста­новлен – готов» и «приостановлен – блокирован».
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Рис. 1.3. Иерархия создания процессов
42
Инициатором приостановки может быть либо сам процесс, либо другой процесс. В однопроцессорной машине выполняю­щийся процесс может приостановить только сам себя, ни один другой процесс не может работать одновременно с ним, чтобы выдать сигнал приостановки. В мультипроцессорной машине выполняющийся процесс может быть приостановлен и другим процессом, выполняющимся на другом процессоре.
С учетом этих изменений диаграмма, или граф, состояний процесса изменится таким образом, как показано на рис. 1.4.
На рис. 1.4 выше штриховой линии изображены активные состояния, а ниже – состояния приостановки. Причем следует иметь в виду, что состояния «приостановлен – выполняется» не бывает.
Процесс, находящийся в состоянии готовности, может быть приостановлен только другим процессом. При этом происходит следующая смена состояний:
приостановка (имя процесса): готов → приостановлен – готов.
43
Готов
Выполняется
Приостановлен-готов
Приостановлен­Блокирован
Глава 1. Принципы организации системного программного обеспечения
блокирован
Рис. 1.4. Диаграмма состояний процесса с операциями при-
остановки и возобновления
Процесс, находящийся в состоянии «приостановлен – готов» может быть переведен в состояние готовности другим процес­сом. Состояния меняются следующим образом:
возобновление (имя процесса): приостановлен – готов → готов.
Заблокированный процесс может быть переведен в состоя­ние приостановки другим процессом. При этом состояния ме­няются так:
приостановка (имя процесс): блокирован → приостанов­лен – блокирован.
Процесс, находящийся в состоянии «приостановлен – бло­кирован», может быть активизирован другим процессом. Со­стояния меняются:
возобновление (имя процесса): приостановлен – блокиро­ван → блокирован.
Может возникнуть вопрос: не лучше ли вместо перевода за­блокированного процесса в состояние приостановки подождать, пока не завершится выполнение операции ввода-вывода? Дело в том, что завершение операции ввода-вывода или ожидаемое событие может никогда не произойти или задержаться на не­определенный срок. Поэтому перед разработчиками возника­ет дилемма: либо выполнить приостановку заблокированного процесса, либо предусмотреть механизм, который позволил бы
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
44
переводить процесс из состояния готовности в состояние при­остановки до того момента, когда завершится операция ввода­вывода или наступит другое ожидаемое событие. Поскольку приостановка часто является операцией высокого приоритета, ее следует выполнять немедленно.
Когда ожидаемое событие в конце концов происходит (если оно все-таки происходит), процесс, находящийся в состоянии «приостановлен – блокирован», меняет свое состояние следу­ющим образом:
наступление события (имя процесса): приостановлен – блокирован → приостановлен – готов.
1.7. Обработка прерываний
В вычислительной машине прерывание – это событие, при котором меняется нормальная последовательность ко­манд, выполняемых процессором. Сигнал «прерывание» отра­батывается аппаратурой вычислительной машины. Если про­изошло прерывание, то:
• управление передается операционной системе;
• операционная система запоминает состояние прерванного процесса (во многих вычислительных машинах эта информа­ция запоминается в блоке управления процессом для прерван­ного процесса);
• операционная система анализирует тип прерывания и пе­редает управление соответствующей программе. Инициатором прерывания может быть выполняющийся процесс, или оно мо­жет быть вызвано каким-либо событием, связанным или не свя­занным с этим процессом.
В разных вычислительных машинах существуют различ­ные схемы прерываний. В качестве примера рассмотрим схе­му прерываний, которая применяется в крупных компьюте­рах фирмы IBM. Этой схемой предусматривается шесть типов
прерываний [1, 2, 5].
SVC-прерывание (по вызову супервизора). Инициатором
этого типа прерываний является работающий процесс, который выполняет команду SVC. Команда SVC – это генерируемый про­граммой пользователя запрос на предоставление конкретной системной услуги (например, на выполнение операции ввода-
45
Глава 1. Принципы организации системного программного обеспечения
вывода, увеличение размера выделенной памяти и т.д.). Поль­зователю не разрешается самому произвольно входить в опе­рационную систему, а только формировать запрос на услугу с помощью SVC, которая помогает защитить операционную си­стему от пользователей. Операционная система может отказать в услуге, если данный пользователь не имеет соответствующих полномочий.
Прерывания ввода-вывода. Эти прерывания инициируют­ся аппаратурой ввода-вывода. Они сигнализируют централь­ному процессору о том, что произошло изменение состояния канала или устройства ввода-вывода (это происходит, когда завершается операция ввода-вывода, возникает ошибка или устройство переходит в состояние готовности).
Внешние прерывания. Причинами этого типа прерываний могут быть разные события, в том числе истечение кванта вре­мени, заданного на таймере прерываний, или прием сигнала прерывания от другого центрального процессора в мультипро­цессорной системе.
Прерывания по рестарту. Это когда оператор нажимает на пульте управления кнопку рестарта или когда от другого про­цессора в мультипроцессорной системе поступает команда ре­старта SIGP (сигнал процессору).
Прерывания по контролю (ошибке) программы. Эти пре­рывания вызываются разными видами ошибок, обнаружен­ных в выполняющемся процессе (попытка деления на нуль, попытка процесса пользователя выполнить привилегирован­ную команду и т.д.).
Прерывания по контролю (ошибке) машины. Эти прерыва­ния вызываются аппаратными ошибками.
Для обработки каждого из этих различных типов прерыва­ний в составе операционной системы предусмотрены програм­мы, называемые обработчиками прерываний (Interrupt Han­dler, IH). Таким образом, в приведенной в качестве примера системе есть шесть обработчиков прерываний (по числу типов прерываний).
Когда происходит прерывание, операционная система за­поминает состояние прерванного процесса и передает управле­ние соответствующему обработчику прерываний. Это делается
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
46
способом, получившим название переключение контекста. При реализации этого способа используются слова состояния программы (PSW), которые управляют порядком выполне­ния команд и содержат различную информацию относительно состояния процесса. Существует три типа слов состояния про­граммы, а именно текущее PSW, новое PSW и старое PSW.
Адрес следующей команды, подлежащей выполнению, со­держится в текущем PSW, в котором указываются также типы прерываний, разрешенных и запрещенных в данный момент времени. Центральный процессор реагирует только на разре­шенные прерывания; либо обработка запрещенных прерыва­ний задерживается, либо (в некоторых случаях) они игнориру­ются.
В однопроцессорной машине имеется только одно текущее PSW, но шесть новых PSW (по одному для каждого типа пре­рывания) и шесть старых PSW (тоже по одному на каждый тип прерываний). Новое PSW для каждого типа прерывания содержит постоянный адрес, по которому резидентно разме­щается обработчик прерываний этого типа. Когда происходит прерывание (если процессору не запрещено обрабатывать пре­рывания этого типа), производится автоматическое (выполня­емое аппаратурой) переключение слов состояния программы следующим образом:
• текущее PSW становится старым PSW для прерывания
этого типа;
• новое PSW для прерывания этого типа становится теку-
щим PSW.
После этого замещения слов состояния текущее PSW содер­жит адрес соответствующей программы – обработчика преры­вания, которая затем начинает обрабатывать данное прерыва­ние. Когда обработка прерывания завершается, центральный процессор начинает обслуживать либо тот процесс, который выполнялся в момент прерывания, либо готовый процесс с наи­высшим приоритетом. Это зависит от того, допускает ли пре­рванный процесс перехват центрального процессора или нет. Если процесс не допускает перехвата у него центрального про­цессора, он снова получает в распоряжение центральный про­цессор. Если процесс допускает перехват центрального процес-
47
Глава 1. Принципы организации системного программного обеспечения
сора, он получает центральный процессор только в том случае, если нет других процессов, готовых к выполнению.
Существует также много других схем прерываний, отлич­ных от схемы, описанной выше [1, 2, 5].
1.8. Ядро операционной системы
Все операции, связанные с процессами, выполняются под управлением той части операционной системы, которая на­зывается ее ядром. Ядро представляет собой лишь небольшую часть кода операционной системы в целом, однако оно относит­ся к числу наиболее интенсивно используемых компонентов си­стемы. По этой причине ядро обычно резидентно размещается в основной памяти, в то время как другие части операционной системы перемещаются во внешнюю память и обратно по мере необходимости.
Одной из самых важных функций, реализованных в ядре, является обработка прерываний. В больших многоабонент­ских системах в центральный процессор поступает поток пре­рываний. Быстрая реакция на эти прерывания необходима с точки зрения наилучшего использования ресурсов системы. Может быть такая ситуация, когда ядро будет блокировать прерывания, так как не будет успевать эффективно на них ре­агировать. Поэтому ядро осуществляет лишь минимально воз­можную обработку каждого прерывания, передавая затем это прерывание на дальнейшую обработку системному процессу.
Ядро операционной системы обычно содержит программы для реализации следующих функций [1, 4]:
• обработка прерываний;
• создание и уничтожение процессов;
• переключение процессов из состояния в состояние;
• диспетчеризация;
• приостановка и активизация процессов;
• синхронизация процессов;
• организация взаимодействия между процессами;
• манипулирование блоками управления процессами;
• поддержка операций ввода-вывода;
• поддержка распределения и перераспределения памяти;
• поддержка работы файловой системы;
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
48
• поддержка механизма вызова-возврата при обращении
к процедурам;
• поддержка определенных функций по ведению учета ра-
боты машины.
Вход в ядро осуществляется по прерыванию. Когда ядро ре­агирует на данное прерывание, оно запрещает другие преры­вания. После определения причины данного прерывания ядро передает его обработку специальному системному процессу, предназначенному для работы с прерываниями этого типа.
1.9. Иерархическая структура системы
В основе иерархии системы находится сама аппаратура ком­пьютера, называемая иногда чистой машиной или голым желе­зом [1, 3]. На следующем уровне иерархии (или на следующих уровнях) находятся различные функции ядра, в совокупности с которыми компьютер становится расширенной машиной. Эти дополнительные функции, реализуемые при помощи ядра, на­зываются примитивами. Над ядром в иерархии находятся раз­личные процессы операционной системы, которые обеспечи­вают поддержку процессов пользователя (например, процессы управления внешними устройствами). На вершине иерархии находятся сами процессы пользователей.
Уже в четвертом поколении наметилась тенденция – значи­тельная часть функций ядра реализуется при помощи микро­кода. Это обеспечивает высокую скорость выполнения функций ядра, а также защиту ядра. Иерархическую структуру легче от­лаживать, модифицировать и тестировать.
Операционная система как комплекс управляющих и об­рабатывающих программ, с одной стороны, выступает как ин­терфейс между аппаратурой компьютера и пользователем с его задачами, а с другой – она предназначена для наиболее эффек­тивного использования ресурсов вычислительной системы и организации надежных вычислений. Любой из компонентов прикладного программного обеспечения обязательно работа­ет под управлением операционной системы. Ни один из ком­понентов программного обеспечения, за исключением самой операционной системы, не имеет непосредственного доступа к аппаратуре компьютера. Даже пользователи взаимодейству-
49
Глава 1. Принципы организации системного программного обеспечения
ют со своими программами через интерфейс операционной си­стемы. Любые их команды, прежде чем попасть в прикладную программу, проходят через операционную систему [4].
Назначение системы управления файлами – это органи­зация более удобного доступа к данным, организованным как файлы. Именно благодаря системе управления файлами вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной нам записи используется логиче­ский доступ с указанием имени файла и записи в нем. Все совре­менные операционные системы имеют соответствующую систе­му управления файлами. Но выделение этого вида структуры программного обеспечения в отдельную категорию целесообраз­но, так как ряд операционных систем позволяет работать с не­сколькими файловыми системами (либо с одной из нескольких, либо сразу с несколькими одновременно). В этом случае говорят о монтируемых файловых системах (дополнительных системах управления файлами), и в этом смысле они самостоятельны.
Есть простейшие операционные системы, которые могут ра­ботать и без файловых систем, а значит, им необязательно иметь систему управления файлами либо они могут работать с одной из выбранных файловых систем. Но любая система управления файлами не существует сама по себе, она разработана для кон­кретной операционной системы и с конкретной файловой си­стемой. Известная файловая система FAT (File Allocation Table) имеет множество реализаций как система управления файлами, например FAT-16 для самой MS-DOS, Super-FAT для OS/2, FAT для Windows NT и т.д. [4].
Для удобства взаимодействия с операционной системой мо­гут использоваться интерфейсные оболочки. Их основное назна­чение – либо расширить возможности по управлению операцион­ной системы, либо изменить встроенные в систему возможности (например, графический интерфейс XWindows в системах семей­ства UNIX).
Ряд операционных систем может организовать выполнение программ, созданных для других операционных систем. Соот­ветствующая операционная среда организуется в операционной системе в рамках отдельной виртуальной машины. Например, в системе Linux можно создать условия для выполнения не-
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
50
которых программ, написанных для Win95/98, Win NT позво­ляет выполнить некоторые программы, созданные до MS-DOS, Os/21.X, Win 3.X. К этому же классу структуры программного обеспечения относятся и эмуляторы, позволяющие смоделиро­вать в одной операционной системе какую-либо другую маши­ну или операционную систему. Так, известна система эмуляции WMWARE, которая позволяет запустить в среде Linux любую другую операционную систему, например Windows. Можно, на­оборот, создать эмулятор, работающий в среде Win, который по­зволит смоделировать компьютер, работающий под любой опе­рационной системой, в том числе и Linux [4].
Таким образом, термин «операционная среда» означает со­ответствующий интерфейс, необходимый программам для обра­щения к операционной системе с целью получить определенный сервис (обслуживание), например выполнить операцию ввода­вывода, получить или освободить участок памяти и т.д.
Система программирования обычно представлена следую­щими компонентами:
1) транслятор с соответствующего языка;
2) библиотека подпрограмм;
3) редакторы;
4) компоновщики;
5) отладчики.
Любая система программирования может работать только с соответствующей операционной системой, под которую она создана, но она может позволять разработать программное обе­спечение и под другие операционные системы.
Обслуживание самой операционной системы, подготовку для работы носителей данных, перекодирование данных, оп­тимизацию размещения данных на носителе и другие работы по обслуживанию вычислительной системы можно выполнять с помощью специальных системных программ, которые носят общее название утилиты.
1.10. Понятие многозадачности
Многозадачность (multitasking) – это способность операци­онной системы выполнять несколько программ одновременно. В основе этого принципа лежит использование операционной
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]