Операционная система(operating system) —
комплекс управляющих и обрабатывающих программ, которые, с одной
стороны, выступают как интерфейс между устройствами вычислительной
системы и прикладными программами, а с другой стороны — предназначены
для управления устройствами, управления вычислительными процессами,
эффективного распределения вычислительных ресурсов между вычислительными
процессами и организации надёжных вычислений. Это определение применимо
к большинству современных ОС общего назначения.
В логической
структуре типичной вычислительной системы ОС занимает положение между
устройствами с их микроархитектурой, машинным языком и, возможно,
собственными (встроенными) микропрограммами — с одной стороны — и
прикладными программами с другой.
Разработчикам программного
обеспечения ОС позволяет абстрагироваться от деталей реализации и
функционирования устройств, предоставляя минимально необходимый набор
функций (см. интерфейс программирования приложений).
В
большинстве вычислительных систем ОС являются основной, наиболее важной
(а иногда единственной) частью системного ПО. С 1990-х наиболее
распространёнными операционными системами являются ОС семейства
Microsoft Windows и системы класса UNIX (особенно Linux).
Функции операционных систем
Основные функции:
- Выполнение по запросу программ тех достаточно элементарных (низкоуровневых) действий, которые являются общими для большинства программ и часто встречаются почти во всех программах (ввод и вывод данных, запуск и остановка других программ, выделение и освобождение дополнительной памяти и др.).
- Загрузка программ в оперативную память и их выполнение.
- Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).
- Управление оперативной памятью (распределение между процессами, организация виртуальной памяти).
- Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе.
- Обеспечение пользовательского интерфейса.
- Сетевые операции, поддержка стека сетевых протоколов.
Дополнительные функции:
- Параллельное или псевдопараллельное выполнение задач (многозадачность).
- Эффективное распределение ресурсов вычислительной системы между процессами.
- Разграничение доступа различных процессов к ресурсам.
- Организация надёжных вычислений (невозможности одного вычислительного процесса намеренно или по ошибке повлиять на вычисления в другом процессе), основана на разграничении доступа к ресурсам.
- Взаимодействие между процессами: обмен данными, взаимная синхронизация.
- Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений.
- Многопользовательский режим работы и разграничение прав доступа (см. аутентификация, авторизация).
Понятие операционной системы
Существуют
две группы определений ОС: «набор программ, управляющих оборудованием» и
«набор программ, управляющих другими программами». Обе они имеют свой
точный технический смысл, который, однако, становится ясен только при
более детальном рассмотрении вопроса о том, зачем вообще нужны ОС.
Есть
приложения вычислительной техники, для которых ОС излишни. Например,
встроенные микрокомпьютеры содержатся сегодня во многих бытовых
приборах, автомобилях (иногда по десятку в каждом), сотовых телефонах и
т. п. Зачастую такой компьютер постоянно исполняет лишь одну программу,
запускающуюся по включении. И простые игровые приставки — также
представляющие собой специализированные микрокомпьютеры — могут
обходиться без ОС, запуская при включении программу, записанную на
вставленном в устройство «картридже» или компакт-диске. Тем не менее,
некоторые микрокомпьютеры и игровые приставки всё же работают под
управлением особых собственных ОС. В большинстве случаев это
UNIX-подобные системы (последнее особенно верно в отношении
программируемого коммутационного оборудования: межсетевых экранов,
маршрутизаторов).
ОС нужны, если:
- вычислительная система используется для различных задач, причём программы, решающие эти задачи, нуждаются в сохранении данных и обмене ими. Из этого следует необходимость универсального механизма сохранения данных; в подавляющем большинстве случаев ОС отвечает на неё реализацией файловой системы. Современные ОС, кроме того, предоставляют возможность непосредственно «связать» вывод одной программы со вводом другой, минуя относительно медленные дисковые операции;
- различные программы нуждаются в выполнении одних и тех же рутинных действий. Например, простой ввод символа с клавиатуры и отображение его на экране может потребовать исполнения сотен машинных команд, а дисковая операция — тысяч. Чтобы не программировать их каждый раз заново, ОС предоставляют системные библиотеки часто используемых подпрограмм (функций);
- между программами и пользователями системы необходимо распределять полномочия, чтобы пользователи могли защищать свои данные от несанкционированного доступа, а возможная ошибка в программе не вызывала тотальных неприятностей;
- необходима возможность имитации «одновременного» исполнения нескольких программ на одном компьютере (даже содержащем лишь один процессор), осуществляемой с помощью приёма, известного как «разделение времени». При этом специальный компонент, называемый планировщиком, делит процессорное время на короткие отрезки и предоставляет их поочерёдно различным исполняющимся программам (процессам);
- наконец, оператор должен иметь возможность так или иначе управлять процессами выполнения отдельных программ. Для этого служат операционные среды, одна из которых — оболочка и набор стандартных утилит — является частью ОС (прочие, такие, как графическая операционная среда, образуют независимые от ОС прикладные платформы).
Таким образом, современные универсальные ОС можно охарактеризовать, прежде всего, как
- использующие файловые системы (с универсальным механизмом доступа к данным),
- многопользовательские (с разделением полномочий),
- многозадачные (с разделением времени).
Многозадачность и распределение полномочий требуют определённой иерархии привилегий компонентов самой ОС. В составе ОС различают три группы компонентов:
- ядро, содержащее планировщик; драйверы устройств, непосредственно управляющие оборудованием; сетевая подсистема, файловая система;
- системные библиотеки;
- оболочка с утилитами.
Большинство программ, как системных
(входящих в ОС), так и прикладных, исполняются в непривилегированном
(«пользовательском») режиме работы процессора и получают доступ к
оборудованию (и, при необходимости, к другим ресурсам ядра, а также
ресурсам иных программ) только посредством системных вызовов. Ядро
исполняется в привилегированном режиме: именно в этом смысле говорят,
что ОС (точнее, её ядро) управляет оборудованием.
В определении
состава ОС значение имеет критерий операциональной целостности
(замкнутости): система должна позволять полноценно использовать (включая
модификацию) свои компоненты. Поэтому в полный состав ОС включают и
набор инструментальных средств (от текстовых редакторов до компиляторов,
отладчиков и компоновщиков).
Ядро операционной системы
Ядро
— центральная часть операционной системы, управляющая выполнением
процессов, ресурсами вычислительной системы и предоставляющая процессам
координированный доступ к этим ресурсам. Основными ресурсами являются
процессорное время, память и устройства ввода-вывода. Доступ к файловой
системе и сетевое взаимодействие также могут быть реализованы на уровне
ядра.
Как основополагающий элемент ОС, ядро представляет собой
наиболее низкий уровень абстракции для доступа приложений к ресурсам
вычислительной системы, необходимым для их работы. Как правило, ядро
предоставляет такой доступ исполняемым процессам соответствующих
приложений за счёт использования механизмов межпроцессного
взаимодействия и обращения приложений к системным вызовам ОС.
Описанная задача может различаться в зависимости от типа архитектуры ядра и способа её реализации.
Объекты ядра ОС:
- Процессы
- Файлы
- События
- Потоки
- Семафоры
- Мьютексы
- Каналы
- Файлы, проецируемые в память
Эволюция операционных систем и основные идеи
Предшественником
ОС следует считать служебные программы (загрузчики и мониторы), а также
библиотеки часто используемых подпрограмм, начавшие разрабатываться с
появлением универсальных компьютеров 1-го поколения (конец 1940-х
годов). Служебные программы минимизировали физические манипуляции
оператора с оборудованием, а библиотеки позволяли избежать многократного
программирования одних и тех же действий (осуществления операций
ввода-вывода, вычисления математических функций и т. п.).
В
1950—1960-х годах сформировались и были реализованы основные идеи,
определяющие функциональность ОС: пакетный режим, разделение времени и
многозадачность, разделение полномочий, реальный масштаб времени,
файловые структуры и файловые системы.
Пакетный режим
Необходимость
оптимального использования дорогостоящих вычислительных ресурсов
привела к появлению концепции «пакетного режима» исполнения программ.
Пакетный режим предполагает наличие очереди программ на исполнение,
причём ОС может обеспечивать загрузку программы с внешних носителей
данных в оперативную память, не дожидаясь завершения исполнения
предыдущей программы, что позволяет избежать простоя процессора.
Разделение времени и многозадачность
Уже пакетный режим в своём развитом варианте требует разделения процессорного времени между выполнением нескольких программ.
Необходимость
в разделении времени (многозадачности, мультипрограммировании)
проявилась ещё сильнее при распространении в качестве устройств
ввода-вывода телетайпов (а позднее, терминалов с электронно-лучевыми
дисплеями) (1960-е годы). Поскольку скорость клавиатурного ввода (и даже
чтения с экрана) данных оператором много ниже, чем скорость обработки
этих данных компьютером, использование компьютера в «монопольном» режиме
(с одним оператором) могло привести к простою дорогостоящих
вычислительных ресурсов.
Разделение времени позволило создать
«многопользовательские» системы, в которых один (как правило)
центральный процессор и блок оперативной памяти соединялся с
многочисленными терминалами. При этом часть задач (таких как ввод или
редактирование данных оператором) могла исполняться в режиме диалога, а
другие задачи (такие как массивные вычисления) — в пакетном режиме.
Разделение полномочий
Распространение
многопользовательских систем потребовало решения задачи разделения
полномочий, позволяющей избежать возможности изменения исполняемой
программы или данных одной программы в памяти компьютера другой
программой (намеренно или по ошибке), а также изменения самой ОС
прикладной программой.
Реализация разделения полномочий в ОС была
поддержана разработчиками процессоров, предложивших архитектуры с двумя
режимами работы процессора — «реальным» (в котором исполняемой
программе доступно всё адресное пространство компьютера) и «защищённым»
(в котором доступность адресного пространства ограничена диапазоном,
выделенном при запуске программы на исполнение).
Реальный масштаб времени
Применение
универсальных компьютеров для управления производственными процессами
потребовало реализации «реального масштаба времени» («реального
времени») — синхронизации исполнения программ с внешними физическими
процессами.
Включение функции реального масштаба времени в ОС
позволило создавать системы, одновременно обслуживающие производственные
процессы и решающие другие задачи (в пакетном режиме и/или в режиме
разделения времени).
Файловые системы и структуры
Постепенная
замена носителей с последовательным доступом (перфолент, перфокарт и
магнитных лент) накопителями произвольного доступа (на магнитных
дисках).
Файловая система — способ хранения данных на внешних запоминающих устройствах.