Операционные системы - Кручинин Александр Юрьевич


А. Ю. Кручинин

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

1 Начальные сведения об операционных системах

1.1 Назначение и функции операционных систем

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

• предоставляет пользователю или программисту вместо реальной аппаратуры компьютера расширенной виртуальной машины;

• повышает эффективность использования компьютера путем рационального управления его ресурсами в соответствии с некоторым критерием.

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

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

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

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

Управление ресурсами включает решение следующих общих, не зависящих от типа ресурса задач:

• планирование ресурса – то есть определение, какому процессу, когда и в каком количестве (если ресурс может выделяться частями) следует выделить данный ресурс;

• удовлетворение запросов на ресурсы;

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

• разрешение конфликтов между процессами [11].

Управление ресурсами включает в себя их мультиплексирование (распределение) двумя способами: во времени и в пространстве. Когда ресурс распределяется во времени, различные пользователи и программы используют его по очереди. Сначала один из них получает доступ к использованию ресурса, потом другой и т. д. Например, несколько программ хотят обратиться к центральному процессору. В этой ситуации операционная система сначала разрешает доступ к процессору одной программе, затем, после того как она поработала достаточное время, другой программе, затем следующей и, в конце концов, опять первой. Определение того, как долго ресурс будет использоваться во времени, кто будет следующим и на какое время ему предоставляется ресурс – это задача операционной системы. Другой вид распределения – это пространственное мультиплексирование. Вместо поочередной работы каждый клиент получает часть ресурса. Обычно оперативная память разделяется между несколькими работающими программами, так что все они одновременно могут постоянно находиться в памяти (например, используя центральный процессор по очереди). Если предположить, что памяти достаточно для того, чтобы хранить несколько программ, эффективнее разместить в памяти сразу несколько программ, чем выделить всю память одной программе, особенно если ей нужна лишь небольшая часть имеющейся памяти. Конечно, при этом возникают проблемы справедливого распределения, защиты памяти и т. д., и для разрешения подобных вопросов существует операционная система [14].

1.2 История развития операционных систем

Обычно историю развития операционных систем связывают с историей развития компьютеров. Первая идея компьютера была предложена английским математиком Чарльзом Бэббиджем (Charles Babbage) в середине девятнадцатого века. Им была разработана так называемая механическая «аналитическая машина», которая правда так и не заработала должным образом. Далее представлены поколения компьютеров и их связь с операционными системами.

Первое поколение 1945-1955

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

Второе поколение 1955-1965

Основа компьютеров транзисторы и системы пакетной обработки. Характеризовались колодами перфокарт и устройствами для записывания магнитных лент. В основном программировали на языках Фортран и Ассемблер для операционной системы Fortran Monitor System (FMS) и IBSYS.

Третье поколение 1965-1980

Период характеризуется появлением интегральных микросхем, а также многозадачностью или, как её называют по другому, мультипрограммированием. Фирма IBM выпускает различные серии машин, начиная с IBM/360. Для них была написана операционная система OS/360, которая примерно в 1000 раз превышала по величине FMS второго поколения. На этом этапе появляется промышленная реализация многозадачности – способа организации вычислительного процесса, при котором в памяти компьютера находилось одновременно несколько программ, попеременно выполняющихся на одном процессоре.

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

Четвёртое поколение 1980-наши дни

Этот период связан с появлением больших интегральных схем. В 1974 году компания Intel выпустила первый универсальный 8-разрядный процессор Intel 8080. В начале 80-х корпорация IBM разработала IBM PC – персональный компьютер. В тоже время появляется первая версия MS-DOS. Все разработанные до этого момента операционные системы поддерживали только текстовый режим общения с пользователем.

Первая попытка сделать дружественный графический интерфейс была реализована на Apple Macintosh. Под влиянием её успехов корпорация Microsoft выпускает графическую оболочку для MS-DOS – Windows. А с 1995 года вышла в свет Windows 95, которая стала автономной системой. В дальнейшем, на базе Windows 95 и другой системы Windows NT были разработаны существующие на настоящий момент операционные системы – Windows 2000, XP, Vista и другие.

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

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

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

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

Операционные системы для мэйнфреймов в основном ориентированы на обработку множества одновременных заданий, большинству из которых требуются огромное количество операций ввода-вывода. Система должна отвечать на тысячи запросов в секунду. Примером является OS/390, произошедшая от операционной системы 3-го поколения OS/360.

Серверные операционные системы

Данные операционные системы работают на серверах, которые представляют из себя персональный компьютер, рабочую станцию или даже мэйнфрейм. Серверы предоставляют возможность работы с печатающими устройствами, файлами или Интернетом. К таким операционным системам относятся Unix, Linux, Windows 2003 Server и др.

Многопроцессорные операционные системы

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

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

Главный критерий этих систем – удобный интерфейс для одного пользователя. Наиболее известные системы: серии Windows 98, 2000, XP, Vista; Macintosh, Linux.

Операционные системы реального времени

Главный параметр этих систем – время. В системах управления промышленным процессом необходимо четко синхронизировать время работы конвейера, различных промышленных роботов. Это жесткая система реального времени. Есть и гибкие системы реального времени – в ней допустимы пропуски сроков выполнения операции, например мультимедийные системы. К операционным системам реального времени относятся VxWorks и QNX.

Встроенные операционные системы

К ним относятся операционные системы «карманных компьютеров» PDA (Personal Digital Assistant – персональный цифровой помощник). Кроме того, встроенные системы работают на машинах, в телевизорах, мобильных телефонах. В этих операционных системах обычно присутствуют все характеристики операционных систем реального времени с ограничением памяти, мощности и т.п. Примеры систем – PalmOS, Windows CE.

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

Смарт-карта – устройство размером с кредитную карту, содержащее центральный процессор. На такие системы налагаются жесткие ограничения по мощности и памяти. Некоторые управляют только одной операцией – электронным платежом к примеру. Отдельные смарт-карты включают в себя поддержку виртуальной машины Java.

1.4 Обзор аппаратного обеспечения компьютера

Операционная система тесно связана с оборудованием компьютера, на котором она должна работать. Аппаратное обеспечение влияет на набор команд операционной системы и управление его ресурсами. Концептуально простой компьютер можно представить в виде модели, показанной на рисунке 1 [14]. Такая структура использовалась на первых моделях IBM PC.


Рисунок 1 – Некоторые компоненты персонального компьютера


На рисунке центральный процессор, память, устройства ввода-вывода соединены системной шиной, по которой они обмениваются информацией.

Процессор

«Мозгом» компьютера является центральный процессор (CPU – Central Processing Unit). Он выбирает из памяти команды и выполняет их. Обычный цикл работы процессора выглядит так: читается первая команда из памяти, декодируется для определения ее типа и операндов, выполняет команду, затем считывает, декодирует последующие команды. Таким образом осуществляется выполнение программ.

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

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

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

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

Память

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

Система памяти конструируется в виде иерархии слоев [13], которые иллюстрируются на рисунке 2. По мере продвижение по иерархии сверху вниз возрастают два параметра: время доступа, объём памяти.

Верхний слой состоит из внутренних регистров CPU, поэтому при доступе к ним не возникает задержек. Внутренние регистры хранят менее 1Кб информации. Программы могут управлять регистрами без вмешательства аппаратуры. Доступ к регистрам быстрее всего – несколько наносекунд.

В следующем слое находится кэш-память, в основном контролируемая аппаратурой. Наиболее часто используемые области кэша хранятся в высокоскоростной кэш-памяти, расположенной внутри центрального процессора. Когда программа должна прочитать слово из памяти, кэш-микросхема определяет, есть ли нужная строка в кэше; если это так, то происходит результативное обращение к кэш-памяти. Кэш-память ограничена в размере, что обусловлено ее высокой стоимостью. В современных машинах есть два или три уровня кэша, причем каждый последующий медленнее и больше предыдущего. Размеры кэшпамяти от десятков килобайт до нескольких мегабайт. Время доступа – несколько больше, чем к регистрам.


Рисунок 2 – Иерархическая структура памяти


Далее следует оперативная память ОЗУ (RAM – Random Acces Memory или память с произвольным доступом) – главная рабочая область запоминающего устройства машины. Все запросы CPU, которые не могут быть выполнены кэшпамятью, поступают для обработки в ОЗУ. Объёмы от сотен мегабайт до нескольких гигабайт. Время доступа – десятки наносекунд.

Следующим идёт магнитный диск. Дисковая память на два порядка дешевле ОЗУ в пересчете на бит и на два порядка больше по величине. У диска есть одна проблема – случайный доступ к данным на нем занимает примерно на три порядка больше времени. Причиной низкой скорости жестких дисков (HDD) является то, что диск представляет собой механическую конструкцию. Он состоит из одной или нескольких металлических пластин, вращающихся с определенными скоростями, например 7200 об/мин. Объёмы дисков сейчас стремительно растут, в продаже для большинства пользователей находятся диски с сотнями гигабайт. Время доступа – не менее 10 мкс.

Дальше