введение_1 (1085732), страница 17
Текст из файла (страница 17)
На самом деле все исследователи понимают, что современные операционные системы массивны, не гибки, ненадежны, не обеспечивают защиты информации и изобилуют ошибками, причем некоторые системы в большей степени, чем остальные (названия не сообщаются, чтобы защитить виновников). Естественно, огромное количество исследований было посвящено построению гибкой и надежной системы. Многие исследования касаются систем микроядра. Ядра таких систем имеют минимальные размеры, поэтому есть шанс, что их смогут целиком отладить и сделать надежными. При этом такие системы гибки, потому что большая часть операционной системы работает как процессы пользовательского режима и поэтому их легко переместить или адаптировать к новым условиям, возможно, даже во время работы. Обычно в задачу микроядра входит только управление на низком уровне и передача сообщений между процессами пользователя.
Микроядра первого поколения, такие как Amoeba , Chorus , Mach и V , доказали, что эти системы можно построить и заставить работать. Второе поколение пытается доказать, что они не только работают, но и делают это с высокой производительностью . Основываясь на опубликованных измерениях, можно утверждать, что эта цель достигнута.
Множество исследований в области ядра в наши дни фокусируется на конструировании расширяемых операционных систем. Это обычно системы с микроядром, в которых поддерживается возможность их расширения или переделки в некотором направлении. Такими примерами являются Fluke , Paramecium , SPIN и Vino. Некоторые исследователи также ищут возможности расширения существующих систем. Многие из этих систем позволяют пользователям добавлять свой собственный код к ядру, но при этом встает очевидная проблема обеспечения безопасности надстроек пользователя. Среди методов разрешения этих проблем встречаются такие, как интерпретация расширений, изоляция на время выполнения загружаемого удаленного кода в ограниченную среду, так называемую «песочницу», использование языков, обеспечивающих типовую безопасность, и снабжение исполняемых программ электронной подписью. В некоторых работах представлена другая точка зрения: на обеспечение безопасности расширяемых пользователями систем тратится слишком много усилий. По мнению авторов, исследователи должны вычислить, какие надстройки полезны, и затем сделать их нормальной частью ядра, не предоставляя пользователям возможностей расширять ядро на лету.
Хотя один подход к улучшению огромных, содержащих массу ошибок, ненадежных операционных систем состоит в уменьшении их размеров, существует второй, более радикальный метод — вообще устранить операционную систему. Он был взят на вооружение группой Каашойка (Kaashoek) в Массачусетском техно-
логическом институте в их работе над экзоядром. Идея состоит в том, чтобы оставить тонкий слой программного обеспечения, работающего напрямую с аппаратурой, все действия которого заключаются в надежном распределении ресурсов аппаратуры между пользователями. Например, оно должно решать, кто и какую часть диска получает в пользование, куда должны доставляться приходящие сетевые пакеты. Все остальное оставляется на усмотрение процессов пользовательского уровня, что делает возможным построение как универсальных, так и узкоспециализированных систем .
Краткий обзор следующих глав
Итак, мы завершили введение и описали общие моменты операционных систем. Теперь пришло время разобраться в деталях. Глава 2 посвящена процессам. Здесь обсуждаются их свойства и то, как они общаются друг с другом, а также представлено несколько подробных примеров межпроцессного общения и того, как можно избежать некоторых ошибок.
В главе 3 говорится о взаимоблокировке. В этой главе мы дали некоторое представление о том, что такое взаимоблокировка, но этой теме следует посвятить отдельную главу. Кроме того, обсуждаются способы, позволяющие предупредить или избежать взаимоблокировки.
В главе 4 мы детально изучим управление памятью. Будет исследована важная часть виртуальной памяти наряду с тесно связанными с ней идеями разбиения памяти на страницы и сегменты.
Вводу-выводу посвящена глава 5. В ней будут рассмотрены концепции зависимости и независимости от устройств. В качестве примеров мы будем использовать такие важные устройства, как диски, клавиатуры и мониторы.
Затем в главе 6 мы поговорим на очень важную тему файловых систем. Ведь с файловой системой пользователь чаще всего имеет дело. Мы рассмотрим и интерфейс файловой системы, и ее реализацию.
На этом мы завершим изучение основных принципов работы однопроцессорных операционных систем. Однако мы можем рассказать еще многое, особенно о расширенных возможностях. Глава 7 посвящена изучению мультимедийных систем, имеющих ряд свойств и требований, отличающихся от традиционных операционных систем. Природа мультимедиа, кроме всего прочего, оказывает влияние на планирование и файловую систему. Есть еще одна тема для обсуждения — системы с несколькими процессорами, включая многопроцессорные системы, параллельные компьютеры и распределенные системы. Ее мы рассмотрим в главе 8.
Чрезвычайно важному вопросу безопасности операционных систем посвящена глава 9. Среди прочих вопросов в этой главе обсуждаются различные виды потенциальной опасности (например, вирусы и черви), механизмы защиты и модели охраны.
Затем мы изучим некоторые существующие операционные системы: UNIX (глава 10) и Windows 2000 (глава 11). Книга заканчивается главой 12, содержащей некоторые соображения по поводу проектирования операционных систем.
Единицы измерения
Чтобы избежать путаницы в будущем, необходимо особо отметить то, что в этой книге, как книге по науке о компьютерах вообще, используются единицы метрической системы вместо традиционных английских единиц измерения (система фарлонг-стоун-дюжина). Основные метрические префиксы перечислены в табл. 1.4. Обычно префиксы сокращаются до первых букв, причем, если единица измерения больше 1, используются заглавные буквы. Например, база данных размером в 10 Тбайт занимает около 1012 байт на диске, а часы с интервалом в 100 пс будут тикать каждую 10~12 с. Так как приставки милли- и микро- начинаются с буквы «м», нужно было выбрать для них разные сокращения. Обычно для милли- используется «м», а для микро— сокращение «мк».
Таблица 1.4. Основные метрические префиксы
П ока- Явный вид Пре- Пока- Явный вид Пре-
затель фикс затель фикс
Ю -3 0,001 милли 103 1000 Кило
Ю-6 0,000001 микро 10е 1000 000 Мега
Ю-9 0,000000001 нано 109 1000 000 000 Гига
Ю-12 0,000000000001 пико 1012 1000 000 000 000 Тера
Ю-15 0,000000000000001 фемто 10'5 1000 000 000 000 000 Пета -
Ю-18 0,0000000000000000001 атго 1018 1000 000 000 000 000 000 Екза
Ю-21 0,0000000000000000000001 зепто 1021 1000000 000000 000 000 000 Зетта
Ю-24 0,0000000000000000000000001 йокто 1024 1 000 000 000 0Q0 000 000 000 000 Йотта
При измерении размеров памяти в компьютерной промышленности принято использовать единицы, значения которых несколько отличаются от общепринятых. Здесь Кило обозначает 210 (1024), то есть немного больше, чем 103 (1000), но память всегда измеряется в степенях двойки. Таким образом, 1 Кбайт содержит 1024 байта, а не 1000 байт. Точно так же 1 Мбайт содержит 220 (1 048 576) байт, а 1 Гбайт памяти равен 230 байт (1 073 741 824). Однако коммуникационная линия, передающая 1 Кбит/с, на самом деле передает 1000 бит/с, а 10-мегабитная локальная сеть работает со скоростью 10 000 000 бит/с, потому что эти скорости не являются степенью двойки. К сожалению, многие люди смешивают эти две системы, особенно когда говорят о размерах диска. Чтобы избежать неясности, мы будем использовать символы Кбайт, Мбайт и Гбайт для 210, 220 и 230 соответственно, а Кбит/с, Мбит/с и Гбит/с для 103,106 и 109 бит/с соответственно.
Резюме
Операционную систему можно рассматривать с двух точек зрения: как менеджер ресурсов и как расширенную машину. Как менеджер ресурсов операционная система рационально управляет различными частями системы. С точки зрения расширенной машины, работа операционной системы состоит в предоставлении пользователям виртуальной машины, более удобной, чем настоящий компьютер.
Операционные системы имеют достаточно долгую историю развития, которая начинается с тех дней, когда операционные системы заменили оператора, и продолжается до современных многозадачных систем. Большое значение имеют ранние системы пакетной обработки, многозадачные системы и системы для персональных компьютеров.
Поскольку операционные системы тесно взаимодействуют с оборудованием, некоторые знания об аппаратуре могут оказаться очень полезны для понимания работы операционной системы. Компьютеры состоят из процессоров, памяти и устройств ввода-вывода. Все эти части соединены шинами.
Основными понятиями, на которых построена операционная система, являются процессы, управление памятью, управление вводом-выводом, файловая система и безопасность. Каждое из них будет разобрано в соответствующей главе.
Сердцем любой операционной системы является набор системных вызовов, которые она может обработать. Они говорят о том, что реально делает операционная система. Мы рассмотрели четыре группы системных вызовов для UNIX. Первая группа работает с созданием и завершением процессов. Вторая группа предназначена для чтения и записи файлов. Третья нужна для управления каталогами. Четвертая включила в себя различные другие вызовы.
Операционная система может быть структурирована несколькими способами. Наиболее общими выделяемыми при структурировании понятиями являются: монолитные системы, иерархия слоев, система виртуальных машин, экзоядро или использование модели клиент-сервер.