как им это удобно, помещая связанные друг с другом файлы в один каталог. Более того, каталоги могут содержать в себе
другие каталоги, называемые подкаталогами, что позволяет создавать из файлов иерархические структуры. Например, поль-
зователь может создать каталог "Записи", который будет включать подкаталоги "Финансы", "Медицина" и "Хозяйство". В
каждом подкаталоге будут размещаться файлы, относящиеся к соответствующей категории. Цепочка каталогов, ведущая к
файлу, называется путем (path).
Любой доступ к файлу со стороны других компонентов программного обеспечения предоставляется и контролируется
системой управления файлами. Процедура получения доступа к файлу начинается с запроса к файловой системе, который
называется процедурой открытия файла. Если система управления файлами разрешает доступ, то она предоставляет инфор-
мацию, необходимую для поиска файла и работы с ним. Эта информация записывается в область основной памяти, называе-
мую дескриптором файла (file descriptor). Любые действия с файлом осуществляются посредством обращения к информа-
ции, содержащейся в дескрипторе файла.
Другой компонент ядра операционной системы представляет собой набор драйверов устройств (devices drivers), т.е.
элементов программного обеспечения, взаимодействующих с контроллерами устройств (или же непосредственно с устрой-
ствами) в целях выполнения различных операций в периферийных устройствах машины. Каждый драйвер устройства специ-
ально разрабатывается для конкретного типа устройства (например, принтера, дисковода, накопителя на магнитных лентах
или монитора). Он преобразует поступающие запросы в последовательность команд выполнения отдельных физических
операций, которые требуется выполнить устройству, связанному с этим драйвером. В результате разработка других элемен-
тов программного обеспечения может вестись независимо от специфических особенностей конкретных устройств. Все это
позволяет создать обобщенную операционную систему, которая будет настраиваться на использование определенных пери-
ферийных устройств с помощью простой установки соответствующих драйверов.
Еще один компонент ядра операционной системы – система управления памятью (memory manager), которая решает
задачу координации использования машиной ее основной памяти. В среде, где машина выполняет только одно задание в
каждый момент времени, обязанности этой программы минимальны. В этом случае необходимая текущему заданию про-
грамма помещается в основную память, выполняется, а затем заменяется программой для последующего задания. Однако
многопользовательской среде или в среде со многими задачами, когда машина должна обрабатывать множество запросов,
поступающих в одно и то же время, у подсистемы управления памятью обширные обязанности. В этой ситуации в основной
памяти одновременно должно находиться множество программ и блоков данных, причем каждая из программ занимает соб-
ственную область памяти, отведенную ей программой управления памятью. По мере того как возникает необходимость в
выполнении различных действий и после их окончания, подсистема управления памятью должна находить области памяти
для удовлетворения возникающих потребностей в памяти, а также отслеживать информацию о тех участках памяти, которые уже
освободились.
Задача подсистемы управления памятью еще больше усложняется, когда требуемый объем основной памяти превышает
реально существующий объем. В этом случае программа управления памятью может создать иллюзию увеличения объема
памяти путем перемещения программ и данных из основной памяти в массовую и обратно. Этот иллюзорный объем памяти
называется виртуальной памятью (virtual memory). Предположим, что выполняемым программам требуется 256 Мбайт основ-
ной памяти, а в наличии имеется только 128. Чтобы создать иллюзию большего объема памяти, программа управления памя-
тью делит требуемый объем на элементы, называемые страницами (pages), и хранит содержимое этих страниц в массовой
памяти. Типичный объем страницы – не больше 4 кбайт. Подсистема управления памятью помещает в основную память те
страницы, которые в данный момент должны там находиться, замещая ими те, в которых больше нет потребности. Таким
образом, остальные компоненты программного обеспечения могут работать так, как если бы объем основной памяти маши-
ны действительно составлял 256 Мбайт.
Кроме того, в состав ядра операционной системы входят планировщик (scheduler) и диспетчер (dispatcher), о которых
речь пойдет в следующем разделе. Сейчас мы только отметим, что в системах с разделением времени планировщик опреде-
ляет последовательность выполняемых действий, а диспетчер контролирует распределение временных квантов для них.
Запуск операционной системы. Мы уже обсудили, как операционная система взаимодействует с пользователями и как
компоненты операционной системы совместно осуществляют координацию действий внутри машины. Однако еще не было
сказано ни слова о том, как же запускается сама операционная система. Запуск операционной системы осуществляется с по-
мощью процесса, называемого самозагрузкой (booting), который выполняется при каждом включении машины. Первым ша-
гом к пониманию этого процесса есть осознание того, почему его необходимо выполнять на первом этапе.
Центральный процессор машины (ЦП) разработан таким образом, что при его включении выполняемая им программа
каждый раз стартует с определенного, наперед заданного адреса. Следовательно, именно в этом месте основной памяти ЦП
ожидает найти первую команду, которую требуется выполнить. Чтобы гарантировать, что требуемая программа всегда будет
присутствовать на указанном месте, этот участок памяти обычно конструируется так, чтобы его содержание было неизмен-
ным. Такая память носит название постоянной памяти или постоянного запоминающего устройства – ПЗУ (read-only
memory – ROM). Когда код помещается в ПЗУ, он находится там постоянно, независимо от того, включена машина или вы-
ключена.
В маленьких компьютерах, используемых в качестве управляющих приборов в микроволновых печах, автомобильных
системах зажигания и стереоприемниках, представляется удобным выделить значительный объем основной памяти под ПЗУ,
так как гибкость в таких системах не нужна. При каждом включении выполняется одна и та же программа. Но в случае с
универсальными компьютерами ситуация другая и в них не практикуется отведение большого объема основной памяти под
постоянные программы. Содержимое памяти таких машин должно быть изменяемым. Фактически большая часть памяти
универсальных компьютеров в настоящее время сконструирована так, что ее содержимое может не только изменяться, но и
теряться при выключении машины. Такая память называется энергозависимой.
Поэтому для начальной загрузки в компьютерах общего назначения лишь малая часть основной памяти строится из
микросхем ПЗУ. Эта область содержит ячейки памяти, в которых ЦП ожидает найти команды, выполняемые при включении
машины. Небольшая программа, которая постоянно находится в этой области памяти, называется программой первоначаль-