
- •Введение
- •Глава 1. Операционная система как управляющее программное обеспечение
- •1.1. Понятие операционной системы
- •1.6. Семейства операционных систем
- •1.7. Место операционных систем среди программного обеспечения эвм
- •1.8. Классификация операционных систем
- •1.9. Принципы построения операционных систем
- •1.10. Переносимость ос
- •Контрольные вопросы
- •Глава 2. Архитектура ос
- •2.1. Архитектура на базе ядра в привилегированном режиме
- •Ядро ос
- •2.2. Микроядерная архитектура
- •Контрольные вопросы.
- •Глава 3. Файловая система
- •3.1. Назначение файловой системы
- •3.2. Имена и типы файлов
- •3.3. Логическая организация файлов
- •3.4. Физическая организация файлов
- •3.5. Модели и архитектуры файловых систем
- •Глава 4. Управление аппаратными устройствами эвм
- •4.1.2. Драйверы устройств
- •4.1.3. Независимый от устройств слой операционной системы
- •4.1.4. Пользовательский слой программного обеспечения
- •4.2. Управление вводом-выводом
- •4.2.1. Физическая организация устройств ввода-вывода
- •4.2.2. Организация программного обеспечения ввода-вывода
- •4.3. Мультипроцессорная обработка
- •Контрольные вопросы
- •Глава 5. Управление процессами в эвм
- •5.1. Состояние процессов
- •5.2. Контекст и дескриптор процесса
- •5.3. Алгоритмы планирования процессов
- •5.4. Операции над процессами
- •5.5. Многозадачность и многонитевость
- •5.6. Тупиковые ситуации и их предотвращение
- •5.8. Приоритеты в вычислительных системах
- •5.9. Диспетчеризация процессов
- •Контрольные вопросы к главе 5
- •Глава 6. Управление ресурсами вычислительных систем
- •6.1. Типы адресов
- •6.2. Методы управления памятью
- •6.3. Буферизация
- •6.4. Организация виртуальной памяти
- •6.5. Защита и блокировка памяти
- •Контрольные вопросы
- •Глава 7. Сетевые операционные системы
- •7.1. Структура сетевой операционной системы
- •Средства управления локальными ресурсами
- •Серверная часть Локальная часть
- •Коммуникационные средства
- •Компьютер 1 Компьютер 2
- •7.2. Одноранговые сетевые ос и ос с выделенными серверами
- •7.3. Ос для рабочих групп и ос для сетей масштаба предприятия
- •Глава 8. Microsoft Windows
- •8.1. Семейство ос компании Microsoft.
- •8.2. Семейство ос для карманных компьютеров.
- •8.3. Рыночная доля Windows
- •Контрольные вопросы
- •Заключение
- •Список рекомендуемой литературы
- •Оглавление
- •Глава 1. Операционная система как управляющее программное обеспечение
- •Глава 2. Архитектура ос
- •Глава 3. Файловая система
- •Глава 4. Управление аппаратными устройствами эвм
- •7.1. Структура сетевой операционной системы
- •7.2. Одноранговые сетевые ос и ос с выделенными серверами
- •7.3. Ос для рабочих групп и ос для сетей масштаба предприятия
4.2.2. Организация программного обеспечения ввода-вывода
Основная идея организации программного обеспечения ввода-вывода состоит в разбиении его на несколько уровней, причем нижние уровни обеспечивают экранирование особенностей аппаратуры от верхних, а те, в свою очередь, обеспечивают удобный интерфейс для пользователей.
Ключевым принципом является независимость от устройств. Вид программы не должен зависеть от того, читает ли она данные с гибкого диска или с жесткого диска. Очень близкой к идее независимости от устройств является идея единообразного именования, то есть для именования устройств должны быть приняты единые правила.
Другим важным вопросом для программного обеспечения ввода-вывода является обработка ошибок. Вообще говоря, ошибки следует обрабатывать как можно ближе к аппаратуре. Если контроллер обнаруживает ошибку чтения, то он должен попытаться ее скорректировать. Если же это ему не удается, то исправлением ошибок должен заняться драйвер устройства. Многие ошибки могут исчезать при повторных попытках выполнения операций ввода-вывода, например, ошибки, вызванные наличием пылинок на головках чтения или на диске. И только если нижний уровень не может справиться с ошибкой, он сообщает об ошибке верхнему уровню.
Еще один ключевой вопрос – это использование блокирующих (синхронных) и неблокирующих (асинхронных) передач. Большинство операций физического ввода-вывода выполняется асинхронно – процессор начинает передачу и переходит на другую работу, пока не наступает прерывание. Пользовательские программы намного легче писать, если операции ввода-вывода блокирующие – после команды READ программа автоматически приостанавливается до тех пор, пока данные не попадут в буфер программы. ОС выполняет операции ввода-вывода асинхронно, но представляет их для пользовательских программ в синхронной форме.
Последняя проблема состоит в том, что одни устройства являются разделяемыми, а другие – выделенными. Диски – это разделяемые устройства, так как одновременный доступ нескольких пользователей к диску не представляет собой проблему. Принтеры – это выделенные устройства, потому что нельзя смешивать строчки, печатаемые различными пользователями. Наличие выделенных устройств создает для ОС ряд проблем.
Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя: обработка прерываний; драйверы устройств; независимый от устройств слой операционной системы; пользовательский слой программного обеспечения.
4.3. Мультипроцессорная обработка
Мультипроцессорная обработка – способ организации вычислительного процесса в системах с несколькими процессорами, при котором несколько задач могут выполняться одновременно на разных процессорах.
Способы организации вычислительного процесса:
Асимметричное мультипроцессирование (ведущий/ведомый).
Симметричное мультипроцессирование.
Свойство ОС - реентерабельность (или повторная входимость).
Не следует путать мультипрограммную обработку и мультипроцессорную. В мультипрограммных системах параллельная работа разных устройств позволяет одновременно вести обработку нескольких программ, но при этом в процессоре, в каждый момент времени, выполняется только одна программа, т.е. несколько программ выполняются попеременно. А в мультипроцессорных системах несколько задач выполняются действительно одновременно, так как имеется несколько обрабатывающих устройств – процессоров. Многопроцессорность не исключает мультипрограммирования.
Мультипроцессорная система приводит к усложнению всех алгоритмов управления ресурсами. Сложности возникают из-за возрастания числа конфликтов при обращении к общим устройствам. Необходимо предусмотреть эффективные средства блокировки при доступе к разделяемым информационным структурам ядра. Все эти задачи должна решать ОС путем синхронизации процессов, введения очередей и планирования ресурсов.
Мультипроцессорные системы часто характеризуют как симметричные и асимметричные. При этом, следует четко определять к какому аспекту мультипроцессорной системы относится эта характеристика - к типу архитектуры или к способу организации вычислительного процесса.
Симметричная архитектура мультипроцессорной системы предполагает однородность всех процессоров и единообразия включения всех процессоров в общую схему. Традиционные симметричные мультипроцессорные конфигурации разделяют одну общую память между всеми процессорами.
В асимметричной архитектуре разные процессоры могут отличаться как своими характеристиками, так и функциональной ролью. Функциональная неоднородность в асимметричной архитектуре влечет за собой структурные отличия во фрагментах системы, содержащих разные процессоры.
Другой аспект мультипроцессорных систем, который может характеризоваться симметрией или ее отсутствием, является способ организации вычислительного процесса. Он определяется и реализуется ОС.
Асимметричное мультипрограммирование является наиболее простым способом организации вычислительного процесса. Данный способ часто называют ведущий-ведомый.
Функционирование системы по принципу ведущий-ведомый предполагает выделение одного из процессоров в качестве ведущего, на котором работает ОС и который управляет всеми остальными процессорами. Асимметричная модель может быть реализована как на системах с симметричной мультипроцессорной архитектурой как и на системах с асимметричной процессорной архитектурой.
Симметричное мультипроцессирование как способ организации вычислительного процесса может быть реализовано в системах только с симметричным мультипроцессированием. Разные процессоры могут в какой-то момент одновременно обслуживать как разные, так и одинаковые модули ОС. Для этого программы в ОС должны обладать свойством повторной сходимости (реентерабельностью).