Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 4
Текст из файла (страница 4)
Очевидно, что программа, созданная для работы в некоторой операционной системе, скорее всего не будет работать в другой операционной системе, поскольку API у этих операционныхсистем, как правило, различаются. Стараясь преодолеть это ограничение, разработчики операционных систем стали создавать так называемые программные среды. Программную (системную) среду следует понимать как некоторое системноепрограммное окружение, позволяющее выполнить все системные запросы от прикладной программы. Та системная программная среда, которая непосредственнообразуется кодом операционной системы, называется основной, естественной, илинативной (native). Помимо основной операционной среды в операционной системе могут быть организованы (путем эмуляции иной операционной среды) дополнительные программные среды.
Если в операционной системе организована работа с различными операционными средами, то в такой системе можно выполнятьпрограммы, созданные не только для данной, но и для других операционных систем.17Понятие операционной средыМожно сказать, что программы создаются для работы в некоторой заданной операционной среде. Например, можно создать программу для работы в среде DOS.Если такая программа все функции, связанные с операциями ввода-вывода и с запросами памяти, выполняет не сама, а за счет обращения к системным функциямDOS, то она будет (в абсолютном большинстве случаев) успешно выполняться и вMS DOS, и в PC DOS, и в Windows 9x, и в Windows 2000, и в OS/2, и даже в Linux.Итак, параллельное существование терминов «операционная система» и «операционная среда» вызвано тем, что операционная система (в общем случае) можетподдерживать несколько операционных сред.
Почти все современные 32-разрядные операционные системы, созданные для персональных компьютеров, поддерживают по нескольку операционных сред. Так, операционная система OS/2 Warp,которая в свое время была одной из лучших в этом отношении, может выполнятьЦл следующие программы:ct^Qосновные программы, созданные с учетом соответствующего «родного» 32-разряднго программного интерфейса этой операционной системы;<?>• Q 16-разрядные программы, созданные для систем OS/2 первого поколения;Q 16-разрядные приложения, разработанные для выполнения в операционнойсреде MS DOS или PC DOS;Q16-разрядные приложения, созданные для операционной среды Windows 3.x;Q саму операционную оболочку Windows 3.x и уже в ней — созданные для неепрограммы.А операционная система Windows XP позволяет выполнять помимо основныхприложений, созданных с использованием Win32API, 16-разрядные приложениядля Windows 3.x, 16-разрядные DOS-приложения, 16-разрядные приложения дляпервой версии OS/2.Операционная среда может включать несколько интерфейсов: пользовательскиеи программные.
Если говорить о пользовательских, то, например, система Linuxимеет для пользователя как интерфейсы командной строки (можно использоватьразличные «оболочки» — shell), наподобие Norton Commander, например MidnightCommander, так и графические интерфейсы, например X-Window с различнымименеджерами окон — KDE, Gnome и др.
Если же говорить о программных интерфейсах, то в тех же операционных системах с общим названием Linux программымогут обращаться как к операционной системе за соответствующими сервисами ифункциями, так и к графической подсистеме (если она используется). С точки зрения архитектуры процессора (и персонального компьютера в целом) двоичнаяпрограмма, созданная для работы в среде Linux, использует те же команды и форматы данных, что и программа, созданная для работы в среде Windows NT. Однаков первом случае мы имеем обращение к одной операционной среде, а во втором —к другой. И программа, созданная непосредственно для Windows, не будет выполняться в Linux; однако если в операционной системе Linux организовать полноценную операционную среду Windows, то наша Windows-программа может бытьвыполнена.
Завершая этот раздел, можно еще раз сказать, что операционная среда — это то системное программное окружение, в котором могут выполняться программы, созданные по правилам работы 1 о* е в # Ш & й с ь к и й ушверситетф1нанс1в, ЫформацШнихсистем, менеджменту i 6i3HecyВЩокремлений п1дроздшv МЖИТЙМИЫ18Глава 1. Основные понятияПрерыванияПрерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств вычислительной системы и реагировать на особые состояния, возникающие при работе процессора, то есть прерывание — это принудительная передача управления от выполняемой программык системе (а через нее — к соответствующей программе обработки прерывания),происходящая при возникновении определенного события.Идея прерывания была предложена также очень давно — в середине 50-х годов, —и можно без преувеличения сказать, что она внесла наиболее весомый вклад в развитие вычислительной техники.
Основная цель введения прерываний — реализация асинхронного режима функционирования и распараллеливание работы отдельных устройств вычислительного комплекса.Механизм прерываний реализуется аппаратно-программными средствами. Структуры систем прерывания (в зависимости от аппаратной архитектуры) могут бытьсамыми разными, но все они имеют одну общую особенность — прерывание непременно влечет за собой изменение порядка выполнения команд процессором.Механизм обработки прерываний независимо от архитектуры вычислительнойсистемы подразумевает выполнение некоторой последовательности шагов.1. Установление факта прерывания (прием сигнала запроса на прерывание) иидентификация прерывания (в операционных системах идентификация прерывания иногда осуществляется повторно, на шаге 4).2.
Запоминание состояния прерванного процесса вычислений. Состояние процессавыполнения программы определяется, прежде всего, значением счетчика команд (адресом следующей команды, который, например, в i80x86 определяетсярегистрами CS и IP — указателем команды [1,8, 48]), содержимым регистровпроцессора, и может включать также спецификацию режима (например, режимпользовательский или привилегированный) и другую информацию.3.
Управление аппаратно передается на подпрограмму обработки прерывания.В простейшем случае в счетчик команд заносится начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры — информацияиз слова состояния. В более развитых процессорах, например в 32-разрядныхмикропроцессорах фирмы Intel (начиная с i80386 и включая последние процессоры Pentium IV) и им подобных, осуществляются достаточно сложная процедура определения начального адреса соответствующей подпрограммы обработки прерывания и не менее сложная процедура инициализации рабочихрегистров процессора (подробно эти вопросы рассматриваются в разделе «Система прерываний 32-разрядных микропроцессоров i80x86» главы 4).4.
Сохранение информации о прерванной программе, которую не удалось спастина шаге 2 с помощью аппаратуры. В некоторых процессорах предусматривается запоминание довольно большого объема информации о состоянии прерванных вычислений.5. Собственно выполнение программы, связанной с обработкой прерывания. Этаработа может быть выполнена той же подпрограммой, на которую было переда-Прерывания19но управление на шаге 3, но в операционных системах достаточно часто онареализуется путем последующего вызова соответствующей подпрограммы.6.
Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).7. Возврат на прерванную программу.Шаги 1-3 реализуются аппаратно, шаги 4-7 — программно.На рис. 1.2 показано, что при возникновении запроса на прерывание естественныйход вычислений нарушается и управление передается на программу обработкивозникшего прерывания. При этом средствами аппаратуры сохраняется (как правило, с помощью механизмов стековой памяти) адрес той команды, с которой следует продолжить выполнение прерванной программы. После выполнения программыобработки прерывания управление возвращается на прерванную ранее программупосредством занесения в указатель команд сохраненного адреса команды, которую нужно было бы выполнить, если бы не возникло прерывание.
Однако такаясхема используется только в самых простых программных средах. В мультипрограммных операционных системах обработка прерываний происходит по болеесложным схемам, о чем будет более подробно написано ниже.Итак, главные функции механизма прерываний — это:Q распознавание или классификация прерываний;Qпередача управления соответствующему обработчику прерываний;Q корректное возвращение к прерванной программе.Переход от прерываемой программы к обработчику и обратно должен выполняться как можно быстрей.
Одним из самых простых и быстрых методов является использование таблицы, содержащей перечень всех допустимых для компьютерапрерываний и адреса соответствующих обработчиков. Для корректного возвращения к прерванной программе перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом, либо в системном стеке (system stack).Прерывания, возникающие при работе вычислительной системы, можно разделитьна два основных класса: внешние (их иногда называют асинхронными) и внутренние (синхронные).Внешние прерывания вызываются асинхронными событиями, которые происходятвне прерываемого процесса, например:•прерывания от таймера;•прерывания от внешних устройств (прерывания по вводу-выводу);•прерывания по нарушению питания;•прерывания с пульта оператора вычислительной системы;Q прерывания от другого процессора или другой вычислительной системы.Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями.