
ОС / учебник(см. лекции) Корольковой / глава 1
.pdf1. ОБЩИЕ ВОПРОСЫ РАЗРАБОТКИ ОПЕРАЦИОННЫХ СИСТЕМ
1.1 Место ОС в структуре вычислительной системы
1.2 Назначение и функции ОС
1.3 Требования, предъявляемые к современным ОС
1.3.1 Расширяемость
1.3.2 Переносимость
1.3.3 Совместимость
1.4 Эволюция ОС
1.5 Функциональные компоненты операционной системы автономного компьютера
1.6 Классификация ОС
1.6.1 По типу алгоритмов управления ресурсами
1.6.2 По типу аппаратных платформ
1.6.3 По области использования
1.6.4 По способу структурной организации
1.7 Архитектура ОС
1.7.1 Классическая архитектура
1.7.1.1 Монолитные системы
1.7.1.2 Многоуровневые системы
1.7.2 Модель клиент-сервер и экзоядро
1.7.3 Сравнение моделей архитектур ОС
1

1. ОБЩИЕ ВОПРОСЫ РАЗРАБОТКИ ОПЕРАЦИОННЫХ СИСТЕМ
1.1 Место ОС в структуре вычислительной системы
Вычислительная система – программно-аппаратный комплекс, который предоставляет услуги пользователю.
Структура вычислительной системы представлена в Таблице 1.
Таблица 1
Прикладные программы
Системы программирования
Управление логическими устройствами
Управление физическими устройствами
Аппаратные средства
Аппаратные средства – нижний уровень - это аппаратура, то, что делается из металла, пластика и прочих материалов, используемых для производства «железа» компьютера.
Управление физическими устройствами осуществляют программы,
ориентированные на качества и свойства аппаратуры, взаимодействующие с аппаратными структурами, знающие «язык» аппаратуры.
Уровень управления логическими устройствами ориентирован на пользователя,
предназначен для сглаживания аппаратных особенностей устройств. Команды этого уровня обращены к предыдущему слою.
Система программирования – это комплекс программ для поддержки всего технологического цикла разработки программного обеспечения.
Прикладные программы предназначены для решения некоторых задач в конкретных областях знаний.
КОС относят второй и третий уровень пирамиды.
1.2Назначение и функции ОС
ОС компьютера – это комплекс взаимосвязанных программ, обеспечивающий взаимодействие пользователя с вычислительной системой, а также управляющий ресурсами вычислительной системы. В соответствии с этим определением ОС выполняет две группы функций:
- предоставление пользователю вместо реальной аппаратуры компьютера расширенной виртуальной машины;
2
- повышение эффективности использования компьютера путем рационального управления его ресурсами в соответствии с некоторым критерием.
1.3 Функциональные компоненты ОС автономного компьютера
1.3.1 Подсистема управления процессами
-распределяет процессорное время между несколькими одновременно выполняющимися в системе процессами;
-создает и уничтожает процессы;
-обеспечивает процессы необходимыми ресурсами;
-поддерживает синхронизацию процессов;
-реализует межпроцессное взаимодействие.
1.3.2Подсистема управления памятью
-отслеживает свободную и занятую память;
-выделяет память процессам и освобождает память по завершении процессов;
-организует виртуальную память;
-настраивает адреса программы на конкретную область физической памяти;
-динамически распределяет память;
-выполняет дефрагментацию памяти;
-реализует защиту памяти.
1.3.3Подсистема управления файлами и внешними устройствами
-организует параллельную работу устройств ввода-вывода и процессора;
-осуществляет согласование скоростей обмена и кэширование данных;
-разделяет устройства и данные между процессами;
-организует удобный интерфейс между устройствами и остальной частью системы;
-поддерживает широкий спектр драйверов с возможностью простого включения в систему нового драйвера;
-динамически загружает и выгружает драйверы;
-поддерживает несколько файловых систем;
-поддерживает синхронные и асинхронные операции ввода-вывода.
1.3.4Защита данных и администрирование
Существуют два аспекта безопасности:
- защита от сбоев и отказов аппаратуры (реализуется путем резервирования) и
ошибок программного обеспечения (например, самовосстанавливающиеся файловые системы);
- защита от несанкционированного доступа (процедура логического входа,
аутентификация, авторизация, администрирование, аудит).
3
Аутентификация отвечает на вопрос: "Кто Вы?", в то время как авторизация ставит вопрос: "Допустимо ли для Вас затребованное действие?". Основанные на использовании политик безопасности, серверы авторизации позволяют приложениям централизовано решать задачи аутентификации и авторизации. Менеджер безопасности определяет методы аутентификации (например, по имени и паролю) пользователей и способы управления доступом этих пользователей к ресурсам. При каждом обращении пользователя к ресурсу, приложение запрашивает у сервера авторизации проверку затребованной операции на основе политик и правил безопасности, и только после этого открывает пользователю доступ к информационному ресурсу.
1.3.5 Интерфейс прикладного программирования Для прикладного программиста ОС выглядит как библиотека, предоставляющая
некоторый набор полезных функций, с помощью которых можно выполнить действия,
запрещенные в пользовательском режиме, либо просто упростить прикладную программу.
Возможности ОС доступны прикладному программисту в виде набора функций,
называющегося интерфейсом прикладного программирования (Application Programming
Interface, API).
Приложения выполняют обращения к API-функциям с помощью системных вызовов. Обращение к ОС похоже на вызов подпрограммы. Реализация системных вызовов зависит от структурной организации ОС и от языка программирования.
1.3.6 Пользовательский интерфейс Современные ОС поддерживают развитые функции пользовательского интерфейса
для интерактивной работы за терминалами двух типов:
-алфавитно-цифровой терминал (имеется система команд, составляющая командный язык, и командный интерпретатор - программный модуль ОС, ответственный за чтение команд из командной строки или из командного пакетного файла);
-графический пользовательский интерфейс (пользователь может с помощью мыши выбрать на экране пункт меню или графический символ).
Оба типа интерфейса необходимы пользователям. Графический – для массового непрофессионального пользователя и выполнения рутинных операций, командная строка
–для достижения специфического и тонкого эффекта.
1.4Требования, предъявляемые к современным ОС
Главным требованием, предъявляемым к операционной системе, является выполнение ею основных функций эффективного управления ресурсами и обеспечение удобного интерфейса для пользователя и прикладных программ.
Традиционно к ОС предъявлялись следующие дополнительные требования:
4
-прозрачность (незаметность работы) служебных программ;
-гарантированная надежность;
-максимальная скорость выполнения;
-минимальный машинный код;
-использование стандартных средств для связи с проблемными программами.
Кроме этого, современная операционная система должна обладать свойствами:
расширяемости, совместимости, переносимости, безопасности, надежности и отказоустойчивости.
1.4.1 Расширяемость Код должен быть написан так, чтобы систему можно было легко наращивать и
модифицировать по мере изменения потребностей рынка. В то время как аппаратная часть компьютера устаревает за несколько лет, полезная жизнь операционных систем может измеряться десятилетиями. Сохранение целостности кода, какие бы изменения не вносились в операционную систему, является главной целью.
Расширяемость может достигаться за счет:
-модульной структуры ОС, при которой программы строятся из набора отдельных модулей, взаимодействующих только через функциональный интерфейс. Новые компоненты могут быть добавлены в операционную систему модульным путем, они выполняют свою работу, используя интерфейсы, поддерживаемые существующими компонентами;
-использования объектов для представления системных ресурсов. Добавление новых объектов не разрушает существующие объекты и не требует изменений существующего кода;
-структурирования ОС по типу клиент-сервер с использованием микроядерной технологии;
-использования средств вызова удаленных процедур (RPC). Новые программные процедуры могут быть добавлены в любую машину сети и немедленно поступить в распоряжение прикладных программ на других машинах сети.
Некоторые ОС для улучшения расширяемости поддерживают загружаемые драйверы, которые могут быть добавлены в систему во время ее работы. Новые файловые системы, устройства и сети могут поддерживаться путем написания драйвера устройства,
драйвера файловой системы или транспортного драйвера и загрузки его в систему.
1.4.2 Переносимость Переносимость (многоплатформенность) дает возможность перемещать всю
систему на машину, базирующуюся на другом процессоре или аппаратной платформе,
5
делая при этом по возможности небольшие изменения в коде. Для написания переносимой ОС необходимо:
- использовать язык высокого уровня. Большинство переносимых ОС написано на языке С потому, что он стандартизован и С-компиляторы широко доступны;
-изолировать процессор. Некоторые низкоуровневые части ОС должны иметь доступ к процессорно-зависимым структурам данных и регистрам. Однако код, который делает это, должен содержаться в небольших модулях, которые могут быть заменены аналогичными модулями для других процессоров;
-изолировать платформу. Зависимость от платформы заключается в различиях между рабочими станциями разных производителей, построенными на одном и том же процессоре). Должен быть введен программный уровень, абстрагирующий аппаратуру
(КЭШи, контроллеры прерываний ввода-вывода и т. п.) вместе со слоем низкоуровневых программ таким образом, чтобы высокоуровневый код не нуждался в изменении при переносе с одной платформы на другую.
1.4.3 Совместимость Под совместимостью понимают способность ОС выполнять программы,
написанные для других ОС или для более ранних версий данной операционной системы, а
также для другой аппаратной платформы.
Различают двоичную совместимость (достигается в том случае, когда исполняемую программу можно запустить на выполнение в вычислительной системе с другой ОС, для этого необходимы: совместимость на уровне команд процессора,) и совместимость на уровне исходных текстов (требует наличия соответствующего компилятора в составе программного обеспечения, при этом необходима перекомпиляция имеющихся исходных текстов в новый исполняемый модуль, а также совместимость на уровне библиотек и системных вызовов).
При совпадении архитектур процессоров (набора команд (возможно, с некоторыми дополнениями) и диапазона адресов) двоичная совместимость достигается при:
-поддержке вызовов API-функций новой ОС;
-соответствии внутренней структуры исполняемого файла правилам новой ОС.
Для достижения двоичной совместимости в случае различных архитектур кроме
этих мер необходимы либо:
-эмуляция (довольно просто, но обычно очень медленно), либо
-использование множественных прикладных программных сред; прикладная среда имитирует библиотечные функции целиком, используя заранее написанную библиотеку
6

функций аналогичного назначения, а остальные команды эмулирует каждую по отдельности; либо
- система виртуальных машин (СВМ) (см. рис. 1.1).
Система виртуальных машин (СВМ) – такой вариант организации вычислительного процесса, при котором на одном компьютере одновременно выполняются несколько копий одной и той же или нескольких разных ОС. Каждая из этих ОС функционирует так же, как если бы она выполнялась на отдельном компьютере.
Рис. 1.1 Вариант виртуальной машины
Первой реальной системой такого рода была система CP/CMS или VM/370, как ее называют сейчас, для семейства машин IBM/370.
Эмулятор – это программа, которая последовательно, одну за другой, считывает из эмулируемой программы двоичные инструкции одного процессора, анализирует, какие действия необходимо выполнить по этой инструкции, а затем выполняет эквивалентную программу, написанную в инструкциях другого процессора.
1.5 Эволюция ОС Известно, что первый компьютер был изобретен английским математиком
Чарльзом Бэбиджем в середине девятнадцатого века. Его "аналитическая машина" так и не смогла по-настоящему заработать, потому что технологии того времени не удовлетворяли требованиям по изготовлению деталей точной механики, которые были необходимы для вычислительной техники. Известно также, что этот компьютер не имел операционной системы.
Первый период (1945 -1955). В середине 40-х были созданы первые ламповые вычислительные устройства (в США и Великобритании), в СССР первая ламповая вычислительная машина появилась в 1951 году. Программирование осуществлялось исключительно на машинном языке. Элементная база – электронные лампы и коммуникационные панели. Операционных систем не было, все задачи организации вычислительного процесса решались вручную программистом с пульта управления.
Системное программное обеспечение - библиотеки математических и служебных подпрограмм.
7
Второй период (1955 - 1965). С середины 50-х годов начался новый период в развитии вычислительной техники, связанный с появлением новой технической базы -
полупроводниковых элементов (транзисторы). В эти годы появились первые алгоритмические языки и, следовательно, первые системные программы - компиляторы.
Стоимость процессорного времени возросла, что потребовало уменьшения непроизводительных затрат времени между запусками программ. Появились первые системы пакетной обработки, увеличивающие коэффициент загрузки процессора.
Системы пакетной обработки явились прообразом современных операционных систем,
они стали первыми системными программами, предназначенными для управления вычислительным процессом. Был разработан формальный язык управления заданиями.
Появился механизм виртуальной памяти.
Третий период (1965 - 1975). Переход к интегральным микросхемам. Создание семейств программно-совместимых машин (серия машин IBM System/360, советский аналог - машины серии ЕС). В этот период времени были реализованы практически все основные концепции, присущие современным ОС: мультипрограммирование,
мультипроцессирование, многотерминальный режим, виртуальная память, файловая система, разграничение доступа и сетевая работа. В процессорах появился привилегированный и пользовательский режим работы, специальные регистры для переключения контекстов, средства защиты областей памяти и система прерываний.
Другое нововведение - спулинг (spooling). Спулинг в то время определялся как способ организации вычислительного процесса, в соответствии с которым задания считывались с перфокарт на диск в том темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное задание завершалось, новое задание с диска загружалось в освободившийся раздел. Появился новый тип ОС - системы разделения времени. В
конце 60-х годов начаты работы по созданию глобальной сети ARPANET, ставшей отправной точкой для Интернета. К середине 70-х годов широкое распространение получили мини-компьютеры. Их архитектура была значительно упрощена по сравнению с мейнфреймами, что нашло отражение и в их ОС. Экономичность и доступность мини-
компьютеров послужила мощным стимулом к созданию первых локальных сетей. С
середины 70-х годов началось массовое использование ОС UNIX. В конце 70-х был создан рабочий вариант протокола TCP/IP, в 1983 году он был стандартизирован.
Четвертый период (1980 - настоящее время). Следующий период в эволюции операционных систем связан с появлением больших интегральных схем (БИС). В эти годы произошел резкий рост степени интеграции и удешевление микросхем. Наступила эра персональных компьютеров. Компьютеры стали широко использоваться
8
неспециалистами. Реализован графический интерфейс пользователя (GUI - Graphical User
Interface), теория которого была разработана еще в 60-е годы. Первой реализовала GUI
корпорация Macintosh. На рынке операционных систем доминировали две системы: MS-
DOS и UNIX. Однопрограммная однопользовательская ОС MS-DOS широко использовалась для компьютеров, построенных на базе микропроцессоров Intel 8088, а
затем 80286, 80386 и 80486. Мультипрограммная многопользовательская ОС UNIX
доминировала в среде "не-интеловских" компьютеров, особенно построенных на базе высокопроизводительных RISC-процессоров. С 1985 года стала выпускаться Windows,
это была графическакя оболочка MS-DOS вплоть до 1995г., когда вышла полноценная ОС
Windows 95. IBM и Microsoft совместно разработали операционную систему OS/2. Она поддерживала вытесняющую многозадачность, виртуальную память, графический пользовательский интерфейс, виртуальную машину для выполнения DOS-приложений.
Первая версия вышла 1987 г. В дальнейшем Microsoft отказалась от OS/2 и приступила к
разработке Windows NT. Первая версия вышла в 1993г.
В середине 80-х стали бурно развиваться сети персональных компьютеров,
работающие под управлением сетевых или распределенных операционных систем.
Сетевая операционная система не имеет отличий от операционной системы однопроцессорного компьютера. Она дополнительно содержит программную поддержку для сетевых интерфейсных устройств (драйвер сетевого адаптера), а также средства для удаленного входа в другие компьютеры сети и средства доступа к удаленным файлам.
Распределенная операционная система, напротив, представляется пользователям простой системой, в которой пользователь не должен беспокоиться о том, где работают его программы или где расположены файлы, все это должно автоматически обрабатываться самой операционной системой.
В 1987г. была выпущена операционная система MINIX (прототип LINUX), она
была построена по принципу микроядерной архитектуры.
В 80-е годы были приняты основные стандарты на коммуникационное
оборудование для локальных сетей: в 1980 году –Ethernet, в 1985 – Token Ring, в конце 80-
х – FDDI. Это позволило обеспечить совместимость сетевых ОС на нижних уровнях, а
также стандартизировать интерфейс ОС с драйверами сетевых адаптеров.
В 90-е годы практически все ОС стали сетевыми. Появились специализированные ОС, предназначенные исключительно для решения коммуникационных задач (IOS
компании Cisco Systems). Появление службы World Wide Web (WWW) в 1991 году придало мощный импульс развитию популярности Интернета. Развитие корпоративных сетевых операционных систем выходит на первый план. Возобновляется развитие ОС
9
мейнфреймов. В 1991г. была выпущена LINUX. Чуть позже вышла FreeBSD (основой для нее послужила BSD UNIX).
Современный этап развития операционных систем персональных компьютеров.
Происходит эволюционное развитие свойств, механизмов и функций ОС, которые появились в 60-е и 90-е годы. Тенденции развития – повышение удобства работы человека с компьютером, повышение надежности за счет использования микроядерной архитектуры, простота обслуживания, дружественный пользовательский интерфейс,
эффективные средства поиска и хранения информации.
GRID Computing – от термина Power Grid, относящегося к энергетической сети,
объединяющей электростанции и потребителей электроэнергии. GRID (англ. grid —
решетка, сеть) является географически распределенной инфраструктурой, объединяющей множество ресурсов разных типов (процессоры, долговременная и оперативная память,
хранилища и базы данных, сети), доступ к которым пользователь может получить из любой точки, независимо от места их расположения.
Сегодня GRID – это концепция, подкрепленная набором стандартов. Первые практические GRID-сервисы были созданы в CERN, Европейском центре ядерных исследований, там же, где и сервис WWW. В середине 2006 года стартовал проект
XtreemOS, спонсируемый Европейским Союзом, который ставит своей задачей создание специализированной GRID-ОС на основе ядра Linux. Microsoft в конце 2006 года при презентации Windows Vista также объявила о намерении создания ОС для вычислительных кластеров.
Кластер – группа тесно связанных компьютеров, которая скоординировано выполняет параллельные ветви единой задачи.
1.6Классификация ОС
1.6.1По типу алгоритмов управления ресурсами
По числу одновременно выполняемых задач:
- однозадачные (например, MS-DOS, MSX); в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным взаимодействие пользователя с компьютером, состоят из средств управления периферийными устройствами, средств управления файлами, средств общения с пользователем.
- многозадачные (OC EC, OS/2, UNIX, Windows 95); кроме вышеперечисленных функций, управляют разделением совместно используемых ресурсов, таких как процессор, оперативная память, файлы и внешние устройства.
По числу одновременно работающих пользователей ОС делятся на:
10