
- •Сетевые операционные системы
- •Управление процессами
- •Управление процессами
- •Файловая система
- •Эволюция ос Первый период (1945 -1955)
- •Второй период (1955 - 1965)
- •Третий период (1965 - 1980)
- •Четвертый период (1980 - настоящее время)
- •Классификация ос
- •Особенности алгоритмов управления ресурсами
- •Особенности аппаратных платформ
- •Особенности областей использования
- •Особенности методов построения
- •Сетевые операционные системы Структура сетевой операционной системы
- •Одноранговые сетевые ос и ос с выделенными серверами
- •Ос для рабочих групп и ос для сетей масштаба предприятия
- •Управление локальными ресурсами
- •Управление процессами
- •Состояние процессов
- •Контекст и дескриптор процесса
- •Алгоритмы планирования процессов
- •Вытесняющие и невытесняющие алгоритмы планирования
- •Средства синхронизации и взаимодействия процессов
- •Управление памятью
- •Типы адресов
- •Методы распределения памяти без использования дискового пространства
- •Распределение памяти фиксированными разделами
- •Распределение памяти разделами переменной величины
- •Перемещаемые разделы
- •Методы распределения памяти с использованием дискового пространства Понятие виртуальной памяти
- •Страничное распределение
- •Сегментное распределение
- •Странично-сегментное распределение
- •Свопинг
- •Иерархия запоминающих устройств. Принцип кэширования данных
- •Средства аппаратной поддержки управления памятью и многозадачной среды в микропроцессорах Intel 80386, 80486 и Pentium
- •Средства поддержки сегментации памяти
- •Сегментно-страничный механизм
- •Средства вызова подпрограмм и задач
- •Управление вводом-выводом
- •Физическая организация устройств ввода-вывода
- •Организация программного обеспечения ввода-вывода
- •Обработка прерываний
- •Драйверы устройств
- •Независимый от устройств слой операционной системы
- •Пользовательский слой программного обеспечения
- •Файловая система
- •Имена файлов
- •Типы файлов
- •Логическая организация файла
- •Физическая организация и адрес файла
- •Права доступа к файлу
- •Кэширование диска
- •Общая модель файловой системы
- •Отображаемые в память файлы
- •Современные архитектуры файловых систем
- •Управление распределенными ресурсами Базовые примитивы передачи сообщений в распределенных системах
- •Способы адресации
- •Блокирующие и неблокирующие примитивы
- •Буферизуемые и небуферизуемые примитивы
- •Надежные и ненадежные примитивы
- •Вызов удаленных процедур (rpc) Концепция удаленного вызова процедур
- •Базовые операции rpc
- •Этапы выполнения rpc
- •Динамическое связывание
- •Семантика rpc в случае отказов
- •Синхронизация в распределенных системах
- •Алгоритм синхронизации логических часов
- •Алгоритмы взаимного исключения
- •Неделимые транзакции
- •Процессы и нити в распределенных системах Понятие "нить"
- •Различные способы организации вычислительного процесса с использованием нитей
- •Вопросы реализации нитей
- •Нити и rpc
- •Распределенные файловые системы
- •Интерфейс файлового сервиса
- •Интерфейс сервиса каталогов
- •Семантика разделения файлов
- •Вопросы разработки структуры файловой системы
- •Кэширование
- •Репликация
- •Проблемы взаимодействия операционных систем в гетерогенных сетях Понятия "internetworking" и "interoperability"
- •Гетерогенность
- •Основные подходы к реализации взаимодействия сетей
- •Мультиплексирование стеков протоколов
- •Использование магистрального протокола
- •Вопросы реализации
- •Сравнение вариантов организации взаимодействия сетей
- •Службы именования ресурсов и проблемы прозрачности доступа
- •Доменный подход
- •Основной и резервные контроллеры домена
- •Четыре модели организации связи доменов
- •Современные концепции и технологии проектирования операционных систем Требования, предъявляемые к ос 90-х годов
- •Расширяемость
- •Переносимость
- •Совместимость
- •Безопасность
- •Тенденции в структурном построении ос
- •Монолитные системы
- •Многоуровневые системы
- •Модель клиент-сервер и микроядра
- •Объектно-ориентированный подход
- •Множественные прикладные среды
- •Сетевой пакет dce фирмы osf
- •Концепции unix System V Release 4 Управление процессами Образ, дескриптор, контекст процесса
- •Порождение процессов
- •Планирование процессов
- •Файловые системы unix System V Release 4
- •Традиционная файловая система s5
- •Виртуальная файловая система vfs
- •Сетевая файловая система nfs
- •Управление памятью. Свопинг
- •Система ввода-вывода
- •Подсистема буферизации
- •Драйверы
- •Коммерческие реализации unix
- •Дополнительные свойства UnixWare по сравнению с unix System V Release 4
- •I. Поддержка мультипроцессирования
- •Микроядро Mach
- •Введение в Mach История Mach
- •Цели Mach
- •Основные концепции Mach
- •Сервер Mach bsd unix
- •Управление процессами в Mach Процессы
- •Примитивы управления процессами
- •Планирование
- •Управление памятью в Mach
- •Виртуальная память
- •Разделение памяти
- •Внешние менеджеры памяти
- •Распределенная разделяемая память в Mach
- •Коммуникации в ядре Mach
- •Отправка и получение сообщений
- •Сервер сетевых сообщений
- •Сетевые продукты фирмы Novell История и версии сетевой ос NetWare
- •Версия NetWare 4.1
- •Концепции построения NetWare Структура NetWare и обзор особенностей
- •Способы повышения производительности
- •Способы обеспечения открытости и расширяемости
- •Способы обеспечения надежности
- •Защита информации
- •Управление процессами
- •Файловая система
- •Основные направления развития NetWare Поддержка мультипроцессирования
- •Обеспечение процессорной независимости
- •Сетевые системные утилиты NetWare Connect 1.0 фирмы Novell
- •WinView for Networks v2.2 фирмы Citrix Systems
- •Шлюзы ip-сетей
- •Системы обработки сообщений mhs и GroupWise
- •Семейство сетевых ос компании Microsoft Сетевые продукты Microsoft
- •История Windows nt
- •Версии Windows nt
- •Области использования Windows nt
- •Концепции Windows nt Структура: nt executive и защищенные подсистемы
- •Множественные прикладные среды
- •Объектно-ориентированный подход
- •Процессы и нити
- •Алгоритм планирования процессов и нитей
- •Сетевые средства
- •Совместимость Windows nt с NetWare
- •Средства BackOffice
- •Сервер баз данных sql Server
- •Шлюз sna Server
- •Почтовые системы Microsoft Mail и система коллективной работы Microsoft Exchange
- •Система управления компьютерами System Management Server
- •Операционная система os/2 История развития os/2 и ее место на рынке
- •Битва Microsoft - ibm на рынке настольных ос
- •Os/2 - постепенные улучшения
- •Общая характеристика
- •Внутренняя организация os/2 Warp
- •Файловая система hpfs
- •Общая характеристика
- •Сетевые возможности
- •Управление сервером lan Server 4.0
- •Совместимость с NetWare
Вытесняющие и невытесняющие алгоритмы планирования
Существует два основных типа процедур планирования процессов - вытесняющие (preemptive) и невытесняющие (non-preemptive).
Non-preemptive multitasking - невытесняющая многозадачность - это способ планирования процессов, при котором активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление планировщику операционной системы для того, чтобы тот выбрал из очереди другой, готовый к выполнению процесс.
Preemptive multitasking - вытесняющая многозадачность - это такой способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимается планировщиком операционной системы, а не самой активной задачей.
Понятия preemptive и non-preemptive иногда отождествляются с понятиями приоритетных и бесприоритетных дисциплин, что совершенно неверно, а также с понятиями абсолютных и относительных приоритетов, что неверно отчасти. Вытесняющая и невытесняющая многозадачность - это более широкие понятия, чем типы приоритетности. Приоритеты задач могут как использоваться, так и не использоваться и при вытесняющих, и при невытесняющих способах планирования. Так в случае использования приоритетов дисциплина относительных приоритетов может быть отнесена к классу систем с невытесняющей многозадачностью, а дисциплина абсолютных приоритетов - к классу систем с вытесняющей многозадачностью. А бесприоритетная дисциплина планирования, основанная на выделении равных квантов времени для всех задач, относится к вытесняющим алгоритмам.
Основным различием между preemptive и non-preemptive вариантами многозадачности является степень централизации механизма планирования задач. При вытесняющей многозадачности механизм планирования задач целиком сосредоточен в операционной системе, и программист пишет свое приложение, не заботясь о том, что оно будет выполняться параллельно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения активной задачи, запоминает ее контекст, выбирает из очереди готовых задач следующую и запускает ее на выполнение, загружая ее контекст.
При невытесняющей многозадачности механизм планирования распределен между системой и прикладными программами. Прикладная программа, получив управление от операционной системы, сама определяет момент завершения своей очередной итерации и передает управление ОС с помощью какого-либо системного вызова, а ОС формирует очереди задач и выбирает в соответствии с некоторым алгоритмом (например, с учетом приоритетов) следующую задачу на выполнение. Такой механизм создает проблемы как для пользователей, так и для разработчиков.
Для пользователей это означает, что управление системой теряется на произвольный период времени, который определяется приложением (а не пользователем). Если приложение тратит слишком много времени на выполнение какой-либо работы, например, на форматирование диска, пользователь не может переключиться с этой задачи на другую задачу, например, на текстовый редактор, в то время как форматирование продолжалось бы в фоновом режиме. Эта ситуация нежелательна, так как пользователи обычно не хотят долго ждать, когда машина завершит свою задачу.
Поэтому разработчики приложений для non-preemptive операционной среды, возлагая на себя функции планировщика, должны создавать приложения так, чтобы они выполняли свои задачи небольшими частями. Например, программа форматирования может отформатировать одну дорожку дискеты и вернуть управление системе. После выполнения других задач система возвратит управление программе форматирования, чтобы та отформатировала следующую дорожку. Подобный метод разделения времени между задачами работает, но он существенно затрудняет разработку программ и предъявляет повышенные требования к квалификации программиста. Программист должен обеспечить "дружественное" отношение своей программы к другим выполняемым одновременно с ней программам, достаточно часто отдавая им управление. Крайним проявлением "недружественности" приложения является его зависание, которое приводит к общему краху системы. В системах с вытесняющей многозадачностью такие ситуации, как правило, исключены, так как центральный планирующий механизм снимет зависшую задачу с выполнения.
Однако распределение функций планировщика между системой и приложениями не всегда является недостатком, а при определенных условиях может быть и преимуществом, потому что дает возможность разработчику приложений самому проектировать алгоритм планирования, наиболее подходящий для данного фиксированного набора задач. Так как разработчик сам определяет в программе момент времени отдачи управления, то при этом исключаются нерациональные прерывания программ в "неудобные" для них моменты времени. Кроме того, легко разрешаются проблемы совместного использования данных: задача во время каждой итерации использует их монопольно и уверена, что на протяжении этого периода никто другой не изменит эти данные. Существенным преимуществом non-preemptive систем является более высокая скорость переключения с задачи на задачу.
Примером эффективного использования невытесняющей многозадачности является файл-сервер NetWare, в котором, в значительной степени благодаря этому, достигнута высокая скорость выполнения файловых операций. Менее удачным оказалось использование невытесняющей многозадачности в операционной среде Windows 3.х.
Однако почти во всех современных операционных системах, ориентированных на высокопроизводительное выполнение приложений (UNIX, Windows NT, OS/2, VAX/VMS), реализована вытесняющая многозадачность. В последнее время дошла очередь и до ОС класса настольных систем, например, OS/2 Warp и Windows 95. Возможно в связи с этим вытесняющую многозадачность часто называют истинной многозадачностью.