Универсальные операционные системы и ОС специального назначения

 

Универсальная ОС (ОС общего назначения) предназначена для широкого круга пользователей компьютера определенного типа.

ОС специального назначения используется для узкого круга задач или для специализированного (например, бортового) компьютера и другого оборудования.

Некоторые ОС, например, знаменитая OS/360 (IBM, 1965) для семейства программно совместимых ЭВМ IBM/360, русифицированная для компьютеров ЕС ЭВМ под названием ОС ЕС, могли работать в нескольких режимах: мультипрограммная пакетная обработка, разделение времени и управление в реальном времени, но это делает систему слишком громоздкой, неповоротливой и сложной.

 

Классификация операционных систем[1 c. 26 – 28; 2 разд. 3.2]

 

Первыми ОС (1950-е годы) по назначению и режиму работы были системы пакетной обработки. На вход системы поступал пакет последовательно запускаемых заданий на выполнение программ пользователей. ОС работала в однопрограммном режиме, когда выполняемая программа получала в свое распоряжение все ресурсы ЭВМ. ОС облегчала функции оператора ЭВМ по запуску и завершению программ и оформлению их результатов, уменьшала простои оборудования, при переходе от одного задания к следующему.

Появление в аппаратуре ЭВМ системы прерываний обеспечило одновременную работу устройств компьютера, и в начале 1960-х годов появились мультипрограммные (многозадачные) ОС.

Операционные системы с разделением времени (СРВ) обеспечивают параллельную диалоговую работу многих пользователей за терминалами типа дисплея, подключенными к одной ЭВМ.

С появлением вычислительных сетей в 1970-х годах возникли сетевые операционные системы, обеспечивающие совместное использование сетевых ресурсов, управление распределенной обработкой данных на нескольких узлах сети и удаленный доступ к вычислительным мощностям через сеть.

В конце 1970-х годов появились персональные ЭВМ, благодаря которым необычайно расширилась область применения компьютеров, а в круг их пользователей влились миллионы людей, не являющихся профессионалами в информатике.

Операционные системы персональных компьютеров рассчитаны, как правило, на одного пользователя. Сначала они были простыми и однозадачными, но с возрастанием возможностей аппаратуры быстро усложнились. Главное назначение таких систем – обеспечить широкий набор функций с удобным и дружественным интерфейсом, в том числе (а зачастую и прежде всего) для неподготовленного пользователя.

 

Модульная структура построения ОС и их переносимость[1 c. 46 – 50; 2 разд. 3.7 –3.8]

Основной принцип организации ОС – иерархический подход: разбиение системы на уровни. Каждый уровень использует функции интерфейса, предоставляемого более низким уровнем, как если бы они воплощались в реальной машине, и аналогичным образом реализует интерфейс своей абстрактной машины, с которым имеют дело верхние уровни.

В ОС до 10 – 15 уровней подобных абстрактных машин. Увеличение числа уровней упрощает части системы, но замедляет ее работу (как и в человеческом обществе). Такая потеря эффективности характерна для строгой иерархии, когда каждый уровень обращается только к непосредственно предшествующему уровню.

Нижние уровни ОС образуют ядро – небольшую интенсивно работающую часть ОС, которая обычно резидентна постоянно размещена в оперативной памяти. Ядро имеет дело непосредственно с аппаратурой.

Обычно к функциям ядра относятся (в порядке повышения уровня): обработка прерываний, управление процессами (их создание, уничтожение, запуск, приостановка, активизация, синхронизация и взаимодействие), управление вводом-выводом, управление памятью (ее распределение и перераспределение), управление устройствами, поддержка файловой системы, вызов и возврат подпрограмм, функции учета работы. Вход в ядро – обычно по прерыванию с помощью системного вызова.

Выше ядра – программы интерфейса системных вызовов, интерпретаторы командного языка и другие операционные оболочки (например, Norton Commander), библиотеки ОС, а затем – системные процессы и процессы пользователей.

Системный процесс – это часть ОС, выполняемая в виде процесса подобно процессам пользователей. Реализация верхних уровней ОС в виде процессов упрощает разработку и расширение возможностей ОС, перенос ее компонентов в другие операционные системы.

Иерархический подход расширяется вниз в концепции виртуальных машин – на одной реальной машине для пользователей создается иллюзия, что они работают на отдельных виртуальных машинах со своими ОС одного или разных типов.

Виртуальные машины – перенесение мультипрограммирования на самый нижний уровень ОС, где располагается монитор (управляющая программа) виртуальных машин. Программы нижнего уровня каждой ОС имеют дело не с реальной машиной, а с прозрачным для ОС и программ пользователей монитором виртуальной машины, который предоставляет им тот же интерфейс, что и реальная машина.

Микроядерная реализация ОС – технология разработки семейства ОС или создания множества операционных сред в одной ОС на основе общего микроядра.

Это – распространение модульности на ядро ОС: его разбивают на модули и выносят в более высокие уровни системы часть его функций: верхний уровень управления процессами, управление файлами и устройствами. Уменьшенное ядро превращается в микроядро размером в несколько Кбайт, зачастую целиком размещаемое в кэш-памяти процессора, что ускоряет работу ОС. В нем остаются лишь общие функции семейства ОС для одного компьютера или реализации различных операционных сред в одной ОС.

В современных ОС часто сочетают «три кита»: микроядро, объектно-ориентирован-ный подход к разработке верхних уровней ОС – единообразное представление в виде объектов таких вещей, как процессы, потоки, файлы, различные ресурсы, средства коммуникации и синхронизации процессов и т. п., а также реализуемые на основе расширений микроядра и объектного подхода множественные среды – операционные среды «чужих» ОС для выполнения написанных для них программ.

Примеры микроядерных ОС: микроядро Mach (Стив Джобс, университет Карнеги-Меллон); Windows NT, в среде которой можно выполнять DOS-, Windows-, OS/2- и POSIX-программы; семейство микроядерных ОС реального времени QNX; микроядерные реализации UNIX и др.

В архитектуре клиент/сервер процесс-сервер – процесс, отвечающий на запросы клиента посредством сообщений. Процесс-клиент – процесс, запрашивающий сервисы у процесса-сервера, отправляя ему сообщения.

 

Управление процессором [1 c. 30 – 31; 2 разд. 3.4.1]

 

Планирование процессов включает определение, когда и какой из задач предоставить для выполнения время центрального процессора.

Процесс (задача) создается перед выполнением программы и уничтожается, когда выполнение завершается. В период существования процесс может находиться в трех основных состояниях.

Процесс активен (выполняется), когда его программа исполняется процессором. По истечении выделенного кванта времени возникает прерывание, и активный процесс переводится в состояние готов – ожидание следующего кванта. Таким способом предотвращается захват ресурсов машины одним процессом. Процесс блокирован, если он остановлен и ожидает наступления некоторого события, например, завершения операции ввода-вывода, после которого его можно продолжить.

Участие некоторых процессов в конкуренции за время процессора можно временно приостановить, например, на периоды резкого повышения нагрузки системы для улучшения ее производительности "в часы пик" или для исправления ошибок при появлении признаков сбоев в работе ОС или процесса, а затем возобновить. Тогда появляются состояния: приостановлен готов, приостановлен блокирован и др.

Планирование (scheduling) процессора – распределение времени процессора.

Планирование долгосрочное (на верхнем уровне) – решение о допуске нового процесса (или задания) в систему для выполнения.

Планирование среднесрочное (на промежуточном уровне) – часть свопинга: решение о (полном или частичном) помещении процесса в основную память для начала конкуренции за процессорное время.

Планирование краткосрочное (на нижнем уровне) – определение процесса (или потока), который получит процессорное время.

Краткосрочное планирование должно удовлетворить критериям пользователя: уменьшение времени отклика между запросом и началом ответа в диалоге, времени оборота между поступлением и завершением процесса, предельного срока завершения процесса и системным критериям: производительность и пропускная способность процессора; учет приоритетов процессов; беспристрастность – равноправие процессов и предотвращение голодания (starvation) – бесконечного откладывания выполнения процесса из-за предпочтения другим процессам при отсутствии дополнительных указаний пользователя; баланс занятости системных ресурсов (который важен также для долгосрочного и среднесрочного планирования).

Алгоритмы краткосрочного планирования – выбора среди готовых к выполнению процессов: первым поступил – первым обслужен (FCFS – first-come-first-served), круговое планирование – циклическое обслуживание с квантованием времени, выбор самого короткого процесса; выбор процесса с меньшим временем оставшейся работы, снижение приоритета процессам, затратившим много времени и др.

Многопроцессорные системы разделяются на слабосвязанные системы с собственной оперативной памятью и каналами ввода-вывода у каждого процессора; системы с функционально специализированными процессорами, например, процессорами ввода-вывода, и сильносвязанные системы с процессорами, использующими общую оперативную память и единую ОС.

В сильносвязанных многопроцессорных системах отличия в производительности разных стратегий планирования не так велики, как в однопроцессорных системах. Для ОС реального времени ключевой фактор – предельные сроки выполнения, что требует специализированных алгоритмов планирования.

 

Понятие процесса и ядра [1 c. 22 – 24, 46; 2 разд. 3.1, 3.7]

 

Ядро - сравнительно небольшая интенсивно работающая часть ОС, которая обычно резидентна постоянно размещена в оперативной памяти и отвечает на вызовы процессов и прерывания от устройств.

Процесс (= задача – task) – программа на стадии выполнения вместе с выделенными для этого выполнения ресурсами. Процесс обычно создается операционной системой по заданию пользователя для выполнения прикладной программы параллельно с другими процессами и является самостоятельным потребителем ресурсов ОС. Процесс присутствует в ОС в виде блока управления процессом (дескриптора процесса) – структуры данных с информацией о процессе: целочисленный идентификатор процесса, его состояние, приоритет, выполняемая программа, выделенные процессу ресурсы: область оперативной памяти, устройства, файлы, программы и т. п.

Параллельно исполняемые процессы конкурируют между собой за ресурсы: прежде всего, область оперативной памяти для загрузки программы, процессорное время, а также устройства, файлы, библиотечные программы ОС и др. В каждый момент центральный процессор исполняет команды не более одного (активного) процесса, остальные процессы находятся в очереди в состоянии ожидания.

К ресурсам ОС относятся:

- аппаратура: процессоры, устройства памяти и ввода-вывода и др.;

- данные: файлы, базы данных, системные переменные и т. п.;

- программы: библиотеки программ, программы управления файлами и вводом - выводом, сервисные программы (утилиты) и т. д.

Многопоточность - параллелизм внутри процесса, т. е. возможность прикладной программы (процесса) выполнять параллельно несколько операций – потоков управления. Поток (thread - нить, тред) – это самостоятельная часть программы (процесса), выполняемая параллельно с другими частями, упрощенный процесс. Поток не является для ОС самостоятельным потребителем ресурсов, а использует ресурсы своего процесса (кроме времени центрального процессора).

С точки зрения ОС, задача (task) – это получатель процессорного времени. В отсутствие потоков задачами являются процессы, а в многопоточной ОС (например, Windows, UNIX) задачами служат потоки.