Системы с монолитным ядром и с микроядром.



Оглавление

Глава 1. Введение в операционные системы.. 2

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

1.2   Архитектура ОС.. 5

1.2.1.   Структура ОС Windows NT.. 10

1.2.2.   Системы с монолитным ядром и с микроядром. 11

1.2.3.   ОС с множественными интерфейсами прикладных программ на примере ОС Windows NT. 16

1.3   Процессы и потоки в ОС. 18

1.3.1    Понятие процесса. 18

.3.2. Атрибуты процесса. 19

1.3.3.   Создание нового процесса в различных ОС. 20

1.3.4. Жизненный цикл процесса. 21

1.3.5.   Состояние процессов. 23

1.3.6.   Понятие нити (Thread). Основные отличия нити от процесса. 24

1.3.7.   Необходимость синхронизации при работе с общими ресурсами. Способы синхронизации. 25

1.4   Механизмы синхронизации. 29

1.4.1    Понятие семафора. Двоичный семафор. 30

1.4.2     Понятие мьютекса (Mutex) и основные операции с ним. Пример использование мьютекса для синхронизации нитей. 33

1.4.3    Сравнение mutex и двоичного семафора. 40

1.5   Управление оперативной памятью.. 41

1.5.1    Виртуальная память. 45

1.5.2.   Сегментация памяти. 47

1.5.3    Алгоритмы подкачки. 48

Глава 2. Файловая система. 51

2.1   Понятия файловой системы.. 51

2.1.1    Многоуровневая файловая система. 55

2.1.2    Логическая ФС.. 56

2.1.3    Физическая файловая система. 57

2.2   Логические файловые системы.. 58

2.2.1 файловая система ОС UNIX.. 58

2.3   Физическая файловая система. 60

2.3.1     Файловая система FAT. 62

2.3.2    Файловая система EXT2. 65

2.3.3    Файловая система NTFS. 69

2.4   Управление безопасностью.. 73

2.4.1    Пользователь, его атрибуты и права доступа. 75

2.4.2    Аутентификация и авторизация. 79

2.4.3    Задача администрирования вычислительной системы и компьютерной сети. 82

2.5   Управление доступом к файлам в ОС Windows NT. Списки прав доступа. 85

Глава 3. Языки программирования. 87

3.1   Язык программирования Java. 87

3.1.1    Виртуальная машина Java. 88

3.2   Платформа .NET.. 89

3.2.1    Основные идеи и положения. 89

3.2.2    Схема выполнения программы в .NET. 90

3.3   Пользовательский интерфейс. 92

3.4   Управление оперативной памятью.. 94

Глава 4. Компьютерные сети. 95

4.1   Сетевая операционная система. 96

4.2   Протоколы TCP/IP. Интернет. 97

 

 

 

Глава 1. Введение в операционные системы

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

Понятие «операционные системы»:

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

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

Основные задачи ОС:

Ø поддержка работы программ; обеспечение их взаимодействия с аппаратной частью и друг с другом;

Ø защита ресурсов и информации;

Ø распределение ресурсов (процессорного времени, оперативной памяти, дискового пространства и т.п.); организация файловой системы (системы хранения данных на внешних носителях информации); учет использования ресурсов, управление видеосистемой;

Ø обработка ошибочных ситуаций;

Ø поддержка возможности для пользователя управлять машиной с помощью специальных команд (обработка командного языка в процедурной среде) или при помощи воздействия на определённые объекты (кнопки и др. в объектно-ориентированной среде);

Ø поддержка сети.

Основные функции ОС:

Ø Предоставление пользователю или программисту вместо реальной аппаратуры компьютера расширенной виртуальной машины, с помощью которой удобней работать;

Ø Управление ресурсами компьютера с целью повышения эффективности его использования.

Классификация ОС:

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

Ø Поддержка многозадачности.

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

ü однозадачные (например, MS-DOS, MSX);

ü многозадачные (OC EC, OS/2, UNIX, Windows 95).

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

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

Ø Поддержка многопользовательского режима.

 По числу одновременно работающих пользователей ОС делятся на:

ü однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2);

ü многопользовательские (UNIX, Windows NT).

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

Ø Вытесняющая и не вытесняющая многозадачность.

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

ü не вытесняющая многозадачность (NetWare, Windows 3.x);

ü вытесняющая многозадачность (Windows NT, OS/2, UNIX).

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

Ø Поддержка многонитевости.

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

Ø Многопроцессорная обработка.

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

Основные современные ОС:

ü Linux

ü Mac OS

ü Microsoft Windows NT

ü OS/2

ü Chrome OS

Архитектура ОС

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

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

ü модульная организация;

ü функциональная избыточность;

ü функциональная избирательность;

ü параметрическая универсальность;

ü концепция многоуровневой иерархической вычислительной системы, по которой ОС представляется многослойной структурой;

ü разделение модулей на две группы по функциям: ядро – модули, выполняющие основные функции ОС, и модули, выполняющие вспомогательные функции ОС;

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

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

Первые ОС разрабатывались как монолитные системы без четко выраженной структуры (рис. 1).

Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика (примерами могут служить ранние версии ядра UNIX или Novell NetWare). Каждая процедура видит любую другую процедуру (в отличие от структуры, содержащей модули, в которой большая часть информации является локальной для модуля, и процедуры модуля можно вызвать только через специально определенные точки входа).


Рис. 1. Монолитная архитектура

Такая организация ОС предполагает следующую структуру:

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

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

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

В этой модели для каждого системного вызова имеется одна сервисная процедура. Утилиты выполняют функции, которые нужны нескольким сервисным процедурам(рис. 2).

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

 Модули ядра выполняют базовые функции ОС:

ü управление процессами,

ü памятью,

ü устройствами ввода-вывода и т.п.

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


Рис. 2. Структурированная архитектура

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

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

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

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


Рис. 3. Многослойная структура ОС

В данной схеме выделены следующие слои:

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

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

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

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

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

Повышение устойчивости ОС обеспечивается переходом ядра в привилегированный режим. При этом происходит некоторое замедление выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате к приложению – обратное переключение. За счет этого возникает дополнительная задержка в обработке системного вызова (рис. 4). Однако такое решение стало классическим и используется во многих ОС (UNIX, VAX, VMS, IBM OS/390, OS/2 и др.).


Рис. 4. Обработка системного вызова

Различают несколько различных типов ОС:

Ø Монолитные системы. В этом случае вся операционная система представляет собой единую программу. Перед использованием ее необходимо откомпилировать и собрать. Таким образом, установка такой системы на определенный компьютер начинается с получения всех модулей, необходимых для обслуживания оборудования. Далее, необходимо описать все имеющиеся оборудования в соответствующих файлах. После этого запускается процесс компиляции и сборки ядра. В результате,можно начинатьработу. Процедуру необходимо повторить при любом изменении аппаратуры, например, добавлении нового диска. С одной стороны, это очень надежное решение, с другой стороны,оно не подходит для начинающих пользователей. Так были устроены ОС IBM/360, ранние версии UNIX, первые версии NovellNetware.

Ø Модульные операционные системы. Такие системы имеют четко выстроенную многоуровневую структуру, снизу – вверх, от аппаратуры до системных абстракций, таких как файлы и процессы. Впрочем, не всегда такие системы позволяют динамически подгружать дополнительные модули в четко определенных местах, например, драйверы устройств. Такую структуру имеют большинство современных универсальных операционных систем, например,MicrosoftWindowsNT, Linux, большинство версий UNIX.

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

Достоинства данной схемы: во-первых, исключительная надежность, во-вторых – гибкость. Недостаток – замедление работы ОС из-за необходимости обмена сообщениями. Коммерческих универсальных ОС с такой архитектурой нет, но есть много исследовательских.

Ø Виртуальные машины. Операционная система предоставляет пользователю некоторую виртуальную машину, например, Windows. В принципе, она могла бы представлять виртуальный компьютер, например, ПК, с набором соответствующего оборудования. Зачемэто было бы нужно? Например, чтобы поставить в нее еще одну версию ОС. Такие виртуальные машины часто используются на крупных серверах провайдеров Интернет. При этом пользователи, выставляющие свой сайт в Интернет, получают в свое распоряжение виртуальный компьютер, на который они ставят нужное программное обеспечение. Такой виртуальный компьютер может «упасть»или «зависнуть», может быть даже перезапущен без каких-либо последствий для ОС сервера и других виртуальных компьютеров.

Аналогичная техника используется в современной Java технологии, где приложения исполняются на виртуальной машине (JVM). Фирма Microsoft разработала свою технологию .NET, во многом похожую на Java.

Структура ОС Windows NT

Операционная система WindowsNTявляется системой с множественными интерфейсами прикладных программ. Это означает, что собственный API у нее конечно есть, но он никогда не публиковался и не описывался. Он отличается в различных версиях системы (NT, 2000, XP, Vista, 7).

Прикладные программы Windows работают с APIWin32, который опубликован и хорошо описан. В отличии от APIUNIX, в котором около 200 функций, в APIWin32 их несколько тысяч, многие из которых дублируются, а некоторые и вовсе ничего не делают, а сохранились для совместимости с ранними версиями Windows. Win32реализован в виде набора библиотек динамической загрузки(DLL).

Наряду с APIWin32 ОС WindowsNT поддерживает и другие API. Подсистема OS/2 поддерживает API операционной системы OS/2 версии 1.х, подсистема POSIX позволяет исполнять приложения POSIX, т.е. приложения, написанные для ОС UNIX. Подсистемы OS/2 и POSIX реализованы также в виде набора библиотек динамической загрузки. Список поддерживаемых API, при необходимости, может быть расширен.

Основные особенности архитектуры WindowsNT:

Ø слой HAL (HardwareAbstractionLayer) преобразует оборудование компьютера в некоторую виртуальную машину. Все модули, расположенные выше, аппаратно независимы, что обеспечивает переносимость операционной системы;

Ø Ядро (Kernel). WindowsNT использует микроядро, реализующее только минимальные функции ОС – диспетчеризация нитей и синхронизация процессоров. Все остальные функции делает исполнительная система;

Ø Исполнительная система (Executiveservices) содержит исполнительные подсистемы, число которых зависит от версии ОС. В них входят:

ü Менеджер ввода/вывода (вместе с драйверами устройств);

ü Менеджер объектов;

ü Менеджер безопасности;

ü Подсистема управления процессами;

ü Подсистема локальных вызовов между процессами;

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

Системы с монолитным ядром и с микроядром.

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

1. Монолитное ядро ОС.Представляет богатый набор оборудования. Все компоненты монолитного ядра находятся в одном адресном пространстве. Эта схема ОС, когда все части ее ядра - это составные части одной программы. Монолитное ядро - самый старый способ организации ОС.

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

Недостатки:Ошибка работы одного из компонентов ядра нарушает работу всей системы.

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

3. Микроядро ОС.Представляет только основные функции управления процессами и минимальный набор для работы с оборудованием. Классические микроядра дают очень небольшой набор системных вызовов.

Достоинства:устойчивость к сбоям и ошибкам оборудования и компонентов системы; высокая степень ядерной модульности, что упрощает добавление в ядро новых компонентов и процесс отладки ядра. Для отладки такого ядра можно использовать обычные средства. Архитектура микроядра увеличивает надежность системы.

Недостатки:Передача информации требует больших расходов и большого количества времени.

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

5. Гибридное ядро ОС.Модификация микроядер, позволяющая для ускорения работы впускать несущественные части в пространство ядра. На архитектуре гибкого ядра построены последние операционные системы от Windows, в том числе и Windows 7-10.

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

Ø ядро– модули, выполняющие основные внутрисистемные функции ОС, такие как управление процессами, памятью, устройствами ввода-вывода и др. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами – системными вызовами. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования API. Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями операционной системы, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.

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

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

Рис. 5. Нечеткость границы между ОС и приложениями

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

Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС, или наоборот. Ярким примером такого изменения статуса является Microsoft Web-Browser, который сначала поставлялся как отдельное приложение, затем стал частью операционных систем Windows.

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

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

ü системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;

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

 

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

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

 

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

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

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


Дата добавления: 2018-08-06; просмотров: 2350; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!