Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комплект Информатика / Курс лекций.doc
Скачиваний:
127
Добавлен:
22.05.2015
Размер:
4.8 Mб
Скачать

2 Архитектура операционных систем

Для понимания архитектуры типичной операционной системы полезно представлять себе полный спектр программного обеспечения, используемого в стандартной вычислительной системе. Мы начнем обсуждение с обзора программного обеспечения, включающего общую схему его классификации. В подобных классификациях близкие элементы программного обеспечения зачастую помещаются в различные классы, подобно тому, как введение часовых поясов заставляет близких соседей устанавливать свои часы с разницей в час, хотя моменты заката и восхода у них почти совпадают. Более того, в случае с классификацией программного обеспечения динамичность самого предмета и отсутствие признанных авторитетов в этой области часто имеют следствием противоречивость используемой терминологии. Например, в операционной системе Windows 98 фирмы Microsoft имеется группа так называемых "вспомогательных программ", содержащая по нашей классификации как программы из класса прикладных, так и программы из класса утилит. Поэтому приводимую ниже классификацию следует рассматривать скорее как средство, дающее некоторую точку опоры в сложном предмете, а не как констатацию всеми признанного факта.

Вначале разделим программное обеспечение на две общие категории: прикладное программное обеспечение и системное программное обеспечение (рис. 3.). Прикладное программное обеспечение включает программы, предназначенные для решения задач, вытекающих из специфических особенностей использования данной машины. Машина, используемая при инвентаризации в промышленной компании, будет иметь набор прикладных программ, существенно отличающийся от того, который будет иметь машина, используемая в работе инженером-электриком. Примером прикладного программного обеспечения являются электронные таблицы, системы баз данных, настольные издательские системы, системы разработки программ и игры.

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

Рисунок 3 – Классификация программного обеспечения.1

Внутри класса системного программного обеспечения также есть две категории: одна — собственно операционная система, вторая — элементы программного обеспечения, объединяемые понятием обслуживающие программы, или утилиты. Большую часть установленных в системе обслуживающих программ составляют программы, предназначенные для выполнения действий, необходимых для успешного функционирования компьютера, но еще не включенные в операционную систему. В некотором смысле обслуживающие программы объединяют элементы программного обеспечения, расширяющие возможности операционной системы. Например, обычно операционная система сама по себе не предоставляет средств форматирования диска или копирования файлов, поэтому данные функции обеспечиваются обслуживающими программами. К другим видам обслуживающих программ относятся программы для установки соединений по телефонным линиям с использованием модема, программы сжатия и распаковки данных, программное обеспечение для осуществления сетевых соединений.

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

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

Компоненты операционной системы. Часть операционной системы, которая обеспечивает интерфейс операционной системы с пользователями, часто называют оболочкой. Назначение оболочки — организация взаимодействия с пользователем (или пользователями) системы. Современные оболочки выполняют эту задачу с помощью графического интерфейса пользователя (Graphical User Interface, GUI), в котором объекты манипуляции, подобные файлам и программам, представлены на экране монитора в виде небольших рисунков — пиктограмм. Подобные системы позволяют пользователям вводить команды, указывая на эти пиктограммы и щелкая на них с помощью управляемого рукой приспособления, называемого мышью. Прежние оболочки поддерживали общение с пользователями посредством текстовых сообщений, вводимых с клавиатуры и отображаемых на экране монитора.

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

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

Рисунок 4 – Структура операционной системы

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

Для удобства пользователей большинство подсистем управления файлами разрешает группировать файлы в группы, называемые каталогами, или папками. Такой подход позволяет пользователям размещать свои файлы так, как им это удобно, помещая, связанные друг с другом файлы в один каталог. Более того, каталоги могут содержать в себе другие каталоги, называемые подкаталогами, что позволяет создавать из файлов иерархические структуры. Например, пользователь может создать каталог Записи, который будет включать подкаталоги Финансы, Медицина и Хозяйство. В каждом подкаталоге будут размещаться файлы, относящиеся к соответствующей категории. Цепочка каталогов внутри каталогов называется путем доступа.

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

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

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

Задача подсистемы управления памятью еще больше усложняется, когда требуемый объем основной памяти превышает реально существующий объем. В этом случае программа управления памятью может создать иллюзию увеличения объема памяти путем перемещения программ и данных из основной памяти в массовую и обратно. Этот иллюзорный объем памяти называется виртуальной памятью. Предположим, что выполняемым программам требуется 64 Мбайт основной памяти, а в наличии имеется только 32. Чтобы создать иллюзию большего объема памяти, программа управления памятью делит требуемый объем на элементы, называемые страницами, и хранит содержимое этих страниц в массовой памяти. Типичный объем страницы — не больше 4 Кбайт. Подсистема управления памятью помещает в основную память те страницы, которые в данный момент должны там находиться, замещая ими те, в которых больше нет потребности. Таким образом, остальные компоненты программного обеспечения могут работать так, как если бы объем основной памяти машины действительно составлял 64 Мбайт.

Кроме того, в состав ядра операционной системы входят План лекцииировщик и диспетчер, о которых речь пойдет в следующем разделе. Сейчас мы только отметим, что в системах с разделением времени План лекцииировщик определяет последовательность выполняемых действий, а диспетчер контролирует распределение временных квантов для них.

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

Центральный процессор машины (ЦП) разработан таким образом, что при его включении выполняемая им программа каждый раз стартует с определенного, наперед заданного адреса. Следовательно, именно в этом месте основной памяти ЦП ожидает найти первую команду, которую требуется выполнить. Чтобы гарантировать, что требуемая программа всегда будет присутствовать на указанном месте, этот участок памяти обычно конструируется так, чтобы его содержание было неизменным. Такая память носит название постоянной памяти (постоянное запоминающее устройство, ПЗУ). Последовательность битов, однажды помещенная в ПЗУ с помощью специального процесса, аналогичного напылению проводников на подложку чипа, находится там постоянно, независимо от того, включена машина или выключена.

В маленьких компьютерах, используемых в качестве управляющих приборов в микроволновых печах, автомобильных системах зажигания и стереоприемниках, представляется удобным выделить значительный объем основной памяти под ПЗУ, так как гибкость в таких системах не нужна. При каждом включении выполняется одна и та же программа. Но в случае с универсальными компьютерами ситуация другая и в них не практикуется отведение большого объема основной памяти под постоянные программы. Содержимое памяти таких машин должно быть изменяемым. Фактически большая часть памяти универсальных компьютеров в настоящее время сконструирована так, что ее содержимое может не только изменяться, но и теряться при выключении машины. Такая память называется энергозависимой.

Поэтому для начальной загрузки в компьютерах общего назначения лишь малая часть основной памяти строится из микросхем ПЗУ. Эта область содержит ячейки памяти, в которых ЦП ожидает найти команды, выполняемые при включении машины. Небольшая программа, которая постоянно находится в этой области памяти, называется программой первоначальной загрузки (bootstrap). Эта программа выполняется автоматически при каждом включении компьютера. Она предписывает ЦП считать данные из заранее определенного участка массовой памяти в энергозависимую основную память (рис. 3.5). В большинстве случаев этими данными является программный код операционной системы. Как только программы операционной системы будут помещены в основную память программа, первоначальной загрузки потребует от ЦП выполнить команду пере хода в данную область памяти. В результате стартуют программы ядра, и операционная система начинает контролировать дальнейшую деятельность машины.

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

Рисунок 5 – Процесс первоначальной загрузки