Внутреннее устройство Ядра Linux 2.4
Введение в ядро Linux 2.4. Последнюю версию данного документа всегда можно получить на: http://www.moses.uklinux.net/patches/lki.sgml Данное руководство является частью Linux Documentation Project и может быть так же получено в различных форматах на: http://www.linuxdoc.org/guides.html или, для чтения в он-лайне (последняя версия), на: http://www.moses.uklinux.net/patches/lki.html Данный документ является свободно распространяемым и может передаваться и/или изменяться в соответствии с условиями GNU General Public License, опубликованной Free Software Foundation, версии 2 или более поздней. Автор, работающий старшим инженером в VERITAS Software Ltd., написал этот документ в рамках небольшого учебного курса лекций, который он читает внутри VERITAS. Выражаю свою благодарность Juan J. Quintela (quintela@fi.udc.es) , Francis Galiegue (fg@mandrakesoft.com) , Hakjun Mun (juniorm@orgio.net) , Matt Kraai (kraai@alumni.carnegiemellon.edu) , Nicholas Dronen (ndronen@frii.com) , Samuel S Chessman (chessman@tux.org) , Nadeem Hasan (nhasan@nadmm.com) за поправки и предложения, Глава The Linux Page Cache была написана Christoph Hellwig (hch@caldera.de) . Глава The IPC Mechanisms была написана Russell Weight (weightr@us.ibm.com) и Mingming Cao (mcao@us.ibm.com)
1. Загрузка
- 1.1 Сборка ядра Linux
- 1.2 Загрузка: Overview
- 1.3 Загрузка: BIOS POST
- 1.4 Загрузка: bootsector и setup
- 1.5 LILO в качестве загрузчика
- 1.6 Высокоуровневая инициализация
- 1.7 SMP Загрузка на x86
- 1.8 Освобождение памяти после инициализации
- 1.9 Разбор командной строки
2. Управление процессами и прерываниями
- 2.1 Структура задачи и таблица процессов
- 2.2 Создание и завершение задач и потоков ядра
- 2.3 Планировщик
- 2.4 Реализация связанных списков в Linux
- 2.5 Очереди ожидания (Wait Queues)
- 2.6 Таймеры
- 2.7 Нижние половины (Bottom Halves)
- 2.8 Очереди задач
- 2.9 Tasklets
- 2.10 «Мягкие» IRQ
- 2.11 Как реализуются системные вызовы в архитектуре i386?
- 2.12 Атомарные (неделимые) операции
- 2.13 Блокировки (Spinlocks), Read-write блокировки и Big-Reader блокировки;
- 2.14 Семафоры
- 2.15 Поддержка загружаемых модулей
3. Virtual Filesystem (VFS)
- 3.1 Кеши Inode и взаимодействие с Dcache
- 3.2 Регистрация/Дерегистрация файловых систем.
- 3.3 Управление файловыми дескрипторами
- 3.4 Управление файловой структурой
- 3.5 Управление Суперблоком и точкой монтирования
- 3.6 Пример виртуальной файловой системы: pipefs
- 3.7 Пример дисковой файловой системы: BFS
- 3.8 Домены исполнения и двоичные форматы
4. Кэш страниц в Linux
5. Механизмы IPC
Внутреннее устройство Linux.
Эта книга описывает все тонкости работы с ОС Линукс, системное администрирование, глубокие механизмы, обеспечивающие низкоуровневый функционал Linux. На страницах руководства вы приобретете основные знания о работе с ядром Linux и о принципах правильной эксплуатации компьютерных сетей не только на основе Open-source решений. В книге также затрагиваются вопросы программирования сценариев и обращения с языком С, освещаются темы защиты информации, виртуализации и прочие незаменимые вещи.
Операционная система Linux прекрасно подходит для изучения, поскольку конфигурация системы хранится большей частью в простых файлах, которые достаточно легко прочитать. Следует только выяснить, за что отвечает каждая из частей, а затем собрать все воедино. Именно этому и посвящена данная книга.
Интерес к устройству операционной системы Linux может быть вызван разными причинами. Профессионалы в сфере информационно технологического обслуживания, а также разработчики программного обеспечения для Linux найдут в этой книге практически все, что необходимо знать, чтобы использовать операционную систему наилучшим образом.
Вам не обязательно быть программистом, чтобы читать эту книгу. Понадобятся лишь основные навыки пользователя компьютера: вы должны ориентироваться в графическом интерфейсе (при установке и настройке интерфейса системы), а также иметь представление о файлах и каталогах (папках).
Для работы вам понадобится компьютер с операционной системой Linux. Возможно, вы предпочтете виртуальную установку — для проверки большей части материала данной книги я пользовался приложением VirtualBox. Вы должны обладать правами доступа superuser (root), хотя в основную часть времени следует исполь зовать учетную запись обычного пользователя.
Вы будете работать главным образом в командной строке, окне терминала или в удаленном сеансе.
В начале книги дается обзор системы Linux, а затем предлагается ряд практических заданий с инструментами, которые понадобятся вам для дальнейшей работы в системе.
Далее вы детально изучите каждую часть системы, начиная с управления оборудованием и заканчивая конфигурацией сети, следуя обычному порядку, в котором происходит запуск системы.
И наконец, вы получите представление о некоторых деталях работающей системы, освоите несколько важных навыков, а также познакомитесь с инструментами, используемыми программистами.
Материал излагается по возможности без привязки к какомулибо дистрибу тиву системы. Было бы скучно описывать все варианты системы, поэтому я попытался рассказать о двух основных семействах дистрибутивов: Debian (включая Ubuntu) и RHEL/Fedora/CentOS.
Упор сделан на серверные версии и версии для рабочих станций. Представлены также внедренные системы, например Android и OpenWRT, но изучение отличий этих платформ предоставляется вам.
Книга «Внутреннее устройство Linux»
У нас вышла книга Брайна Уорда, которая уже стала бестселлером на Западе. Она описывает все тонкости работы с операционной системой Linux, системное администрирование, глубокие механизмы, обеспечивающие низкоуровневый функционал Linux. На страницах этого издания вы приобретете базовые знания о работе с ядром Linux и о принципах правильной эксплуатации компьютерных сетей. В книге также затрагиваются вопросы программирования сценариев оболочки и обращения с языком С, освещаются темы защиты информации, виртуализации и прочие незаменимые вещи.
Кому следует читать книгу
Интерес к устройству операционной системы Linux может быть вызван разными причинами. Профессионалы в сфере информационно-технологического обслуживания, а также разработчики программного обеспечения для Linux найдут в этой книге практически все, что необходимо знать, чтобы использовать операционную систему наилучшим образом. Исследователи и студенты, которым зачастую приходится подстраивать систему под себя, найдут здесь практичные объяснения того, почему все устроено именно так, а не иначе. Есть еще «затейники» — пользователи, которым нравится проводить время за компьютером ради развлечения, выгоды или и того и другого сразу. Хотите узнать, почему некоторые вещи работают, а другие — нет? Вам интересно, что произойдет, если что-либо изменить? Тогда вы относитесь к числу «затейников».
Необходимые условия
Вам не обязательно быть программистом, чтобы читать эту книгу. Понадобятся лишь основные навыки пользователя компьютера: вы должны ориентироваться в графическом интерфейсе (при установке и настройке интерфейса системы), а также иметь представление о файлах и каталогах (папках). Следует также быть готовыми к поиску дополнительной документации в вашей системе и онлайн. Как отмечалось выше, самым важным является ваша готовность и желание исследовать свой компьютер.
Как читать книгу
Когда речь идет о технических темах, донести все необходимые знания — непростая задача. С одной стороны, читатель увязает в излишних подробностях и с трудом усваивает суть, поскольку человеческий разум просто не может одновременно обработать большое количество новых понятий. С другой — отсутствие подробностей приводит к тому, что читатель получает лишь смутное представление о предмете и не готов к усвоению дальнейшего материала.
В этой книге автор упростил изложение и структурировал материал. В большинстве глав важная информация, которая необходима для дальнейшей работы, предлагается в первую очередь. По мере чтения главы вы встретите в ней и дополнительный материал. Надо ли вам сразу усваивать эти частности? В большинстве случаев автор полагает, что нет. Если ваши глаза начинают тускнеть при виде боль-шого количества подробностей, относящихся к только что изученному материалу, не раздумывая переходите к следующей главе или сделайте перерыв. Вас ожидают другие важные вещи.
Как устроена эта книга
В начале книги дается обзор системы Linux, а затем предлагается ряд практических заданий с инструментами, которые понадобятся вам для дальнейшей работы в системе. Далее вы детально изучите каждую часть системы, начиная с управления оборудованием и заканчивая конфигурацией сети, следуя обычному порядку, в котором происходит запуск системы. И наконец, вы получите представ-ление о некоторых деталях работающей системы, освоите несколько важных навыков, а также познакомитесь с инструментами, используемыми программистами.
В большинстве первых глав (кроме главы 2) активно задействовано ядро системы Linux, но по мере продвижения по книге вы будете работать и в своем пространстве пользователя. Если вы не понимаете, о чем автор сейчас говорит, не беспокойтесь, объяснения будут даны в главе 1. Материал излагается по возможности без привязки к какому-либо дистрибутиву системы. Было бы скучно описывать все варианты системы, поэтому Уорд попытался рассказать о двух основных семействах дистрибутивов: Debian (включая Ubuntu) и RHEL/Fedora/CentOS. Упор сделан на серверные версии и версии для рабочих станций. Представлены также внедренные системы, например Android и OpenWRT, но изучение отличий этих платформ предоставляется вам.
Что нового во втором издании
Первое издание этой книги касалось главным образом пользовательской стороны работы в системе Linux. Основное внимание было уделено устройству ее частей и тому, как заставить их функционировать. В то время многие элементы системы было трудно установить и корректно настроить.
Благодаря упорному труду разработчиков ПО и создателей дистрибутивов Linux ситуация изменилась. Уорд пересмотрел материал первого издания в поисках обновлений: особое внимание уделил процессу загрузки системы и тому, как она управляет оборудованием, а также удалил устаревший материал (например, подробное объяснение процесса печати), чтобы расширить рассмотрение роли ядра системы Linux в каждом дистрибутиве. Вы, вероятно, взаимодействуете с ядром гораздо чаще, чем сами об этом догадываетесь, и автор специально отметил моменты, когда это бывает.
Уорд также изменил последовательность подачи материала в книге, чтобы он соответствовал интересам и потребностям современных читателей. Единственное, что не изменилось, — это объем книги.
Автору хотелось снабдить вас сведениями, которые понадобятся для быстрого начала работы. Их усвоение потребует некоторых усилий, однако Уорд не намеревается делать из вас «тяжелоатлетов», чтобы вы смогли одолеть эту книгу. Когда вы будете понимать важнейшие моменты, изложенные здесь, для вас не составит труда отыскать подробности и разобраться в них.
Автор изъял некоторые исторические детали, которые были в первом издании, главным образом чтобы сконцентрировать ваше внимание. Если вы интересуетесь системой Linux и ее отношением к истории системы Unix, обратитесь к книге Питера Салуса (Peter H. Salus) The Daemon, the Gnu, and the Penguin (Reed Media Services, 2008) — в ней рассказано о том, как развивалось используемое нами программное обеспечение.
Для Хаброжителей скидка 25% по купону — Linux
А также, наш партнер Образовательный портал GeekBrains проводит на этой неделе Новогоднюю акцию. Вы можете получить профессию «Системный администратор» со скидкой 25%. Ознакомиться с профессией и оставить заявку можно по ссылке.