- •Операционные системы
- •Владимирского государственного университета
- •Оглавление
- •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
- •Виртуальные контейнеры
- •Глобальный каталог
- •Безопасность
- •Репликация
- •Деревья и лес
- •Логическая структура
- •Публикация
- •Литература
4.2.5Взаимодействие процессов Разделяемая память
Самым простым из таких средств может быть организация сегмента памяти, разделяемого между задачами. В современных ОС совместное использование памяти обеспечивается в основном следующими средствами:
файлами, отображаемыми в памяти;
уникальными API разделяемой памяти;
механизмами импорта/экспорта.
В системах с виртуальной памятью совместное использование сегментов организуется достаточно просто – одни и те же физические страницы отображаются на адресные пространства различных задач. В результате процессы ведут чтение и запись данных в области разделяемой памяти, используя для этого те же машинные команды, что и при работе с обычной памятью.
Существенной особенностью разделяемой памяти, как механизма межпроцессного взаимодействия, является тот факт, что данные в разделяемой памяти остаются в сохранности, даже если она не принадлежит ни одному из процессов.
Основным достоинством разделяемой памяти является высокая скорость обмена. В то же время, однако, использование для коммуникаций между задачами данного механизма влечет за собой практически все проблемы, связанные с параллельно выполняемыми процессами: необходимость синхронизации, критические секции и т.д. Поэтому в современных ОС для синхронизации и взаимодействия процессов часто используются и другие средства.
Программные каналы
Ряд систем предоставляет более простые в использовании средства, предоставляющие обмен данных одновременно с синхронизацией и реализующие, тем самым, принцип гармонически взаимодействующих процессов по Дийкстре. Одним из наиболее типичных средств такого рода является программный канал или труба (pipe) – основное средство взаимодействия между процессами в ОС семейства Unix.
Труба представляет собой поток байтов, запись и чтение из которого происходит по дисциплине FIFO. Данные, поступающие в программный канал, представляют собой неструктурированную последовательность байтов и после чтения удаляются.
Механизм программных каналов вместе с обменом данными обеспечивает и синхронизацию параллельных процессов. Процесс, который пытается считать данные из пустой трубы, будет задержан, пока там не появятся данные. Напротив, пишущий процесс может записать в трубу некоторое количество данных, прежде чем труба заполнится и дальнейшая запись будет заблокирована.
Создание программного канала в ОС семейства UNIX осуществляется с помощью системного вызова, который создает трубу и помещает дескрипторы файлов, соответствующие входному и выходному концам трубы, в массив. После открытия программного канала чтение данных из трубы и запись в нее осуществляется теми же самыми системными вызовами, что и работа с обычным файлом. Закрытие процессом программного канала осуществляется также стандартным «файловым» вызовом закрытия. Если все процессы, использующие программный канал, закрывают его, то он автоматически удаляется из системы.
Программный канал, таким образом, представляет собой специальный файл. Существенно, что этот файл отсутствует в таблице каталогов, поэтому обычные, или неименованные, каналы могут использоваться для обмена данными только между родственными процессами (имеющими общего предка).
Обойти это ограничение позволяют именованные программные каналы. Чтобы канал стал именованным он должен быть подключен к узлу файловой системы. Поскольку доступ к именованным программным каналам совершенно аналогичен доступу к обычным файлам, то они позволяют производить обмен данными даже процессам, выполняющимся на разных ЭВМ.
В отличие от неименованных, именованные каналы не удаляются из системы даже если они не используются ни одним процессом. Отсоединение имени от узла файловой системы (удаление именованного канала) производится специальным системным вызовом.