- Как работает ядро Linux? анатомия ядра Linux.
- Использование оборудования в Linux
- Управление файловой системой Linux
- Операции с разделяемыми функциями
- Управление процессами в Linux
- Права доступа в Linux
- Ядро Linux контролирует все
- Структура каталогов Linux
- Команда Linux, которую вам нужно знать
- 8 лучших сайтов для запуска Linux в веб-браузере
- Внутреннее устройство Ядра Linux 2.4
- 1. Загрузка
- 2. Управление процессами и прерываниями
- 3. Virtual Filesystem (VFS)
- 4. Кэш страниц в Linux
- 5. Механизмы IPC
Как работает ядро Linux? анатомия ядра Linux.
Ядро Linux поддерживает миллионы устройств . Но не все знают, как ядро на самом деле управляет аппаратным и программным обеспечением.
Ядро Linux похоже на мост, который обеспечивает вычислительную связь между приложениями и оборудованием и управляет ресурсами системы. Линус Торвальдс разработал ядро Linux с использованием C и Assembly, и таким образом ему удалось создать легкое и портативное ядро, которое было выпущено для широкой публики в качестве открытого исходного кода.
Вы можете увидеть ядро Linux во многих различных секторах, таких как космос, компьютеры, умные часы, мобильные телефоны, робототехника и здравоохранение. Но задумывались ли вы когда-нибудь, как ядро Linux работает под капотом?
Использование оборудования в Linux
Ядро Linux, прежде всего, контролирует, какое оборудование будет работать и каким образом, когда вы включаете свой компьютер. Кроме того, благодаря интерфейсу программирования возможно управление программным обеспечением высокого класса. Чтобы привести пример этих элементов управления, вы можете просмотреть информацию об оборудовании, установленном в слотах на вашей материнской плате, и воспользоваться этой подробной информацией.
Кроме того, этот программный интерфейс обеспечивает уровень абстракции. Например, если вы хотите вести видеосвязь со своими друзьями, вам понадобится веб-камера. Уровень абстракции позволяет программному обеспечению, которое вы используете, использовать эту веб-камеру независимо от ее производителя и модели. Программное обеспечение здесь может использовать только интерфейс, который существует для Linux. Ядро Linux преобразует вызовы функций этого интерфейса в реальные аппаратные команды, необходимые веб-камере.
Используя виртуальные файловые системы /proc и /sys , ядро Linux может экспортировать подробную информацию об обнаруживаемом оборудовании. Ниже вы можете увидеть несколько инструментов, используемых для этого, и какие устройства они экспортируют:
- lspci : для устройств PCI
- lsusb : для USB-устройств
- lspcmcia : для карт PCMCIA
Как вы можете видеть, дистрибутив Linux на скриншоте выше работает на VirtualBox. Тем не менее, у вас есть возможность увидеть много информации, такой как VGA, USB-контроллер, мосты и контроллер SATA.
Вы также можете использовать параметр -v для получения гораздо более подробной информации.
В ядре Linux приложения обычно получают доступ к устройствам через специальные файлы, которые существуют в каталоге /dev . Эти специальные файлы представляют собой дисковые накопители и другие физические устройства. Примерами этих специальных файлов являются такие файлы, как /dev/hda , /dev/sdc , /dev/sdc3 , /dev/input/mouse0 и dev/snd/* .
Управление файловой системой Linux
Файловые системы являются одним из наиболее заметных компонентов ядра Linux. Файловая система Linux является одним из его величайших преимуществ. Все файлы в системе Linux собираются в одну ветку. Таким образом, пользователи могут использовать эту иерархию для достижения желаемых мест.
Отправной точкой этой иерархии является корневой каталог ( / ). Другие подкаталоги находятся в корневом каталоге. Наиболее часто используемый подкаталог в каталоге / — это каталог /home . Этот подкаталог содержит другие подкаталоги, и в каждом каталоге есть файлы, в которых хранятся фактические данные.
Например, вы можете представить текстовый файл на своем рабочем столе. Если вы создаете текстовый файл с именем helloworld.txt на своем рабочем столе вы можете ссылаться на него как /home/muo/Desktop/helloworld.txt . Пример /muo здесь, конечно, будет отличаться. Потому что имя этого подкаталога зависит от имени вашего текущего пользователя. С помощью этой системы именования ядро Linux переводит между фактическим и физическим хранилищем, существующим на диске.
Кроме того, ядро Linux может интегрировать данные с нескольких дисков. Здесь вступает в игру система монтирования. Он использует один из дисков в корневой системе и монтирует другие в существующие каталоги в иерархии. Затем другие диски помещаются под точки монтирования. Это позволяет пользователям хранить каталог /home на втором жестком диске, который также содержит другие подкаталоги.
Когда вы монтируете диск в каталог /home , вы можете получить доступ к этим каталогам из обычных местоположений. Таким образом, такие пути, как /home/muo/Desktop/helloworld.txt продолжайте работать.
Вы можете увидеть точки монтирования между файлами в вашей системе с помощью команды findmnt -A.
С помощью многих форматов файловой системы вы можете физически хранить данные на дисках. Наиболее широко известными в Linux являются форматы файловых систем ext2 , ext3 и ext4 . Однако существует много других форматов файловой системы. В любом случае, вы должны отформатировать файловую систему перед ее монтированием. Для этого вы можете использовать такие команды, как mkfs.ext3 (mkfs означает файловую систему make, а ext3 — файловую систему).
Эти команды принимают путь к файлу устройства, который вы хотите отформатировать в качестве параметра. Это разрушительная операция, и вы должны использовать ее с осторожностью, если вы не хотите стереть или сбросить файловую систему.
Помимо этого, существуют также сетевые файловые системы, такие как NFS, которые использует ядро Linux. NFS — это сетевая файловая система, в которой данные не хранятся на локальном диске. С помощью NFS данные передаются по сети на сервер, который хранит данные. Поскольку данные будут находиться на сервере, пользователям не нужно постоянно иметь с ними дело. Они также могут использовать традиционную иерархическую файловую систему Linux, как обычно.
Операции с разделяемыми функциями
Все программное обеспечение в системе Linux имеет общие функции. Вот почему эти функции являются центральными в ядре Linux. Например, при открытии файла вы можете открыть его только с именем файла, не зная, где физически хранится файл, и какие функции и операции он будет использовать. Все эти функции уже присутствуют в ядре.
Вы можете сохранить свой файл на жестком диске, разделить его между несколькими жесткими дисками или даже сохранить его на удаленном сервере. В таких случаях важны функции обмена файлами. Приложения обмениваются данными независимо от способа перемещения данных. Для обмена данными существуют общие функции связи. Это перемещение может осуществляться по беспроводным сетям или даже по фиксированной телефонной линии.
Управление процессами в Linux
Активный экземпляр программы, работающий с данными или информацией в памяти, известен как процесс. Задача ядра Linux — генерировать и отслеживать эти области памяти. Ядро выделяет память для запущенной программы и загружает исполняемый код в память из файловой системы. Сразу после этого ядро запускает код.
Ядро Linux поддерживает многозадачность. Он способен запускать множество процессов одновременно. Однако в любой заданный период времени выполняется только одна транзакция. Однако ядро Linux разбивает время на небольшие фрагменты, и в результате каждая процедура выполняется последовательно.
Поскольку эти небольшие временные сегменты имеют миллисекундные интервалы, они активны только в определенное время и бездействуют в остальное время. Задача ядра Linux здесь заключается в максимизации производительности за счет одновременного запуска нескольких процессов.
Если временные интервалы слишком велики, запущенное приложение может быть не таким отзывчивым, как хотелось бы. Если временные рамки слишком короткие, могут возникнуть проблемы с изменением задач. В зависимости от приоритета процесса требуемый здесь интервал временных рамок будет различаться. Возможно, вы уже слышали о процессах с высоким приоритетом и процессах с низким приоритетом. Это одна из функций, которыми управляет ядро Linux.
Это объяснение не всегда верно. Реальное ограничение заключается в том, что одновременно на ядро процессора может приходиться только один рабочий процесс. Многопроцессорные системы позволяют нескольким процессам выполняться параллельно. Базовая система почти всегда имеет десятки запущенных процессов.
Права доступа в Linux
Как и в других операционных системах, вы можете создать множество пользователей в системе Linux. В таких случаях существует система управления правами, которая поддерживает отдельных пользователей и группы. Здесь вступают в игру права доступа к файлам и пользователям.
Ядро Linux управляет данными и проверяет необходимые разрешения для каждого процесса. Например, если вы пытаетесь открыть файл, ядро должно проверить идентификатор процесса на соответствие разрешениям доступа. Если ядро проверяет и видит, что у вас есть разрешения, оно откроет файл.
Ядро Linux контролирует все
Как вы можете видеть, ядро Linux контролирует все: от безопасности ваших файлов до создания пользователей и загрузки файлов из Интернета. Все в определенном порядке. У каждого пользователя есть права. Ядро Linux управляет процессами и временными интервалами для достижения максимальной производительности.
Более того, файловая система, которая является одной из самых больших особенностей, отличающих ядро Linux от других операционных систем, очень важна. Linux — это не скрытый ящик. Напротив, все файлы и исходные коды доступны. Чтобы лучше понять практическую и мощную природу ядра Linux, вы можете изучить иерархию системы каталогов Linux.
Смотрите другие статьи на нашем канале .
Структура каталогов Linux
Команда Linux, которую вам нужно знать
8 лучших сайтов для запуска Linux в веб-браузере
Вы также можете оставить свое мнение об этом посте в разделе комментариев.
Внутреннее устройство Ядра 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 Домены исполнения и двоичные форматы