- •ОС как расширенная машина
- •ОС как система управления ресурсами
- •ГЛАВА 1
- •ГЛАВА 2
- •Мультипрограммность и многозадачность
- •Синхронизация процессов и задач
- •Предсказуемость
- •ГЛАВА 3
- •Вытесняющие и не вытесняющие алгоритмы диспетчеризации
- •Диспетчеризация задач с использованием динамических приоритетов
- •Использование блокировки памяти при синхронизации параллельных процессов
- •Семафорные примитивы Дейкстры
- •Мьютексы
- •Мониторы Хоара
- •Почтовые ящики
- •Конвейеры (программные каналы)
- •Очереди сообщений
- •Пример тупика на ресурсах типа CR
- •Пример тупика на ресурсах типа CR и SR
- •Пример тупика на ресурсах типа SR
- •Пример распределения ресурсов
- •ГЛАВА 4
- •Разделы с фиксированными границами
- •Разделы с подвижными границами
- •Таблица размещения файлов
- •Файловые системы VFAT и FAT32
- •Элемент каталога
- •Основные возможности файловой системы NTFS
- •Структура тома с файловой системой NTFS
- •Основные отличия FAT и NTFS
- •ГЛАВА 5
- •Возможности файловой системы NTFS по ограничению доступа к файлам и каталогам
- •Симметричные алгоритмы шифрования
- •Несимметричные алгоритмы шифрования
- •Криптоалгоритм RSA
- •Односторонние функции шифрования
- •Аутентификация
- •Авторизация доступа
- •Аудит
- •Синхронизация по времени
- •Схема с использованием слова-вызова
- •Схема использования сертификатов
- •Инфраструктура с открытыми ключами
- •ЗАКЛЮЧЕНИЕ
- •Linux
- •Windows NT/2000/XP
- •Windows 95/98/МЕ
- •ЛИТЕРАТУРА
299
динамическую загрузку и выгрузку модулей ядра;
многопоточность в пределах одного процесса (так называемые LWP (Light Weight Processes – легкие процессы));
псевдофайловую систему /ргос, обеспечивающую контролируемый доступ к адресным пространствам других процессов и структурам данных ядра;
оптимизирующий компилятор ANSI С, по качеству кода не уступающий GNU С.
На всем протяжении 90-х, архитектура ядра не подверглась существенным изменениям. Как и MVS полутора десятилетиями раньше, UNIX достиг совершенства в своем роде и нуждается не в новой архитектуре, а только в оптимизации существующего кода (ядро SVR4 несколько тяжеловато по сравнению с монолитными ядрами BSD и Linux) и развитии отдельных подсистем.
Linux
В 1991 г. Л. Торвальдс, в тот момент – студент университета Хельсинки, приступил к разработке того, что ныне известно как Linux – полноценной операционной системы. В 1992 г. была выпущена первая публичная версия системы. Вышедшее в 1997 г. ядро Linux 2.0 имело вполне приемлемую по стандартам коммерческих ОС надежность и почти все наиболее прогрессивные черты других Unix-систем:
загрузочные модули и разделяемые библиотеки формата ELF; псевдофайловую систему /ргос; динамическое подключение и отключение своп-файлов;
длинные файлы (64-разрядные – длина файла и смещение в нем); многопоточность в пределах одного процесса (POSIX thread library); поддержку симметричной многопроцессорности; динамическую загрузку и выгрузку модулей ядра;
стек TCP/IP, совместимый с BSD 4.4, с поддержкой IPSec, фильтрации пакетов и др.;
SysV IPC;
бинарную совместимость с UNIX System V на процессорах х86 (iBCS – Intel Binary Compatibility Standard) и, позднее, на SPARC и MIPS;
поддержку задач реального времени (класс планирования реального времени в монолитном Linux невозможен; такие задачи загружаются как модули ядра).
Linux и другие подобные ему операционные системы были изначально разработаны для использования несколькими людьми на одной и той же машине, и для защиты этих людей друг от друга. Интерфейс пользователя в Linux отделен от ядра, привилегированной основы операционной системы. И это ядро тщательно защищено от модифицирования обычными программами. Вот почему Linux не имеет вирусов.
Ядро Linux быстро развивается и еще не достигло той степени “зрелости” и стабильности, которая характерна для SVR4 и ветвей BSD. В част-
300
ности, поэтому среднее количество опасных ошибок, обнаруживаемых в системе за фиксированный интервал времени, существенно выше, чем в двух указанных ОС; производительность отдельных подсистем также оставляет желать лучшего. Однако положение довольно быстро улучшается и, по-видимому, в обозримом будущем Linux может стать одним из технологических лидеров отрасли.
Семейство СР/М
Родоначальником семейства является дисковая операционная система СР/М (Control Program/Monitor) фирмы Digital Research. Первая версия системы была разработана в 1974 г. для использования в инструментальных микропроцессорных системах на основе микропроцессоров 18080 и i8085.
СР/М была первой ОС для машин такого рода, обеспечившей возможность использования гибких дисков, поэтому она быстро приобрела огромную популярность и стала стандартом де-факто для микрокомпьютеров. Система была перенесена практически на все 8- и 16-разрядные и многие 32-разрядные микропроцессоры манчестерской архитектуры. Появившиеся в конце 70-х персональные компьютеры обычно также были ориентированы на использование СР/М. В начале 80-х были реализованы многозадачная и сетевая версии СР/М. Появилось также немало клонов системы, программно совместимых с ней и в целом аналогичных по архитектуре.
В 1981 г. фирма IBM анонсировала персональный компьютер IBM PC на основе 16-разрядного процессора i8088. Первоначально предполагалось, что в качестве ОС для этого компьютера будет использоваться СР/М, однако представителям IBM не удалось достичь приемлемых условий соглашения с Digital Research. Фирма Microsoft переделала загрузчик и дисковую подсистему QDOS для работы с IBM PC и использования сервисов ПЗУ этого компьютера (эти сервисы также называются BIOS, хотя имеют довольно мало общего с BIOS СР/М), и предложила результат фирме IBM. К версии 3.30 MS DOS (такое название получила новая система) уже накопила очень много отличий от оригинальной СР/М. В качестве файловой системы была использована изобретенная лично Б. Гейтсом для применения в интерпретаторе BASIC ФС FAT. Со времен DOS 3.30 архитектура системы не подверглась сколько-нибудь заметным изменениям. Так, DOS 7, входящая в состав Windows 98/ME в качестве вторичного загрузчика, отличается от 3.30 только поддержкой файловой системы FAT32.
Ближе к середине 90-х стало очевидно, что дни DOS как платформы сочтены.
301
Windows NT/2000/XP
Наработки Microsoft по OS/2 New Technology были в 1993 г. выпущены на рынок под названием Windows NT. Версии 3.х и 4.0 этой системы обеспечивали совместимость с 16-разрядными приложениями для OS/2 1.х в отдельной подсистеме, без возможности обращаться из 16-разрядных приложений к 32-разрядным DLL и наоборот.
Наиболее важной заимствованной концепцией была журнальная файловая система NTFS, представляющая собой любопытный гибрид HPFS (основной ФС OS/2) и FCS2 (основной ФС VAX/VMS). Это заимствование следует признать довольно удачным.
Гораздо менее удачным было заимствование своеобразной стратегии управления рабочими множествами процессов в ОЗУ, используемой в VMS: разработчики Microsoft устранили из этой стратегии одно из ключевых понятий, квоту размера рабочего множества. В результате получилась система, практически не способная воспользоваться преимуществами страничной подкачки, потому что даже небольшая нехватка оперативной памяти приводит к резкому падению производительности из-за неспособности системы сбалансировать потребности приложений и дискового кэша.
Еще одна ключевая для понимания архитектуры Win32 концепция была введена по настоятельным просьбам разработчиков графических приложе-
ний для Apple Macintosh. Речь идет о системном реестре (system registry),
централизованной базе данных, в которой все модули системы, стандартные утилиты и прикладные программы хранят все, что считают нужным сохранить.
Системный реестр впервые был реализован в Mac OS. Эта система имеет довольно простое ядро и небогатый набор системных настроек, поэтому реестр Mac OS в основном содержит настройки прикладных программ и в такой форме вполне терпим. Напротив, довольно сложная многопользовательская Windows NT, поддерживающая широкий спектр внешних устройств, нуждается в большом объеме конфигурационных данных для самой системы. Характер обращений к разным частям этих данных сильно различается – некоторые, например, нужны только при загрузке системы, а изменению подлежат только при изменении аппаратной конфигурации. Другие же меняются при каждом открытии нового окна пользовательской программой. Относительная ценность этих данных также различается очень резко: искажение некоторых может привести к невозможности загрузить систему или к потере пользователями доступа к ней, некоторые другие можно было бы и не хранить вовсе. В Windows NT этот концептуальный недостаток усугубляется недостатками реализации – реестр не имеет адекватных средств резервного копирования и восстановления (при фатальных повреждениях реестра Microsoft рекомендует переустановку системы) и фактически лишен средств самоконтроля и диагностики.
302
С момента выхода версии 3.51 и до настоящего времени архитектура системы не подвергалась ни пересмотру, ни сколько-нибудь существенному развитию. Наибольшее количество новшеств было введено в Windows 2000, когда в состав системы была включена служба каталогов Active Directory и ряд мелких улучшений. В частности, было исправлено множество мелких, но раздражающих недостатков стека TCP/IP версии 4.0. В Windows XP были введены средства импорта реестра систем линии Windows 95/98/ME, сокеты типа RAW и новая схема защиты от неавторизованного копирования. При слабо изменяющемся ядре, развивался преимущественно пользовательский интерфейс.
Главными недостатками Windows NT в качестве сервера являются неэффективная стратегия управления памятью и беспрецедентное для промышленно эксплуатируемого программного продукта количество проблем с безопасностью. Для сервера, исполняющего стабильную смесь приложений, первый недостаток не очень критичен – многие серверные приложения (особенно серверы СУБД) при старте занимают всю доступную память и практически не запрашивают ее в процессе работы. Благодаря этому система может стабилизировать свой динамический кэш и обеспечивать в стационарном режиме приемлемую производительность.
Второй недостаток является критически важным и одного его – в идеальном мире – было бы достаточно, чтобы Windows NT не использовалась в качестве сервера ни при каких обстоятельствах.
Windows 95/98/МЕ
В первой половине 90-х годов XX столетия практически всем разработчикам и техническим специалистам было очевидно, что MS и DR DOS доживают последние дни: они не удовлетворяли запросам пользователей практически ни по одному из параметров: приложения требовали больших объемов памяти и перехода к 32-разрядной архитектуре, пользователям требовались большая надежность, многозадачность, более развитые сетевые средства. Напротив, преимущества DOS, такие, как небольшая потребность в памяти, становились все менее и менее критичными.
Основным препятствием на пути перехода пользователей на другие платформы было требование совместимости с существующими приложениями и драйверами нестандартных внешних устройств для DOS. Наилучшим образом удовлетворяла этому требованию IBM OS/2, в виртуальной машине которой можно было запустить не только практически любое приложение DOS, но и использовать многие модули ядра DOS, в том числе – загружая в разных виртуальных машинах разные версии ДОС и разные наборы драйверов. Однако высокие требования этой системы к ресурсам и ориентированная на корпоративных пользователей схема лицензирования приводили к тому, что система не получила большого распространения на массовом рынке.
303
В 1992-1993 гг. Microsoft занялась разработкой системы, которая должна была заполнить перспективную рыночную нишу “многозадачной ДОС защищенного режима”.
Новая система, получившая название Windows 95, вышла на рынок в 1995 г. Система с самого начала задумывалась как переходная, предназначенная для облегчения перевода пользовательской базы DOS на Windows NT, однако прошло не менее 4-5 лет, прежде чем совместимость с приложениями DOS перестала быть решающим параметром при выборе ОС для настольного компьютера. За это время успело выйти несколько версий
“переходной” системы (OSR2, 98, 98SE, Millennium Edition) и даже после выхода ХР Microsoft еще не готова объявить о прекращении поддержки этой линии ОС.