Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Существует несколько моделей, которые применялись на практике в разных системах. Их пять: — монолитные; — многоуровневые; — виртуальные машины; — экзоядро; — модель клиент-сервер.
Монолитные системы
В общем случае организация монолитной системы представляет собой „большой беспорядок“, т.е. структура как таковая отсутствует. Операционная система написана в виде набора процедур, каждая из которых может вызывать другие, когда ей это нужно. При использовании такой техники каждая процедура системы имеет возможность вызвать любую другую для выполнения некоторой необходимой для нее работы. Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать из в единый объектный файл с помощью компоновщика. Здесь полностью отсутствует сокрытие деталей реализации — каждая процедура видит любую другую процедуру (в отличии от структуры, содержащей модули, в которой большая часть информации является локальной для модуля и процедуры модуля можно вызвать только через специально определенные точки входа). Однако даже такие монолитные системы могут иметь некоторую структуру. При обращении к системным вызовам, поддерживаемым операционной системой, параметры перемещаются в строго определенные места (регистры или стек), после чего выполняется специальная команда прерывания, известная как вызов ядра или вызов супервизора. Эта команда переключает машину из режима пользователя в режим ядра и передает управление операционной системе. Затем операционная система проверяет параметры вызова, чтобы определить какой системный вызов должен быть выполнен. После этого операционная система обращается к таблице как массиву с номером системного вызова в качестве индекса. В k-м элементе таблицы содержится ссылка на процедуру обработки системного вызова k. Такая организация операционной системы предполагает следующую структуру: — главная программа, которая вызывает требуемую служебную процедуру; — набор служебных процедур, выполняющих системные вызовы; — набор утилит, обслуживающих служебные процедуры. В этой модели для каждого системного вызова имеется одна служебная процедура. Утилиты выполняют функции, которые нужны нескольким служебным процедурам.
Многоуровневые системы
Обобщением подхода монолитных систем является организация операционной системы в виде иерархии уровней. Количество из может быть от шести и выше. Например, можно выделить следующие уровни: 1. Распределение процессора и многозадачность; 2. Управление памятью; 3. Связь оператор-процесс; 4. Управление вводом/выводом; 5. Программы пользователя; 6. Оператор.
Виртуальные машины
Идея виртуальной машины очень часто используется в наши дни, но несколько в другом смысле. А, именно, для работы старых программ, написанных для системы MS-DOS на Pentium, т.е. создается режим виртуального процессора 8086. В этом случае возможны две ситуации:
— сама MS-DOS загружена в адресное пространство виртуальной машины 8086, так что монитор виртуальной машины только отсылает прерывания назад к MS-DOS, как это происходит на реальном 8086, затем MS-DOS пытается сама осуществить ввод-вывод, операции перехватываются и выполняются монитором виртуальной машины;
— монитор виртуальной машины перехватывает первое прерывание и сам выполняет ввод-вывод, т.к. он знает все системные вызовы MS-DOS и имеет представление о том, что должно делать каждое прерывание. Второй вариант не безупречен, т.к. он моделирует только MSDOS и никакие другие операционные системы. Второй вариант намного быстрее первого варианта, т.к. избегает проблем запуска MS-DOS для выполнения ввода-вывода. Еще один недостаток фактического запуска MS-DOS в режиме 8086: MS-DOS часто оперирует флагом разрешения/запрещения прерывания, а моделирование этого требует больших затрат. Кроме того, виртуальные машины используются несколько другим способом, для работы программ Java. Когда корпорация Sun Microsystems придумала язык программирования Java, она также разработала виртуальную машину (архитектуру компьютера), называемую JVM (Java Virtual Machine — виртуальная машина Java). Компилятор Java выдает код для JVM, который затем обычно выполняется программным интерпретаром JVM. Преимущество этого подхода заключается в том, что код JVM можно передавать через Internet на любой компьютер, имеющий интерпретатор JVM, и запускать там. Другое преимущество JVM — когда интерпретатор реализован должным образом, что вовсе не тривиально, приходящие JVM-программы можно проверить в целях безопасности и затем запустить в защищенной среде, так что эти программы не могут похитить данные или причинить какой-нибудь иной вред.
Экзоядро
Каждая виртуальная машина на уровне пользователя может работать с собственной операционной системой с той лишь разницей, что каждая машина ограничена набором ресурсов, которые она запросила и которые ей были предоставлены. Достоинства экзоядра: — позволяет обойтись без уровня отображения; При других методах работы каждая виртуальная машина считает, что она использует свой собственный диск с нумерацией блоков от нуля до некоторого максимума. Поэтому монитор виртуальной машины должен поддерживать таблицы преобразования адресов на диске и всех других ресурсов. Необходимость преобразования отпадает при наличии экзоядра, которому нужно только хранить запись о том, какой виртуальной машине выделен данный ресурс. — отделяется многозадачность (в экзоядре) от операционной системы пользователя (в пространстве пользователя) с меньшими затратами, т.к. для этого ему необходимо всего лишь не допускать вмешательства одной виртуальной машины в работу другой.
Модель клиент-сервер
В развитии современных операционных систем наблюдается тенденция в сторону дальнейшего переноса кода в верхние уровни и удалении при этом всего, что только можно, из режима ядра, оставляя минимальное микроядро. Обычно это осуществляется перекладыванием выполнения большинства задач операционной системы на средства пользовательских процессов. Получая запрос на какую-либо операцию, например чтение блока файла, пользовательский процесс(теперь называемый обслуживаемым процессом или клиентским процессом) посылает запрос серверному (обслуживающему) процессу, который его обрабатывает и высылает назад ответ. Преимущества модели клиент-сервер: — компактность и управляемость; Благодаря разделению операционной системы на части, каждый из которых управляет всего одним элементом системы (файловой системой, процессами, терминалом или памятью), все части становятся маленькими и управляемыми. К тому же, поскольку все серверы работают как процессы в режиме пользователя, а не в режиме ядра, они не имеют прямого доступа к оборудованию. Поэтому если происходит ошибка на файловом сервере, может разрушиться служба обработки файловых запросов, но это обычно не приводит к остановке всей машины целиком. — простота адаптации к использованию в распределенных системах;
Некоторые функции операционной системы, такие как загрузка в регистры команд в регистры физических устройств ввода-вывода, трудно, если вообще возможно, выполнить из программ в пространстве пользователя. Существует два способа разрешения этой проблемы: — некоторые критические серверные процессы (например, драйверы устройств ввода-вывода) запускаются в режиме ядра, с полным доступом к аппаратуре, но при этом общаются с другими процессами при помощи обычной схемы передачи сообщений; — выстроить минимальный механизм обработки информации в ядре, но оставить принятие политических решений за серверами в пользовательском пространстве.
Дата публикования: 2015-01-26; Прочитано: 1156 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!