Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системное программное обеспечение. Учебник
.pdf
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 Handler, 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) – это способность операционной системы выполнять несколько программ одновременно.
В основе этого принципа лежит использование операционной
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
