- •Курс лекций по учебной дисциплине «Операционные системы, среды и оболочки» Введение. Понятие компьютерной техники.
- •Системные программы
- •Прикладные программы
- •Операционная система
- •Функции операционных систем.
- •Эволюция операционных систем.
- •Архитектура операционной системы
- •Компоненты операционной системы
- •Начало работы операционной системы
- •Выбор операционной системы
- •Установка операционной системы
- •Координирование действий машины
- •Организация файловой системы
- •Обслуживание файловой структуры.
- •1. Создание файлов и присвоение им имен Имена дисков, файлов и каталогов
- •2. Создание каталогов (папок)
- •3. Удаление файлов и каталогов (папок)
- •4. Управление атрибутами файлов
- •Файловый менеджер
- •Наиболее известные двупанельные файловые менеджеры
Архитектура операционной системы
Прежде чем обратиться к строению обычной операционной системы, рассмотрим программное обеспечение, которое находится в обычной вычислительной системе.
Программное обеспечение
Начнем обсуждение программного обеспечения с рассмотрения его классификации. Всё программное обеспечение можно разделить на две большие группы: прикладное программное обеспечение (application software) и системное программное обеспечение (system software). К прикладному программному обеспечению относятся программы, выполняющие задачи, касающиеся предметной области применения машины. Компьютер, который используется для составления каталогов в производственной компании, и компьютер, с которым работает инженер, будут содержать разные приложения. К прикладному программному обеспечению также относятся электронные таблицы, базы данных, системы подготовки публикаций, системы бухгалтерского учета, системы разработки программ и компьютерные игры.
В отличие от прикладного, системное программное обеспечение выполняет задачи, которые, в принципе, присущи вычислительным системам. В некотором смысле системное программное обеспечение является средой, в которой размещается прикладное, почти так же как инфраструктура государства определяет образ жизни отдельных граждан.
Системное программное обеспечение можно разделить на две группы: операционная система и обслуживающее программное обеспечение, или утилиты (utility software). Большая часть обслуживающего программного обеспечения установки состоит из программ, выполняющих действия, которые являются важными для работы вычислительной машины, однако не входят в операционную систему. В некотором смысле обслуживающее программное обеспечение состоит из программ, которые расширяют возможности операционной системы.
Различие между прикладным и обслуживающим программным обеспечением часто очень условно. По нашему мнению, различие заключается в том, является ли пакет программ частью инфраструктуры программных средств или нет. То есть новое приложение может стать обслуживающей программой, если оно станет базовым инструментом. Различие между обслуживающим программным обеспечением и операционной системой также неопределенно. В некоторых системах программы, которые обеспечивают такие основные услуги, как ведение перечня файлов в запоминающем устройстве, рассматриваются как обслуживающие, в других же они включены в операционную систему.
Компоненты операционной системы
Часть операционной системы, которая определяет интерфейс между операционной системой и пользователем, часто называется оболочкой (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), которые мы рассмотрим в следующем разделе. Сейчас же следует заметить, что в системах с разделением времени планировщик определяет, какие действия будут выполняться, а диспетчер распределяет кванты времени между этими действиями.