Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 72
Текст из файла (страница 72)
Вспомните основныепринципы организации ввода-вывода (см. главу 5): все операции ввода-вывода данных объявляются привилегированными. Это легче всего сделать, если процессорможет работать, как минимум, в двух режимах: привилегированном (режим супервизора) и пользовательском. В первом режиме процессор может выполнять вс£команды, тогда как в пользовательском набор разрешенных команд ограничеЕстественно, что помимо запрета на выполнение команд ввода-вывода в пользовтельском режиме работы процессор не должен позволять обращаться к своим сПциальным системным регистрам — эти регистры должны быть доступны толькпсновные принципы построения операционных систем281привилегированном режиме, то есть исключительно супервизорному коду самойоперационной системы. Попытка выполнить запрещенную команду или обратитьсяк запрещенному регистру должна вызывать прерывание (исключение), и центральн Ы й процессор должен быть предоставлен супервизорной части операционнойсистемы для управления выполняющимися вычислениями.вПоскольку любая программа требует операций ввода-вывода, прикладные программы для выполнения этих (и некоторых других) операций обращаются к супервизорной части операционной системы (модуль супервизора иногда называют супервизором задач) с соответствующим запросом.
При этом процессор долженпереключиться в привилегированный режим работы. Чтобы программы не моглипроизвольным образом обращаться к супервизорному коду, который работает впривилегированном режиме, им предоставляется возможность обращаться к немув строгом соответствии с принятыми правилами. Каждый запрос имеет свой идентификатор и должен сопровождаться соответствующим количеством параметров,уточняющих запрашиваемую у операционной системы функцию (операцию). Поэтому супервизор задач при получении запроса сначала его тщательно проверяет.Если запрос корректный и программа имеет право с ним обращаться, то запрос навыполнение операции, как правило, передается соответствующему модулю операционной системы.
Множество запросов к операционной системе образует соответствующий системный интерфейс прикладного программирования (ApplicationProgram Interface, API).Принцип виртуализацииВ наше время уже не требуется пояснять значение слова «виртуальный», ибо овиртуальных мирах, о виртуальной реальности знают даже дети. Принцип виртуализации нынче используется практически в любой операционной системе. Виртуализация ресурсов позволяет не только организовать разделение тех ресурсов между вычислительными процессами, которые не должны разделяться. Виртуализацияпозволяет абстрагироваться от конкретных ресурсов, максимально обобщить ихсвойства и работать с некоторой абстракцией, вобравшей в себя наиболее значимые особенности.
Этот принцип позволяет представить структуру системы в видеопределенного набора планировщиков процессов и распределителей ресурсов (мониторов) и использовать единую централизованную схему распределения ресурсов.Следует заметить, что сама операционная система существенно изменяет нашипредставления о компьютере. Она виртуализирует его, добавляя ему функциональности, удобства управления, предоставляя средства организации параллельныхвычислений и т. д. Именно благодаря операционной системе мы воспринимаемКомпьютер совершенно иначе, чем без нее.наиболее законченным и естественным проявлением концепции виртуальностивляется понятие виртуальной машины.
По сути, любая операционная система,вляясь средством распределения ресурсов и организуя по определенным правимУправление процессами, скрывает от пользователя и его приложений реаль1еаппаратные и иные ресурсы, заменяя их некоторой абстракцией. В результате282Глава 9. Архитектура операционных системпользователи видят и используют виртуальную машину как некое устройство, способное воспринимать их программы, написанные на определенном языке программирования, выполнять их и выдавать результаты на виртуальные устройства, к 0 .торые связаны с реально существующими в данной вычислительной системе. Притаком языковом представлении пользователя совершенно не интересует реальнаяконфигурация вычислительной систейы, способы эффективного использованияее компонентов и подсистем.
Он мыслит и работает с машиной в терминах используемого им языка.Чаще виртуальная машина, предоставляемая пользователю, воспроизводит архитектуру реальной машины, но архитектурные элементы в таком представлениивыступают с новыми или улучшенными характеристиками, часто упрощающимиработу с системой. Характеристики могут быть произвольными, но чаще всегопользователи желают иметь собственную «идеализированную» по архитектурнымхарактеристикам машину в следующем составе.Q Единообразная по логике работы память (виртуальная) достаточного для выполнения приложений объема.
Организация работы с информацией в такойпамяти производится в терминах работы с сегментами данных на уровне выбранного пользователем языка программирования.•Произвольное количество процессоров (виртуальных), способных работатьпараллельно и взаимодействовать во время работы. Способы управления процессорами, в том числе синхронизация и информационные взаимодействия,реализованы и доступны пользователям с уровня используемого языка в терминах управления процессами.•Произвольное количество внешних устройств (виртуальных), способных работать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуальногопроцессора, которые инициируют работу этих устройств. Информация, передаваемая или хранимая на виртуальных устройствах, не ограничена допустимыми размерами.
Доступ к такой информации осуществляется на основе либопоследовательного, либо прямого способа доступа в терминах соответствующей системы управления файлами. Предусмотрено расширение информационных структур данных, хранимых на виртуальных устройствах.Степень приближения к «идеальной» виртуальной машине может быть большейили меньшей в каждом конкретном случае. Чем больше виртуальная машина, реализуемая средствами операционной системы на базе конкретной аппаратуры компьютера, приближена к «идеальной» по характеристикам машине и, следовательно, чем больше ее архитектурно-логические характеристики отличны от реальнсуществующих, тем больше степень ее виртуальности.Одним из важнейших результатов принципа виртуализации является возможное!организации выполнения в операционной системе приложений, разработанных Ддругой операционной системы, имеющей совсем другой интерфейс прикладногпрограммирования.
Другими словами, речь идет об организации нескольких on ^рационных сред, о чем мы уже говорили в главе 1. Реализация этого принципа пзволяет операционной системе иметь очень сильное преимущество перед дрУгИОсновные принципы построения операционных систем283операционными системами, не имеющими такой возможности. Примером реализации принципа виртуализации может служить VDM-машина (Virtual DOS Machine) — защищенная подсистема, предоставляющая полную среду типа MS DOSи консоль для выполнения DOS-приложений. Как правило, параллельно можетвыполняться практически произвольное число DOS-приложений, каждое в своейVDM-машине.
Такие VDM-машины имеются и в операционных системах Windows 1 компании Microsoft, в OS/2, в Linux.Одним из аспектов общего принципа виртуализации является независимость программ от внешних устройств, хотя иногда эту особенность выделяют особенно и называют принципом. Она заключается в том, что связь программ с конкретнымиустройствами производится не в процессе создания программы, а в период планирования ее исполнения.
В результате перекомпиляция при работе программы с новым устройством, на котором располагаются данные, не требуется. Этот принциппозволяет одинаково осуществлять операции управления внешними устройстваминезависимо от их конкретных физических характеристик. Например, программе,содержащей операции обработки последовательного набора данных, безразлично,на каком носителе эти данные будут располагаться. Смена носителя и данных, размещаемых на них (при неизменности структурных характеристик данных), не привнесет каких-либо изменений в программу, если в системе реализован принципнезависимости программ от внешних устройств. Независимость программ от внешних устройств реализуется в подавляющем большинстве операционных системобщего применения.
Ярким примером такого подхода являются операционные системы с общим названием UNIX. Реализована такая независимость и в большинстве современных операционных систем для персональных компьютеров.Например, в системах Windows все аппаратные ресурсы полностью виртуализированы, и прямой доступ к ним со стороны прикладных (и системных обрабатывающих) программ однозначно запрещен. В системах Windows NT/2000/XP дажебыли введены понятия HAL (Hardware Abstraction Layer — уровень абстрагирования аппаратуры) и HEL (Hardware Emulation Layer — уровень эмуляции аппаратуры), и этот шаг очень помогает в реализации идей переносимости (мобильности) операционной системы.Принцип мобильностиМобильность, или переносимость, означает возможность и легкость переноса операционной системы на другую аппаратную платформу. Мобильная операционнаясистема обычно разрабатывается с помощью специального языка высокого уровня, предназначенного для создания системного программного обеспечения.