The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Руководства по FreeBSD на русском" / Оглавление документа

2.2 Организация ядра

В этом разделе мы рассматриваем организацию ядра 4.4BSD с двух точек зрения:

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

  2. В его динамике, категоризуемой по услугам, предоставляемым пользователям

Самая большая часть ядра реализует системные услуги, к которым приложения обращаются через системные вызовы. В 4.4BSD это программное обеспечение организуется по следующим принципам:

Table 2-1. Машинно-независимое программное обеспечение в ядре 4.4BSD

Категория Количество строк кода Процент от всего ядра
файлы заголовков 9,393 4.6
инициализация 1,107 0.6
службы ядра 8,793 4.4
общесистемные интерфейсы 4,782 2.4
межпроцессное взаимодействие 4,540 2.2
работа с терминалами 3,911 1.9
виртуальная память 11,813 5.8
управление vnode 7,954 3.9
именование файловой системы 6,550 3.2
хранение файлов 4,365 2.2
хранение log-структур 4,337 2.1
хранение на основе памяти 645 0.3
файловая система cd9660 4,177 2.1
различные файловые системы (10) 12,695 6.3
сетевая файловая система 17,199 8.5
сетевое взаимодействие 8,630 4.3
протоколы internet 11,984 5.9
протоколы ISO 23,924 11.8
протоколы X.25 10,626 5.3
протоколы XNS 5,192 2.6
всего машинно-независимая часть 162,617 80.4

Большая часть программного обеспечения в этих категориях является машинно-независимой и переносима между различными аппаратными архитектурами.

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

Table 2-2. Машинно-зависимое программное обеспечение для HP300 в ядре 4.4BSD

Категория Количество строк кода Процент от всего ядра
машинно-зависимые заголовки 1,562 0.8
заголовки драйверов устройств 3,495 1.7
исходные тексты драйверов устройств 17,506 8.7
виртуальная память 3,087 1.5
остальная машинно-зависимая часть 6,287 3.1
процедуры на ассемблере 3,014 1.5
совместимость с HP/UX 4,683 2.3
всего машинно-зависимая часть 39,634 19.6

Table 2-1 суммаризует машинно-независимый код, который составляет ядро 4.4BSD для HP300. Числа во второй колонке обозначают количество строк исходного кода на языке C, заголовочных файлов и ассемблерного кода. Практически весь код ядра написан на языке программирования C; менее двух процентов написано на языке ассемблера. Как показывает статистика в Table 2-2, машинно-зависимый код, не включающий поддержку HP/UX и устройств, составляет менее 6.9 процента ядра.

Лишь малая часть ядра отвечает за инициализацию системы. Этот код используется при начальной загрузке системы для перехода в рабочий режим и отвечает за настройку аппаратного и программного окружения ядра (обратитесь к Главе 14). Некоторые операционные системы (особенно те, что ограничены объемом физической памяти) выполняют действия по выгрузке или перекрытию программного кода, выполняющего эти функции, после окончания его работы. Ядро 4.4BSD не работает повторно с памятью, использованной начальным кодом, потому что этот объем памяти составляет менее 0.5 процентов ресурсов ядра, используемых на типичной машине. Также начальный код не находится только в одном месте ядра -- он рассредоточен везде, и обычно появляется там, где логически связан с объектом инициализации.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру