
- •Часть 1
- •В.Г.Олифер, н.А.Олифер. Сетевые операционные системы. Учебное пособие.-сПб.:бхв-Петербург, 2006.-536с.
- •В.А.Шеховцов. Операційні системи. Підручник .-к.:Виканавча група внv. 2005. 576с.
- •Столлингс в. Операционные системы. М.: Вильямс, 2001. -672с. Оглавление
- •Раздел 1 введение
- •1.1. Понятие операционной системы, ее назначение и функции
- •1.1.1. Понятие операционной системы
- •1.1.2. Назначение операционной системы
- •1.1.3. Операционная система как расширеная машина
- •1.1.4. Операционная система как распределитель ресурсов
- •1.2. История развития операционных систем
- •1.3. Классификация современных операционных систем
- •1.4. Функциональные компоненты операционных систем
- •1.4.1. Управление процессами и потоками
- •1.4.2. Управление памятью
- •1.4.3. Управление вводом-выводом
- •1.4.4. Управление файлами и файловые системы
- •1.4.5. Сетевая поддержка
- •1.4.6. Безопасность данных
- •1.4.7. Интерфейс пользователя
- •Раздел 2
- •2.1. Базовые понятия архитектуры операционных систем
- •2.2. Реализация архитектуры операционных систем
- •2.2.1. Монолитные системы
- •2.2.2. Многоуровневые системы
- •2.2.3. Системы с микроядром
- •2.2.4. Концепция виртуальных машин
- •2.3. Операционная система и ее окружение
- •2.3.1. Взаимодействие ос и аппаратного обеспечения
- •2.3.2. Взаимодействие ос и выполняемого программой
- •2.4. Особенности архитектур
- •Раздел 3
- •3.1. Базовые понятия процессов и потоков
- •3.1.1. Процессы и потоки в современных ос
- •3.1.2. Модели процессов и потоков
- •3.1.3. Составные элементы процессов и потоков
- •3.2. Многопотоковость и ее реализация
- •3.2.1. Понятие параллелизма
- •3.2.2. Виды параллелизма
- •3.2.3. Преимущества и недостатки многопотоковости
- •3.2.4. Способы реализации модели потоков
- •3.2.5 Состояния процессов и потоков
- •3.3 Описание процессов и потоков
- •3.3.1. Управляющие блоки процессов и потоков
- •3.3.2. Образы процесса и потока
- •3.4. Переключение контекста и обработка прерываний
- •3.4.1. Организация переключения контекста
- •3.4.2. Обработка прерываний
- •3.5 Создание и завершение процессов и потоков
- •3.5.1 Создание процессов
- •3.5.2. Иерархия процессов
- •3.5.3. Управление адресным пространством во время создания процессов
- •3.5.4. Особенности завершения процессов
- •3.5.5. Синхронное и асинхронное выполнение процессов
- •3.5.6. Создание и завершение потоков
- •3.6 Управление потоками в Linux
- •3.6.1. Базовая поддержка многотопотоковости
- •3.6.2. Особенности новой реализации многопоточности в ядре Linux
- •3.6.3. Потоки ядра Linux
- •3.7 Управление процессами в Windows хр
- •3.7.1. Составные элементы процесса
- •3.7.2. Структуры данных процесса
- •3.7.3. Создание процессов
- •3.7.4. Завершение процессов
- •3.7.5. Процессы и ресурсы. Таблица объектов процесса
- •3.8 Управление потоками в Windows хр
- •3.8.1. Составные элементы потока
- •3.8.2. Структуры данных потока
- •3.8.3. Создание потоков
- •Раздел 4
- •4.1. Виды межпроцесорного взаимодействия
- •4.1.1. Методы распределения памяти
- •4.1.2. Методы передачи сообщений
- •4.1.3. Технология отображаемой памяти
- •4.1.4. Особенности межпроцесорного взаимодействия
- •4.2. Базовые механизмы межпроцессового взаимодействия
- •4.2.1. Межпроцессовое взаимодействие на базе общей памяти
- •4.2.2. Основы передачи сообщений
- •4.2.3. Технологии передачи сообщений
- •Глава 5
- •5.1 Функции ос по управлению памятью
- •5.2 Типы адресов
- •5.3 Алгоритмы распределения памяти
- •5.3.1 Распределение памяти фиксированными разделами
- •5.3.2 Распределение памяти динамическими разделами
- •5.3.3 Перемещаемые разделы
- •5.4 Свопинг и виртуальная память
- •5.4.1 Страничное распределение
- •5.4.2 Сегментное распределение
- •5.4.3 Сегментно-страничное распределение
- •5.5 Разделяемые сегменты памяти
- •5.6 Кэширование данных
- •5.6.1 Иерархия запоминающих устройств
- •5.6.3 Принцип действия кэш-памяти
- •5.6.4 Проблема согласования данных
- •5.6.5 Способы отображения основной памяти на кэш
- •5.6.6 Схемы выполнения запросов в системах с кэш-памятью
- •Раздел 6 Логическая и физическая организация файловой системы
- •6.1 Логическая организация файловой системы
- •6.1.1 Цели и задачи файловой системы
- •5.1.2 Типы файлов
- •5.1.3 Иерархическая структура файловой системы
- •5.1.4 Имена файлов
- •5.1.5 Монтирование
- •5.1.6 Атрибуты файлов
- •5.1.7 Логическая организация файла
- •5.2 Физическая организация файловой системы
- •5.2.1 Диски, разделы, секторы, кластеры
- •5.2.2 Физическая организация и адресация файла
- •5.2.3 Физическая организация fat
- •5.2.4 Физическая организация ntfs
2.2. Реализация архитектуры операционных систем
В реальных ОС обычно используют некоторую комбинацию подходов к реализации архитектуры ОС.
2.2.1. Монолитные системы
ОС, в которых все базовые функции сконцентрированы в ядре, называют монолитными системами. В случае реализации монолитного ядра ОС становится производительнее (процессор не переключается между режимами во время взаимодействия между ее компонентами), но менее надежной (весь ее код выполняется в привилегированном режиме, и ошибка в каждом из компонентов будет критической).
Монолитность ядра не означает, что все его компоненты должны постоянно находиться в памяти. Современные ОС дают возможность динамично размещать в адресном пространстве ядра фрагменты кода (модуль ядра). Реализация модулей ядра дает возможность также достичь его расширяемости (для придания новой функциональности довольно разработать и загрузить в память соответствующий модуль).
2.2.2. Многоуровневые системы
Компоненты многоуровневых ОС образовывают иерархию уровней, каждый из которых опирается на функции предыдущего уровня. Наиболее низкий уровень непосредственно взаимодействует с аппаратным обеспечением, на наивысшем уровне реализуются системные вызовы.
В традиционных многоуровневых ОС передача управления из верхнего уровня на нижний реализуется как системный вызов. Верхний уровень должен иметь права на выполнение этого вызова, проверка этих прав выполняется для поддержки аппаратного обеспечения. Примером такой системы есть ОС Multics, разработанная в 60-е годы. Практическое применение этого подхода сегодня ограничено через низкую производительность.
Уровни могут выделяться и в монолитном ядре; в таком случае они поддерживаются программно и упрощают реализацию системы. В монолитном ядре определяют уровни, пересчитанные ниже.
-
Средства абстрагирования от оборудования, которые взаимодействуют с аппаратным обеспечением непосредственно, освобождая от реализации такого взаимодействия другие компоненты системы.
-
Базовые средства ядра, которые отвечают за основные, простейшие действия ядра, такие как запись блока данных на диск. С помощью этих средств выполняются указания верхних уровней, связанные с управлением ресурсами.
-
Средства управления ресурсами (или менеджеры ресурсов), что реализуют основные функции ОС (управление процессами, памятью, вводом-выводом и т.п.). На этом уровне принимаются важнейшие решения управления ресурсами, которые выполняются с использованием базовых средств ядра.
♦ Интерфейс системных вызовов, который служит для реализации связи из системным и прикладным программным обеспечением.
Разделение базовых средств ядра и менеджеров ресурсов отвечает отделению механизма от политики в архитектуре системы. Базовые средства ядра определяют механизмы функционирования системы, менеджеры ресурсов реализуют политику.
2.2.3. Системы с микроядром
Одно из направлений развития современных ОС заключается в том, что в привилегированном режиме реализуется небольшая часть функций ядра, которая являются микроядром. Другие функции ОС выполняются процессами режима пользователя (серверными процессами, серверами). Серверы могут отвечать за поддержку файловой системы, за работу с процессами, памятью и т.п..
Микроядро осуществляет связь между компонентами системы и выполняет базовое распределение ресурсов. Чтобы выполнить системный вызов, процесс (пользовательская программа) обращается к микроядру. Микроядро посылает серверу запрос, сервер выполняет работу и пересылает ответ назад, а микроядро переправляет его клиенту (рис. 2.1). Клиентами могут быть не только процессы пользователя, а и другие модули ОС.
Преимущества подхода системы с микроядром:
-
небольшие размеры микроядра, которое упрощает его разработку и отладку;
-
высокая надежность системы, вследствие того что серверы работают в режиме пользователя и в них нет прямого доступа к аппаратному обеспечению;
-
большая гибкость и расширяемость системы (ненужные компоненты не занимают места в памяти, расширение функциональности системы сводится к добавлению у нее нового сервера);
-
возможность адаптации к условиям сети (способ обмена данными между клиентом и сервером не зависит от того, связанные они сетью или находятся на одном компьютере).
Главным недостатком применения микроядра является снижения производительности. Вместо двух переключений режима процессора в случае системного вызова происходит четыре (два - во время обмена между клиентом и микроядром, два - между сервером и микроядром).
Указанный недостаток скорее теоретический, так как на практике производительность и надежность микроядра зависят, прежде всего, от качества его реализации.