Программа или комплекс программ, которая загружается при включении



страница1/6
Дата02.08.2018
Размер1.1 Mb.
#41444
ТипПрограмма
  1   2   3   4   5   6

  1. Понятие и назначение операционной системы. Место операционной системы в вычислительной системе.

ОС – это программа или комплекс программ, которая загружается при включении

компьютера, производит диалог с пользователем, осуществляет управление компьютером, его

ресурсами (оперативной памятью, местом на дисках), запускает другие (прикладные) программы

на выполнение. ОС действует как интерфейс между приложениями и пользователями с одной

стороны, и аппаратурой компьютера, с другой стороны.

Расположение операционной системы в иерархической структуре программного и

аппаратного обеспечения компьютера можно представить, как показано на рисунке 1. Самый

нижний уровень содержит различные устройства компьютера, состоящие из микросхем,

проводников, источников питания и т. п. Этот уровень можно разделить на подуровни, например

контроллеры устройств, а затем сами устройства. Возможно деление и на большее число уровней.

Выше расположен микроархитектурный уровень, на котором физические устройства

рассматриваются как отдельные функциональные единицы. На микроархитектурном уровне

находятся внутренние регистры центрального процессора (их может быть несколько) и

арифметико-логические устройства со средствами управления ими. На этом уровне реализуется

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

процессора и устройств, а также другие возможности аппаратуры. Команды, видимые для

работающего на ассемблере программиста, формируют уровень ISA (Instruction Set Architecture -

архитектура системы команд), часто называемый машинном языком.





  1. Обзор критериев эффективности работы операционных систем.

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

Расширяемость. Изменения ОС обычно заключаются в приобретении ею новых

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



Переносимость. В идеале код ОС должен легко переноситься с процессора одного типа

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



Совместимость. Если ОС имеет средства для выполнения прикладных программ,

написанных для других операционных систем, то про нее говорят, что она обладает

совместимостью с этими ОС. Понятие совместимости включает также поддержку

пользовательских интерфейсов других ОС.



Надежность и отказоустойчивость. Система должна быть защищена как от

внутренних, так и от внешних ошибок, сбоев и отказов. Ее действия должны быть всегда

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

Безопасность. Современная ОС должна защищать данные и другие ресурсы

вычислительной системы от несанкционированного доступа. Чтобы ОС обладала свойством безопасности, она должна как минимум иметь в своем составе средства аутентификации определения легальности пользователей, авторизации — предоставления легальным пользователям дифференцированных прав доступа к ресурсам, аудита — фиксации всех «подозрительных» для безопасности системы событий.



Производительность. Операционная система должна обладать настолько хорошим

быстродействием и временем реакции, насколько это позволяет аппаратная платформа. На

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

Критерий эффективности, в соответствии с которым ОС организует управление ресурсами

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


  1. Обзор базовых типов архитектур операционных систем.

Перечислим основные типы внутренней архитектуры операционных систем и в качестве

примеров рассмотрим архитектуру наиболее распространенных операционных систем – систем

UNIX и Windows. Разливают три базовых типа архитектуры операционных систем:

• монолитная архитектура;

• многоуровневая архитектура;

• архитектура типа клиент-сервер на основе микроядра.

Рассмотрим каждый из этих типов архитектуры более подробно.

Монолит:


При монолитной архитектуре операционная система не имеет какой-либо явно выраженной

внутренней структуры. Это набор процедур, использующих общие глобальные данные, и

вызываемые друг другом или пользователем. Заметим, что монолитную архитектуру имели самые первые поколения операционных систем.


При использовании монолитной архитектуры, аппаратно-зависимый и аппаратно-

независимый код в составе операционной системы тесно переплетаются, что крайне затрудняет

развитие операционной системы или ее перенос на другую аппаратную платформу. Наличие

бессистемных разветвленных связей между компонентами операционной системы с монолитной

архитектурой приводит к необходимости коррекции многих компонентов системы при реальной

потребности изменения только одного из них. При этом может наблюдаться эффект снежной

лавины – изменение одной процедуры потребовало изменение нескольких других, каждая из

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

могут доставить глобальные данные, т.к. даже незначительное изменение их формата,

необходимое для какой-то частной процедуры, в большинстве случаев потребует коррекции

практически всех остальных процедур операционной системы. Серьезные трудности возникают

при сопровождении и технической поддержке операционной системы с монолитной

архитектурой, в период ее эксплуатации, особенно если система находится в эксплуатации

длительное время, и сопровождение выполняют специалисты, которые не участвовали в

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

усложнения монолитной операционной системы, ее поддержка все более затрудняется. В

конечном итоге, довольно быстро наступает момент, когда дальнейшее развитие системы

становится нецелесообразным – легче написать все заново, чем модифицировать имеющийся

код. Довольно скоро ограничения монолитной архитектуры стали столь значительными, что для

построения расширяемых и переносимых операционных систем необходимо было искать новые

решения, и они были предложены.

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

Многоуровневая архитектура появилась как ответ на ограничения монолитной архитектуры

в плане расширяемости, переносимости и совместимости. Основная идея многоуровневой

архитектуры состоит в следующем:

1. Полная функциональность операционной системы разделяется на уровни, например

уровень управления аппаратурой, уровень управления памятью, уровень файловой системы,

уровень управления процессами и т.п.

2. Для каждого уровня определяются интерфейс взаимодействия, т.е. некоторый набор

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

3. Взаимодействие уровней строится таким образом, что каждый уровень может

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

4. Внутренние структуры данных каждого уровня не доступны другим уровням, а

реализации процедур уровня скрыты и не зависят от реализаций процедур внутри других

уровней.


Обязательным условием для разбиения функциональности на уровни является

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

прямые обращения к любым уровням, минуя соседний уровень.



Многоуровневая архитектура предполагает взаимодействие между уровнями

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

уровней. Это позволяет в случае необходимости изменять внутренние реализации процедур

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

Омский авиационный колледж имени Н.Е. Жуковского 16

обеспечить стандартный интерфейс взаимодействия с другими уровнями. Разбиение

функциональности операционной системы на уровни выполняется на этапе ее проектирования и

сохраняется на весь срок жизни операционной системы. При этом, по мере развития

операционной системы, интерфейсы уровней могут дополняться новыми вызовам. Однако

интерфейсы не могут сокращаться, т.к. необходимо обеспечивать совместимость с программами,

разработанными для предыдущих версий операционной системы, и использующими старые

интерфейсы. Расширение интерфейса обычно связано с введением в операционную систему

новой функциональности, например, при появлении новых аппаратных средств. Другой причиной

дополнения интерфейса может стать новая, более оптимальная реализация некоторого алгоритма

работы операционной системы, при этом старый интерфейс необходимо сохранить в целях

совместимости.

Клиент-сервер архитектура:



Архитектура типа клиент-сервер в настоящее время является наиболее совершенной с точки

зрения расширяемости и переносимости операционных систем. Идея архитектуры клиент-сервер

состоит в следующем: все компоненты операционной системы разделяются на программы –

поставщики услуг (программы серверы, выполняющие определенные действия по запросам

других программ), и программы – потребители услуг (программы клиенты, обращающиеся к

серверам для выполнения определенных действий). Заметим здесь, что одна и та же программа

может быть одновременно сервером по отношению к одному виду услуг и клиентом по

отношению к другому виду услуг. Запущенные в системе процессы-серверы постоянно находится

в состоянии ожидания клиентских запросов. В случае необходимости, клиенты посылают

серверам запросы на оказание требуемых им услуг, например запрос на чтение файла, запрос на

выделение памяти, запрос на вывод результатов на экран и т.п. Получив запрос от клиента, сервер

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

выполнения запроса сервер отсылает клиенту сообщение о завершении задания и результаты

работы. При этом клиенты и серверы никогда не общаются напрямую. Если некоторый процесс

нуждается в каких-либо услугах со стороны операционной системы, то он посылает

соответствующее сообщение диспетчеру в составе микроядра операционной системы. Получив

запрос, микроядро определяет сервер, который может его обслужить, пробуждает его процесс и

переадресовывает ему запрос клиента. Очевидно, что серверы должны быть предварительно

зарегистрированы в системе. При этом микроядро само является сервером по отношению к

запросам, связанным с управлением аппаратурой. В процессе выполнения запросов от

пользовательских программ, системные серверы, выступая в роли клиентов, обращаются за

Омский авиационный колледж имени Н.Е. Жуковского 18

аппаратно-зависимыми услугами к микроядру, при этом сами серверы операционной системы

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

прямого доступа к аппаратуре.

Для архитектуры типа клиент-сервер характерно горизонтальное разделение

функциональности между равноправными серверами, вместо вертикального иерархического

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

отдельной достаточно простой операции и ни в коей мере не является эквивалентом уровня в

многоуровневой архитектуре.

Таким образом, архитектура клиент-сервер обеспечивает следующие основные

преимущества:

• переносимость операционной системы, т.к. серверы, работающие в пользовательском

режиме, аппаратно независимы;

• расширяемость операционной системы, т.к. новая функциональность может быть легко

введена за счет введения нового сервера, и это никак не затронет существующую

функциональность;

• гибкость операционной системы, т.к. пользователь может запустить только те сервисы,

которые ему действительно нужны, и не расходовать ресурсы системы на поддержку

невостребованной функциональности, при этом пользователь может изменять набор запущенных

серверов без перезапуска системы.

Указанные преимущества делают архитектуру клиент-сервер наиболее подходящей для

построения операционных систем, удовлетворяющих современным требованиям.

Архитектура клиент-сервер, наряду с указанными преимуществами, имеет один серьезный

недостаток – производительность операционной системы, функционирующей на основе обмена

сообщениями между клиентами и серверами через микроядро, заметно ниже

производительности операционной системы, функционирование которой основано на простых

вызовах функций. Поэтому идеализированная модель операционной системы на базе

архитектуры клиент-сервер, когда ядро операционной системы выполняет только функции

диспетчера сообщений и сервера для управления аппаратурой, довольно редко применяется на

практике.

В реальных операционных системах, основанных на архитектуре клиент-сервер, ядро

обычно выполняет существенно больший объем работы, так, что иногда точнее говорить о

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

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

удачного компромисса гибкость/производительность, и, в конечном итоге, получить

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

сочетании с максимально простой переносимостью и расширяемостью.


  1. Понятие ядра операционной системы. Режимы работы компонентов операционной системы.

Наиболее общим подходом к структуризации операционной системы является разделение

всех ее модулей на две группы:

1. ядро — модули, выполняющие основные функции ОС, такие как управление процессами,

памятью, устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы,

без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих

функций. В состав ядра входят функции, решающие внутрисистемные задачи организации

вычислительного процесса, такие как переключение контекстов, обработка прерываний. Эти

функции недоступны для приложений. Другой класс функций ядра служит для поддержки

приложений, создавая для них так называемую прикладную программную среду. Приложения

могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных

действий, например для открытия и чтения файла, вывода графической информации на дисплей,

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

образуют интерфейс прикладного программирования — API.

Функции, выполняемые модулями ядра, являются наиболее часто используемыми

функциями операционной системы, поэтому скорость их выполнения определяет

производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все

модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются

резидентными.

Обычно ядро оформляется в виде программного модуля некоторого специального формата,

отличающегося от формата пользовательских приложений.

2. модули, выполняющие вспомогательные функции ОС - выполняют весьма полезные, но

менее обязательные функции. Например, к таким вспомогательным модулям могут быть

отнесены программы архивирования данных, дефрагментации диска, текстового редактора.

Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек

процедур.

Вспомогательные модули ОС обычно подразделяются на следующие группы:

1 - утилиты - программы, решающие отдельные задачи управления и сопровождения

компьютерной системы, например, программы сжатия дисков, архивирования данных;

Омский авиационный колледж имени Н.Е. Жуковского 13

2 - системные обрабатывающие программы - текстовые или графические редакторы,

компиляторы, компоновщики, отладчики;

3 - программы предоставления пользователю дополнительных услуг — специальный

вариант пользовательского интерфейса, калькулятор и даже игры;

4 - библиотеки процедур различного назначения, упрощающие разработку приложений,

например библиотека математических функций, функций ввода-вывода и т. д.

Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие

программы и библиотеки ОС, обращаются к функциям ядра посредством системных вызовов.

Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек,

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

являются транзитными. Постоянно в оперативной памяти располагаются только самые

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

память компьютера.

Реализация двух режимов работы вычислительной системы: привилегированного режима

(или режима ядра - Kernel mode), или режима супервизора (supervisor mode), и пользовательского

режима (user mode), или режима задачи (task mode);



  1. Особенности монолитной архитектуры операционных систем. Преимущества и недостатки монолитной архитектуры.

  2. Особенности многоуровневой архитектуры. Основные идеи, лежащие в основе многоуровневой архитектуры.

  3. Состав многоуровневой операционной системы. Преимущества и недостатки многоуровневой архитектуры.

  4. Особенности архитектуры типа клиент-сервер на основе микроядра. Преимущества и недостатки архитектуры на основе микроядра.

  5. Особенности построения и функционирования операционных систем семейства Windows. Понятие драйвера.

Операционная система Windows использует многоуровневую архитектуру, с работой

большей части компонентов в режиме ядра, но, тем не менее, в состав ядра не входящих.

Упрощенная архитектура Windows показана на рисунке 7.

Еще при разработке операционной системы Windows NT, во главу угла были поставлены

задачи переносимости и совместимости, что в основном и определило ее архитектуру. Сравнивая

архитектуру UNIX и Windows, легко заметить, что архитектура Windows гораздо более

Омский авиационный колледж имени Н.Е. Жуковского 25

структурирована. Как и в системе UNIX, на верхнем уровне иерархии находятся процессы

пользовательского режима. Это могут быть как пользовательские процессы, так и серверы самой

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

документированные интерфейсы, предоставляемые динамическими библиотеками подсистем

окружения.

Windows поддерживает три подсистемы окружения – POSIX, OS/2 и Win32, причем

подсистема Win32 является необходимым компонентом для работы всей операционной системы,

т.к. обслуживает клавиатуру, мышь и экран. Заметим, что подсистема Win32 имеет компоненты,

работающие как в режиме задачи, так и в режиме ядра. В отличие от подсистемы Win32, которая

запускается на этапе загрузки операционной системы, подсистемы POSIX и OS/2 не являются

обязательными, и запускаются по требованию, при необходимости запуска соответствующих

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

Хотя динамические библиотеки подсистем окружения способны самостоятельно обслужить

некоторые запросы процессов, в большинстве случаев они переадресуют запрос исполнительной

подсистеме Windows через недокументированный интерфейс системных вызовов. Можно

сказать, что именно недокументированный интерфейс, реализуемый библиотекой Ntdll.dll

является истинным интерфейсом системных вызовов, собственно и реализующим переход из

режима задачи в режим ядра. Исключение составляет интерфейс GDI, полностью реализуемый

подсистемой Win32 самостоятельно.

Исполнительная система операционной системы Windows обеспечивает работу подсистем

окружения, реализуя большинство стратегий управления операционной системы, и включает в

себя такие подсистемы, как:

• диспетчер конфигурации – обеспечивает управление системным реестром;

• диспетчер процессов и потоков – обеспечивает управление процессами и потоками,

запущенными в системе, например, создает и уничтожает процессы и потоки;

• монитор безопасности – реализует политики безопасности на локальном компьютере;

• диспетчер ввода-вывода – реализует аппаратно независимый ввод-вывод и отвечает за

пересылку информации ввода-вывода соответствующим драйверам;

• диспетчер Plug and Play – определяет, какие драйверы нужны для поддержки каждого

устройства и загружает эти драйверы;

• диспетчер электропитания – координирует работу драйверов устройств, обеспечивая,

например, переключение периферийных устройств в экономичный режим при их длительном

простое;


• диспетчер кэша файловой системы – реализует буферизацию ввода-вывода, отложенную

запись и упреждающее чтение данных файла;

• диспетчер виртуальной памяти – реализует собственное виртуальное адресное

пространство для каждого процесса и обеспечивает поддержку работы диспетчера кэша.

Омский авиационный колледж имени Н.Е. Жуковского 26

Ниже исполнительной системы Windows располагается ядро системы, реализующее

различные для каждой процессорной архитектуры фундаментальные механизмы, такие как

планирование и диспетчеризация потоков, диспетчеризация прерываний и исключений. Ядро

изолирует драйверы и исполнительную систему от особенностей архитектуры процессора, что

обеспечивает переносимость операционной системы. Уровень абстрагирования от оборудования

является самым нижним уровнем системы. Он скрывает от операционной системы, включая ее

ядро, специфику конкретной аппаратуры, т.к. даже при одинаковой архитектуре системы,

например x86, могут быть аппаратные особенности реализации, например различные типы

материнской платы.


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


  1. Особенности построения и функционирования операционных систем семейства Unix. Устройство ядра Unix. Понятие облегченного процесса.

Операционная система UNIX использует традиционную архитектуру, несмотря на выделение

нескольких уровней, тяготеющую скорее к монолитной, чем к многоуровневой. Упрощенная

архитектура операционной системы UNIX показана на рисунке 6.


На верхнем уровне иерархии операционной системы находятся процессы

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

интерфейс системных вызовов. Интерфейс системных вызовов перенаправляет запросы

процессов подсистемам ядра. Подсистемы ядра обеспечивают выполнение процессов

пользовательского режима и через уровень управления аппаратурой взаимодействуют с

аппаратурой ЭВМ. Ядро UNIX включает подсистемы, такие как файловая подсистема, подсистема

ввода-вывода, подсистема управления процессами и памятью.

Все обращения к ядру системы можно разделить на две категории: программа вызывает

подсистему управления файлами или подсистему управления процессами. Первая отвечает за все,

что связано с файлами: управление, размещение, доступ. Процессы же - это, в общем случае,

любые запущенные программы. Поэтому подсистема управления процессами служит для их

Омский авиационный колледж имени Н.Е. Жуковского 20

жизнеспособности, синхронизации и управления. Важно так же и то, что файловая подсистема и

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

системные API для работы с файлами. Достоинство UNIX состоит в том, что эти API универсальны.

Вот самые главные из них: open, close, read, write, stat, chown, chmod (суть почти всех вызовов

интуитивно понятна из названия, кроме, разве что, последних трех, они служат для управления

атрибутами файлов, информации о владельце и прав доступа). Каждый из этих системных

вызовов в программе на языке С является обычной функцией. Информацию по любому из них

можно найти в справочнике.

В настоящее время Unix поддерживает многопоточные приложения — программы,

имеющие много относительно независимых ветвей, совместно использующих значительную часть

структур данных, принадлежащих приложению.

Для оптимизации поддержки многопоточных приложений в Linux используются




Поделитесь с Вашими друзьями:
  1   2   3   4   5   6




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница