Введение
Как известно, процесс проникновения информационных технологий практически во все сферы человеческой деятельности продолжает развиваться и углубляться. Помимо уже привычных и широко распространенных персональных компьютеров, общее число которых достигло многих сотен миллионов, становится все больше и встроенных средств вычислительной техники. Пользователей всей этой разнообразной вычислительной техники становится все больше, причем наблюдается развитие двух вроде бы противоположных тенденций. С одной стороны, информационные технологии все усложняются, и для их применения, и тем более дальнейшего развития, требуется иметь очень глубокие познания. С другой стороны, упрощаются интерфейсы взаимодействия пользователей с компьютерами. Компьютеры и информационные системы становятся все более дружественными и понятными даже для человека, не являющегося специалистом в области информатики и вычислительной техники. Это стало возможным прежде всего потому, что пользователи и их программы взаимодействуют с вычислительной техникой посредством специального (системного) программного обеспечения — через операционную систему.
Операционные системы являются основой программного обеспечения вычислительных машин (и их систем – вычислительных систем). Операционная система (далее – ОС) – это комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между пользователем (с его задачами) и аппаратными компонентами вычислительных машин (далее – ВМ) и вычислительных систем (далее – ВС), а с другой стороны предназначен для эффективного управления вычислительными процессами, а также наиболее рационального распределения и использования вычислительных ресурсов ВМ и ВС.
Обеспечение пользователю определенного уровня удобств осуществляется посредством того, что ОС представляет для него так называемую «расширенную» (или виртуальную) машину, которая избавляет пользователя от необходимости работать напрямую с аппаратными компонентами и берет на себя выполнение большинства рутинных операций. Таким образом, абстрактная «расширенная» м-шина, с которой, благодаря ОС, имеет дело пользователь, гораздо проще и удобнее в обращении, чем реальная аппаратура, лежащая в основе этой абстрактной машины.
Место операционной системы в общей структуре компьютера показано на рисунке 1.1. Внизу находится аппаратное обеспечение, которое во многих случаях само состоит из двух или более уровней (или слоев). Самый нижний уровень содержит физические устройства, состоящие из интегральных микросхем, проводников, источников питания, электронно-лучевых трубок и т. п. То, как они устроены и как работают, относится к сфере деятельности инженеров, специалистов по электронике.
Далее следует микроархитектурный уровень, на котором физические устройства группируются в функциональные блоки. Как правило, на микроархитектурном уровне находятся внутренние регистры ЦПУ (центральное процессорное устройство) и тракт данных, включающий арифметико-логическое устройство. На каждом такте процессора данные извлекаются из регистров и обрабатываются арифметико-логическим устройством (к примеру, участвуют в операции арифметического или логического суммирования). Результат сохраняется в одном или нескольких регистрах. В некоторых компьютерах функционирование тракта данных находится под управлением особой программы, называемой микропрограммой. В остальных случаях управление обеспечивают аппаратные схемы.
Тракт данных предназначен для выполнения наборов команд. Некоторые наборы могут быть выполнены в одном цикле тракта данных, другие же требуют нескольких тактов. В распоряжении команд находятся различные аппаратные средства, в том числе регистры. Аппаратное обеспечение и команды, доступные программисту на языке ассемблера, образуют архитектуру набора команд (Instruction Set Architecture, ISA). Зачастую данный уровень называют машинным языком.
Обычно машинный язык содержит от 50 до 300 команд, служащих преимущественно для перемещения данных в пределах компьютера, выполнения арифметических операций и сравнения величин. Управление устройствами на этом уровне осуществляется путем загрузки определенных величин в специальные регистры устройств. Например, диску можно дать команду чтения, записав в его регистры адрес места на диске, адрес в основной памяти, число байтов для чтения и направление действия (чтение или запись). На практике нужно передавать больше параметров, а информация о статусе операции, возвращаемая диском, достаточно сложна. Кроме того, при программировании многих устройств ввода-вывода (Input/Output, I/O) очень важную роль играют временные соотношения.
Основное предназначение операционной системы — скрыть все эти сложности и предоставить программисту более удобную систему команд. Чтение блока из файла в этом случае представляется намного более простым действием, чем в случае, когда программисту приходится думать о перемещении головок диска, о задержках, связанных с их установкой в нужное место и т. д.
Поверх операционной системы на нашем рисунке расположены остальные системные программы. Здесь находятся интерпретатор команд (оболочка), компиляторы, редакторы и т. д. Важно понимать, что подобные программы не являются частью операционной системы.
Операционная система как расширенная машина
Как было упомянуто ранее, архитектура (система команд, организация памяти, ввод-вывод данных и структура шин) большинства компьютеров на уровне машинного языка примитивна и неудобна для работы с программами, особенно в отношении ввода-вывода данных. Чтобы это утверждение не показалось голословным, кратко рассмотрим пример того, как происходит ввод-вывод данных с гибкого диска через совместимые микросхемы контроллера NEC PD765, используемые на большинстве персональных компьютеров с процессором Intel. (В этой книге мы будем использовать термины «гибкий диск» и «дискета» как синонимы.) Контроллер PD765 поддерживает 16 команд, каждая требует передачи от 1 до 9 байт в регистр устройства. Это — команды для чтения и записи данных, перемещения головки диска и форматирования дорожек, а также для инициализации, распознавания, установки в исходное положение и калибровки контроллера и приводов. Основными командами являются команды read (чтение) и write (запись). Каждая из них требует 13 параметров, упакованных в 9 байт. Эти параметры определяют такие вещи, как адрес блока на диске, который нужно прочитать количество секторов на дорожке, физический режим записи, расстановку промежутков между секторами. Они же сообщают, что делать с метками адресов удаленных данных. Если вы не можете сразу все осмыслить, не волнуйтесь — полностью это могут понять лишь несколько посвященных. Когда выполнение операции завершается, чип контроллера возвращает упакованные в 7 байт 23 параметра, отражающие наличие и типы ошибок. Но и этого недостаточно; программист при работе с гибким диском должен также постоянно знать, включен двигатель или нет. Если двигатель выключен, его следует включить (с длительным ожиданием запуска) прежде, чем данные будут прочитаны или записаны. Двигатель не может оставаться включенным слишком долго, так как гибкий диск изнашивается. Программист вынужден выбирать между длинными задержками во время загрузки и изнашивающимися гибкими дисками (с вероятностью потери данных на них). Даже если не вдаваться в подробности этого процесса, становится ясно, что обыкновенный программист вряд ли захочет столкнуться с такими деталями при работе с гибким диском (или жестким диском, работа с ним не менее сложна, но происходит совершенно иначе). Вместо этого программисту нужны простые высокоуровневые абстракции. В случае работы с дисками типичной абстракцией является коллекция именованных файлов, содержащихся на диске. Каждый файл может быть открыт для чтения или записи, прочитан или записан, а потом закрыт. А такие детали, как текущее состояние двигателя или механизм модифицированной частотной модуляции, используемый при записи, не должны отражаться в абстракции, предстающей перед пользователем.
С точки зрения пользователя операционная система выполняет функцию расширенной машины или виртуальной машины, для которой проще программировать и с которой легче работать, чем непосредственно с аппаратным обеспечением.
Операционная система как менеджер ресурсов
Концепция, в которой операционная система, прежде всего, рассматривается как удобный интерфейс пользователя, — это взгляд сверху вниз. Альтернативный взгляд, снизу вверх, дает представление об операционной системе как о механизме, предназначенном для управления всеми частями компьютера. Современные компьютеры состоят из процессоров, памяти, таймеров, дисков, мыши, сетевых интерфейсов, принтеров и огромного количества других устройств. В соответствии со вторым подходом назначение операционной системы — обеспечение организованного и контролируемого распределения процессоров, памяти и устройств ввода-вывода между различными программами, состязающимися за право их использовать.
История развития операционных систем
