Меню Закрыть

Что такое ядро ос типа unix

Программы

ОС UNIX одновременно является операционной средой использования существующих прикладных программ и средой разработки новых приложений. Новые программы могут писаться на разных языках (Фортран, Паскаль, Модула, Ада и др.). Однако стандартным языком программирования в среде ОС UNIX является язык Си (который в последнее время все больше заменяется на Си ++ ). Это объясняется тем, что, во-первых, сама система UNIX написана на языке Си, а, во-вторых, язык Си является одним из наиболее качественно стандартизованных языков.

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

К основным функциям ядра ОС UNIX принято относить следующие.

1. Инициализация системы – функция запуска и раскрутки. Ядро системы обеспечивает средство раскрутки (bootstrap), которое обеспечивает загрузку полного ядра в память компьютера и запускает ядро.

2. Управление процессами и нитями – функция создания, завершения и отслеживания существующих процессов и нитей (процессов, выполняемых на общей виртуальной памяти). Поскольку ОС UNIX является мультипроцессорной операционной системой, ядро обеспечивает разделение между запущенными процессами времени процессора (или процессоров в мультипроцессорных системах) и других ресурсов компьютера для создания внешнего ощущения того, что процессы реально выполняются в параллель.

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

4. Управление файлами – функция, реализующая абстракцию файловой системы, иерархии каталогов и файлов. Файловые системы ОС UNIX поддерживают несколько типов файлов. Некоторые файлы могут содержать данные в формате ASCII, другие будут соответствовать внешним устройствам. В файловой системе хранятся объектные файлы, выполняемые файлы и т.д. Файлы обычно хранятся на устройствах внешней памяти; доступ к ним обеспечивается средствами ядра. В мире UNIX существует несколько типов организации файловых систем. Современные варианты ОС UNIX одновременно поддерживают большинство типов файловых систем.

5. Коммуникационные средства – функция, обеспечивающая возможности обмена данными между процессами, выполняющимися внутри одного компьютера (IPC – Inter-Process Communications), между процессами, выполняющимися в разных узлах локальной или глобальной сети передачи данных, а также между процессами и драйверами внешних устройств.

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

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась – это был конец пары: "Что-то тут концом пахнет". 8526 – | 8113 – или читать все.

91.146.8.87 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Ядро Linux содержит более 13 миллионов строк кода и является одним из самых крупных проектов с открытым исходным кодом в мире. Так что такое ядро Linux и для чего оно используется?

Что такое ядро Linux?

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

Виды и версии ядра

Что такое ядро Linux вы уже знаете, но какие вообще бывают виды ядер? Есть различные способы и архитектурные соображения при создании ядер с нуля. Большинство ядер могут быть одного из трех типов: монолитное ядро, микроядро, и гибрид. Ядро Linux представляет собой монолитное ядро, в то время как ядра Windows и OS X гибридные. Давайте сделаем обзор этих трех видов ядер.

Микроядро

Микроядра реализуют подход, в котором они управляют только тем, чем должны: процессором, памятью и IPC. Практически все остальное в компьютере рассматривается как аксессуары и обрабатывается в режиме пользователя. Микроядра имеют преимущество в переносимости, они могут использоваться на другом оборудовании, и даже другой операционной системе, до тех пор, пока ОС пытается получить доступ к аппаратному обеспечению совместимым образом.

Читайте также:  Использовать экшен камеру как веб камеру

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

Плюсы

  • Портативность
  • Небольшой размер
  • Низкое потребление памяти
  • Безопасность

Минусы

  • Аппаратные средства доступны через драйверы
  • Аппаратные средства работают медленнее потому что драйверы работают в пользовательском режиме
  • Процессы должны ждать свою очередь чтобы получить информацию
  • Процессы не могут получить доступ к другим процессам не ожидая

Монолитное ядро

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

Плюсы:

  • Более прямой доступ к аппаратным средствам
  • Проще обмен данными между процессами
  • Процессы реагируют быстрее

Минусы:

  • Большой размер
  • Занимает много оперативной памяти
  • Менее безопасно

Гибридное ядро

Гибридные ядра могут выбирать с чем нужно работать в пользовательском режиме, а что в пространстве ядра. Часто драйвера устройств и файловых систем находятся в пользовательском пространстве, а IPC и системные вызовы в пространстве ядра. Это решение берет все лучшее из обоих предыдущих, но требует больше работы от производителей оборудования. Поскольку вся ответственность за драйвера теперь лежит на них.

Плюсы

  • Возможность выбора того что будет работать в пространстве ядра и пользователя
  • Меньше по размеру чем монолитное ядро
  • Более гибкое

Минусы

  • Может работать медленнее
  • Драйверы устройств выпускаются производителями

Где хранятся файлы ядра?

Где находится ядро Linux? Файлы ядра Ubuntu или любого другого Linux-дистрибутива находятся в папке /boot и называются vmlinuz-версия. Название vmlinuz походит с эпохи Unix. В шестидесятых годах ядра привыкли называть просто Unix, в 90-х годах Linux ядра тоже назывались – Linux.

Когда для облегчения многозадачности была разработана виртуальная память, перед именем файла появились буквы vm, чтобы показать что ядро поддерживает эту технологию. Некоторое время ядро называлось vmlinux, но потом образ перестал помещаться в память начальной загрузки, и был сжат. После этого последняя буква x была изменена на z, чтобы показать что использовалось сжатие zlib. Не всегда используется именно это сжатие, иногда можно встретить LZMA или BZIP2, поэтому некоторые ядра называют просто zImage.

Нумерация версии состоит из трех цифр, номер версии ядра Linux, номер вашей версии и патчи или исправления.

В паке /boot можно найти не только ядро Linux, такие файлы, как initrd.img и system.map. Initrd используется в качестве небольшого виртуального диска, который извлекает и выполняет фактический файл ядра. Файл System.map используется для управления памятью, пока еще ядро не загрузилось, а конфигурационные файлы могут указывать какие модули ядра включены в образ ядра при сборке.

Архитектура ядра Linux

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

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

Представьте себе возможность установить пакет обновлений Windows без необходимости постоянных перезагрузок.

Модули ядра

Что, если бы Windows уже имела все нужные драйвера по умолчанию, а вы лишь могли включить те, которые вам нужны? Именно такой принцип реализуют модули ядра Linux. Модули ядра также известные как загружаемые модули (LKM), имеют важное значение для поддержки функционирования ядра со всеми аппаратными средствами, не расходуя всю оперативную память.

Модуль расширяет функциональные возможности базового ядра для устройств, файловых систем, системных вызовов. Загружаемые модули имеют расширение .ko и обычно хранятся в каталоге /lib/modules/. Благодаря модульной природе вы можете очень просто настроить ядро путем установки и загрузки модулей. Автоматическую загрузку или выгрузку модулей можно настроить в конфигурационных файлах или выгружать и загружать на лету, с помощью специальных команд.

Читайте также:  Crash dump что это

Сторонние, проприетарные модули с закрытым исходным кодом доступны в некоторых дистрибутивах, таких как Ubuntu, но они не поставляются по умолчанию, и их нужно устанавливать вручную. Например, разработчики видеодрайвера NVIDIA не предоставляют исходный код, но вместо этого они собрали собственные модули в формате .ko. Хотя эти модули и кажутся свободными, они несвободны. Поэтому они и не включены во многие дистрибутивы по умолчанию. Разработчики считают что не нужно загрязнять ядро несвободным программным обеспечением.

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

Ядро Linux
Типсвободное и открытое программное обеспечение и ядро операционной системы
АвторЛинус Торвальдс[1]
РазработчикЛинус Торвальдс , Кокс, Алан , Грег Кроа-Хартман , Ingo Molnár[d] и Andrew Morton[d]
Написана наСи[3] , ассемблер и C++
Первый выпуск25 августа1991
Аппаратная платформаARM , AVR , Blackfin[d] , DEC Alpha , ETRAX CRIS[d] , Itanium , MIPS , PA-RISC , PowerPC , SPARC , SuperH , TILE64[d] , Unicore[d] , Xtensa[d] , Motorola 680×0 , IBM System/390 , x86 , x86-64 и z/Architecture [d]
Последняя версия
  • 5.4.6 ( 21 декабря2019 ) [2]
ЛицензияGNU GPL 2[4][5][6]
Сайтkernel.org​ (англ.)
Медиафайлы на Викискладе

Ядро Linux ( /ˈlɪnʊks/ [7] ) — ядро операционной системы, соответствующее стандартам POSIX, составляющее основу операционных систем семейства Linux. Разработка кода ядра была начата финским студентом Линусом Торвальдсом в 1991 году, на его имя зарегистрирована торговая марка «Linux».

Код написан в основном на Си с некоторыми расширениями gcc и на ассемблере (с использованием AT&T-синтаксиса GNU Assembler).

Распространяется как свободное программное обеспечение на условиях GNU General Public License, кроме несвободных элементов, особенно драйверов, которые используют прошивки, распространяемые под различными лицензиями [8] .

Операционные системы на базе ядра Linux являются лидерами на рынках суперкомпьютеров, микрокомпьютеров, серверов и смартфонов.

Содержание

История [ править | править код ]

Начало проекту было положено в 1991 году с публикации сообщения в новостной группе Usenet [9] .

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

«Linux» как ядро операционной системы, разработка которого была начата Торвальдсом — лишь небольшая часть многих из использующих его систем, которые обычно тоже называют «Linux». Это иногда приводит к путанице, и те из них, которые используют системные библиотеки (например, GNU C Library) и другие программы проекта GNU, формально называют также «GNU/Linux» [10] .

По состоянию на сентябрь 2016 года семейство операционных систем на базе ядра Linux — третье по популярности в мире на рынке настольных компьютеров — 5,8 % [11] . На рынке веб-серверов доля Linux порядка 32 %, остальное — Unix-системы (FreeBSD и др.) [12] . По данным Top500 (июнь 2016 года), Linux используется в качестве операционной системы на 99,4 % самых мощных суперкомпьютеров планеты [13] .

Большинство мобильных устройств, таких, как смартфоны и планшетные компьютеры на базе операционных систем Android, MeeGo, Tizen, а также телевизоры и многие служебные устройства, такие, как внешние сетевые жёсткие диски, маршрутизаторы и модемы, также использует операционные системы на базе ядра Linux.

Хронология [ править | править код ]

  • Апрель 1991: 21-летний Линус Торвальдс начал работу над некоторыми механизмами операционной системы. Он начал с эмулятора терминала и планировщика задач.
  • 25 августа 1991: Торвальдс поместил сообщение в новостную группу по Minix[9][14] .
  • 17 сентября 1991: Linux версии 0.01 (10 239 строк кода).
  • 5 октября 1991: Linux версии 0.02 [1] (англ.) .
  • Декабрь 1991: Linux версии 0.11. Это была первая версия Linux, на которой можно было собрать Linux из исходных кодов.
  • 19 января 1992: Первое сообщение в группе новостей alt.os.linux (англ.) .
  • 31 марта 1992: Создана группа новостей comp.os.linux (англ.) .
  • Апрель 1992: Linux версии 0.96, на котором стало возможно запустить графический сервер X Window System.
  • Весь 1993 и начало 1994: 15 тестовых выпусков версии 0.99.* (в июле 1993 введено понятие BogoMips).
  • 14 марта 1994: Linux версии 1.0.0 (176 250 строк кода).
  • Март 1995: Linux версии 1.2.0 (310 950 строк кода).
  • 9 мая 1996: Выбран символ Linux — пингвин Tux.
  • 9 июня 1996: Linux версии 2.0.0 (777 956 строк кода).
  • 25 января 1999: Linux версии 2.2.0, изначально довольно недоработанный (1 800 847 строк кода).
  • 4 января 2001: Linux версии 2.4.0 (3 377 902 строки кода).
  • 18 декабря 2003: Linux версии 2.6.0 (5 929 913 строк кода).
  • 23 марта 2009: Linux версии 2.6.29, временный символ Linux — тасманский дьявол Tuz (11 010 647 строк кода).
  • 22 июля 2011: релиз Linux 3.0 (14,6 млн строк кода).
  • 24 октября 2011: релиз Linux 3.1.
  • 15 января 2012: релиз Linux 3.3 преодолел отметку в 15 млн строк кода.
  • 23 февраля 2015: первый релиз-кандидат Linux 4.0 (более 19 млн строк кода).
  • 7 января 2019: первый релиз-кандидат Linux 5.0 (более 26 млн строк кода).
Читайте также:  4Th master hard disk error

Версии [ править | править код ]

Торвальдс продолжает выпускать новые версии ядра, объединяя изменения, вносимые другими программистами, и внося свои. Оно обычно называется «ванильным» (vanilla), то есть официальное ядро без каких-либо сторонних изменений. В дополнение к официальным версиям ядра существуют альтернативные ветки, которые могут быть взяты из различных источников. Как правило, разработчики дистрибутивов Linux поддерживают свои собственные версии ядра, например, включая в них драйверы устройств, которые ещё не включены в официальную версию. С 30 мая 2011 изменена политика нумерации версий ядра [15] .

Нумерация версий до 30 мая 2011 [ править | править код ]

Номер версии ядра Linux до 30 мая 2011 содержал четыре числа, согласно недавнему изменению в политике именования версий, схема которой долгое время была основана на трёх числах. Для иллюстрации допустим, что номер версии составлен таким образом: A.B.C[.D] (например, 2.2.1, 2.4.13 или 2.6.12.3).

  • Число A обозначает версию ядра. Изначально задумывалось, что оно будет изменяться редко и только тогда, когда вносятся значительные изменения в код и концепцию ядра, первые такие изменения произошли в 1994 году (версия 1.0) и в 1996 году (версия 2.0). Впоследствии правило значительности изменений было нарушено, и дважды очередные версии ядра выходили с обновлённой первой цифрой — 31 мая 2011 года (3.0.0) и 21 апреля 2015 (4.0.0).
  • Число B обозначает старшую версию ревизии ядра. В ядрах до версии 3.0 Чётные числа обозначали стабильные ревизии, то есть те, которые предназначены для продуктивного использования, такие, как 1.2, 2.4 или 2.6, а нечётные — ревизии для разработчиков, предназначенные для того, чтобы тестировать новые улучшения и драйвера до тех пор, пока они не станут достаточно стабильными для того, чтобы включить их в стабильный выпуск.
  • Число C обозначает младшую версию ревизии ядра. В старой трёхчисловой схеме нумерации оно изменялось тогда, когда в ядро включались заплатки, связанные с безопасностью, исправления ошибок, новые улучшения или драйверы. С новой политикой нумерации, однако, оно изменяется только тогда, когда вносятся новые драйверы или улучшения; небольшие исправления поддерживаются числом D.
  • Число D впервые появилось после случая, когда в коде ядра версии 2.6.8 была обнаружена грубая, требующая незамедлительного исправления ошибка, связанная с NFS. Однако других изменений было недостаточно для того, чтобы это послужило причиной для выпуска новой младшей ревизии (которой должна была стать 2.6.9). Поэтому была выпущена версия 2.6.8.1 с единственным изменением в виде исправления этой ошибки. С ядра 2.6.11 эта нумерация была адаптирована в качестве новой официальной политики версий. Исправления ошибок и заплатки безопасности теперь обозначаются с помощью четвёртого числа, тогда как большие изменения отражаются в увеличении младшей версии ревизии ядра (число C).

Нумерация версий с 30 мая 2011 [ править | править код ]

30 мая 2011 Линус Торвальдс выпустил ядро версии 3.0-rc1. Вместе с ним изменена политика нумерации версий ядра. Отменено использование чётных и нечётных номеров для обозначения стабильности ядра, а третье число означает стабильность ядра. Версия 3.0 практически не несёт никаких изменений, кроме изменения политики нумерации ядра. Таким образом, стабильные версии ядра 3.0 будут именоваться 3.0.X, а следующий после этого релиз будет иметь номер 3.1.

Поддержка [ править | править код ]

В то время как Торвальдс продолжает выпускать новые экспериментальные версии, руководство LTS-версиями передаётся другим лицам:

СерияВерсииРуководителиОкончание поддержки
3.23.2.101Бэн ХатчингсМай 2018
3.43.4.113Ли ЗифанОктябрь 2016
3.103.10.108Уилли ТароуНоябрь 2017
3.123.12.74Иржи СлабиМай 2017
3.143.14.79Грег Кроа-ХартманСентябрь 2016
3.163.16.73Бэн ХатчингсАпрель 2020
3.183.18.136Саша ЛевинЯнварь 2017
4.14.1.51Саша ЛевинМай 2018
4.44.4.190Грег Кроа-ХартманФевраль 2022
4.94.9.190Грег Кроа-ХартманЯнварь 2023
4.144.14.141Грег Кроа-ХартманЯнварь 2020
4.194.19.69Грег Кроа-ХартманДекабрь 2020

Другими программистами ядра Linux являются Роберт Лав [en] и Инго Молнар [en] [16] .

Рекомендуем к прочтению

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code

Adblock detector