- •Операционные системы
- •Владимирского государственного университета
- •Оглавление
- •1 Операционные системы. Общие понятия 5
- •2 Однопользовательские операционные системы 11
- •3 Сетевые операционные системы 13
- •4 Управление локальными ресурсами 17
- •5 Современные концепции и технологии проектирования операционных систем 43
- •Введение
- •1Операционные системы. Общие понятия
- •1.1Понятие и функции операционной системы
- •1.1.1Ос как расширенная машина
- •1.2Этапы развития ос
- •1.3Классификация ос
- •1.3.1Особенности алгоритмов управления ресурсами
- •Поддержка многозадачности
- •Поддержка многопользовательского режима
- •Вытесняющая и невытесняющая многозадачность
- •Поддержка многонитевости
- •Многопроцессорная обработка
- •1.3.2Особенности аппаратных платформ
- •1.3.3Особенности областей использования
- •1.3.4Особенности методов построения
- •2Однопользовательские операционные системы
- •2.1Структура однозадачной операционной системы
- •2.2Структура многозадачной операционной системы
- •3Сетевые операционные системы
- •3.1Структура сетевой операционной системы
- •3.2Одноранговые сетевые ос и ос выделенных серверов
- •4Управление локальными ресурсами
- •4.1Понятие ресурса
- •4.1.1Свойства и классификация ресурсов
- •4.1.2Действия над ресурсами
- •4.2Управление процессами
- •4.2.1Состояние процессов
- •4.2.2Алгоритмы планирования процессов
- •4.2.3Вытесняющая и невытесняющая многозадачность
- •4.2.4Нити
- •4.2.5Взаимодействие процессов Разделяемая память
- •Программные каналы
- •Системы, управляемые событиями
- •4.2.6Средства синхронизации процессов Проблема синхронизации
- •Критическая секция
- •4.3Управление памятью
- •4.3.1Типы адресов
- •4.3.2Методы распределения памяти без использования дискового пространства
- •Распределение памяти фиксированными разделами
- •Распределение памяти разделами переменной величины
- •Перемещаемые разделы
- •4.3.3Методы распределения памяти с использованием дискового пространства Понятие виртуальной памяти
- •Страничное распределение
- •Сегментное распределение
- •Странично-сегментное распределение
- •Свопинг
- •4.3.4Иерархия запоминающих устройств. Принцип кэширования данных
- •4.4Управление вводом-выводом
- •4.4.1Физическая организация устройств ввода-вывода
- •4.4.2Организация программного обеспечения ввода-вывода
- •Обработка прерываний
- •Драйверы устройств
- •Независимый от устройств, слой операционной системы
- •Пользовательский слой программного обеспечения
- •4.5Файловая система
- •4.5.1Имена файлов
- •4.5.2Типы файлов
- •4.5.3Логическая организация файла
- •4.5.4Физическая организация и адрес файла
- •4.5.5Права доступа к файлу
- •4.5.6Общая модель файловой системы
- •4.5.7Отображаемые в память файлы
- •4.5.8Современная архитектура файловой системы
- •5Современные концепции и технологии проектирования операционных систем
- •5.1Требования, предъявляемые к ос нового поколения
- •5.2Пользовательский интерфейс
- •5.2.1Интерфейс cli
- •5.2.2Интерфейс gui
- •5.3Операционная система Windows nt
- •5.3.1История создания
- •5.3.2Особенности Windows nt версий 4.0 и 5.0
- •5.3.3Требования к аппаратуре
- •5.3.4Области использования Windows nt
- •5.3.5Микроядерная структура Windows nt
- •5.3.6Планирование процессов и нитей
- •5.3.7Управление памятью
- •5.3.8Файловые системы Windows nt
- •Файловая система fat
- •Файловая система ntfs Структура ntfs
- •Короткие имена
- •Надежность ntfs
- •5.3.9Управление вводом-выводом в Windows nt
- •5.3.10Встроенная сетевая поддержка в Windows nt
- •5.3.11Доменная справочная служба Windows nt
- •5.3.12Служба каталогов Active Directory Общие сведения о службе каталогов
- •Архитектура Active Directory
- •Модель данных
- •Логическая структура
- •Модель защиты данных
- •Модель управления
- •Свойства Active Directory
- •Интеграция dns
- •Именование объектов
- •Доступ к Active Directory
- •Виртуальные контейнеры
- •Глобальный каталог
- •Безопасность
- •Репликация
- •Деревья и лес
- •Логическая структура
- •Публикация
- •Литература
Системы, управляемые событиями
В начале 70-х годов появилась новая архитектура многозадачных систем, довольно резко отличающаяся от вышеописанной модели последовательных процессов. Речь идет о так называемых системах, управляемых событиями (event-driven systems).
Впервые эта архитектура была реализована в экспериментальных настольных компьютерах Alto, разработанных в 1973 году в исследовательском центре PARC фирмы Xerox. Целью эксперимента было создание операционной среды, удобной для создания интерактивных программ.
В системах, управляемых событиями, при каждом движении мыши, нажатии ее кнопки или клавиши на клавиатуре генерируется событие. Кроме того, события могут также генерироваться системным таймером или пользовательскими программами. Существуют также «визуальные» события, которые генерируются, например, при визуализации ранее невидимого окна (или его части) в многооконной среде, такие события, сигнализируют о том, что данному окну необходимо перерисовать часть себя.
Каждое событие представляет собой структуру данных, которая содержит код, обозначающий тип события, а также поля, специфичные для различных типов событий.
Все события помещаются в очередь в порядке их возникновения.
В системе существует понятие обработчика событий. Обработчик событий представляет собой объект, т. е. структуру данных, с которой связано несколько программных модулей – методов. Один из методов вызывается при поступлении события и называется callback (дословно – «вызов назад»). Например, меню является простейшим объектом. При нажатии на кнопку мыши в области этого меню вызывается callback. Он разбирается, какой из пунктов меню был выбран, и вызывает соответствующую функцию обработки этого пункта. Таким образом, вместо последовательно исполняющейся программы, время от времени вызывающей систему для исполнения той или иной функции, мы получаем набор callback'ов, вызываемых системой в соответствии с желаниями пользователя.
Специальная программа (часть ОС), менеджер событий, непрерывно просматривает очередь и передает поступающие события обработчикам.
Менеджеры и обработчики событий широко используются в современных многозадачных ОС. События становятся дополнительным средством синхронизации и передачи данных, удобным для организации пользовательского интерфейса, при этом в других ситуациях программисты могут пользоваться другими средствами взаимодействия. Подобным образом устроены ОС Windows NT и OS/2).
4.2.6Средства синхронизации процессов Проблема синхронизации
Практически во всех случаях взаимодействия процессов возникает проблема синхронизации процессов, которая может решаться приостановкой и активизацией процессов, организацией очередей, блокированием и освобождением ресурсов.
Проблему синхронизации иллюстрирует пример, взаимодействия процессов с печатающим устройством. (см. рис. 4.3). На печатающее устройство в порядке очереди выводятся файлы, имена которых занесены в специальный файл, представляющий собой очередь печати. Переменная NEXT, доступная всем процессам, содержит номер первой свободной позиции очереди печати. Процессы, желающие произвести печать, читают эту переменную, записывают в соответствующую позицию очереди печати имя необходимого файла и наращивают значение NEXT на единицу. Предположим, что в некоторый момент процесс R решил распечатать свой файл, для этого он прочитал значение переменной NEXT (например, равное пяти). Процесс запомнил это значение, но поместить имя файла не успел, так как его выполнение было прервано (например, в следствие исчерпания кванта времени). Очередной процесс S, желающий распечатать файл, прочитал то же самое значение переменной NEXT, поместил в пятую позицию имя своего файла и нарастил значение переменной на единицу. Когда в очередной раз управление будет передано процессу R, то он, продолжая свое выполнение, в полном соответствии со значением текущей свободной позиции, полученным во время предыдущей итерации, запишет имя файла также в позицию пять, поверх имени файла процесса S (указанную последовательность действий можно записать в виде стадий: R1-S1-S2-S3-R2-R3).
Таким образом, процесс S никогда не увидит свой файл распечатанным. В общем случае исход такой ситуации (были потеряны файлы нескольких процессов или, напротив, не был потерян ни один файл) определяется взаимными скоростями процессов и моментами их прерывания. Ситуации, когда два или более процессов обрабатывают разделяемые данные, и конечный результат зависит от соотношения скоростей процессов, называются эффектом гонок.