Глава 1. Введение в операционную систему UNIX

Содержание

Основные концепции операционных систем
Обзор компьютерных систем
Назначение операционной системы
Архитектура операционной системы
Место UNIX в истории вычислительных систем
Классификация операционных систем по назначению
Резюме
Дополнительные материалы
Вопросы
Презентация
Архитектура UNIX. Файлы и устройства
Особенности архитектуры UNIX
Файловая система UNIX
Устройства и драйверы
Резюме
Дополнительные материалы
Вопросы
Презентация
Архитектура UNIX. Процессы
Управление памятью
Управление процессами
Межпроцессное взаимодействие
Резюме
Дополнительные материалы
Вопросы
Презентация

Современные открытые операционные системы, такие как Linux или OpenBSD, предсталяют собой наследие операционной системы UNIX, появившейся в начале 1970-х годов и оказавшей огромное влияние на практические реализации операционных систем и развитие всей области информационных технологий. Поэтому изучение любой из современных UNIX-подобных операционных систем невозможно без рассмотрения основных идей, заложенных в оригинальный UNIX.

В этой главе изложены основы теории операционных систем и то, как эти концепции реализованы в операционной системе UNIX. Также в ней рассматриваются основные этапы развития операционных систем с момента их возникновения до настоящего времени.

Основные концепции операционных систем

Обзор компьютерных систем

Презентация 1-01: обзор компьютерных систем

Все современные компьютерные системы построены по трём принципам Джона фон Неймана: программного управления, однородности памяти и адресности. Эти принципы можно раскрыть следующим образом: программа, состоящая из набора команд, и исходные данные хранятся в общей памяти, каждая ячейка которой имеет свой адрес (набор всех адресов, к которым может обращаться программа, называется адресным пространством); каждая команда вместе с данными выбирается из памяти и исполняется процессором, выбор команды осуществляется с помощью специального счётчика команд, который содержит в себе адрес исполняемой в данный момент команды; команды расположены в памяти друг за другом, за счёт чего организуется последовательная выборка из памяти цепочки команд.

На основании этого можно выделить три основных структурных элемента компьютера (см. Рисунок 1.1, «Компоненты компьютерных систем»):

Процессор

Осуществляет контроль за действиями компьютера, а также выполняет функцию обработки данных согласно программе. В современных системах может быть один и больше центральных процессоров.

Основная память

В ней хранятся программы и данные. Как правило является временной (информация сохраняется, пока подаётся питание).

Устройства ввода-вывода

Служат для передачи данных между компьютером и внешним окружением, состоящим из переферийных устройств, в число которых входят внешняя память, коммуникационное оборудование, терминалы.

Перечисленные компоненты вычислительной системы объединяются с помощью системной шины. Термином шина принято обозначать структуры и механизмы, обеспечивающие взаимодействие между разными компонентами системы, в данном случае — процессором, основной памятью и устройствами ввода-вывода.

Рисунок 1.1. Компоненты компьютерных систем

Компоненты компьютерных систем


Презентация 1-02: центральный процессор

Центральный процессор извлекает программу из памяти, декодирует и исполняет машинные команды. Обычно команды исполняются последовательно, но иногда возможны переходы к другим участкам программы, например, по заданному условию.

В каждый момент времени процессор может испонять только одну программу. Многие современные операционные системы относятся к многозадачным, т. е. в системе одновременно может исполняться несколько задач, число которых заранее не известно. Так как число процессоров конечно, необходимы алгоритмы, позволяющие чередовать исполнения процессов так, чтобы каждый из них получал процессорное время. Этот подход называется псевдопараллелизмом (см. Рисунок 1.2, «Пример пcевдопараллелизма»): каждому процессу выделяется квант процессорного времени, по истечении которого управление передается другому процессу (это действие называют переключением контекста). Также управление может быть передано другому процессу, если исполняемый процесс ожидает появление некоего системного ресурса, например, завершения операции ввода-вывода.

В случае многопроцессорных компьютеров принцип остаётся прежним — на каждом процессоре исполняется только один процесс в каждый момент времени, повышение эффективности достигается «экстенсивным путём», за счёт нескольких одновременно работающих процессоров. Логика алгоритмов псевдопараллелизма несколько усложняется на многопроцессорных архитектурах за счёт необходимости балансировать нагрузку между несколькими процессорами, минимизируя время простоя каждого. Это означает, что каждый следующий квант процессорного времени может быть выдан процессу на любом из доступных процессоров.

Рисунок 1.2. Пример пcевдопараллелизма

Пример пcевдопараллелизма


Презентация 1-03: память

Конфигурация памяти компьютера определяется в основном тремя параметрами: объём, быстродействие, стоимость. Очевидно, между этими противоречивыми характеристиками существует компромисс, который представляет собой иерархию памяти (см. Рисунок 1.3, «Иерархия видов памяти»). Таким образом, к дорогим устройствам с высокой производительностью и малым объёмом добавляются дешёвые устройства с меньшей скоростью доступа и большим объёмом. При этом ярко выражена функция каждого из уровней: регистровая память хранит операнды команд, кэш используется для хранения самых используемых участков памяти, основная память хранит исполняющиеся программы, внешняя — сохраняет данные и программы между запусками.

Рисунок 1.3. Иерархия видов памяти

Иерархия видов памяти


Особое значение имеет основная память — в ней хранятся все исполняющиеся программы и данные к ним. Программа может обращаться к любой ячейке памяти в своём адресном пространстве. Существует несколько видов адресных пространств: реальное (соответствует ячейкам физической памяти) и виртуальное (каким-то образом проецируемое на реальное адресное пространство). В современных операционных системах каждый процесс обладает своим собственным адресным пространством, так что не может нанести вред памяти других процессов.

Презентация 1-04: управление вводом-выводом

Современные компьютеры состоят из большого числа узлов. С аппаратной точки зрения, внешние устройства — это все компоненты компьютера за исключением процессора и оперативной памяти. Взаимодействие с внешними устройствами (или устройствами ввода-вывода) осуществляется через специальные устройства, которые называются шинами и представляют собой по сути набор проводов с заданными характеристиками и правилами использования. В современных компьютерах как правило одновременно представлено несколько шин: например, PCI, PCI-Express, USB.

Взаимодействие с устройствами ввода-вывода может происходить тремя способами: программируемый ввод-вывод, ввод-вывод с помощью прерываний, прямой доступ к памяти (Direct Memory Access, DMA).

В первом случае процессор явно обращяется к контроллеру внешнего устройства, вызывая управляющие команды и обмениваясь данными. Так как скорость работы процессора значительно превышает скорость работы внешних устройств, при таком способе обмена простои в работе процессора будут очень велики. Для избежания этой ситуации используется механизм прерываний: выполнение программы в процессоре может быть прервано, когда данные на внешнем устройстве готовы для чтения или записи — при этом запускается специальная функция-обработчик прерывания, затем выполнение исходной программы возобновляется. При использовании прямого доступа к памяти, процессор не участвует в процессе ввода-вывода — за копированием данных из устройства в основную память следит специальный контроллер прямого доступа к памяти.

Назначение операционной системы

Презентация 1-05: Операционная система

Операционная система — это комплекс взаимосвязанных программ, который действует как интерфейс между приложениями и пользователями с одной стороны и аппаратурой компьютера с другой стороны. В соответствии с этим определением операционная система выполняет две основные функции:

  • предоставление пользователю или программисту вместо реальной аппаратуры расширенной виртуальной машины (которую иногда называют операционная среда), с которой удобно работать и которую легче программировать;
  • повышение эффективности использования компьютера путём рационального управления его ресурсами в соответствии с некоторыми критериями.

Операционная система как виртуальная машина

Презентация 1-06: виртуальная машина

Для того чтобы успешно решать свои задачи, в настоящее время пользователь или программист может обойтись без досконального знания аппаратного устройства компьютера и может даже не знать системы команд процессора (для программистов существует множество библитек и высокоуровневых фукций).

Программное и аппаратное обеспечение можно выстроить в виде иерархии, каждый уровень которой представляет собой виртуальную машину со своим интерфейсом (например, Рисунок 1.4, «Уровни вычислительной системы»), за которым скрываются детали нижележащего уровня.

Рисунок 1.4. Уровни вычислительной системы

Уровни вычислительной системы


Операционная система избавляет програмимистов от необходимости напрямую работать с аппаратурой, предоставляя им простой интерефейс (файловый, сетевой и т. п.), а также берет на себя все рутинные операции по управлению аппаратными устройствами компьютера: физической памятью, таймерами, устройствами ввода и т. п.

В результате реальная машина, способная выполнять элементарные действия, определенные её набором команд, превращается в виртуальную машину, выполняющую набор более высокоуровневых функций. Виртуальная машина также управляется командами, но более высокого уровня: создание и удаление файлов, установка сетевых соединений и т. п. В свою очередь, эти команды также могут быть объединены в виртуальную машину с более высоким уровнем абстракции, например графический пользовательский интерфейс, который оперирует объектами.

Операционная система как менеджер ресурсов

Презентация 1-07: управлнение ресурсами

Операционная система не только предоставляет пользователям и программистам удобный интерфейс к аппаратным средствам компьютера, но и является механизмом, распределяющим ресурсы компьютера.

В разделе «Обзор компьютерных систем» уже рассматривались основные ресурсы компьютера: процессорное время, основная память, всевозможные внешние устройства; также к ресурсам можно отнести таймеры и некоторые процедуры операционной системы. Ресурсы эти распределяются между процессами. Процесс предсталяет собой базовое понятие большинства операционных систем, и чаще всего определяется как программа, находящаяся в стадии выполнения.

Управление ресурсами вычислительной системы с целью наиболее эффективного их использования — назначение операционной системы. Многозадачная операционная система занимается переключением процессора с одного процесса на другой, максимизируя его загрузку, а также отслеживает конфликты при обращении к общим ресурсам.

Критерий эффективности, в соответствии с которым операционная система организует управление ресурсами компьютера, может быть различным и зависит от назначения информационно-вычислительной системы, частью которой она является. Например, в одних системах важен такой критерий, как пропускная способность — число задач, выполненных за единицу времени, а в других — время реакции (время, прошедшее с момента ввода команды до получения отклика системы).

Архитектура операционной системы

Презентация 1-08: архитектура операционной системы

Операционная система выполняет множество функций, которые обычно группируются в соответствии с видом ресурса, которым управляет операционная система, либо со специфической задачей, применимой ко всем видам ресурсов. Можно выделить следующие функции современной многозадачной многопользовательской операционнной системы: управление процессами, управление памятью, управление файлами и внешними устройствами, защита данных и администрирование, интерфейс прикладного программирования, пользовательский интерфейс.

Наиболее общим подходом к структуризации операционной системы является её разделение всех её модулей на две группы:

  • ядро — модули, выполняющие основные функции операционной системы, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекста, управление памятью, обработка прерываний, работа с внешними устройствами и т. п.
  • компоненты, реализующие дополнительные функции операционной системы — всевозможные служебные программы, или утилиты.

Для надежного управления ходом выполнения программ операционная система должна иметь по отношению к пользовательским процессам оперделённые привилегии — иначе некорректно работающее приложение сможет вмешаться в работу операционной системы. Например, взаимодействие с аппаратурой возможно только на самом высоком уровне привилегий, который не дается обычным программам. Чаще всего именно ядро является той частью операционной системы, которая работает в привилегированном режиме.

Большинство современных операционных систем представляет собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Существует ряд универсальных подходов к стуктурированию операционных систем, среди которых можно выделить монолитную и микроядерную архитектуры.

Монолитная операционная система

Презентация 1-09: монолитное ядро

Большинство операционных систем использует монолитное ядро, которое компонуется как одна программа, работающая в привилегированном режиме и использующая быстрые переходы с одной процедуры на другую, не требующие переключения из привилегированного режима в пользовательский и наоборот (хоть этот процесс и происходит с аппаратной поддержкой, он занимает значительное время). Такое ядро делится на основные компоненты и модули, реализующие дополнительную функциональность, — например, работу со специфическими внешними устройствами и файловыми системами (см. Рисунок 1.5, «Структура монолитного ядра операционной системы»). Переход из пользовательского режима в режим ядра осуществляется через системные вызовы — интерфейс ядра операционной системы.

Рисунок 1.5. Структура монолитного ядра операционной системы

Структура монолитного ядра операционной системы


Микроядерная операционная система

Презентация 1-10: микроядро

Альтернативой является построение операционной системы на базе микроядра, работающего также в привилегированном режиме и выполняющего только минимум функций по управлению аппаратурой. В этом случае более высокоуровневые функции операционной выполняются специализированными компонентами — серверами, работающими в пользовательском режиме. Управление и обмен данными при этом осуществляется через передачу сообщений, доставка которых является одной из основных функций микроядра (см. Рисунок 1.6, «Структура операционной системы с микроядром»).

При таком построении операционная система работает значительно более медленно, так как часто выполняются переходы между привилегированным и пользовательским режимом, зато система получается более гибкой — её функции можно наращивать или модифицировать, добавляя, изменяя или исключая серверы пользовательского режима. Кроме того, серверы хорошо защищены друг от друга, как и любые пользовательские процессы.

Рисунок 1.6. Структура операционной системы с микроядром

Структура операционной системы с микроядром


Место UNIX в истории вычислительных систем

Презентация 1-11: история операционных систем

За полвека существования операционные системы прошли сложный путь, огромное влияние на который оказало развитие вычислительной аппаратуры. Хотя большинство алгоритмов и подходов в операционных системах было разработано в 1960–1970-х годах, в настоящее время операционные системы продолжают развиваться и видоизменяться согласно потребностям пользователей. Можно выделить три основные характеристики, ставшие уже обязательными для большинства операционных систем: переносимость между различными аппаратными архитектурами, многозадачность и многопользовательский режим работы.

В этом разделе не будет излагаться подборная и полная история операционных систем вообще и даже долгая и запутанная история самой UNIX — за этим стоит обратиться к специальным изданиям (см. список литературы). Здесь будет только обозначена роль UNIX в развитии самого представления о том, что такое «операционная система» и основные этапы распространения UNIX в разных типах вычислительных систем.

Что было до операционных систем

С середины 1950-х годов началось бурное развитие вычислительной техники, связанное с появлением полупроводниковых элементов. Вместе с этим заметный прогресс наблюдался в автоматизации программирования и организации вычислений, в эти годы появились первые алгоритмические языки (Алгол, Фортран, Кобол). Для организации эффективного совместного использования трансляторов, библиотечных программ и загрузчиков в штат многих вычислительных комплексов были введены специальные сотрудники — операторы. Но как бы быстро они ни работали, они не могли состязаться в производительности с работой компьютера. Для решения этой проблемы были разработаны системы пакетной обработки, которые автоматизировали последовательность действий оператора. Оператор составлял пакет заданий, которые в дальнейшем без его участия запускались на выполнение специальной программой — монитором.

Операционные системы для мэйнфреймов

В 1965–1975 годах появилось следующее поколение компьютеров: стала возможна реализация сложных компьютерных архитектур (например, IBM/360) и практически всех основных механизмов, присущих современным операционным системам: многозадачность, поддержка многотерминального многопользовательского режима работы, виртуальная память, файловые системы, разганичение доступа и сетевая работа. Но такие системы всё ещё были очень редки и чрезвычайно дороги.

Одним из главных достижений стал переход к мультипрограммированию — способ организации вычислительного процесса, при котором в памяти компьютера одновременно находится несколько программ, попеременно выполняющихся на одном процессоре. Для того чтобы у пользователя оставалось ощущение непосредственного взаимодействия с компьютером, был разработан такой вариант мультипрограммирования, как системы разделения времени. Каждый пользователь работает за своим терминалом (подробнее терминалы рассматриваются в разделе «Терминал»), тогда как все процессы работают псевдопараллельно (как было показано выше, в разделе «Обзор компьютерных систем»).

Появление операционной системы UNIX

В середине 1970-х годов наряду с мэйнфреймами получили широкое распространение мини-компьютеры (слово «мини-» сейчас может показаться смешным, такие компьютеры занимали объём в несколько шкафов), такие как PDP-11. Архитектура таких компьютеров была заметно упрощена по сравнению с мэйнфреймами (что значительно снижало стоимость — с миллионов до сотен тысяч долларов), что сказалось на операционных системах для этих компьютеров — они были лишены части функций, например многопользовательского режима работы.

Важным этапом в истории мини-компьютеров и операционных систем в целом явилось появление операционной системы UNIX в лаборатории Bell Labs компании AT&T. Изначально она была разработана для мини-компьютера PDP-7 и включала в себя множество архитектурных особенностей более сложных операционных систем, такие как разделение времени и многопользовательская работа. В 1970-х годах началось массовое использование операционной системы UNIX, к этому времени она была переписана на языке программирования высокого уровня С, что заметно облегчило её переносимость. Поскольку эта операционная система распространялась вместе с исходными текстами, она стала первой операционной системой, в которою могли вносить изменения энтузиасты. Очень значительную роль открытые исходные тексты UNIX сыграли в распространении этой системы в образовательной и научной среде, прежде всего в университетах. Наиболее известен в этой области проект BSD (Berkley Software Distribution)  — академическая версии UNIX, созданная в университете Беркли. Впоследствии BSD стал основой для очень многих коммерческих и некоммерческих проектов, в том числе широко распространённой сегодня свободной реализации UNIX — FreeBSD.

Удачные архитектурные решения UNIX, гибкость, элегантность, мощные функциональные возможности и открытость позволили этой операционной системе завоевать рынок не только мини-компьютеров, но и мэйнфреймов, серверов, рабочих станций на базе RISC-процессоров. Многие появившиеся впоследствии операционные системы позаимствовали некоторые ключевые идеи UNIX: переносимость на основе языка C, иерархическую файловую систему, интерфейс командной строки.

Развитие операционных систем в глобальных сетях

В начале 1980-х годов в рамках экспериментальной сети ARPANET впервые появился рабочий вариант стека протоколов TCP/IP. Переход на TCP/IP был ускорен ещё и тем, что его первая реализация была создана в рамках BSD UNIX . Новая глобальная сеть, получившая название Интернет, стала средой для развития информационных технологий, создания всевозможных сообществ разработчиков и развития открытых систем. Кроме того, несколько позже BSD стала основой свободной сегодня широко распространённой реализации UNIX — FreeBSD.

В этот период появляется множество коммерческих версий операционной системы UNIX: SunOS (в дальнейшем Solaris), HP-UX, Irix, AIX и многие другие. Разнообразие версий породило проблему их несовместимости, которую периодически пытались решать различные организации. В результате были приняты стандарты POSIX (Portable Operation System Interface based on uniX — интерфейс для переносимых операционных систем, основанных на UNIX), включающие формальное описание программного интерфейса операционной системы, описание командной оболочки, политики безопасности и т. п.

Операционные системы для персональных компьютеров

Ещё одно знаменательное событие начала 1980-х годов — появление персональных компьютеров. С точки зрения архитектуры они мало отличались от мини-компьютеров и рабочих станций, но стоимость их была значительно ниже. Это позволило персональным компьютерам распространиться повсеместно, и это в значительной степени изменило современные информационные технологии.

Первые операционные системы для персональных компьютеров были очень просты хотя бы в силу весьма ограниченных ресурсов. Наглядным примером может служить DOS, получивший весьма широкое распространение в версии MS-DOS. По сравнению с операционными системами для «настоящих» компьютеров операционные системы для ПК не имели многих существенных свойств: в частности многозадачности и многопользовательской работы. Однако основные области примеменения ПК требовали не этого, поэтому недостатки в функциональности ОС компенсировались активным развитием графического интерфейса пользователя. В частности, MacOS для компьютеров Macintosh (в ранних версиях называвшаяся попросту System Software) была одной из первых операционных систем, которая вообще не имела интерфейса командной строки, а управлялась исключительно средствами графического интерфейса. Со временем подобные операционные системы (например, Microsoft Windows) получили сетевую подсистему и возможность работать с несколькими программами одновременно.

В первую очередь благодаря низкой стоимости аппаратного и программного обеспечения, персональные компьютеры начали вытеснять прежде распространенные рабочие станции и мэйнфреймы. На домашних и офисных компьютерах в 1980-е повсеместно распространились персональные компьютеры в основном от IBM/PС, а вместе с ними и операционные системы компании Microsoft. В этот период наследники UNIX занимали более «промышленную» нишу в вычислительных технологиях (крупные вычислительные центры, сети).

К концу 1980-х персональные компьютеры были уже далеко не так ограничены в ресурсах, как на десять лет раньше, развивалась и архитектура процессоров, что в целом создало возможность реализации на ПК многозадачных и многопользовательских систем. К таким системам относятся OS/2 (не получила широкого распространения) и Windows NT. Кроме того, появилась и была реализована возможность перенести на ПК и UNIX. Первый такой опыт был сделан Эндрю Танненбаумом в образовательных целях: он создал систему MINIX (MINimal unIX), которую можно было использовать на IBM/PC в образовательных целях для демонстрации некоторых основных принципов операционных систем. Однако MINIX никогда не был полноценной операционной системой для повседневной работы.

Заслуга полноценного переноса UNIX на IBM/PC принадлежит Линусу Торвальдсу, который в 1991 году опубликовал первую версию написанной им реализации ядра UNIX-совместимой операционной системы для IBM/PC x386, известной сегодня как Linux. Благодаря открытой публикации и активному участию множества этузиастов, Linux динамично развивался и быстро стал полноценной и современной операционной системой и дал путь широкому распространению идей и технологий UNIX в том числе и на персональных компьютерах. Linux как реализация UNIX был в свою очередь перенесён и на другие вычислительные архитектуры.

Технологии UNIX пришли и на современные персональные компьютеры Macintosh: начиная с версии 10 (Mac OS X) вся базовая часть операционной системы Mac OS, работающая с ресурсами и оборудованием, представляет собой один из вариантов FreeBSD — Darwin.

Операционные системы для встраиваемых систем

В начале 21-го века широкое распространение получили встраиваемые и мобильные устройства. Благодаря развитию вычислительных систем такие устройства, как мобильные телефоны или домашние бытовые приборы обрели возможности, сравнимые с персональными компьютерами. В настоящее время в этой области существует множество операционных систем, среди которых всё большую роль начинают играть открытые операционные системы, наследующие архитектуру и принципы работы UNIX.

Классификация операционных систем по назначению

Презентация 1-12: классификация операционных систем

Операционные системы являются неотъемлемой частью информационно-вычислительных комплексов. Такие комплексы могут выполнять весьма различные функции и могут быть по этому признаку разделены на некоторые классы.

Системы реального времени

Основной особенностью таких систем является сторого регламентированное время отклика на внешние события. Другим важным параметром является одновременная обработка — даже если одновременно происходит несколько событий, реакция системы на них не должна запаздывать. Компьютеры для управления самолетами, ядерными реакторами и подобными сложными системами обычно работают под управлением специализированных операционных систем реального времени.

Операционные системы реального времени принято делить на два класса: жесткого и мягкого реального времени. Можно выделить признаки систем жёсткого реального времени:

  • недопустимость никаких задержек ни при каких условиях;
  • бесполезность результатов при опоздании;
  • катастрофа при задержке реакции;
  • цена опоздания бесконечно велика.

Хороший пример системы жесткого реального времени — бортовая система управления самолетом. Среди систем с жестким реальным временем можно выделить распространённую коммерческую операционную систему QNX, которая основывается на UNIX и имеет схожий интерфейс.

Система мягкого реального времени характеризуется следующими признаками:

  • за опоздание результатов приходится платить;
  • снижение производительности системы, вызванное запаздыванием реакций, приемлемо.

Операционные системы мягкого реального времени могут использоваться в мобильных и коммуникационных системах — там, где цена опаздания не так велика. В настоящее время многие многозадачные операционные системы разделения времени модифицируются для того, чтобы соответствовать требованием мягкого реального времени. Среди примеров можно выделить варианты Windows NT и специфические версии ядра Linux.

Встраиваемые системы

Такие системы работают на специфическом аппаратном обеспечении (автомобили, микроволновые печи, роботы) и также обладают некоторыми требованиями к времени отклика системы. Как правило, в таких операционных системах применяются специфичные алгоритмы, минимизирующие потребляемые ресурсы. В настоящее время широкое распространение имеют операционные системы Windows Embedded фирмы Microsoft и различные версии операционной системы Linux.

Операционные системы для супер-компьютеров

Для решения очень сложных и объёмных вычислительных задач создается специализированные компьютеры, содержащие сотни и тысячи процессоров. Для управления такими системами применяются специальные операционные системы, в которых особенно важны вопросы производительности и скорости обмена между элементами системы. В настоящее время самыми распространёнными среди сверхпроизводительных систем являются модификации операционной системы Linux.

Операционные системы для серверов

С момента расцвета сети Интернет нишу серверов (специализированных систем, предоставляющих по сети какой-то сервис клиентским системам) занимают универсальные многопользовательские многозадачные операционные системы. Для таких систем имеют большое значение имеют стабильность работы, безопасность и производительность, меньшее — интерфейс пользователя.

Примерами таких систем могут служить: банковские системы, веб-серверы и серверы баз данных, файловые серверы масштаба предприятия, многопользовательские терминальные серверы и т. п. Традиционно этот класс систем обслуживается коммерческими операционными системами — различными версиями UNIX, операционными системами от компаний IBM, Novell, а затем и Microsoft. Сейчас все большую популярность в этом классе систем завоёвывают открытые и свободные операционные системы, базирующиеся на UNIX.

Операционные системы для домашних и офисных компьютеров

Современные персональные компьютеры обладают высокой производительностью и богатыми мультимедийными возможностями. Для операционных систем этого класса важны удобный пользовательский интерфейс и поддержка широкого круга устройств для персональных компьютеров. Самыми распространёнными операционными системами в этом классе являются продукты компании Micrososft, также на персональных компьютерах Apple используется операционная система MacOS (начиная с версии 10 она также основывается на UNIX).

Исследовательские операционные системы

Многие алгоритмы и подходы в построении операционных систем не пошли дальше исследовательских лабораторий. Например, операционные системы, основанные на микроядре, в чистом виде не используются до сих пор из-за огромных затрат на пересылку сообщений. Одной из самых известных микроядерных операционных систем является Mach, на которой основывается целый ряд операционных систем, в том числе GNU Hurd, реализующая интерфейс UNIX.

Резюме

Презентация 1-13: резюме

В первой лекции было предложено общее введение в операционные системы.

Операционные системы существуют в рамках информационно-вычислительных систем, которые сейчас, как и много лет назад, построены в соответствии с принципами фон Неймана и содержат три основных компонента: центральный процессор, основную память и устройства ввода-вывода.

Операционная система является комплексом программ, объединяющих пользователей, программы и аппаратуру компьютера. Выделяют две основные функции операционной системы: предоставление виртуальной машины и управление ресурсами компьютера.

Операционная система состоит из модулей, среди которых выделяют ядро, как основу всей операционной системы. Существует два типа ядер: монолитные и микроядра.

За время существования операционные системы прошли длительную эволюцию, однако большинство идей, алгоритмов и архитектурных решений было реализовано в 1960–70-е годы: тогда появились многозадачность, многопользовательская работа, файловые системы и т. п.

Современные операционные системы можно классифицировать по назназначению. При этом выделяют операционные системы: реального времени, для встраиваемых систем, для супер-компьютеров, для серверов, для домашних и офисных компьютеров и исследовательские.

Ключевые термины: три принципа фон Неймана, адресное пространство, системная шина, центральный процессор, многозадачные ОС, псевдопараллелизм, квант процессорного времени, переключение контекста, иерархия памяти, адресное пространство, прерывание, прямой доступ к памяти, операционная система, виртуальная машина, ресурс, процесс, пропускная способность, время реакции, ядро, утилиты, привилегированый режим, монолитное ядро, системный вызов, микроядро, сообщение, системы пакетной обработки, мультипрограммирование, системы разделения времени, ОС реального времени, жёсткое реальное время, мягкое реальное время, сервер

Дополнительные материалы

  1. Курячий Г. В. Операционная система UNIX. — М.: Интуит.Ру, 2004. — 292 с.: ил.
  2. МакКузик М. К., Невилл-Нил Дж. В. FreeBSD: архитектура и реализация. — М.: КУДИЦ-ОБРАЗ, 2006. — 800 с.
  3. Олифер В. Г., Олифер Н. А. Сетевые операционные системы. — СПб.: Питер, 2005. — 539 с.: ил.
  4. Рэймонд Э. С. Искусство программирования для UNIX. — М.: Издательский дом «Вильямс», 2005. — 544 стр.: ил.
  5. Вильям Столлингс Операционные системы, 4-е издание. — М.: Издательский дом «Вильямс», 2002. — 848 с.: ил.

Презентация

Рисунок 1.7. Презентация 1-01: обзор компьютерных систем

Презентация 1-01: обзор компьютерных систем


Рисунок 1.8. Презентация 1-02: центральный процессор

Презентация 1-02: центральный процессор


Рисунок 1.9. Презентация 1-03: память

Презентация 1-03: память


Рисунок 1.10. Презентация 1-04: управление вводом-выводом

Презентация 1-04: управление вводом-выводом


Рисунок 1.11. Презентация 1-05: Операционная система

Презентация 1-05: Операционная система


Рисунок 1.12. Презентация 1-06: виртуальная машина

Презентация 1-06: виртуальная машина


Рисунок 1.13. Презентация 1-07: управлнение ресурсами

Презентация 1-07: управлнение ресурсами


Рисунок 1.14. Презентация 1-08: архитектура операционной системы

Презентация 1-08: архитектура операционной системы


Рисунок 1.15. Презентация 1-09: монолитное ядро

Презентация 1-09: монолитное ядро


Рисунок 1.16. Презентация 1-10: микроядро

Презентация 1-10: микроядро


Рисунок 1.17. Презентация 1-11: история операционных систем

Презентация 1-11: история операционных систем


Рисунок 1.18. Презентация 1-12: классификация операционных систем

Презентация 1-12: классификация операционных систем


Рисунок 1.19. Презентация 1-13: резюме

Презентация 1-13: резюме