1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yangdechao_admin-guage-notes

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
23Linux内核开发学习.md 7.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 24.06.2025 02:12 0782333

1. Общая архитектура Linux-ядра и его подсистемы

img

Процессный планировщик (Process Scheduler): отвечает за управление ресурсами процессора, обеспечивая использование процессорных ресурсов каждым процессом в виде временных слотов.

Управление памятью (Memory Manager): отвечает за управление ресурсами памяти, позволяя различным процессам безопасно использовать память машины. Кроме того, управление памятью предоставляет механизмы виртуальной памяти, что позволяет процессам использовать больше памяти, чем доступно в системе. Ненужная память сохраняется в файловой системе на внешнем неразрушимом накопителе, а при необходимости снова загружается в память.

VFS (Virtual File System) - Виртуальная файловая система: абстрагирует различные внешние устройства с различными функциями, такие как устройства диска (жесткие диски, флэш-память NAND, NOR и т.д.), устройства ввода-вывода, устройства отображения и т.д., представляя их как единый интерфейс файловых операций (открытие, закрытие, чтение, запись и т.д.).

Сетевая система (Network): отвечает за управление сетевыми устройствами системы и реализацию различных сетевых стандартов.

IPC (Inter-Process Communication) - Коммуникация между процессами: не управляет никакими аппаратными средствами, а вместо этого отвечает за коммуникацию между процессами в системе Linux.Linux-ядро состоит из пяти основных подсистем, между которыми существует следующая связь:

Пять основных подсистем Linux-ядра

2. Структура каталогов исходного кода Linux-ядра

Исходный код Linux-ядра включает три основные части.

  • Ядерный код: все вышеупомянутые подсистемы и подмодули, а также другие поддерживающие подсистемы, такие как управление питанием, инициализация Linux и т. д.
  • Другие неядерные коды: такие как библиотечные файлы (потому что Linux-ядро является автономным ядром, то есть ядро не зависит от других программ и может быть скомпилировано самостоятельно), наборы прошивок, KVM (технология виртуализации) и т. д.
  • Компиляционные скрипты, конфигурационные файлы, справочные документы, лицензионные соглашения и другие вспомогательные файлы.
/include/ ---- Ядерные заголовочные файлы, которые должны быть предоставлены внешним модулям (например, коду пользователя).

/kernel/ ---- Основной код Linux-ядра, который включает подсистему планирования процессов, описанную в разделе 2.1, а также связанные с ней модули.

/mm/ ---- Подсистема управления памятью, описанная в разделе 2.2.

/fs/ ---- Подсистема VFS, описанная в разделе 2.3.

/net/ ---- Не включает в себя подсистему сети без драйверов сетевого оборудования (см. раздел 2.4).
```ipc/ ---- подсистема IPC (обмен данными между процессами).

arch/ ---- код, относящийся к архитектуре, например arm, x86 и т.д.
    arch/mach- ---- код, относящийся к конкретному устройству/плате.
    arch/include/asm ---- заголовочные файлы, относящиеся к архитектуре.
    arch/boot/dts ---- файлы дерева устройств (Device Tree).

init/ ---- код, связанный с инициализацией системы Linux.

block/ ---- уровень предоставления блочных устройств.

sound/ ---- драйверы и подсистемы, связанные с аудио, можно рассматривать как "аудиоподсистему".

drivers/ ---- драйверы устройств (в ядре Linux версии 3.10 драйверы устройств составляют 49,4% от общего объема кода).

lib/ ---- библиотечные функции, используемые в ядре, такие как CRC, FIFO, list, MD5 и т.д.

crypto/ ---- библиотечные функции шифрования и расшифровки.

security/ ---- подсистема обеспечения безопасности (например SELinux).

virt/ ---- подсистема поддержки виртуальных машин (например KVM).

usr/ ---- код для создания initramfs.

firmware/ ---- firmware для работы с внешними устройствами.

samples/ ---- примеры кода.

tools/ ---- полезные инструменты, такие как профилирование производительности и автотесты.

Kconfig, Kbuild, Makefile, scripts/ ---- конфигурационные файлы и скрипты для сборки ядра.

COPYING ---- лицензия на использование.

MAINTAINERS ---- список поддерживаемых лиц.

CREDITS ---- список основных вкладчиков в проект Linux.

REPORTING-BUGS ---- руководство по отчету об ошибках.Documentation, README ---- справочная и ознакомительная документация.

3. Анализ файла Makefile в Linux

Файл Makefile фактически объясняет, как будут выполняться команды сборки make, например, для структуры на базе ARM, также используется файл .mk, который я рассмотрю более подробно позднее.

Основные функции Makefile следующие:

  • (1) Определение файлов, подлежащих компиляции.
  • (2) Как будут выполняться эти компиляции?
  • (3) Как будут выполнены шаги линковки этих файлов и в каком порядке они должны выполняться?

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/yangdechao_admin-guage-notes.git
git@api.gitlife.ru:oschina-mirror/yangdechao_admin-guage-notes.git
oschina-mirror
yangdechao_admin-guage-notes
yangdechao_admin-guage-notes
master