АРХИТЕКТУРА ОПЕРАЦИОННЫХ СИСТЕМ
Для понимания архитектуры типичной операционной системы полезно представлять себе полный спектр программного обеспечения, используемого в стандартной вычислительной системе. Мы начнем обсуждение с обзора программного обес- печения, включающего общую схему его классификации. В подобных классификациях близкие элементы программного обеспечения зачастую помещаются в различные классы, подобно тому, как введение часовых поясов заставляет близких со- седей устанавливать свои часы с разницей в час, хотя моменты заката и восхода у них почти совпадают. Более того, в случае с классификацией программного обеспечения динамичность самого предмета и отсутствие признанных авторитетов в этой области часто имеют следствием противоречивость используемой терминологии. Например, в операционной системе Win- dows фирмы Microsoft имеется группа так называемых "Программ", содержащая по нашей классификации как программы из класса прикладных, так и программы из класса утилит. Поэтому приводимую ниже классификацию следует рассматривать скорее как средство, дающее некоторую точку опоры в сложном предмете, а не как констатацию всеми признанного факта.
Обзор программного обеспечения. Первым делом разделим программное обеспечение на две общие категории: при- кладное программное обеспечение (application software) и системное программное обеспечение (system software) (рис. 3.3). Прикладное программное обеспечение включает программы, предназначенные для решения задач, вытекающих из специфи- ческих особенностей использования данной машины. Машина, используемая при инвентаризации в промышленной компа- нии, будет иметь набор прикладных программ, существенно отличающийся от того, который будет иметь машина, исполь- зуемая в работе инженером-электриком. Примером прикладного программного обеспечения являются электронные таблицы, системы баз данных, настольные издательские системы, системы разработки программ и игры.
В отличие от прикладного программного обеспечения, системное программное обеспечение выполняет задачи, общие для всех вычислительных систем. В целом фактически системное программное обеспечение формирует среду, в которой функционирует прикладное программное обеспечение, аналогично тому, как государственная инфраструктура создает фун- дамент, на котором ее граждане основывают свой индивидуальный стиль жизни.
![]() |
Рис. 3.3. Классификация программного обеспечения
Большую часть установленных в системе обслуживающих программ составляют программы, предназначенные для выполне-
ния действий, необходимых для успешного функционирования компьютера, но еще не включенные в операционную систе- му. В некотором смысле обслуживающие программы объединяют элементы программного обеспечения, расширяющие воз- можности операционной системы. Например, обычно операционная система сама по себе не предоставляет средств форма- тирования диска или копирования файлов, поэтому данные функции обеспечиваются обслуживающими программами. К другим видам обслуживающих программ относятся программы для установки соединений по телефонным линиям с исполь- зованием модема, программы сжатия и распаковки данных, программное обеспечение для осуществления сетевых соедине- ний.
Предоставление определенных функциональных возможностей с помощью обслуживающих программ существенно уп- рощает разработку операционной системы. Более того, выполнение рутинных операций, реализуемых с помощью утилит, легче настроить в соответствии с требованиями конкретной установки. Действительно, вовсе не являются исключением компании или независимые пользователи, модифицирующие или расширяющие возможности утилит, поставляемых вместе с операционной системой.
Различие между прикладным и обслуживающим программным обеспечением весьма условно. С нашей точки зрения, различие заключается в том, является ли пакет частью инфраструктуры программного обеспечения. Таким образом, новое приложение может превратиться в утилиту, если оно становится одной из основных сервисных программ. Различие между обслуживающими программами и операционной системой также условно. В некоторых системах такая основная функция, как ведение списка файлов в массовой памяти, представлена в виде обслуживающих программ, в то время как другие систе- мы встраивают ее в операционную систему.
Компоненты операционной системы. Часть операционной системы, которая обеспечивает интерфейс операционной системы с пользователями, часто называют оболочкой (shell). Назначение оболочки – организация взаимодействия с пользо- вателем (или пользователями) системы. Современные оболочки выполняют эту задачу с помощью графического интерфейса пользователя (graphical user interface – GUI), в котором объекты манипуляции, подобные файлам и программам, представле- ны на экране монитора в виде небольших рисунков – пиктограмм. Подобные системы позволяют пользователям вводить ко- манды, указывая на эти пиктограммы и щелкая на них с помощью управляемого рукой приспособления, называемого мы- шью. Прежние оболочки поддерживали общение с пользователями посредством текстовых сообщений, вводимых с клавиа- туры и отображаемых на экране монитора.
Хотя оболочка операционной системы играет важную роль в определении доступной на данной машине функциональ- ности, она, тем не менее, является всего лишь интерфейсом между пользователем и сердцем самой операционной системы (рис. 3.4). Различие между оболочкой и внутренними частями операционной системы подчеркивается тем фактом, что неко- торые операционные системы разрешают пользователю выбрать наиболее удобный для него тип оболочки. Например, поль- зователи операционной системы UNIX могут выбрать одну из оболочек, включая Borne, С или Korn. Ранние версии Windows также представляли собой всего лишь оболочки для операционной системы MS-DOS. Во всех этих случаях сама операцион- ная система остается прежней – меняется лишь способ ее общения с пользователями.
Главным компонентом современных графических оболочек является система управления окнами или оконный менед- жер (windows manager), который распределяет отдельные блоки пространства экрана, называемые окнами, и отслеживает, какое приложение ассоциируется с каждым из этих окон. Когда приложение намеревается отобразить что-нибудь на экране, оно сообщает об этом программе управления окнами. В результате программа размещает предоставленный трафарет в окне, соответствующем данному приложению. В свою очередь, когда пользователь нажимает кнопку мыши, именно программа управления окнами определяет положение указателя мыши на экране и уведомляет соответствующее приложение об этом действии пользователя.
Рис. 3.4. Оболочка как интерфейс между пользователем и операционной системой
В отличие от оболочки операционной системы, ее внутренняя часть обычно называется ядром (kernel), которое включа- ет компоненты программного обеспечения, выполняющие основные функции в процессе приведения компьютера в рабочее состояние. Одним из этих компонентов является система управления файлами, или просто файловая система (file manager), в задачу которой входит координация использования запоминающих устройств. Точнее говоря, эта подсистема поддержива- ет записи обо всех файлах, содержащихся в массовой памяти, включая информацию о том, где каждый из файлов находится, каким пользователям разрешен доступ к различным файлам и какой объем массовой памяти может быть использован для записи новых и расширения уже имеющихся файлов.
Для удобства пользователей большинство подсистем управления файлами разрешает объединять файлы в группы, на- зываемые каталогами (directory), или папками (folder). Такой подход позволяет пользователям размещать свои файлы так,
как им это удобно, помещая связанные друг с другом файлы в один каталог. Более того, каталоги могут содержать в себе другие каталоги, называемые подкаталогами, что позволяет создавать из файлов иерархические структуры. Например, поль- зователь может создать каталог "Записи", который будет включать подкаталоги "Финансы", "Медицина" и "Хозяйство". В каждом подкаталоге будут размещаться файлы, относящиеся к соответствующей категории. Цепочка каталогов, ведущая к файлу, называется путем (path).
Любой доступ к файлу со стороны других компонентов программного обеспечения предоставляется и контролируется системой управления файлами. Процедура получения доступа к файлу начинается с запроса к файловой системе, который называется процедурой открытия файла. Если система управления файлами разрешает доступ, то она предоставляет инфор- мацию, необходимую для поиска файла и работы с ним. Эта информация записывается в область основной памяти, называе- мую дескриптором файла (file descriptor). Любые действия с файлом осуществляются посредством обращения к информа- ции, содержащейся в дескрипторе файла.
Другой компонент ядра операционной системы представляет собой набор драйверов устройств (devices drivers), т.е. элементов программного обеспечения, взаимодействующих с контроллерами устройств (или же непосредственно с устрой- ствами) в целях выполнения различных операций в периферийных устройствах машины. Каждый драйвер устройства специ- ально разрабатывается для конкретного типа устройства (например, принтера, дисковода, накопителя на магнитных лентах или монитора). Он преобразует поступающие запросы в последовательность команд выполнения отдельных физических операций, которые требуется выполнить устройству, связанному с этим драйвером. В результате разработка других элемен- тов программного обеспечения может вестись независимо от специфических особенностей конкретных устройств. Все это позволяет создать обобщенную операционную систему, которая будет настраиваться на использование определенных пери- ферийных устройств с помощью простой установки соответствующих драйверов.
Еще один компонент ядра операционной системы – система управления памятью (memory manager), которая решает задачу координации использования машиной ее основной памяти. В среде, где машина выполняет только одно задание в каждый момент времени, обязанности этой программы минимальны. В этом случае необходимая текущему заданию про- грамма помещается в основную память, выполняется, а затем заменяется программой для последующего задания. Однако многопользовательской среде или в среде со многими задачами, когда машина должна обрабатывать множество запросов, поступающих в одно и то же время, у подсистемы управления памятью обширные обязанности. В этой ситуации в основной памяти одновременно должно находиться множество программ и блоков данных, причем каждая из программ занимает соб- ственную область памяти, отведенную ей программой управления памятью. По мере того как возникает необходимость в выполнении различных действий и после их окончания, подсистема управления памятью должна находить области памяти для удовлетворения возникающих потребностей в памяти, а также отслеживать информацию о тех участках памяти, которые уже освободились.
Задача подсистемы управления памятью еще больше усложняется, когда требуемый объем основной памяти превышает реально существующий объем. В этом случае программа управления памятью может создать иллюзию увеличения объема памяти путем перемещения программ и данных из основной памяти в массовую и обратно. Этот иллюзорный объем памяти называется виртуальной памятью (virtual memory). Предположим, что выполняемым программам требуется 256 Мбайт основ- ной памяти, а в наличии имеется только 128. Чтобы создать иллюзию большего объема памяти, программа управления памя- тью делит требуемый объем на элементы, называемые страницами (pages), и хранит содержимое этих страниц в массовой памяти. Типичный объем страницы – не больше 4 кбайт. Подсистема управления памятью помещает в основную память те страницы, которые в данный момент должны там находиться, замещая ими те, в которых больше нет потребности. Таким образом, остальные компоненты программного обеспечения могут работать так, как если бы объем основной памяти маши- ны действительно составлял 256 Мбайт.
Кроме того, в состав ядра операционной системы входят планировщик (scheduler) и диспетчер (dispatcher), о которых речь пойдет в следующем разделе. Сейчас мы только отметим, что в системах с разделением времени планировщик опреде- ляет последовательность выполняемых действий, а диспетчер контролирует распределение временных квантов для них.
Запуск операционной системы. Мы уже обсудили, как операционная система взаимодействует с пользователями и как компоненты операционной системы совместно осуществляют координацию действий внутри машины. Однако еще не было сказано ни слова о том, как же запускается сама операционная система. Запуск операционной системы осуществляется с по- мощью процесса, называемого самозагрузкой (booting), который выполняется при каждом включении машины. Первым ша- гом к пониманию этого процесса есть осознание того, почему его необходимо выполнять на первом этапе.
Центральный процессор машины (ЦП) разработан таким образом, что при его включении выполняемая им программа каждый раз стартует с определенного, наперед заданного адреса. Следовательно, именно в этом месте основной памяти ЦП ожидает найти первую команду, которую требуется выполнить. Чтобы гарантировать, что требуемая программа всегда будет присутствовать на указанном месте, этот участок памяти обычно конструируется так, чтобы его содержание было неизмен- ным. Такая память носит название постоянной памяти или постоянного запоминающего устройства – ПЗУ (read-only memory – ROM). Когда код помещается в ПЗУ, он находится там постоянно, независимо от того, включена машина или вы- ключена.
В маленьких компьютерах, используемых в качестве управляющих приборов в микроволновых печах, автомобильных системах зажигания и стереоприемниках, представляется удобным выделить значительный объем основной памяти под ПЗУ, так как гибкость в таких системах не нужна. При каждом включении выполняется одна и та же программа. Но в случае с универсальными компьютерами ситуация другая и в них не практикуется отведение большого объема основной памяти под постоянные программы. Содержимое памяти таких машин должно быть изменяемым. Фактически большая часть памяти универсальных компьютеров в настоящее время сконструирована так, что ее содержимое может не только изменяться, но и теряться при выключении машины. Такая память называется энергозависимой.
Поэтому для начальной загрузки в компьютерах общего назначения лишь малая часть основной памяти строится из микросхем ПЗУ. Эта область содержит ячейки памяти, в которых ЦП ожидает найти команды, выполняемые при включении машины. Небольшая программа, которая постоянно находится в этой области памяти, называется программой первоначаль-
ной загрузки (bootstrap). Эта программа выполняется автоматически при каждом включении компьютера. Она предписывает ЦП считать данные из заранее определенного участка массовой памяти в энергозависимую основную память (рис. 3.5). В большинстве случаев этими данными является программный код операционной системы. Как только программы операцион- ной системы будут помещены в основную память, программа первоначальной загрузки потребует от ЦП выполнить команду перехода в данную область памяти. В результате стартуют программы ядра, и операционная система начинает контролиро- вать дальнейшую деятельность машины.
В большинстве современных персональных компьютеров программа первоначальной загрузки разработана так, что прежде всего она пытается отыскать операционную систему на гибком диске (дискете).
![]() |
а)
б)
Рис. 3.5. Процесс первоначальной загрузки:
а – Этап 1: Машина начинает выполнять программу начальной загрузки, находящуюся в памяти. Операционная система находится в массовой (внешней) памяти; б – Этап 2: Программа начальной загрузки выдает указание поместить операционную систему в оперативную память,
а затем передает ей управление
Если дискета в машину не вставлена, программа загрузки автоматически приступает к считыванию операционной системы с жесткого диска. Однако если дискета вставлена в устройство, но не содержит копии операционной системы, программа за- грузки приостановится и выдаст сообщение об ошибке оператору. Вы, вероятно, сталкивались с этим, когда включали пер- сональный компьютер, забыв предварительно вынуть несистемную дискету из дисковода.
1. Перечислите компоненты типичной операционной системы и охарактеризуйте роль каждого из них одной фразой.
2. В чем заключается различие между прикладными программным обеспечением и обслуживающими программами?
3. Что такое виртуальная память?
4. Опишите процедуру начальной загрузки.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.