Понятие и назначение операционной системы. Место операционной системы в вычислительной системе - pismo.netnado.ru o_O
Главная
Поиск по ключевым словам:
Похожие работы
Название работы Кол-во страниц Размер
Примерные вопросы для подготовки к экзаменам по дисциплине «Техника... 1 35.71kb.
1. Понятие системы. Классы системы и их характеристики 3 724.59kb.
Понятие и назначение уголовного процесса 2 1487.09kb.
1. Место центрального банка в экономике государства 1 36.99kb.
Лекция. Типовая структура микропроцессорных устройств Применение... 1 43.2kb.
Абонент [abonent, subsriber, user] лицо (группа лиц, организация) 6 1385.01kb.
Темы контрольных работ по дисциплине «Производственный менеджмент» 1 11.08kb.
Понятие управления, оперативного управления, планирования. Виды планирования 1 17.19kb.
Таксономия слово греческого происхождения taxis расположение по порядку 1 123.79kb.
Место политологии в системе наук об обществе 1 9.93kb.
Курсовая работа по дисциплине: «Предметно-ориентированные экономические... 1 146.92kb.
Управление достижением оптимальных конечных результатов. Задача 1 75.22kb.
Урок литературы «Война глазами детей» 1 78.68kb.
Понятие и назначение операционной системы. Место операционной системы в вычислительной - страница №1/4


  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. Обзор файловых систем Unix.

Файловая система (ФС) — это часть операционной системы, включающая:

 совокупность всех файлов на диске;

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

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

занятого пространства на диске;

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

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

файлами, такие как создание, уничтожение, чтение, запись, именование и поиск

файлов.

Файловая система позволяет программам обходиться набором достаточно простых



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

файл.


Существует несколько видов структур организации файлов: линейные, древовидные,

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

структуры.

Каждый файл в древовидной структуре расположен в определенном хранилище файлов –



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

образом, по принципу вложения элементов файловой системы (файлов и каталогов) друг в друга

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

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

либо специальным символом или группой символов (например, «C:» в операционной системе

Windows). Каждому файлу соответствует некоторое имя, определяющее его расположение в

дереве файловой системы. Полное имя файла состоит из имен всех вершин дерева файловой

системы, через которые можно пройти от корня до данного файла (каталога), записывая их слева-

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

В настоящее время существует огромное количество файловых систем (ufs, ext2, ext3),

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

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

хранения данных. Однако среди всего множества файловых систем можно выделить такие,

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

Файлы и каталоги идентифицируются не по именам, а по индексным узлам (i-node) –

индексам в общем массиве файлов для данной файловой системе. В этом массиве хранится

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

файла, права доступа и другая служебная информация под общим названием «метаданные о

файле». Логические же связки типа «имя–-node» –есть ни что иное, как содержимое каталогов.

Таким образом, каждый файл характеризуется одним i-node, но может быть связан с

несколькими именами –в UNIX это называют жёсткими ссылками. При этом, удаление файла

происходит тогда, когда удаляется последняя жёсткая ссылка на этот файл.

Важной особенностью таких файловых систем является то, что имена файлов зависят от

регистра, другими словами файлы test.txt и TEST.txt отличаются (т.е. являются разными строками в

файле директории).

Помимо каталогов и обычных файлов для хранения информации, ФС может содержать

следующие виды файлов:

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

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

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



номер – индекс драйвера в таблице драйверов операционной системы и младший номер

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

каком «подустройстве» идет речь (например, о каком из нескольких IDE-устройств или COM-

портов).


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

принципу двунаправленной очереди (FIFO). Является одним из способов обмена между

изолированными процессами.

Символическая ссылка. Особый тип файла, содержимое которого – не данные, а имя какого-

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

Символическая ссылка имеет ряд преимуществ по сравнению с жёсткой ссылкой: она может

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

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

файлов – ссылка может удаляться совершенно независимо от отсновного файла.





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

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

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

на схеме. Хорошим примером взаимодействия подсистем управления файлами и процессами

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

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

Чуть выше мы перечисляли системные API для управления файлами. Теперь рассмотрим

вызовы, служащие для работы с процессами: fork (создает новый процесса), exec (выполняет

процесс), exit (завершает исполнение процесса), wait (один из способов синхронизации), brk

(управляет памятью, выделенной процессу), signal (обработчики исключений).

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

Следующие два модуля являются очень важными в понимании всей подсистемы

управления процессами:

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

памяти. Хотя механизм свопинга и файлов подкачки (технически правильно это,

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

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

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

скидывать страницы памяти (страничное замещение). Таким образом, модуль

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

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

Виртуальная память была изобретена в 1962 году, в Англии при создании

суперкомпьютера Atlas. В большинстве современных компьютеров оперативная память не

так велика, как используемое процессором адресное пространство. Размер ОЗУ типичного

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

программа загружается с какого-либо накопителя в оперативную память. Если же программа

не помещается в ОЗУ, то те её части, которые в данный момент не выполняются, хранятся

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

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

должна быть перемещена в оперативную память. Данные функции выполняет ядро

операционной системы (диспетчер виртуальной памяти, находящийся в микроядре). И для

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

виртуальной памяти уходит гораздо большее время, нежели к ОЗУ.

 Второй модуль - планировщик. Его задача не менее важна. UNIX - мультизадачная

ОС, то есть одновременно может выполняться множество процессов. В

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

одна команда. Именно поэтому нужен виртуальный рефери, который будет

определять, какому процессу исполняться сейчас, а какому - через секунду. На

практике же планировщик переключает контекст, то есть перед тем, как остановить

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

уже после этого запускает другой процесс в его собственном адресном

пространстве. Каждый запущенный процесс "думает", что он единственный.

Дополнительно существует механизм приоритетов. Чем выше приоритет, тем

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

собой информацией. В случае их синхронного взаимодействия синхронизацию

осуществляет модуль взаимодействия (например, функция wait).

Уровень управления аппаратурой. На данном уровне происходит обработка прерываний и

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

себе (после этого процессор возвращается к выполнению оставленных процессов), обработку

прерываний осуществляют специальные функции ядра.

Некоторые варианты ядра Unix поддерживают многопроцессорные системы. Linux 2.6

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

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

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

равноправны.


  1. Понятие процесса, потока, программы. Состояния потока.


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

Проце́сс — выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

Програ́мма (от греч. προ — пред, греч. γράμμα — запись) - термин, в переводе означающий «предписание», то есть предварительное описание предстоящих событий или действий.

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

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

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

ожидание — пассивное состояние потока, находясь в котором, поток заблокирован по своим внутренним причинам (ждет осуществления некоторого события, например завершения операции ввода-вывода, получения сообщения от другого потока или освобождения какого-либо необходимого ему ресурса);

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

  1. Основные особенности вытесняющих и не вытесняющих алгоритмов планирования потоков.

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

класса: вытесняющие и невытесняющие алгоритмы планирования.



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

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

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

выполнению поток.



Вытесняющие алгоритмы — это такие способы планирования потоков, в которых

решение о переключении процессора с выполнения одного потока на выполнение

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


  1. Основные особенности алгоритмов планирования процессов на квантах и приоритетах.

На квантах:

В основе многих вытесняющих алгоритмов планирования лежит концепция квантования. В

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

ограниченный непрерывный период процессорного времени — квант. Смена активного потока

происходит, если:

 поток завершился и покинул систему;

 произошла ошибка;

 поток перешел в состояние ожидания;

 исчерпан квант процессорного времени, отведенный данному потоку.

Поток, который исчерпал свой квант, переводится в состояние готовности и ожидает, когда

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

определенным правилом выбирается новый поток из очереди готовых потоков. Граф состояний

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

квантовании.

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

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

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

времени выполнения. При достаточно большом кванте алгоритм квантования вырождается в

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

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




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

информации о задачах. При поступлении задачи на обработку ОС не имеет никаких сведений о

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

обслуживания при квантовании базируется на «истории существования» потока в системе.

На приритетах:

Другой важной концепцией, лежащей в основе многих вытесняющих алгоритмов

планирования, является приоритетное обслуживание. Приоритетное обслуживание предполагает

наличие у потоков некоторой изначально известной характеристики — приоритета, на

основании которой определяется порядок их выполнения.


следующая страница >>