Читать «Внутреннее устройство Linux» онлайн - страница 4

Брайан Уорд

1. Общая картина

На первый взгляд современная операционная система, например Linux, является достаточно сложной и состоит из большого количества частей, которые одновременно функционируют и взаимодействуют друг с другом. Так, веб-сервер может обмениваться данными с сервером базы данных, который, в свою очередь, использует совместную библиотеку, применяемую многими другими программами. Как же все это работает?

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

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

Предположим, автомобиль движется рывками. Можно разбить абстракцию «автомобиль, который едет по дороге» на три части: автомобиль, дорога и ваш стиль вождения. Это поможет установить причину. Если дорога ухабиста, вам не придется винить машину или себя. Вместо этого вы можете попытаться выяснить, почему дорога испортилась, или же, если дорога новая, почему ее строители так отвратительно выполнили работу.

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

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

1.1. Уровни и слои абстракции в операционной системе Linux

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