Выбрать главу

В отличие от большинства коммерческих реализаций UNIX, в Linux реализация отделена от дистрибутива. Следовательно, не существует какого-либо «официального» дистрибутива Linux. Предложения каждого распространителя Linux состоят из какого-то варианта текущей стабильной версии ядра с добавлением различных усовершенствований. В рамках LSB разрабатывается и внедряется набор стандартов для систем Linux с целью обеспечения совместимости двоичных приложений в разных дистрибутивах Linux. Эти стандарты позволяют запускать откомпилированные приложения в любой LSB-совместимой системе, запущенной на точно таком же аппаратном оборудовании.

Дополнительная информация

Дополнительные сведения об истории и стандартах UNIX можно найти в публикациях [Ritchie, 1984], [McKusick et al., 1996], [McKusick & Neville-Neil, 2005], [Libes & Ressler, 1989], [Garfinkel et al., 2003], [Stevens & Rago, 2005], [Stevens, 1999], [Quartermann & Wilhelm, 1993], [Goodheart & Cox, 1994] и [McKusick, 1999].

В публикации [Salus, 1994] изложена подробная история UNIX, откуда и были почерпнуты основные сведения, приведенные в начале главы. В публикации [Salus, 2008] предоставлена краткая история Linux и других проектов по созданию свободных программных продуктов. Многие подробности истории UNIX можно также найти в выложенной в Интернет книге Ронды Хобен (Ronda Hauben) History of UNIX (http://www.dei.isep.ipp.pt/~acc/docs/unix.html). Весьма подробную историческую справку, относящуюся к выпускам различных реализаций UNIX, вы найдете по адресу http://www.levenez.com/unix/.

В публикации [Josey, 2004] дается обзорная информация по истории систем UNIX и разработке SUSv3, а также приводится руководство по использованию спецификации, сводные таблицы имеющихся в SUSv3 интерфейсов и пособие по переходу от SUSv2 к SUSv3 и от C89 к C99.

Наряду с предоставлением программных продуктов и документации, на сайте GNU (http://www.gnu.org/) содержится подборка философских статей, касающихся свободного программного обеспечения. А в публикации [Williams, 2002] дается биография Ричарда Столлмана.

Собственные взгляды Торвальдса на развитие Linux можно найти в публикации [Torvalds & Diamond, 2001].

2. Основные понятия

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

2.1. Основа операционной системы: ядро

Понятие «операционная система» зачастую употребляется в двух различных значениях.

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

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

В качестве синонима второго значения зачастую используется такое понятие, как «ядро». Именно в этом смысле операционная система и будет рассматриваться в данной книге.

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

Исполняемая программа ядра Linux обычно находится в каталоге с путевым именем /boot/vmlinuz или же в другом подобном ему каталоге. Происхождение этого имени имеет исторические корни. В ранних реализациях UNIX ядро называлось unix. В более поздних реализациях UNIX, работающих с виртуальной памятью, ядро было переименовано в vmunix. В Linux в имени файла отобразилось название системы, а вместо последней буквы x использована буква z. Это говорит о том, что ядро является сжатым исполняемым файлом.