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

Часть операционной системы, которая определяет интерфейс между операцион­ной системой и пользователем, часто называется оболочкой (shell). Задача обо­лочки состоит в том, чтобы взаимодействовать с пользователем машины. Совре­менные оболочки выполняют эту задачу с помощью графического пользовательского интерфейса (GUI – graphical user interface), в котором объекты, такие как фай­лы и программы, представлены на экране компьютера в виде значков. Эти систе­мы позволяют пользователям отдавать команду одним щелчком мыши на значке. Более ранние оболочки общались с пользователем с помощью текстовых сообще­ний, которые вводились с клавиатуры и отображались на экране. Такой способ общения называется интерфейс командной строки (CLI – command line interface).

Хотя оболочка операционной системы играет важную роль в обеспечении функциональных возможностей машины, она все же является просто интерфей­сом между пользователем и основным компонентом операционной системы. Разделение на оболочку и внутреннюю часть операционной системы подчеркивается тем фактом, что некоторые системы позволяют пользователю самому выбирать оболочку, с которой ему удобно работать. Например, пользова­тели операционной системы UNIX имеют возможность выбирать среди разных оболочек, таких как оболочки Borne, С и Korne. Ранние версии Microsoft Windows были, в сущности, оболочками замещения для MS-DOS. Во всех этих случаях операционная система остается такой же, меняется только способ общения с поль­зователями.

Главным компонентом современного графического пользовательского интер­фейса является устройство управления окнами (window manager), которое раз­мещает окна на экране компьютера и отслеживает, какому приложению принад­лежит данное окно. Когда приложению нужно что-то вывести на экран, оно извещает об этом программу управления окнами, которая и помещает необходи­мое изображение в окно данного приложения. Точно так же, когда пользователь щелкает кнопкой мыши, именно программа управления окнами вычисляет мес­тоположение указателя на экране и сообщает соответствующему приложению о совершенном действии.

В отличие от оболочки, внутренняя часть операционной системы называется ядром (kernel). Ядро операционной системы содержит программы, обеспечиваю­щие функционирование компьютера. Один из таких элементов называется про­граммой управления файлами (file manager), которая координирует использование запоминающих устройств машины. Точнее говоря, программа управления файлами ведет учет всех файлов, хранящихся в машине, включая информацию о том, где они находятся, каким пользователям разрешено с ними работать, какие участки накопи­теля свободны для записи новых или расширения имеющихся файлов.

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

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

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

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

Задача модуля управления памятью еще более усложняется, когда область памяти, необходимая для выполнения задачи, превышает пространство, доступ­ное в машине. В этом случае модуль управления памятью может создать иллю­зию дополнительного пространства, перемещая программы между оперативной памятью и запоминающим устройством. Предположим, например, что требуется 256 Мбайт памяти, а доступно только 128 Мбайт. Для того чтобы создать иллюзию области памяти большего размера, модуль управления памятью разбивает требуемое пространство на элементы, которые называются страницами (pages) и сохраняет их содержимое на запоминающем устройстве. (Обычно размер од­ной страницы не превышает нескольких килобайтов.) Поскольку в определен­ный момент времени требуются не все страницы, модуль управления памятью помещает в оперативную память только необходимые страницы; таким образом, задача выполняется, как если бы все 256 Мбайт памяти были доступны. Такая память называется виртуальной (virtual memory). Также в ядро операционной системы входят планировщик (scheduler) и диспетчер (dispatcher), которые мы рассмотрим в следующем разделе. Сейчас же следует заметить, что в системах с разделением времени планировщик определяет, какие действия будут выполнять­ся, а диспетчер распределяет кванты времени между этими действиями.