Кто разрабатывает ядро линукс

Содержание
  1. Разработка ядра Linux
  2. Разработка ядра Linux
  3. Кто управляет процессом?
  4. Выводы
  5. Линус Торвальдс: человек, который создал ядро ​​Linux
  6. 1. Назван в честь лауреата Нобелевской премии
  7. 2. Торвальдс — Редкая фамилия
  8. 3. Его первый компьютер
  9. 4. Торвальдс был младшим лейтенантом в армии
  10. 5. Он разработал свой собственный ассемблер и игры
  11. 6. Университетский проект
  12. 7. Торвальдс хотел назвать ядро Freax
  13. 8. Он получил торговую марку Linux
  14. 9. Его личный талисман
  15. 10. Он женился на своей ученице
  16. 11. Стив Джобс пытался завербовать Линуса Торвальдса
  17. 12. В его честь назван астероид
  18. 13. Его другие известные творения
  19. 14. Торвальдсу не любит C ++
  20. 15. Он ненавидит социальные сети
  21. 16. Его часто обвиняют в том, что он невежлив с другими программистами
  22. 17. Он больше не программист
  23. 18. Чистая стоимость Торвальдса
  24. 19. Награды и признание СМИ
  25. Национальная библиотека им. Н. Э. Баумана Bauman National Library
  26. Персональные инструменты
  27. Linux (ядро)
  28. Содержание
  29. Историческая справка
  30. Краткая история Unix
  31. Краткая история Linux
  32. Переход от Unix к Linux
  33. Понятие ядра операционной системы Linux.
  34. Устройство компонентов ядра ОС Linux
  35. Файловая подсистема
  36. Подсистема управления запросами
  37. Подсистема ввода/вывода
  38. Особенности архитектуры
  39. Выполнение в режиме ядра
  40. Примечания
  41. Литература

Разработка ядра Linux

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

Согласно данным The Linux Foundation, начиная с 2005 года, более 14 000 индивидуальных разработчиков и более чем 1300 различных компаний внесли свой вклад в ядро. В этой статье мы рассмотрим, как и кем ведется разработка ядра Linux, кто все это финансирует и контролирует.

Разработка ядра Linux

Примерно раз в год The Linux Foundation выпускает отчет по процессу разработки ядра с данными о частоте выпусков, скорости изменений и компаниях, которые в этот раз внесли свой вклад. Например, последний отчет был выпущен в августе 2016 года и охватывает версии ядер 3.9 — 4.7.

Одно из наиболее интересных изменений — это уменьшение вклада в развитие ядра со стороны неоплачиваемых разработчиков. За этот период их доля сократилась от 14,6 до 7,7%. Это объясняется тем, что многие из этих разработчиков были наняты компаниями.

Что касается корпоративных взносов, то за этот период доля Intel составила 12,9%, Red Hat — 8%, Linaro — 4%, Samsung — 3,9%, SuSE — 3,2%, IBM — 2,7%. Но несколько лет назад история была совсем иной. В 2010 году Red Hat была на первом месте — 10.2%, за ней Intel — 8,8%, Texsa Instruments — 4,1%, Linaro — 4,1%, SuSE — 3,5%, IBM — 3,1%. Заметно выросла доля Intel. Директор отдела Intel Open Source Technology Center не раз заявлял, что ядро Linux имеет для компании очень важное, стратегическое значение. Как видим, поддержка ядра Linux выполняется многими компаниями.

Также интересным есть увеличение вклада компании Samsung от 2,9 до 3,9%. На фоне других компаний вклад Red Hat снижается, но совместное участие Red Hat и Intel держится достаточно стабильным на протяжении многих лет. Начиная от низкого уровня 18,1% в 2012 и до максимума — 20,9% в 2016.

На конференции LinuxCon в 2016 году генеральный директор Red Hat, Джим Уайтхерст, говорил о том, что на ряду с техническим вкладом в ядро, они строят новую бизнес модель. Возможно, увеличение доли Intel свидетельствует о том, что они пытаются повторить то, что уже было сделано в Red Hat. В плане патчей вклад различных компаний за 2016 год таков: Red Hat — 18,4%, The Linux Foundation — 13,5%, Intel — 12,1%, Linaro — 8,7%, Google — 5,3%, Samsung — 3,5%, SuSE — 2,9%, AMD — 2,1%.

То, что организация The Linux Foundation находится на втором месте не удивительно, поскольку здесь работает Грег Кроа-Хартман, который занимается поддержкой стабильной ветви ядра, подсистему тестирования, а также несколько других подсистем. Этот человек был ответственен за 13,992 из 14,180 правок от The Linux Foundation.

Кто управляет процессом?

Тем не менее вклады компаний и разработчиков ничего нам не говорят о том, как принимаются патчи в ядро и как идет разработка ядра Linux. Ядро Linux — это огромный проект, над которым работает большое количество разработчиков. Все это невозможно контролировать одному человеку. Сделаем небольшое описание ядра Linux.

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

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

Для координации действий всех разработчиков используется рассылка Email. На первый взгляд, может показаться, что это устаревшая технология, но на самом деле это не так. Почта — это лучший способ управления таким большим проектом, как ядро. Она быстрее, чем любая из альтернатив, при количестве изменений от 8 в час от 4000 разработчиков и 400 компаний, нужно очень мощное решение.

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

Выводы

В этой статье мы сделали описание процесса разработки ядра linux, кто основные разработчики ядра, и как они это делают. Надеюсь, информация была полезной для вас.

Видео «Как разрабатывается Linux» от The Linux Foundation:

Источник

Линус Торвальдс: человек, который создал ядро ​​Linux

Линус Бенедикт Торвальдс, финско-американский программист, создал ядро Linux в 1991 году. Это свободное ядро Unix-подобной операционной системы с открытым исходным кодом, которое породило сотни дистрибутивов операционных систем, широко известных как Linux.

Сегодня Linux используется в широком спектре вычислительных систем, от встроенных устройств и персональных компьютеров до больших ЭВМ и суперкомпьютеров. Она поддерживает большую часть сети, включая Google и Facebook, и полностью доминирует над суперкомпьютерами. На самом деле, 500 самых быстрых суперкомпьютеров в мире работают под управлением Linux.

Торвальдс был удостоен многочисленных наград и премий за свое творчество. Мы собрали некоторые из самых интересных фактов о его жизни, карьере и медийном признании.

1. Назван в честь лауреата Нобелевской премии

Торвальдс был назван в честь Линуса Полинга, который был удостоен Нобелевской премии по химии (1954) и Нобелевской премии мира (1962). Полинг был одним из четырех человек, получивших более чем одну Нобелевскую премию.

2. Торвальдс — Редкая фамилия

В мире едва ли найдется 30 человек с такой фамилией. По словам Линуса, его дед по отцовской линии сменил фамилию с Торвальда на Торвальдс, вероятно, потому, что не любил свою семью. Все Торвальды в мире-его потомки.
Или можно сказать, что одно из самых известных имен в вычислительной технике полностью выдумано, причем не более двух поколений назад.

3. Его первый компьютер

VIC-20 материнская плата

Торвальдс получил свой первый компьютер в возрасте 10 лет. Это был 8-битный домашний компьютер Commodore VIC-20. Он был оснащен 5 КБ статической памяти и использовал процессор MOS 6502.

4. Торвальдс был младшим лейтенантом в армии

Хотя Торвальдс любит проводить время за компьютерами, он должен был выбрать 11-месячную программу подготовки офицеров для выполнения обязательной военной службы в Финляндии. В армии он носил звание младшего лейтенанта.

5. Он разработал свой собственный ассемблер и игры

Интерес Торвальдса к программированию начался еще в раннем возрасте. Он основательно настроил операционную систему своего персонального компьютера Sinclair QL. Поскольку в Финляндии было довольно трудно получить программное обеспечение, он написал свой собственный ассемблер и редактор для компьютера. Он также разработал несколько игр, в том числе клон Pac-Man под названием Cool Man.

6. Университетский проект

Торвальдс узнал о UNIX впервые в 1990 году. Это было время, когда он использовал MicroVAX (недорогой микрокомпьютер, разработанный Digital Equipment Corporation), работающий под управлением операционной системы Unix под названием Ultrix.
Впоследствии он приобрел 32-разрядный клон IBM PC на базе Intel i386 и начал работать над новой операционной системой. Год спустя он опубликовал свою магистерскую диссертацию под названием «Linux: портативная операционная система».

7. Торвальдс хотел назвать ядро Freax

На начальном этапе разработки Торвальдс хотел назвать свое изобретение Freax, которое представляет собой объединение Free, Freak и буквы X (как намек на Unix). Он даже хранил файлы под именем Freax около шести месяцев.

Но Ари Лемке, одному из добровольных администраторов FTP-сервера, не понравилось имя Freax, и он назвал проект Linux на сервере, не спросив Торвальдса. Позже, однако, Торвальдс согласился на это имя.

8. Он получил торговую марку Linux

В период с 1994 по 1995 год несколько человек из разных стран пытались зарегистрировать название «Linux» в качестве товарного знака и начали требовать лицензионных отчислений от разработчиков Linux.

Это заставило Торвальдса вмешаться. Он подавил этих людей с помощью Linux International и получил товарный знак Linux. Охраной товарного знака позже занимался некоммерческий Институт Linux Mark Institute.

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

9. Его личный талисман

Талисманом Торвальдса является пингвин по кличке Такс. Он также был принят в качестве талисмана ядра Linux. Логотип операционной системы, пухлый пингвин, является изображением с открытым исходным кодом, и никто не владеет им. Он был разработан Ларри Юингом в 1996 году и усовершенствован Линусом Торвальдсом.

10. Он женился на своей ученице

В 1993 году Торвальдс преподавал базовые компьютерные уроки в Хельсинкском университете. Он поручил своим ученикам отправить ему электронное письмо в качестве теста (да, тогда составление электронной почты было большим делом).

Одна из его студенток по имени Туве Монни ответил на электронное письмо с просьбой о свидании. Перенесемся на пару лет вперед, они поженились и родили трех дочерей. Системный вызов перезагрузки ядра Linux принимает их даты рождения (введенные в шестнадцатеричном формате) в качестве магических значений.

11. Стив Джобс пытался завербовать Линуса Торвальдса

В 2000 году генеральный директор Apple Стив Джобс пригласил Торвальдса в кампус Apple в Купертино и попытался нанять его. Джобс хотел, чтобы он работал в Apple и прекратил работу над проектом Linux. Торвальдс отклонил предложение и продолжил работу над Linux. Кроме того, ему не нравилось ядро ​​Mac в Mac OS.

Это было время, когда Apple активно вкладывала средства в Mac OS X, которая впоследствии послужила основой для iPhone и iPad.

12. В его честь назван астероид

ОС Linux использовалась Spacewatch и многими другими исследованиями астероидов для сбора и анализа данных. В честь Линуса за это создание астероид 9793 Торвальдс был назван в его честь в 1996 году.

В 2003 году в честь него была названа астероидная луна Линус, которая вращается вокруг большого астероида M-типа 22 Каллиопа. Название также предназначалось в честь персонажа комикса «Арахис» Линуса ван Пелта.

13. Его другие известные творения

Git: Линус также создал Git, распределенную систему контроля версий для отслеживания изменений в исходном коде во время разработки программного обеспечения.

До 2005 года он использовал проприетарное программное обеспечение под названием BitKeeper для контроля версий в ядре Linux. Когда Bitkeeper закрыл бесплатный сервис, Торвальдс написал собственное бесплатное программное обеспечение [Git] для координации работы разработчиков и отслеживания изменений в любом наборе файлов.

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

14. Торвальдсу не любит C ++

Линус Торвальдс опубликовал сообщение в техническом списке, в котором говорится, что C++ — это ужасный язык. По его словам, библиотечные функции C++, такие, как Boost и STL, являются неэффективными и нестабильными. Эти функции заставляют разработчиков переписывать приложения, как только они понимают, что их программа слишком сильно зависит от хороших объектных моделей вокруг нее.

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

15. Он ненавидит социальные сети

Линус не большой поклонник современных социальных сетей, таких как Twitter, Facebook или Instagram. В интервью с Робертом Янгом он сказал, что социальные сети — это болезнь, и это, похоже, способствует плохому поведению.

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

16. Его часто обвиняют в том, что он невежлив с другими программистами

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

Хотя он блестящий, веселый и вовсе не плохой человек, он не терпит разработчиков, которые не соответствуют его высоким ожиданиям. Иногда технические дискуссии переходят в страстные словесные кулачные бои, полные оскорблений.

17. Он больше не программист

В то время как ядро ​​Linux содержит около 28 миллионов строк кода в своем репозитории Git, Торвальдс написал менее 1%. Он написал большую часть основных функций, таких как планировщик, управление памятью, интерфейс системных вызовов. По состоянию на 2020 год основными участниками по почтовым доменам являются Intel и Red Hat.

В наши дни Торвальдс является менеджером кода и сопровождающим, а не разработчиком. Большая часть его личного вклада включает в себя объединение кода, написанного другими, с небольшим программированием. Он имеет высшие полномочия решать, какие функции должны (или не должны) быть включены в ядро Linux.

18. Чистая стоимость Торвальдса

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

Однако мы знаем, что два ведущих разработчика программного обеспечения на основе Linux, VA Linux и Red Hat, представили Торвальдсу опционы на акции в 1999 году. Обе компании стали публичными в том же году, и временная стоимость акций Линуса выросла до 20 миллионов долларов США.

19. Награды и признание СМИ

Торвальдс получил десятки престижных наград, в том числе IEEE Masaru Ibuka Consumer Electronics Award (2018), IEEE Computer Pioneer Award (2014), Интернет-зал славы (2012) и Vollum Award (2005).

Кроме того, журнал Time признал его одним из самых влиятельных людей в мире (2004 год) и одним из героев-революционеров последних шести десятилетий (2006 год). Путеводитель Британика в 2010 году назвал его одним из 100 самых влиятельных изобретателей всех времен.

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

Linux (ядро)

Linux kernel
РазработчикЛинус Торвальдс и сторонние разработчики
Написана наC и Ассемблер [1]
Линейка ОСUnix-подобная
Дата первого релиза0.01 (17 September 1991 года ; 30 years ago ( 1991-09-17 ) )
Доступно вРусский
Ядро (тип)Монолитное ядро
ЛицензияGNU GPL, version 2 [2] plus various optional freely redistributable (proprietary) binary blobs [3]
Официальный веб-сайтkernel .org

Содержание

Историческая справка

Краткая история Unix

Хронология разработки ядра Linux очень обширна, однако точно прослеживаются истоки его создания, которые ведут к UNIX. В 1969 году Кен Томпсон из исследовательской группы Bell Laboratories совместно с Деннисом Ритчи на передовом микро-компьютере PDP-7 разработал ядро многозадачной, многопользовательской операционной системы UNICS ( позже переименованной в UNIX-TP). В момент создания ядра UNIX-TP Ритчи находился под влиянием своего прошлого проекта — ОС MULTICS, несмотря на наличие достаточно инновационных и передовых идей, таких как: строго сегментированная модель данных, сегментно-страничная виртуальная память, динамическое связывание, переконфигурация всей системы «на ходу», иерархическая файловая система, впервые реализованный подход с использованием стеков для каждого вычислительного процесса внутри системы ядра и др; проект был закрыт ввиду сложной архитектуры ОС, а также из-за недостатков, связанных с распределением памяти файлов, больших по размеру чем установленный системный лимит. Стоит также заметить, что вся операционная система, включая сложный компилятор языка PL/I, пользовательские команды и дополнительные библиотеки, состояла из примерно полутора тысяч исходных файлов, каждый из которых содержал примерно по 200 строк кода. В скомпилированном виде весь этот код занимал около 4,5 Мегабайт, что было огромным размером по тем временам. Компиляторы Multics в основном оптимизировали код по размеру, а не по эффективности использования центрального процессора, что было обосновано стремлением к экономии памяти в многопользовательской системе.

Несмотря на неудачу своего предшественника, UNIX вобрал в себя концепцию MULTICS и был детально проработан. Первые две версии ОС были написаны на ассемблере, однако третья и четвертая версии использовали язык, разработанный Ритчи — С [4] , архитектура третьей версии использовала встроенный компилятор языка, а четвертая представляла собой полностью переписанное на СИ системное ядро. С приходом пятой версии UNIX был полностью переписан на язык СИ. Изначально создателем он был задуман как язык необходимый в написании операционных систем. Это переписывание разрешено команде UNIX TM с целью перехода на более мощную аппаратную часть — PDP-11/45 и 11/70 компьютеры. С 1974 года UNIX стал распространяться среди университетов и академических учреждений. С 1975 года началось появление новых версий, разработанных за пределами Bell Labs, и рост популярности системы.

В 1980 году компанией AT&T был разработан пакет коммерческих лицензий на все дистрибутивы UNIX, и сведение всех версий в одну: UNIX System V. Университет Калифорнии, Беркли продолжал разрабатывать свою собственную версию Unix под названием BSD. Многие из важнейших разработок в UNIX изначально пришли из BSD, к примеру, включение TCP/IP в основную версию UNIX. Поскольку основная часть системы поставлялась в исходных текстах, написанных на языке С, опытным программистам не требовалось документации, чтобы разобраться в архитектуре UNIX. C ростом популярности микропроцессоров другие компании переносили эту операционную систему на другие платформы, но простота и ясность операционной системы искушали многих на ее расширение и последующую модификацию, в результате чего появилось много разновидностей базовой системы.

Не желая терять инициативу, AT&T в 1982 году объединила несколько существовавших версий UNIX и создала версию под названием SYSTEM |||. В отличие от редакций, предназначавшихся, в первую очередь, для внутреннего использования и не получивших дальнейшего развития, SYSTEM ||| была создана для распространения за пределами Bell Labs и AT&T и положила начало новой ветви UNIX , которая и сегодня жива и развивается.

Краткая история Linux

В 1991 году в Хельсинки, Финляндии, Линус Торвальдс начал работу над проектом, который был, по его словам, «просто для удовольствия». Этот проект в конечном счете стал ядром Linux. Он никогда не был предназначен для чего-то особенного, просто инструмент, который позволил бы студенту получить доступ к UNIX-серверам в соседнем университете. Он написал его специально для железа, на котором он работал на тот момент, и оно не зависело от операционной системы. Linux разработана «с нуля» для процессора Intel i386, сегодня она перенесена на огромный ряд других аппаратных платформ, включая серверы Alpha фирмы DEC.

Переход от Unix к Linux

Linux был разработан в попытке создать бесплатную альтернативу коммерческим UNIX-средам. Его история начинается в 1991 или даже в 1983 гг., когда был создан проект GNU, чьей исходной целью было предоставить бесплатную альтернативу UNIX. Linux работает на гораздо большем количестве платформ, например на Intel®/AMD x86. Большинство ОС UNIX способны работать только на одной платформе.У Linux и UNIX общие исторические корни, но есть и серьезные отличия. Много инструментов, утилит, и бесплатных приложений, являющихся стандартными для Linux, первоначально задумывались как бесплатная альтернатива программам для UNIX. Linux часто предоставляет поддержку множества опций и приложений, заимствуя лучшую или наиболее популярную функциональность из UNIX. Администратору или разработчику, который привык работать с Linux, система UNIX может показаться не очень удобной для использования. С другой стороны, фундамент UNIX-подобной операционной системы (инструменты, файловая система, интерфейсы API) достаточно стандартизирован.

Понятие ядра операционной системы Linux.

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

  1. создает процессы и управляет ими
  2. распределяет и обеспечивает доступ к файлам, а также к периферийным устройствам

Взаимодействие прикладных задач с ядром происходит посредством стандартного интерфейса системных вызовов. Интерфейс системных вызовов представляет собой набор услуг ядра и определяет формат запросов на услуги. Процесс запрашивает услугу посредством системного вызова определенной процедуры ядра, внешне похожего на вызов обычной библиотечной функции . Ядро от имени процесса выполняет запрос и возвращает процессу необходимые данные.

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

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

Все коммерческие версии UNIX в некоторой степени эволюционировали до модульного ядра. Драйверы и отдельные особенности ОС доступны как отдельные компоненты и могут быть по необходимости загружены или выгружены из ядра. Но открытая модульная архитектура Linux гораздо гибче. Однако гибкость и адаптируемость Linux означают и постоянное изменение. Исходный код Linux постоянно меняется, и, по прихоти разработчика, может поменяться API. Когда модуль или драйвер написан для коммерческой версии UNIX, он проработает гораздо дольше, чем тот же драйвер для Linux.

Устройство компонентов ядра ОС Linux

Ядро состоит из:

  1. Файловая система
  2. Подсистема управления процессами и памятью
  3. Подсистема ввода / вывода

Файловая подсистема

Файловая подсистема обеспечивает унифицированный интерфейс доступа к данным, расположенным на дисковых накопителях, а также к периферийным устройствам. Одни и те же функции open(), read(), write() могут использоваться как при чтении или записи данных на диск, так и при выводе текста на принтер или в терминал. Файловая подсистема контролирует права доступа к файлу, выполняет операции размещения и удаления файла. Поскольку большинство прикладных функций выполняется через интерфейс файловой системы, права доступа к файлам определяют привилегии пользователя в системе. Файловая подсистема обеспечивает маршрутизацию запросов периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.

Подсистема управления запросами

Запущенная на выполнение программа порождает в системе один или более процессов ( задач ). Подсистема управления процессами контролирует:

  1. Создание и удаление процессов
  2. Распределение системных ресурсов ( памяти, вычислительных ресурсов ) между процессами
  3. Синхронизацию процессов
  4. Межпроцессорное взаимодействие

Известно, что в общем случае число активных процессоров превышает число процессоров компьютера, но в каждый конкретный момент времени на каждом процессоре может выполняться только один процесс. Операционная система управляет доступом процессоров к вычислительным ресурсам, создавая ощущение одновременного выполнения нескольких задач. Специальная задача ядра, называемая распорядителем или планировщиком процессов, разрешает конфликты между процессами в конкуренции за системные ресурсы ( процессор, память, периферийные устройства ). Планировщик запускает процесс на выполнение, следя за тем, чтобы процесс монопольно не захватил разделяемые системные ресурсы. Процесс освобождает процессор, ожидая длительной операции ввода/вывода, или по прошествии периода времени. В этом случае планировщик выбирает следующий процесс с наивысшим приоритетом и запускает его на выполнение. Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. Оперативная память является дорогостоящим ресурсом, и, как правило, она редко «простаивает». В случае, если для всех процессов недостаточно памяти, ядро перемещает части процесса или несколько процессов во вторичную память ( как правило, для этого выделена некоторая область жесткого диска ), освобождая ресурсы для действующих процессов. Все современные системы реализуют виртуальную память: процесс выполняется в собственном логическом адресном пространстве, которое может значительно превышать доступную физическую память. Управление виртуальной памятью процесса также входит в перечень задач модуля управления памятью. Модуль межпроцессного взаимодействия.отвечает за уведомление процессов о событиях с помощью сигналов и обеспечивает возможность передачи данных между различными процессами.

Подсистема ввода/вывода

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

Особенности архитектуры

Ядро Linux поддерживает многие унаследованные от UNIX особенности, такие как:

  1. многозадачность
  2. виртуальную память
  3. динамические библиотеки
  4. отложенную загрузку
  5. производительную систему управления памятью
  6. современные сетевые протоколы

На сегодняшний день Linux — монолитное ядро с поддержкой загружаемых модулей. Драйверы устройств и расширения ядра обычно запускаются в 0-м кольце защиты, с полным доступом к оборудованию. В отличие от обычных монолитных ядер, драйверы устройств легко собираются в виде модулей и загружаются или выгружаются во время работы системы, эта особенность также является унаследованной от первого предшественника — ОС Multics. То, что архитектура Linux не является микроядерной, вызвало обширнейшие споры между Линусом Торвальдсом и Эндрю Таненбаумом в конференции.

Выполнение в режиме ядра

Существуют всего три события, при которых выполнение процесса переходит в режим ядра:

  1. аппаратные прерывания
  2. особые ситуации
  3. системные вызовы

Во всех случаях ядро Linux получает управление и вызывает соответствующую системную процедуру для обработки события. Непосредственно перед вызовом ядро сохраняет состояние системы, а именно состояние прерванного процесса в системном стеке. После завершения обработки, состояние процесса восстанавливается и процесс возвращается в исходный режим выполнения. Чаще всего это режим задачи, например, когда прерывание возникло, когда процесс уже находился в режиме ядра, после обработки события он останется в том же состоянии. Стоит разграничить особые ситуации и прерывания. Аппаратные прерывания генерируются периферией при наступлении исключительных событий ( например, завершение печати или поступление данных на последовательный вход ввода ) и имеют асинхронный характер, поскольку невозможно в тот или иной момент сказать, когда система нам пробросит исключение. Часто, эти прерывания не связаны с текущим процессом, а вызваны внешними событиями. Именно поэтому, обработка прерываний происходит в системном контексте, при этом недопустим доступ к адресному пространству процесса. По этой причине обработка ситуаций не должна блокироваться, поскольку это вызовет блокирование выполнения независимого процесса Системные вызовы позволяют процессам воспользоваться базовыми услугами ядра. Интерфейс системных вызовов определяет ограниченный набор точек входа в ядро системы, обращение к которым изменяет режим выполнения процесса и позволяет выполнять привилегированные функции ядра. Стандартная библиотека C, позволяющая использовать системные функции как обычные процедуры, на самом деле содержит заглушки, обеспечивающие фактическую реализацию вызова соответствующей точки входа ядра. Эта реализация практически не зависит от аппаратной части системы. Например, для систем на базе процессоров Intel используются шлюзы. Имеются два типа шлюзов: шлюзы ловушек и шлюзы вызовов. Для осуществления вызова через шлюз ловушки процесс выполняет команду прерывания, а при работе через шлюз вызова — команду межсегментного вызова. Выполнение системного вызова происходит в режиме ядра, но в контексте процесса, сделавшего системный вызов. Таким образом, открыт доступ к адресному пространству процесса и используется стек ядра процесса.

Примечания

  1. ↑ Balsa, Andrew D. «The linux-kernel mailing list FAQ». Tux.Org.
  2. ↑ Martens, China (28 July 2006). «Linux creator Torvalds still no fan of GPLv3». InfoWorld. IDG . Retrieved 15 February 2015 .
  3. ↑»kernel/git/stable/linux-stable.git». git.kernel.org. 16 October 2002 . Retrieved 21 August 2012 . path: root/firmware/WHENCE
  4. ↑Си

Литература

Робачевский, Андрей (2002). Autotools : Операционная система Unix / by Андрей Робачевский. No Starch Press. p. 528. ISBN 5-8206-0030-4.

Источник

Mac OS X Hints
Adblock
detector