Глава 6. Операционные системы
В этой главе будут рассмотрены функции операционных си- стем и способы их разработки Не пытаясь в единственной гла- ве дать исчерпывающее изложение темы, явившейся предметом многих книг, мы коснемся только наиболее важных идей и ре- шении, иллюстрируя их примерами и снабжая ссылками на со- ответствующую литер.
Способы разработки операционных систем и их назначение достаточно разнообразны. Одни, очень простые, предназначены для обеспечения работы единственного пользователя на персо- нальной ЭВМ Другие, крайне сложные системы, дают возмож- ность одновременной работы многих пользователей, управляют высокоразвитыми аппаратными и программными средствами. В разд 6 1 рассмотрены основные свойства операционных си- стем, которые присущи практически любому их элементу. Из- за большого разнообразия операционных систем перечень этих свойств необычайно сжат Он состоит лишь из нескольких об- щих функций, которые могут быть взяты едва ли не как опре- деления термина операционная система.
Раздел 62 содержит описание некоторых важных свойств машинно-зависимых операционных систем, а разд. 6 3 освещает характеристики машинно-независимых реализации Многие из рассматриваемых в этих разделах функций (к ним относятся, например, распределение системных ресурсов и управление связью между различными пользователями) должны быть ре- ализованы практически в любой операционной системе, поддер- живающей одновременную работу многих пользователей.
В разд 6 4 коротко излагаются некоторые альтернативные способы построения операционных систем В разд 6 5 описыва- ются несколько реальных операционных систем, дающих пред- ставление лишь об отдельных формах и функциях подобного программного обеспечения.
6.1. Основные функции операционных систем.
Ниже вкратце рассматриваются основные функции, обычно выполняемые всеми операционными системами. Главная задача операционной системы — упростить общение пользователей с ЭВМ. Системное программное обеспечение является надстройкой над базовыми аппаратными средствами и делает работу пользователя с машиной более удобной. Например, обеспечивая максимальную производительность ЭВМ, операционная система осуществляет достаточно сложный процесс управления ее ресурсами, все нюансы которого скрыты от пользователя.
Пользователь
RUN P
Расширенная ма-
шина (операционное
окружение)
Интерфейс пользователя
Рис 6.1. Основная концепция операционной системы.
ЭВМ. Системное программное обеспечение является над- стройкой над базовыми аппаратными средствами и делает ра- боту пользователя с машиной более удобной Например, обес- печивая максимальную производительность ЭВМ, операционная система осуществляет достаточно сложный процесс управ- ления ее ресурсами, все нюансы которого скрыты от пользо- вателя.
По сравнению с предыдущими главами приводимое ниже изложение основных свойств намного короче и носит более общий характер. Например, для ассемблеров, которые рассмотрены в гл.2, нам удалось найти общую структуру, не зависящую от машинной реализации. Однако операционные системы для персонального компьютера и для суперЭВМмс большим числом пользователей, за исключением основных подходов, будут сильно различаться.
Основные функции операционных систем могут быть изображены, как показано на рис. 6.1. Взаимодействие с программистами, операторами и т.д. осуществляется через интерфейс пользователя, который поддерживается операционной системой. Именно его мы имеем в виду при ответе на вопрос: «Какого характера операционная система?». Если интерфейс предусматривает наличие некоторого языка управления, то, например, запуск программы на счет может быть осуществлен по коман- де КиМ Р. В разд. 6.1.1 приводится терминология, связанная с операционными системами, и дается их классификация, основанная на предоставляемом ими интерфейсе пользователя. В разд. 6.1.2 коротко описываются некоторые возможные функции интерфейса пользователя.
Для выполнения часто встречающихся задач операционные системы предоставляют программам определенный набор услуг. Например, для чтения из файла некоторого набора данных программа Р может использовать стандартную сервисную программу. Последняя вызывается командой типа read(f), с помощью которой задается и имя файла. Всю заботу об осуществлении ввода-вывода, производимого на машинном уровне, возьмет на себя операционная система.
Сервисные программы могут рассматриваться как часть операционного окружения задач, находящихся в решении. О нем пойдет речь в разд. 6.1.3. Более подробно некоторые сервисные функции и стандартные программы описаны в разд. 6.2 и 6.3.
В данной главе предполагается, что функции операционной системы реализованы только программным обеспечением. Од- нако многие из них могут быть представлены программно-аппа- ратными средствами (firmware), состоящими из набора микро- программ. Дополнительную информацию об этом можно полу- чить в Дейтел [1984].
6.1.1. Типы операционных систем
Очень часто способы классификации операционных систем основываются на типе предоставляемого ими интерфейса поль- зователя. Многие понятия, связанные с операционными систе- мами, возникают из представления пользователей о системе. В данном разделе вводится терминология, наиболее часто ис- пользуемая для описания операционных систем. При этом не всегда удается достичь полной ясности в определении типов некоторых систем: они подпадают более чем под одну катего- рию и их классификации в некоторых пунктах совпадают.
Один из способов классификации связан с количеством пользователей, одновременно обслуживаемых системой. Назо- вем однопрограммной систему, которая обеспечивает работу одного пользователя. Это самый старый тип операционных си- стем. Сейчас его можно встретить на микрокомпьютерах и пер- сональных ЭВМ. Вероятно, и на гипотетической машине УУМ и:(-за малого объема памяти и нехватки каналов (что сильно затрудняет обслуживание более одного пользователя) следует считать, что используется однопрограммная система.
Мультипрограммная система позволяет одновременно выпол- нять несколько заданий пользователей, управляя при этом рас- пределением процессора между ними. Для того чтобы задания не мешали друг другу, операционная система создает для них соответствующее операционное окружение. Мультипроцессорная система схожа с мультипрограммной с той разницей, что в пер- вой возможно использование более чем одного ЦП.
Основная цель мультипрограммирования — увеличение про- изводительности вычислительной системы за счет разделения ее ресурсов между несколькими заданиями. Например, одно зада- ние может занимать процессор, в то время как другое — ожи- дать завершения операции ввода-вывода (подробнее об этом см. в разд. 6.2).
Другой способ классификации операционных систем основан на типе доступа, предоставляемого интерфейсом пользователя. В случае систем с пакетной обработкой в качестве задания вы- ступает последовательность управляющих операторов, записан- ная на машинных носителях (например, на перфокартах или диске). За исключением смены дисков или лент, осуществляе- мой операторами, всю заботу о считывании и выполнении зада- ний берут на себя операционные системы. Порядок, в котором выполняются задания, может быть выбран несколькими спосо- бами. Вопросы планирования рассматриваются в разд. 6.3. Диалоговый или интерактивный доступ некоторого числа поль- зователей обеспечивается системами разделения времени. Опе- рационная система исполняет директивы пользователей по мере того, как они вводятся, стараясь дать ответ на каждую коман- ду пользователя за разумно короткое время. Для обработки внешних сигналов, поступающих, например, с различных дат- чиков, и быстрого ответа на них используются системы реаль- ного времени. К ним относятся операционные системы, работа- ющие на электронно-вычислительных машинах, управляющих процессами, в которых время является критическим парамет- ром (например, ядерная реакция или полет космического ко- рабля).
Вообще говоря, мультипрограммные системы пакетной обра- ботки призваны сделать использование ЭВМ более эффектив- ным. Основной задачей систем разделения времени должно счи- таться обеспечение хорошего времени ответа пользователям, работающим в диалоговом режиме. Возможно, при этом при- дется примириться с использованием машины с меньшей эф- фективностью. Системы реального времени должны обеспечи- вать гарантированное время ответа на внешние события, для которых время является критическим параметром. Довольно часто все эти функции реализуются в одной системе. Например,
многие системы пакетной обработки нередко поддерживают
интерактивный режим, а другие вдобавок осуществляют я обслуживание процессов реального времени.
Дополнительные сведения обо всех этих операционных си- стемах, равно как и подробности об их создании, можно найти в Дейтел [1984].
Интерфейс пользователя
Интерфейс пользователя, предоставляемый операционной си- стемой, предназначен для обеспечения нужд различных групп люден, имеющих дело с ЭВМ. Например, для работы на пер- сональной ЭВМ с простой операционной системой пользователю предоставляется набор команд, посредством которых он может получать доступ к системным программам (трансляторам, ре- дакторам, загрузчикам), осуществлять управление внешними файлами. Подобный командный язык достаточно прост в ис- пользовании; обычно имеется возможность в диалоге с маши- ной получить подсказку или просмотреть меню, содержащее варианты команд.
В более сложных системах может существовать несколько различных языков общения с операционной системой. Непро- фессиональным программистам предоставляется возможность ра- ботать с ЭВМ на простом языке директив (command language). Профессиональными программистами может применяться мощ- ный и сложный язык, часто называемый языком управления заданиями (job control language). Кроме того, обычно суще- ствует специальный язык, при помощи которого осуществляется взаимодействие операторов и ЭВМ. Такой интерфейс оператора позволяет запускать и останавливать задания, выяснять их со- стояние и состояние системных ресурсов, управлять внешними действиями. Например, оператору может быть сообщено о не- обходимости установить ленту или диск.
Разработка интерфейса пользователя обычно не влечет за собой решения сложных технических задач. Между тем его со- здание чрезвычайно важно, так как он эксплуатируется боль- шинством пользователей. В идеале интерфейс пользователя дол- жен быть разработан таким образом, чтобы отвечать требова- ниям всевозможных типов пользователей и в то же время учитывать цели и задачи вычислительной системы. Дополни- тельные сведения об интерфейсе пользователя можно найти в работах Дейтел [1984] и Питерсон [1983].
Для поддержки интерфейса пользователя операционная си- стема должна иметь также стандартные сервисные программы. В случае персональной ЭВМ это могут быть программы для управления вводом с клавиатуры и выводом на дисплей, а в более сложных системах — средства сопряжения с работающими
в режиме разделения времени удаленными терминалами, считывателями с перфокарт и печатающими устройствами. Воз- можно также наличие интерфейса между локальной системой и другими ЭВМ, объединенными в сеть. Как часть интерфейса оператора многие операционные системы ведут накопление ста- тистики активности системы; она может использоваться для анализа производительности и обнаружения ошибок.
Операционное окружение
Одной из наиболее важных функций операционной системы является поддержка операционного окружения пользователь- ских задач. Оно состоит из ряда стандартных сервисных про- грамм, которые могут быть использованы в процессе выполне- ния задачи и предоставлять средства для управления ресурса- ми вычислительной системы, выделяя их пользователю по мере надобности.
В качестве примера услуг, предоставляемых операционным окружением, рассмотрим функцию ввода-вывода. Почти все операционные системы имеют стандартные программы, помо- гающие в осуществлении таких операций. Предположим, что программа работает на УУМ под управлением однопрограмм- ной системы. Чтобы прочитать байт без помощи операционной системы, программа должна содержать цикл, в котором анали- зируется состояние устройства и выполняется команда RD (см. рис. 2.1). Обнаружение и исправление ошибок также возложено на саму программу.
Наличие поддержки со стороны операционной системы силь- но облегчает задачу. Программа пользователя может просто инициализировать стандартную сервисную программу, задав устройство, которое должно быть использовано. За всеми нюан- сами, такими как опрос состояния и подсчет переданных бай- тов, проследит операционная система. Она же примет необхо- димые меры по исправлению ошибок.
Стандартная сервисная программа, подобная описанной выше, может восприниматься как расширение базовой машины. Типичная операционная система содержит много подобных про- грамм. Вместе взятые, они составляют расширенную машину, которая и используется во время выполнения программы. Про- граммам не нужно опускаться до уровня базовых аппаратных средств, поскольку все функции и возможности предоставляет расширенная машина. Она проще в использовании, чем реаль- ная. Это касается, например, нюансов выполнения операций ввода-вывода. Есть и другие преимущества. Например, опера- ции ввода-вывода на расширенной машине менее подвержены ошибкам, чем на реальной, так как за обнаружением и исправ- лением ошибок следит операционная система.
Иногда расширенную машину называют виртуальной. Одна- ко термин «виртуальная машина» может иметь и другой смысл. Это двоякое использование термина описывается в разд. 6 4.
Операционное окружение мультипрограммных операционных систем содержит также программы, которые управляют ресур- сами ЭВМ, выделяя их по необходимости заданиям пользова- телей. Например, оперативная память распределяется между заданиями, одновременно находящимися в решении, централь- ный процессор предоставляется заданиям согласно заранее вы- бранной стратегии. За исключением конкретных запросов опе- рационной системе заданиям пользователя нет необходимости иметь дело с управлением ресурсами. Благодаря операционно- му окружению каждое задание выполняется как бы на отдель- ной расширенной машине, хотя в действительности базовая машина может быть распределена между несколькими пользо- вателями.
В некоторых системах программы пользователей могут вызы- вать функции операционной системы, обращаясь непосредствен- но к фиксированным областям памяти. В документации по опе- рационной системе для пользователя дается описание областей, предназначенных для данных, и входных точек вместе с их реальными адресами. Например, точка входа стандартной сер- висной программы ввода-вывода может находиться в памяти по адресу 238. После установки в регистрах требуемых пара- метров программа пользователя может инициализировать эту сервисную функцию командой JSUB 238. Иногда возможно наличие в памяти одной точки входа для всех сервисных про- грамм, нужный тип обслуживания может быть определен при помощи кода запроса.
Способ запроса связи с операционной системой при помощи обращения к фиксированной области памяти используется в микрокомпьютерах и персональных ЭВМ Однако этот метод часто не удобен и является источником ошибок; кроме того, он может предоставить пользователю возможность обойти сред- ства защиты, встроенные в операционную систему В более развитых системах пользователи запрашивают функции опера- ционных систем в основном при помощи специальных машин- ных команд, таких как вызов супервизора (SVC – Super Visor
Call). Выполнение команды SVC вызывает прерывание, в ре- зультате которого управление передается сервисной стандарт- ной программе операционной системы. Код, которым сопровож- дается команда SVC, определяет тип запроса. Обработка пре- рываний операционной системой рассматривается в разд 6.2.1.
Как правило, в машине любое прерывание вызывает перевод ЦП из режима пользователя в режим супервизора В режиме супервизора могут быть использованы все команды и средства машины Многие части операционной системы работают в этом
режиме При этом в режиме пользователя недопустимо выпол- нение некоторых команд. К таким командам могут относиться, например, функции ввода-вывода, установка флагов защиты или переключение ЦП из одного режима в другой. Примеры таких команд будут рассмотрены ниже. Ограничения, накладываемые на использование привилегированных команд, заставляют про- грамму пользователя обращаться к услугам операционного окружения. Таким образом, вместо непосредственного использо- вания функций базового аппаратного обеспечения программы должны иметь дело с интерфейсом расширенной машины. Огра- ничения также не дают программам пользователей вмешиваться случайно или намеренно в функции управления ресурсами, осу- ществляемые операционной системой. Привилегированные команды, равно как ч,и режим пользователя/супервизора (или эквивалентный ему), необходимы практически для всех систем, поддерживающих одновременную работу более чем одного поль- зователя.
В разд. 62 и 63 рассматриваются разнообразные функции и услуги, обычно предоставляемые операционным окружением. На этом уровне между операционными системами, которые мо- гут оказаться совершенно различными в интерфейсе пользова- теля, есть много общего Многие рассматриваемые технические приемы могут быть использованы с некоторыми изменениями почти во всех операционных системах: пакетной обработки, раз- деления времени, реального времени и т. п.
Машинно-зависимые свойства
Операционных систем
Одной из наиболее важных функций операционной системы является управление ресурсами ЭВМ, на которой она работает. Многие ресурсы имеют непосредственное отношение к аппарат- ным устройствам, таким как центральная оперативная память, каналы ввода-вывода и ЦП. Таким образом, многие функции операционной системы тесно связаны с архитектурой машины.
Рассмотрим, например, машину УУМ У нее маленькая опе- ративная память, отсутствуют каналы ввода-вывода, прерыва- ния, нет команд вызова супервизора. Такая машина может быть удобна в качестве персональной ЭВМ; на ней нет смысла работать одновременно нескольким пользователям. Таким об- разом, операционная система для стандартной машины УУМ будет однопользовательской с простыми средствами общения с пользователем и минимальным набором функций операционного окружения. И если она предоставит какие-то простые возмож- ности, то их вряд ли будет больше тех, что рассматривались в разд. 6.1.
ЭВМ УУМ/ДС, наоборот, имеет гораздо большую оператив- ную память, каналы ввода-вывода и обладает многими другими свойствами, отсутствующими у стандартной машины УУМ. На УУМ/ДС хорошо иметь мультипрограммную операционную си- стему. Она позволит распределять между несколькими одно- временно работающими пользователями доступные им ресурсы расширенной машины, а также лучше использовать усовершен- ствованные программные средства. Конечно, разделение вычис- лительной системы между несколькими пользователями создает много проблем, подобных распределению ресурсов. Все они должны быть решены операционной системой. В дополнение к этому операционная система должна осуществлять поддержку более развитых функций аппаратуры, таких как прерывания и канальный ввод-вывод.
В данном разделе мы рассмотрим некоторые функции ма- шинно-зависимых частей операционных систем. Для этого бу- дет использована терминология ЭВМ УУМ/ДС; однако неко- торые принципы могут быть легко перенесены на другие маши- ны, у которых архитектурные особенности схожи с УУМ/ДС. Мы обсудим в ходе изложения ряд важных свойств аппарат- ных средств УУМ/ДС. Для упрощения ссылок все эти свой- ства резюмированы в приложении В.
Раздел 6.2.1 знакомит читателя с основными принципами прерываний и их обработки, используемыми на всем протяже- нии остальной части главы. В разд. 6.2.2 обсуждаются вопросы, связанные с распределением ЦП между несколькими заданиями пользователей, работающими в мультипрограммном режиме. В разд. 6.2.4 и 6.2.5 обсуждаются вопросы разделения цент- ральной памяти между несколькими пользовательскими зада- ниями. В разд. 6.2.4 дается представление о средствах управ- ления реальной памятью, а в разд. 6.2.5 — о важном понятии — виртуальной памяти.
Обработка прерываний
Прерывание (interrupt) — это сигнал, заставляющий ЭВМ менять обычный порядок исполнения потока команд. Возник- новение подобных сигналов обусловлено такими событиями, как завершение операций ввода-вывода, истечение заранее задан- ного интервала времени или попытка деления на нуль.
Рис. 6.2 дает представление о последовательности событий, происходящих в ответ на прерывание. Предположим, что в мо- мент поступления от некоторого источника сигнала прерывания программа А находится в решении. В результате управление автоматически передается на блок обработки прерываний (или блок ОП, а также обработчик прерываний), который обычно является частью операционной системы. Этот блок предназначен
для выполнения некоторых действий в ответ на условие, вызвавшее прерывание. После завершения обработки управле- ние может быть снова передано в ту точку программы А, где ее выполнение было прервано.
В только что описанной последовательности событий воз- никновение и обработка прерывания могут быть совершенно не
Рис. 6 2 Основная концепция обработки прерываний.
связаны с программой А. Например, оно может быть вызвано завершением операции ввода-вывода, выданной другой про- граммой. В общем случае невозможно предсказать, когда и по какой причине программа А будет прерва- тип на. Другими словами, по отношению к ней Класспрерывания прерывания возникают асинхронно. За со- I SVC хранением текущего состояния машины во II Программное время прерывания программы А, а также III по таймеру за его восстановлением, когда А будет про- IV ввода/вывода должена, следят аппаратные и програм- Рис.6.3. Типы преры- мные средства. Благодаря этому в случае ваний в УУМ/ДС. прерывания ничто, за исключением вре- мени, не влияет на ее выполнение. На самом деле для А даже не существует способа узнать, имело место прерывание или нет.
На рис. 63 приведены четыре класса прерываний для ЭВМ УУМ/ДС. SVC-прерывание (класс I) возникает при выполне- нии ЦП команды вызова супервизора. Эта команда использу- ется программами для вызова функций операционной системы. Программное прерывание (класс II) возникает при появлении некоторой ситуации, такой как деление на нуль, или при попыт- ке выполнить неправильную машинную команду и, возможно, в
процессе работы программы. Приложение В содержит пол- ный перечень условий, которые могут вызвать программное прерывание.
Прерывание по таймеру (класс III) вызывается интерваль- ным таймером ЦП Этот таймер содержит регистр, которому может быть присвоено определенное начальное значение по- средством привилегированной команды STI. Значение этого регистра автоматически уменьшается на 1 после использова- ния каждой миллисекунды времени ЦП. Когда это значение становится равным нулю, происходит прерывание по таймеру. Подобный интервальный таймер используется операционной си- стемой для определения времени, в течение которого программа пользователя может оставаться под управлением машины.
Прерывание по вводу-выводу (класс IV) вызывается кана- лами или устройствами ввода-вывода Причиной многих таких прерываний является нормальное завершение некоторой опера- ции ввода-вывода; однако они могут также оповещать о воз- никновении различных ошибочных ситуаций.
Когда происходит прерывание, состояние ЦП сохраняется, а управление передается стандартной программе обработки пре- рываний В заключении рассмотрим метод для УУМ/ДС.
Как показано на рис 6 4, в машине УУМ/ДС для каждого класса прерываний имеется соответствующая ему рабочая об- ласть прерываний. Например, область, соответствующая преры- ванию по таймеру, начинается с адреса памяти 160 Когда про- исходит прерывание по таймеру, содержимое всех регистров сохраняется в этой области (см. рис 6 4а) Затем из двух пер- вых слов области заранее занесенные туда значения загружа- ются в слово состояния SW и счетчик команд РС. Загрузка и сохранение регистров осуществляются аппаратными средствами машины автоматически.
Загрузка счетчика команд новым значением адреса автома- тически вызывает передачу управления на соответствующую команду. Этот адрес, заранее сохраненный в рабочей области прерывания, представляет собой начальный адрес стандартной программы обработки прерываний по таймеру. Загрузка слова SW также вызывает определенные изменения в состоянии ЦП.
а
Рис. 6.4. Операции контекстного переключения, вызванные а – прерыванием по таймеру и б – командой LPS 166.
|
|
| .
.
.
.
| |
Рабочая
область
SVC-пре-
рываний
|
| Новый SW
| |
| Новый PC
| |
| Старый SW
| |
| Старый РС
| | 10С
|
Область
сохранения регистров
| |
|
|
|
Рабочая
область
программ-
ных пре-
рываний
|
| Новый SW
| |
| Новый PC
| |
| Старый SW
| |
| Старый РС
| | 13С
|
Область
сохранения регистров
| |
|
|
|
Рабочая
область
прерывния
по таймеру
|
| Новый SW
| |
| Новый PC
| |
| Старый SW
| |
| Старый РС
| | 16С
|
Область
сохранения регистров
|
|
|
| |
Рабочая
область
прерывания
по вводу-
выводу
|
| Новый SW
| |
| Новый PC
| |
| Старый SW
| |
| Старый РС
| | 19С
|
Область
сохранения регистров
| |
|
| .
.
.
.
|
б
Рис.6.4. Продолжение.
После выполнения в ответ на запрос на прерывание любого требуемого действия стандартная программа обработки преры-
ваний выполняет команду загрузки состояния процессора (LPS – Load Processor Status), в результате чего управление передается прерванной программе (см рис 646). Команда LPS вызывает загрузку сохраненного содержимого SW, РС и других регистров из соответствующих слов области сохране- ния, начиная с адреса, указанного в команде. Это приводит к восстановлению содержимого регистров и состояния ЦП, кото- рые были в момент прерывания. Управление затем передается
на команду, перед выполнением которой произошло прерывание. Сохранение и восстановление состояния ЦП и содержимого ре- гистров часто называют операцией контекстного переключения.
Слово состояния SW содержит часть информации, которая нужна для обработки прерываний. Мы говорим о содержимом SW в УУМ/ДС. Большинство ЭВМ имеет аналогичный регистр, часто называемый словом состояния программы или словом состояния процессора.
| Разряды
| Имя поля
| Использование
| |
2-5
6-7
8-11
12-15
16-23
| MODE
IDLE
ID
CC
MASK
ICODE
| O=режим пользователя,1=режим супервизора
0=активен, 1=пассивен
Идентификатор процесса
Код условия
Маска перрываний
Не используется
Код прерываний
|
Рис 6.5. Содержимое слова состояния УУМ/ДС.
На рис. 6 5 показано содержимое SW. Первым битом (МОDЕ) задается режим, в котором находится ЦП — пользовательский или супервизора.
Обычные программы выполняются в пользовательском ре- жиме (МОDЕ = 0). Когда происходит прерывание, новое за- гружаемое содержимое SW имеет МODЕ = 1, что автоматиче- ски переводит ЦП в режим супервизора, тем самым становится возможным использование привилегированных команд. Перед тем как значение SW будет сохранено, в поле ICODE авто- матически устанавливается значение, указывающее на причину прерывания В случае SVC-прерываний ICODE присваивается значение, заданное пользователем командой SVС. Он опреде- ляет тип сервисного запроса. При программном прерывании в 1СООЕ отражен тип вызвавшего его условия, например деление на нуль. При прерывании по вводу-выводу в ICODE дан номер канала, породивший прерывание. Дальнейшую информацию о возможных значениях ICODE можно найти в приложении В.
В SVC содержится также код состояния СС. Сохранение SW автоматически спасает значение кода состояния прерванно- го процесса. Об использовании полей IDLE и ID будет расска- зано ниже в этой главе. Поле IDLE определяет, выполняет ли ЦП команды или простаивает. В ID содержится 4-битовое зна- чение, идентифицирующее текущую выполняемую программу.
Оставшееся поле слова состояния (МАSК) используется для контроля за разрешением прерываний. Это требуется для того, чтобы избежать потери сохраненной ранее информации о состоянии процесса. Предположим, например, что произошло прерывание по вводу-выводу. Значения SW, РС и других ре-
гистров будут сохранены в рабочей области прерывания ввода- вывода, о которой только что было рассказано, а ЦП начнет выполнение обработчика прерываний по вводу-выводу. Если до конца обработки первого прерывания произойдет еще одно, снова будет иметь место контекстное переключение. Однако на этот раз в качестве содержимого регистров, сохраняемого в ра- бочей области, окажутся значения, используемые обработчиком прерываний. Значения же, сохраненные при первом прерывании, будут утрачены, поэтому вернуть управление программе поль- зователя, которая в тот момент выполнялась, будет нельзя.
Чтобы избежать этого, нужно не допустить наступления пре- рываний определенного типа, пока первое из них не будет об- работано. Это достигается использованием поля МАSК слова состояния. В МАSК каждый бит соответствует некоторому классу прерываний. Если какой-то бит установлен в 1, то пре- рывания соответствующего класса разрешены, если
|