ФЭНДОМ


Существует немалое количество определений операционной системы, но все они имеют определённые недостатки. Возьмём, например, определение с сайта Wikipedia:

Операцио́нная систе́ма (OC)


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

Wikipedia

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

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

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

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

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

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