Новости

Особливості побудови архітектури операційних систем. Архітектура операційної системи Windows NT. Захищені підсистеми ОС Windows NT

Работа добавлена:






Особливості побудови архітектури операційних систем. Архітектура операційної системи Windows NT. Захищені підсистеми ОС Windows NT на http://mirrorref.ru

Лекция 2.Особливості побудови архітектури операційних систем. Архітектура операційної системи Windows NT. Захищені підсистеми ОС Windows NT. Реєстр Windows та функції API для роботи з ним. Засоби роботи з реєстром у системах  Delphi та C++ Builder

Монолитное ядро

В случае, когда компоненты операционной системы являются не самостоятельными модулями, а составными частями одной большой программы. Такая структура операционной системы называетсямонолитным ядром (monolithickernel).Монолитное ядро представляет собой набор процедур, каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме. Таким образом, монолитное ядро это такая схема операционной системы, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой.

Во многих операционных системах с монолитным ядром сборка ядра, то есть его компиляция, осуществляется отдельно для каждого компьютера, на который устанавливается операционная система. При этом можно выбрать список оборудования и программных протоколов, поддержка которых будет включена в ядро. Гак как ядро является единой программой, перекомпиляция это единственный способ добавить в него новые компоненты или исключить неиспользуемые. Следует отметить, что присутствие в ядре лишних компонентов крайне нежелательно, так как ядро всегда полностью располагается в оперативной памяти. Кроме того, исключение ненужных компонент повышает надежность операционной системы в целом.

Монолитное ядро старейший способ организации операционных систем. Примером систем с монолитным ядром является большинствоUnix-систем.

Сервисные процедуры выполняются в привилегированном режиме, тогда как пользовательские программы в непривилегированном режиме. Для перехода с одного уровня привилегий на другой иногда может использоваться главная сервисная программа, определяющая, какой именно системный вызов был сделан, корректность входных данных для этого вызова, и передающая управление соответствующей сервисной процедуре с переходом в привилегированный режим работы. Иногда выделяют также набор программных утилит, которые помогают выполнению сервисных процедур.

Слоеные системы (Layeredsystems)

Можно разбить всю вычислительную систему на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты из уровняN-1. Нижним уровнем в таких системах обычно являетсяhardware, верхним уровнем интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системыTHE (TechnisheHogeschoolEindhoven) в 1968 г. Эта система имела следующие уровни:

5

Интерфейс пользователя

4

Управление вводом-выводом

3

Драйвер устройства связи оператора и консоли

2

Управление памятью

1

Планирование задач и процессов

0

Hardware

Слоеные системы хорошо реализуются. При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно знать лишь, что они делают. Слоеные системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки мы можем быть уверены, что она находится в тестируемом слое. Слоеные системы хорошо модифицируются. При необходимости можно заменить лишь один слой, не трогая остальные. Но слоеные системы сложны для разработки: тяжело правильно определить порядок слоев, и что, к какому слою относится. Слоеные системы менее эффективны, чем монолитные. Так, например, для выполнения операций ввода-вывода программе пользователя придется последовательно проходить все слои - от верхнего до нижнего.

Виртуальные машины

Мы говорили о взгляде на операционную систему как на виртуальную машину, когда пользователю нет необходимости знать детали внутреннего устройства компьютера. Рассмотрим несколько другой подход. Пусть операционная система реализует виртуальную машину для каждого пользователя, таким образом, чтобы пользователь имел абсолютно «голое железо» в вычислительной системе, включая процессор, привилегированные и непривилегированные команды, устройства ввода-вывода, прерывания и т.д. При попытке обратиться к этому виртуальному железу на уровне привилегированных команд, в действительности происходит системный вызов реальной операционной системы, которая и производит все необходимые действия. Такой подход позволяет каждому пользователю загрузить свою собственную операционную систему на виртуальную машину и делать с ней все, что душа пожелает.

Программа пользователя

Программа пользователя

Программа пользователя

MS-DOS

Linux

Windows-NT

Виртуальноеhardware

Виртуальноеhardware

Виртуальноеhardware

Реальная операционная система

Реальноеhardware

Рис. 1.3 Вариант виртуальной машины.

Первой реальной системой такого рода была системаCP/CMS илиVM/370, как ее называют сейчас, для семейства машинIBM/370.

Недостатком таких операционных систем является снижение эффективности виртуальных машин по сравнению с реальной машиной, и, как правило, они очень громоздки. Преимуществом - использование на одной вычислительной системе программ, написанных для разных операционных систем.

Микроядерная архитектура

Современная тенденция в разработке операционных систем это перенесение значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Речь идет о подходе к построению ядра, называемом микроядерной архитектурой (microkernelarchitecture) операционной системы, когда большинство ее составляющих являются самостоятельными программами. В этом случае взаимодействие между ними обеспечивает специальный модуль ядра, называемый микроядром. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью.

Рис. 1.4 Микроядерная архитектура операционной системы

Остальные компоненты системы взаимодействуют друг с другом путем передачи сообщений через микроядро.

Основное достоинство микроядерной архитектуры высокая степень модульности ядра операционной системы. Это существенно упрощает добавление в него новых компонент. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонент ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. В то же время, микроядерная архитектура операционной системы вносит дополнительные накладные расходы, связанные с передачей сообщений, что существенно влияет на производительность. Для того чтобы микроядерная операционная система по скорости не уступала операционным системам на базе монолитного ядра, требуется очень аккуратно проектировать разбиение системы на компоненты, стараясь минимизировать взаимодействие между ними. Таким образом, основная сложность при создании микроядерных операционных систем необходимость очень аккуратного проектирования.

Смешанные системы

Все рассмотренные подходы к построению операционных систем имеют свои преимущества и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов.

Примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Как устроены 4.4BSD иMkLinux. основанные на микроядреMach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром.

Данный подход возник в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра. Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядреWindowsNT. ХотяWindowsNT часто называют микроядерной операционной системой, это не совсем так. МикроядроNT слишком сложно и велико (более 1 Мб), чтобы носить приставку микро. Компоненты ядраWindowsNT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерных операционных системах. В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Кроме того, вWindowsNT существует разделение между режимом ядра и режимом пользователя еще одна черта монолитного ядра. Причина всего этого проста. По мнениюMicrosoft, причина проста: чисто микроядерный дизайн коммерчески непрактичен, так как слишком неэффективен. Таким образом.WindowsNT можно с полным правом назвать гибридной операционной системой.

Выводы

Вне зависимости от реализации и архитектуры ОС она должна включать в себя следующие

части:

1.    Интерфейс взаимодействия с аппаратурой

2.    Файловую систему и механизмы для управления ней

3.    Систему управления процессами включая систему планирования

4.    Интерфейс пользователя

5.    Интерфейсы программирования и взаимодействия с приложениями пользователя

6.    Сетевые средства

7.    Систему безопасности

8.    Систему контроля целостности ОС и самовосстановления ОС

9.   Дополнительные средства сервиса, расширяющие возможности операционной системы

2.1. Основные понятия теории построения операционных систем

Решение задач системного программирования требует знаний не только средств разработки, но и устройства операционных систем (ОС), в среде которых решаются эти задачи. Далее будем рассматривать вопросы системного программирования в ОС Windows - самой распространенной ОС на сегодняшний день. Решение задач системного программирования для ОС Windows является очень сложным процессом, который требует использования языков высокого уровня, ассемблера, специального набора API функций, а также знания технологий ActiveX, COM, COM+ и т.д.

Знание архитектуры операционной системы (ОС) - это основа практических навыков разработки приложений. Поэтому, прежде чем перейти к непосредственному изучению аспектов системного программирования, кратко рассмотрим архитектуру операционных систем семейства Windows NT.

Для обеспечения своей целостности и эффективности Windows использует два режима:пользователя(минимальный уровень привелегий 3)  и ядра(максимальный уровень привилегий 0). В архитектуре процессора Intel 80386 и более поздних для защиты кода и данных системы от случайного или преднамеренного изменения со стороны менее привилегированного кода предусмотрено четыре уровня привилегий, называемых кольцами. Когда код выполняется на некотором уровне привилегий, говорят, что он выполняется в соответствующем кольце. Операционные системы семейства Windows используют только кольца 0 и 3. Этот метод выполнения программ называетсямоделью защиты Intel.

Режим ядра (кольцо 0) — это наиболее привилегированный режим. Программное обеспечение, выполняющееся в режиме ядра, имеет прямой доступ к аппаратному обеспечению и ко всей памяти компьютера. Оно не может быть вытеснено в страничный файл на жестком диске и выполняется с большим приоритетом, чем процессы режима пользователя.

В кольце 0 выполняется код ядра операционной системы. Не следует запускать в этом кольце какие угодно программы, поскольку компоненты этого режима имеют доступ ко всей системе и если программный компонент в режиме ядра будет работать с ошибками, то это может разрушить всю систему.

В ранних версиях Windows (95/98/Me) обеспечивается максимальная обратная совместимость с более ранними версиями Windows и MS-DOS, поэтому многие старые 16-разрядные драйверы и приложения используют прямой доступ к аппаратуре. Более поздние версии Windows не предоставляют таким приложениям требуемый уровень доступа, поэтому зачастую они не могут работать под управлением Windows NT 4.0, 2000, XP.

Режим пользователя предоставляет меньше привилегий, нежели режим ядра. Этот режим не обеспечивает прямой доступ к аппаратуре. Код, выполняющийся в кольце 3, ограничен выделенным ему адресным пространством, а для вызова системных сервисов используется интерфейс прикладного программирования (API – Application Programming Interface).

Процессы режима пользователя имеют следующие особенности:

  • не имеют прямого доступа к аппаратуре;
  • ограничены выделенным им адресным пространством;
  • процессу выделяется определенная область адресов и он не может выходить за эту область;
  • могут быть вытеснены из физической памяти в виртуальную память на жестком диске;
  • выполняются с меньшим приоритетом, чем компоненты режима ядра.

Такой подход к ограничению возможностей пользовательских программ в среде ОС позволяет обеспечить целостность ОС, не препятствовать работе ОС и повысить ее надежность.

В среде ОС Windows приложение состоит из одного или более процессов.Процесс — это  выполняемая программа. Ему принадлежат адресное пространство и выделенные ресурсы, а также один или более потоков, выполняющихся в его контексте.

Поток — это основная единица, которой операционная система выделяет процессорное время, и минимальная часть кода – «квант» кода, который может быть запланирован для выполнения. Кроме того, это часть процесса, выполняющаяся в каждый момент времени. Поток работает в адресном пространстве процесса и использует ресурсы, выделенные процессу.

Любой процесс содержит хотя бы один поток. Каждый процесс 16-разрядного Windows-приложения или программы MS-DOS имеет только один поток, тогда как процессы 32-разрядных Windows-приложений могут включать их несколько.

Ресурсами владеют процессы, а не потоки — последние только используют ресурсы, выделенные процессу.

Все операционные системы семейства Windows являютсямногозадачными операционными системами.

Многозадачность — способность операционной системы выполнять более одной программы (задачи) одновременно. Противоположный подход — однозадачность, когда один процесс должен быть завершен прежде, чем сможет начаться другой. MS-DOS — пример однозадачной среды,  Windows 98, Windows NT, 2000, Me, XP — многозадачные среды.

В многозадачной ОС на однопроцессорном компьютере программы не выполняются одновременно - процессор переключается между ними, при условии, что на компьютере стоит один процессор. В многопроцессорных системах выполнение задач действительно может идти параллельно.

Многозадачность позволяет компьютеру эффективно использовать время, которое иначе было бы потеряно в ожидании команды пользователя или ответа устройств ввода/вывода.

Существуют два типа многозадачности:не вытесняющая (кооперативная) ивытесняющая (рис. 2.1). Вкооперативной многозадачной среде (Windows 3.1) контроль над процессором никогда не отбирается у задачи — приложение должно самостоятельно завершить работу с процессором чтобы дать возможность работать другому приложению.

Вытесняющая многозадачность - операционная система не ждет, когда поток сам захочет освободить процессор, а принудительно снимает его с выполнения после того, как та израсходовала отведенное ей время (квант), или если в очереди появился поток с более высоким приоритетом. При такой организации разделения процессора ни один поток не займет процессор на длительное время.

Для определения очередности выполнения потоков диспетчер ядра использует алгоритм, в соответствии, с которым каждому потоку присваивается число-приоритет, и поток с более высоким приоритетом выполняется раньше потоков с более низким приоритетом.

Рисунок 2.1. - Вытесняющая и кооперативная многозадачность

ОС семейства Windows NT применяет вытесняющую многозадачность также и при  выполнении 16-разрядных приложений Windows и MS-DOS и обеспечивает полную защиту памяти 16-разрядных приложений, так как каждое из них выполняется в рамках собственной виртуальной машины.

В связи с таким подходом в реализации многозадачности возникает необходимость управления этим процессом и необходимость определения приоритета выполнения процесса. Каждый процесс при запуске получает свойприоритет, который может быть изменен в процессе его выполнения. Потоки при запуске получают приоритеты процессов.

С целью обеспечения стабильной работы приложений и самой операционной системы разработан специальный слой абстрагирования от алгоритма работы планировщика. Этот слой позволяет работать приложениям на разных версиях операционных систем, где планировщики потоков могут отличаться между собой, и этот слой не позволяет работать с планировщиком потоков напрямую. Приоритеты процессов в ОС Windows делятся на два класса:

  • реального времени (приоритеты от 16 до 31) — используется для выполнения основных функций операционной системы и обычно не применяется для приложений;
  • переменного приоритета (приоритет от 0 до 15) — определяет процессорный приоритет приложений. Приоритет 0 может использоваться только для системного потока, который используется для обнуления свободных страниц в оперативной памяти при отсутствии других планируемых потоков.

Процессам могут быть присвоены следующие базовые уровни приоритетов:

низкий (idle)— запускает приложения с уровнем приоритета 4;

обычный(normal) — запускает приложения с уровнем приоритета 7;

высокий (high)— запускает приложения с уровнем приоритета 13;

реального времени (real-time)— запускает приложения с уровнем приоритета 24.

Необходимо отметить, что операционные системы семейства Windows NT имеют два дополнительных уровня приоритетов процессов, которые являются дополнением к приведенным выше. Эти дополнительные классы представляют собой промежуточные приоритеты. Первый из них называется «выше обычного» и находятся между обычным и высоким классами приоритетов. Второй называется  «ниже обычного» и находится между обычным и низким классами приоритетов. Уровни приоритетов можно изменять программно для каждого потока. Как это делать, будет рассмотрено в дальнейшем.

На основе уровней приоритета процесса ОС осуществляет управление выполнением программ. Этот процесс называетсяпланированием. С помощью планирования операционная система определяет, какой поток использует процессор в данный момент времени. Планирование основано на заранее заданной единице времени, называемойквантом времени. Фактическая продолжительность кванта времени зависит от конфигурации системы и в среднем равна 19 миллисекундам.  Среди нескольких одновременно выполняющихся потоков,  процессор в свое распоряжение (рис 2.2) получает поток с наибольшим приоритетом. Приоритет каждого потока определяется по:

  • классу приоритета процесса, которому принадлежит поток;
  • уровню приоритета потока внутри класса приоритета его процесса.

Рисунок 2. 2. - Процесс планирования

Приоритеты потоков также имеют различные классы, которые в целом идентичны классам приоритетов процессов.

Вот таким образом операционная система обеспечивает выполнение нескольких потоков одновременно. Необходимо отметить, что при выполнении нескольких потоков с одинаковым уровнем приоритета планировщик будет выделять им одинаковые кванты времени и выполнять поочередно эти потоки, останавливая один поток и запуская другой.

Особливості побудови архітектури операційних систем. Архітектура операційної системи Windows NT. Захищені підсистеми ОС Windows NT на http://mirrorref.ru


Похожие рефераты, которые будут Вам интерестны.

1. Реферат Архітектура операційної системи Windows NT Огляд архітектури ОС Windows NT Захищені підсистеми ОС Windows NT Керування пам’ятью

2. Реферат Встановлення і налаштування операційної системи Windows XP

3. Реферат Тенденції розвитку операцшних систем. Призначення та фуикції операційної системи. Загальні поняття та концепції операцшних систем. Класифікація операційних систем

4. Реферат Конфігурування мережевого ІР-екрану з використанням політик операційної системи Windows

5. Реферат Огляд архітектури операційних систем сімейства UNIX-LINUX. Їх загальні характеристики, особливості та відмінності

6. Реферат Файлові системи. Загальний огляд. Файлові системи ОС Windows

7. Реферат Архітектура фон Неймана. Ієрархічний принцип побудови апаратних та програмних засобів комп’ютерів

8. Реферат Загальна характеристика операційних систем для мобільних пристроїв. Огляд систем з точки зору розробника програмного забезпечення

9. Реферат Потоки в операційній системі Windows. Засоби синхронізації потоків. Засоби роботи з потоками. Об’єкт TThread систем Delphi та C++ Builder для роботи з потоками

10. Реферат Основні етапи побудови системи управління якістю підприємства