К основному контенту

Что делает ядро Linux

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

Но что делает ядро Linux? Как оно работает? Какие его основные задачи? Это очень обширная тема и мы попытаемся разобрать ее в этой статье.

Содержание статьи: Что делает ядро Linux? Хранение данных Доступ к сети Планирование задач Выводы Что делает ядро Linux?

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

Но прежде чем рассматривать как работает та или иная функция ядра операционной системы, давайте рассмотрим за что вообще оно отвечает. Ядро обеспечивает абстракцию для программистов, которые разрабатывают программы для платформы Linux. Эта абстракция позволяет упростить сложные задачи. Термин абстракция в информатике означает скрытие сложных механизмов и алгоритмов за более простой и стандартной функцией.

Естественно, ядро - это не единственное программное обеспечение, которое обеспечивает абстракцию, куда более важен уровень абстракции, предоставляемый драйверами. Ядру необязательно знать как работать с тем или иным устройством, поскольку за это отвечают драйвера. Поэтому ядро может работать на разном оборудовании.

Возьмем для примера чтение и запись данных в оперативную память. Каждая материнская плата может иметь разные контроллеры памяти, а ваш компьютер может работать на процессоре ARM, Intel, AMD, SPARC, PowerPC или MIPS. Но это не будет иметь значения для вашей программы Hello World, а так как ядро предоставляет унифицированный интерфейс для всех этих платформ.

Теперь, давайте рассмотрим какие именно функции предоставляет ядро или, иными словами, какие абстракции мы получим:

Хранение данных: RAM - Чтение и запись данных в оперативную память; Постоянное хранение - Чтение и запись данных на постоянные запоминающие устройства; Виртуальная файловая система;

Доступ к сетям: Работа с физическими сетями (Ethernet, Wireless, LTE, коммутаторы, Bluetooth; Виртуальные сети;

Планирование задач: Совместное использование процессорного времени программами; Балансировка нагрузки процессора и приоритеты;

Поддержка внешних устройств: Съемные USB носители; Веб-камеры; Мыши и клавиатуры;

Безопасность: Права доступа к файлам для пользователей и групп; Разрешение доступа к ресурсам системы;

Благодаря вышеуказанным функциям ядра Linux разработка программ становится проще. Ядро реализует все это с помощью системных вызовов. Дальше мы рассмотрим более детально многие функции. Хранение данных

Существует два способа хранения данных - это временный и постоянный. Временное хранение - это оперативная память. Не все данные, которые попадают в ОЗУ нужно постоянно хранить. Например, когда вы просматриваете интернет, вы же не хотите чтобы каждая веб-страница, видео или изображение были сохранена на вашем жестком диске. Иначе он очень быстро переполниться. Также для некоторых данных нужна максимальная скорость чтения и записи, ее и обеспечивает ОЗУ.

Ядро Linux обеспечивает прозрачный интерфейс для чтения и записи данных из оперативной памяти. Не имеет значения где запущенна операционная система, на старом процессоре i386 или новом Andorid ARM смартфоне. Код не нужно менять для обеспечения совместимости. Ядро содержит код для большинства аппаратных платформ, поэтому оно может обеспечить единый интерфейс для работы с ними.

Кроме того, ядро изолирует каждый процесс в отдельном пространстве памяти, а это значит, что процессу не нужно знать принадлежит ли эта память ему, потому что вся доступная память принадлежит ему. Такое разделение увеличивает безопасность системы.

Похоже, дела обстоят с постоянным хранением. Ядро скрывает от программ отличия между интерфейсами SATA, PATA, SCSI, USB, M2 и другими протоколами хранения. Одна программа может работать с любым носителем и любой поддерживаемой файловой системой без каких-либо изменений в программе. Это увеличивает повторное использование кода и производительность труда разработчиков. Доступ к сети

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

Но к счастью, на данный момент самые популярные протоколы, это IPv4 и IPv6. Что касается других сетевых протоколов, таких как DECnet, IPX, AppleTalk, то они поддерживаются ядром, но вряд ли есть смысл использовать их в современных программах.

Вернемся к IPv4 и IPv6. У обоих слишком разные форматы записи IP адреса, но это скорее хорошо, чем плохо. Тип протокола можно определить сразу по форме IP адреса. Ядро обеспечивает поддержку протоколов передачи данных: TCP, UDP, SCTP и ICMP. Все они могут быть очень легко использованы с помощью системных вызовов. Не имеет значения, подключен ли ваш компьютер к Ethernet или Wifi. Эта обеспечивает гибкость для конечных пользователей. Планирование задач

Планирование процессорного времени это очень большая и сложная тема. Мы не будем затрагивать алгоритмы планирования, нас интересуют только задачи ядра Linux в относительно управления каждым процессом.

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

Каждому процессу нужно время процессора, а ядро гарантирует что каждый процесс получит его в порядке очереди. Помимо этого, некоторым процессам нужна задержка или ожидание ввода/вывода, и этим тоже занимается ядро. Пока процесс ждет, на процессоре будет выполняться другой процесс, а потом исходный процесс получит свое время. Планирование позволяет программисту не заботится о количестве запущенных процессов. Выводы

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

На завершение краткая история Linux:

Источник: https://fossbytes.com

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…