Э. Таненбаум - Архитектура компьютера (1127755), страница 130
Текст из файла (страница 130)
Эту нишу быстро заполнила операционная система (Лч1Х, которая была снабжена исходными текстами, поэтому желающие могли дорабатывать ее до бесконечности. Одним из первых университетов, купивших ПЬ11Х, был Калифорнийский университет в Беркли. Поскольку в наличии имелись все исходные коды, в Беркли сумели существенно преобразовать ()Ь!1Х. Среди изменений было перенесение этой системы на миникомпьютер ЧАХ, создание виртуальной памяти со страничной организацией, расширение имен файлов с 14 до 255 символов, а также поддержка сетевого протокола ТСР/1Р, который сейчас широко используется в Интернете (во многом благодаря тому факту, что он был задействован в системе Вег!ге!еу ПЬ11Х). Пока в Беркли шла вся эта работа, компания АТЛЕТ самостоятельно продолжала совершенствовать (Лч 1Х, в результате в 1982 году появилась операционная система Яузгеш П1, а в 1984 — Будеш Ъ'.
В конце 80-х годов широко использовались две разные и совершенно несовместимые версии 11Ь!1Х: Вег!ге!еу 11Ь11Х и Бузтеш У. Такое положение вещей вместе с отсутствием стандартов на форматы программ в двоичном коде в значительной препятствовало коммерческому успеху ()Ь11Х. Поставщики программного обеспечения не могли писать программы для ()йПХ, поскольку не было никакой гарантии, что эти программы смогут работать на любой версии (1Ь!1Х (в этом отношении у МБ-РОЯ было значительное преимущество). После долгих споров организация по стандартам при институте 1ЕЕЕ (1пзгйпге оЕ Е1есббса1 апд Е!есггоп1с Епй!пеегз — институт инженеров по электротехнике и электронике) выпустила стандарт РОЯ1Х (РогГаЫе Орегат|пй Яузгеш 1пгег1асе — интерфейс переносимых операционных систем), известный также как стандарт 1ЕЕЕ Р1003. Позднее этот стандарт стал международным. Примеры операционных систем 519 Таблица 6.3.
Системные вызовы Окйх Категория Примеры Открытие, чтение, запись, закрытие и блокировка файлов Создание и удаление каталогов; перемещение файлов в каталоги Управление файлами Управление каталогами Управление процессами Порождение, завершение и трассировка процессов, передача сигналов Разделение общей памяти между процессами, защита страниц Идентификация пользователя, группы, процесса; установка приоритетов Управление памятью Получение и установка параметров Даты и периоды времени Установка времени доступа к файлам; использование временных интервалов; рабочий профиль программы Установка и выделение соединений; отправка и получение сообщений Учет использования ресурсов; манипуляция дисковыми квотами; перезагрузка системы Работа в сети Прочее Стандарт РО31Х состоит из нескольких частей, каждая из которых посвящена отдельной области П1к11Х.
Первая часть, Р1003.1, определяет системные вызовы; вторая часть, Р1003.2, — основные прикладные программы и т. д, Стандарт Р1003.1 определяет около 60 системных вызовов, которые должны поддерживаться всеми системами. Это вызовы для чтения и записи файлов, создания новых процессов и т. д. Сейчас практически все системы П1к11Х поддерживают системные вызовы, перечисленные в Р1003.1, однако многие системы поддерживают и дополнительные системные вызовы, в частности те, что были реализованы в Яузьеш Ъ" и в Вегке1еу П1к11Х. Обычно к набору РОЯ1Х добавляются до 200 системных вызовов. В 1987 году автор этой книги выпустил исходный код для одной из версий П)к11Х, названной М1МПХ и предназначенной для установки в университетских компьютерных системах [2041.
Одним из студентов, познакомившихся с МПк1ПХ в университете Хельсинки и установивших эту систему на домашнем компьютере, оказался Линус Торвальдс (1.1ппз Тогуа1сЬ). Изучив М11ч1Х в деталях, Линус решил написать собственную версию операционной системы, которая получила имя 1.1ппх и стала со временем весьма популярной. М11к11Х и Бшпх похожи, и поэтому почти все сведения о М11ч1Х, изложенные в этой главе, актуальны и по отношению к 1.1пцх (если не указано иное).
По внутренней структуре разнообразные версии П1к11Х существенно различаются, но, поскольку мы по большей части акцентируем внимание на единообразном интерфейсе системных вызовов, эти различия в данном случае несущественны. В П1ьгаЗРАВС 1П используется операционная система Яо!апз, и хотя основой для нее является версия ЯузФеш У, она также поддерживает многие вызовы Вегйе1еу П1ч1Х. В табл. 6.3 перечислены категории системных вызовов Яо1аг1з. Системные вызовы управления файлами и каталогами — это самая важная и объемная категория.
Большинство из них относятся к стандарту Р1003.1, остальные берут начало в Яузгеш Ъ'. 520 Глава 6. Уровень операционной системы Сфера использования сетей в большей степени относится к Ветке!еу П1ч11Х, а не к Яуз1ещ 'тг. Именно в Беркли было введено понятие сокета как конечной точки сетевого соединения. Моделью для этой концепции стали 4-проводные настенные розетки для телефонов. Процесс в системе 111ч1Х может создать сокет, подключиться к нему и установить соединение с сокетом на удаленном компьютере. Через это соединение можно затем пересылать данные в обоих направлениях, обычно по протоколу ТСР/1Р.
Поскольку сетевые технологии в системе ПЫ1Х применялись десятилетиями, значительное число серверов в Интернете используют именно 131ч11Х. Существует много разных версий П1ч1Х, и каждая из них чем-то отличается от всех остальных, поэтому структуру этой операционной системы описать трудно. Тем не менее схема, изображенная на рис. 6.24, применима к большинству из них. Внизу показаны драйверы устройств, которые изолируют файловую систему от аппаратного обеспечения.
Изначально каждый драйвер устройства писался без учета всех остальных и представлял собой независимую единицу. Это привело к многочисленным дублированиям, поскольку многие драйверы должны поддерживать управление потоками, исправление ошибок, приоритеты, отделение данных от команд и т. д. По этой причине Деннис Ритчи для использования принципа модульности при написании драйверов придумал структуру под названием поток ввода-вывода (зсгеаш). При наличии потока ввода-вывода можно установить двухстороннее соединение между пользовательским процессом и устройством и вставить между ними один или несколько модулей.
Пользовательский процесс передает данные в поток ввода-вывода, затем эти данные обрабатываются или просто передаются дальше каждым модулем до тех пор, пока не дойдут до устройства. При передаче данных от устройства процессу все происходит аналогично. > Пользовательский режим Привилегированный режим рис. 6.24.
Структура типичной системы пйГХ Над драйверами устройств находится файловая система. Она управляет файлами, каталогами, размещением дисковых блоков, защитой и выполняет многие другие функции. В системе файлов имеется так называемый кэш блоков (Ыоск Примеры операционных систем 521 сасЬе), предназначенный для хранения недавно считанных с диска блоков на случай, если они понадобятся еще раз. Некоторые файловые системы использовались многие годы.
Среди них можно назвать быструю файловую систему Вегйе1еу 1143) и файловые системы с журнальной структурой 1175, 184~. Еще одна часть ядра системы ()Ы1Х вЂ” механизм управления процессами. Он выполняет различные функции, в том числе поддерживает взаимодействие между процессами (1пгегРгосезз Сошшпп1саг1оп, 1РС) и их синхронизацию, что позволяет избежать состояния гонок. Код управления процессами также занимается планированием процессов на основе их приоритетов. Кроме того, он обрабатывает сигналы, которые представляют собой особую (асинхронную) форму программных прерываний. Наконец, он управляет памятью.
Большинство систем 1)Ы1Х поддерживают виртуальную память с подкачкой страниц по требованию, иногда с некоторыми дополнительными особенностями (например, несколько процессов могут совместно использовать общие области адресного пространства). ПЫ1Х изначально задумывалась как весьма компактная система; компактность была призвана обеспечить повышение надежности и производительности. Первые версии ПЫ1Х были полностью текстовыми и ориентировались на терминалы, которые могли отображать 24 или 25 строк по 80 АЯСП-символов.
Пользовательским интерфейсом управляла программа, которая называлась оболочкой и предоставляла интерфейс командной строки. Поскольку оболочка не является частью ядра, в ()Ы1Х легко добавлять новые оболочки, и с течением времени было разработано несколько чрезвычайно сложных оболочек. Позднее, когда появились графические терминалы, в Массачусетском технологическом институте для (1Ы1Х была разработана оконная система, получившая название Х %'1пг(о«гз.
Еще позже поверх Х Жшдокз был установлен полнофункциональный графический пользовательский интерфейс (бгарЬ(са! Пзег 1п~ег(асе, О1Л), названный МОСК Поскольку ядро должно было оставаться компактным, практически весь код для Х 7йпйоч з и Мойй работает вне ядра в пользовательском режиме. ЪЧ11ПбОИВ ХР Первая машина 1ВМ РС, выпущенная в 1981 году, была оснащена 16-разрядной операционной системой реального режима, ориентированной на индивидуального пользователя и имевшей интерфейс командной строки.