- Архитектура Linux. Детальное описание анатомии Линукса от и до
- Краткая история возникновения Linux — систем
- Архитектура Linux
- Заключение
- Архитектура ОС GNU/Linux
- Архитектура ОС GNU/Linux:
- Двух уровневая архитектура:
- Структурная схема ядра:
- Вывод:
- Что такое Linux? История создания Linux
- История возникновения Unix
- Появление проекта GNU
- История создания Linux
- Что такое Linux?
- GNU/Linux или Linux?
- Архитектура Linux-систем
- Ядро Linux
- Заключение
Архитектура Linux. Детальное описание анатомии Линукса от и до
Архитектура Linux берет свое начало еще в далеком 1969 -м году. Именно в то время команда разработчиков-энтузиастов начала работу над грандиозным проектом создания обобщенной операционной системы для различных видов компьютеров, дав ей название «Unix».
Краткая история возникновения Linux — систем
Как мы знаем, Linux — это часть сообщества unix-подобных операционных систем, которые функционируют на ядре Линукс. Это ядро в 1991-м году разработал финно-американский студент-разработчик Линус Торвальдс. На такую разработку его вдохновило прочтение книги о проектировании ОС Unix , и он решил продолжить эту идею. В 91-м году выходят 2 прототипа экспериментальных Линукс-систем, которые были, мягко говоря, не работоспособными. Потом в течение 2-х лет велась упорная работа над разработкой рабочей версии ОС Linux. И вот в 1994-м году увидела свет первая стабильная и работоспособная версия операционной системы Линукс. Внутри себя она содержала ядро Linux и небольшое количество программного обеспечения для поддержки работоспособност и системы, которое разработала та же команда разработчиков, которая создала и само ядро. Это был довольно скудный набор инструментов, но зато был дан старт эпохе Linux — систем. Еще один момент — эта «первая» операционная система тогда называлась «Freax», а имя «Linux» она приобрела несколько позже.
Уже с тех времен главным принципом этой ОС была поддержка открытого исходного кода. Именно это позволило развиваться Линукс-системам и дорасти до того, что сегодня имеем мы.
Это сейчас мы в слово «Linux» вкладываем полноценную операционную систему, которую можно инсталлировать и сразу пользоваться, но по сути «Linux» — это просто ядро. А все остальное его программное обеспечение — это труд многих «свободных» программистов, которые трудились над разработкой ядра и создавали для него свое ПО. И то , что мы сейчас понимаем под «операционной системой Линукс», — это симбиоз ядра Linux и стороннего программного обеспечения.
Любая операционная система, которая использует ядро Линукс, будет именоваться «дистрибутивом Линукс а ». И это будет полноценная ОС, как Windows или MacOS. Но дистрибутивы Линукса от других ОС отличает важная особенность — открытый исходный код. А это означает, что фактически любой пользователь способен внести туда собственные корректировки и разработать индивидуальную операционную систему или отредактировать старую под собственные нужды. При этом нужно заметить, что дистрибутивы « пингвина » бывают и платными — это когда их разработчики «закрывают» собственные наработки от стороннего вмешательства.
Даже те, кто не знаком с Линукс — системами, знают, что талисманом ядра Linux является пингвин. У него даже есть имя — Tux. Он стал талисманом еще в 1996-м году и был предложен самим создателем ядра — Линусом Торвальдсом.
Архитектура Linux
Архитектура Linux — систем состоит всего их 4-х основных компонентов , к аждый из которых имеет в своем составе различные собственные элементы. Давайте представим себе круг и начнем двигаться от его центра к краю, перечисляя компоненты:
- «Железо». Это аппаратные характеристики устройства, на котором используется Линукс: архитектура системы, вид е окарта, аудиокарта, процессор, ядра и т. д.
- «Ядро Linux». Это основной компонент Линукс-систем. По сути это «мостик», который связывает низкоуровневое «железо» и высокоуровневые компоненты операционной системы.
- «Оболочка». Это пользовательский интерфейс, который налаживает согласованность между пользователем и ядром операционной системы. Это тоже «мостик», но только более «продвинутый», так как создан для человека, чтобы он мог влиять на работу Линукс-системы.
- «Утилиты». Это программное обеспечение, которое дает возможность пользователю системы использовать ее потенциальные возможности.
Как мы уже писали, основным компонентом Линукс-системы является ядро. Ядро — это важнейшая программа в операционной системе. Именно оно:
- является посредником между всеми компонентами «железа» и налаживает их взаимодействие с пользователем системы;
- распределяет ресурсы системы между работающими программами и всеми запущенными процессами;
- всегда первым загружается в систему и постоянно находится в рабочем состоянии.
Заключение
Архитектура Linux настолько проста и эффективна, что ее можно интегрировать в различные устройства. Линукс можно встретить в:
- персональных компьютерах;
- суперкомпьютерах;
- смартфонах;
- серверах;
- других системах и устройствах.
Linux не задумывался как альтернатива Windows или MacOS. Его разработка являлась желанием сделать доступную и эффективную операционную систему. Но результат превзошел ожидания , и по факту получилась целая экосистема с продуктами Linux, что не может не радовать последователей этой системы.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Источник
Архитектура ОС GNU/Linux
В этой статье вы прочитаете про архитектура ОС Linux, думаю будет очень интересно и полезно.
Также посмотрите статью «Лучшие книги для изучения Linux», там вы найдёте ещё книги для изучения Linux.
Архитектура ОС GNU/Linux:
Для того что бы понять GNU/Linux нужно разобраться с его архитектурой для этого вспомним что же такое операционная система (сокращенно ОС). ОС – это системная программа, которая выступает в качестве посредника между пользователем и аппаратурой компьютера. ОС – это системная программа, которая выступает в качестве посредника между прикладными программами и аппаратурой компьютера.
Для простоты условно разделим архитектуру на 3 части: двух уровневая (простая), структурная (схематическая, с основными компонентами системы) и полная схема ядра (объединение всех частей ядра в единую схему). Постепенно разберемся с каждой из них и будем углублять знания о GNU/Linux. И в конце сравним архитектуры Windows и Linux.
- Двухуровневая архитектура;
- Структурная архитектура;
- Сравнение Windows и GNU/Linux;
- Полная схема ядра Linux;
Двух уровневая архитектура:
Архитектура любой ОС может быть разделена структурно на 2 части это ядро (Kernel) и программы (Applications). Applications+Kernel это ОС. Ядро (Kernel) – это центр ОС.
Оно обеспечивает доступ программы к оборудованию компьютера, такого как оперативная память, процессорное время, жесткие диски, видеокарта и т.д.
Программы (Applications) – это разные утилиты, сервисы, прикладные программы и т.д. Из 2-х уровневой архитектуры, можно сделать вывод: ничего особенного.
Схематически так можно изобразить любую операционную систему. Windows, Dos, Unix, MAC ОС и другие. Попробуем разобраться детальней.
Программное обеспечение в GNU/Linux взято из проекта Ричарда Столлмэна GNU — то самое свободное программное обеспечение (open source). Ядро, которое использует GNU/Linux, то самое ядро Linux, написанное Линусом Торвальдсом.
Ядро любой ОС можно классифицировать как: монолитное ядро, модульное ядро, микроядро, экзо-ядро, нано-ядро, гибридное ядро. В ОС GNU/Linux используется монолитное ядро.
Монолитное ядро – изображено на рисунке и состоит из ядра (kernel) и модулей (modules). Части ядра – называют модулями.
При этом модуль ядра — это часть ядра, то есть модуль не является полноценной, независимой программой, а является частью одной большой программы, которая называется ядро ОС.
Все модули используют единое адресное пространство оперативной памяти, одни и те же данные. Иными словами, любой модуль может обратиться к данным которые использует другой модуль, так и к ОП другого модуля.
Как вывод крах одного модуля может повлечь за собой крах другого модуля или всей системы. К примеру, в случае если модуль некорректно изменит общие данные, то это может привести к ошибке в другом модуле и возможно к ошибке во всем ядре.
В архитектуре монолитного ядра есть свои плюсы и минусы. Плюсы заключаются в том, что разрабатывать отдельные модули ядра очень просто, и работает такое ядро очень быстро.
Минусом является то, что ошибка в работе любого модуля, может приведет к краху всей системы.
Старые ядра Linux требовали перекомпиляции ядра (то есть созданию нового ядра) при использовании нового оборудования.
То есть если возникала необходимость добавить новый модуль в ядро, то приходилось целиком пересобрать ядро. Новые ядра Linux могут на ходу подгружать модули. Такие модули часто называют динамическими.
Структурная схема ядра:
Посмотрим на архитектуру GNU/Linux немного детальней. Архитектура разбита на 3 функциональных уровня: уровень пользователя, уровень ядра и уровень аппаратуры.
Уровень пользователя — это то, что до этого момента мы называли: программы (Applications). На этом уровне работают разные программы, службы, системные утилиты и т.д.
Уровень ядра – тут находится само ядро ОС.
Уровень аппаратуры — тут находятся разные устройства таки как оперативная память, процессор, жесткие диски, видеокарта и т.д.
В уровне пользователя есть программное обеспечение (пользовательские приложения), которое может работать напрямую с ядром, либо посредством специальных системных библиотек (к примеру: glibc).
В пространстве ядра есть “обращение к операционной системе”, это посредник между программами и ядром. (Executive Services), который принимает данные от программ и передает их ядру системы, а ядро непосредственно работает с оборудованием.
Как видно из схемы после “обращения к операционной системе”, есть всего два варианта развития дальнейших событий.
Обращаться можно только к “подсистема управления файлами” либо к “подсистема управления процессами”. “Подсистема управления файлами” – управляет всем: вводом/выводом, устройствами и т.д. “Подсистема управления процессами” – управляет процессорным временем, ОП, процессами и т.д. “Подсистема управления процессами” позволяет процессам обмениваться данными друг с другом с помощью специальных процедур, которые называют каналы. “Подсистема управления файлами” и “подсистема управления процессами” могут между собой взаимодействовать.
Именно “Подсистема управления файлами” ( файловая система) и “подсистема управления процессами”( управления процессами) — две основных компоненты ядра. “Подсистема управления файлами” формирует нужного синтаксиса данные и отправляет их “Драйверу устройства”. “Подсистема управления файлами” может передавать символы или блоки данных. Стоит отметить, что Linux изначально разрабатывался под девизом: «Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс» (Дуг МакИлрой, изобретатель каналов UNIX).
Именно поэтому Подсистема управления файлами связана с драйверами напрямую не битовыми потоками, а символьными.
Подсистема управления файлами разрабатывалась с возможностью отобразить все что есть в системе: устройства (жесткий диск, принтеры и т.д.), процессы, и т.д. Как видно из схемы, именно на файловую систему ложится задача передавать данные устройствам. Именно здесь, в файловой системе, каждое устройство представляется в виде отдельного специального файла, что позволяет легко и просто обращаться к любому устройству.
Для связи с жестким диском процесс использует файл “/dev/hdа”. Который в свою очередь связывается с драйвером жесткого диска. Драйвер жесткого диска уже непосредственно обращается к жесткому диску и производит чтение или запись. Еще несколько примеров.
Например: принтер – это специальный файл, и все что будет скопировано в этот файл — будет распечатано.
Например: сетевой адаптер – это специальный файл, и все что будет скопировано в этот файл, будет передано по сети. Например: терминал (консоль пользователя) – это специальный файл, и все что в него будет записано, будет выведено на экране терминала (консоль пользователя).
Вывод:
В этой статье вы прочитали про архитектура ОС Linux, думаю вам было вполне интересно и вы многое узнали.
Источник
Что такое Linux? История создания Linux
Обновл. 27 Июл 2021 |
Раньше компьютеры были такими большими, что могли занимать целую комнату или даже дом. Вы только представьте себе, как трудно было ими управлять. Более того, каждый компьютер имел свою собственную операционную систему, в результате чего работать с такими машинами было жутко неудобно. Программное обеспечение таких компьютеров было узкоспециализированным, и не могло работать на другом компьютере. Не говоря уже о том, что подобная техника стоила таких невообразимо больших денег, что обычные люди не могли себе этого позволить.
В качестве решения вопроса с операционной системой компанией AT&T была создана операционная система Unix, которая дала старт возникновению открытого программного обеспечения и созданию Linux. Но давайте по порядку.
История возникновения Unix
В 1969 году команда разработчиков в лице Кена Томпсона, Денниса Ритчи и Дугласа Макилроя из исследовательского центра «Bell Labs» компании AT&T начала проект по созданию единой операционной системы (сокр. «ОС») для всех компьютеров, назвав её — «Unix». Первая версия системы была написана на Ассемблере. В 1972 году для того, чтобы переписать систему на более простой язык, Деннис Ритчи создает язык программирования Си, благодаря чему, 15 октября 1973 года выходит новая версия Unix (четвертая), ядро которой было переписано на Си. А через 2 года (в 1975 году) появляется уже полностью написанная на языке Си редакция Unix (пятая).
Долгое время операционная система являлась лишь исследовательским проектом, но в 1973 году проходит конференция Ассоциации по вычислительной технике (сокр. «ACM» от «Association for Computing Machinery»), на которой создатели Unix рассказывают о своей системе, и к ним сразу же начинают обращаться люди с просьбой поделиться её копией. И тут стоит отметить одну очень важную историческую деталь, которая сыграла свою роль в дальнейшем развитии событий. Дело в том, что в 1956 году компания AT&T (являющаяся на тот момент монополистом на американском рынке местной и междугородней связи) завершает очередное разбирательство с федеральными властями и антимонопольным комитетом по поводу своего монопольного положения, результатом которого становится подписание соглашения, накладывающее на AT&T ограничения по продажи продуктов и услуг, не связанных напрямую с телефонами и телекоммуникациями. А это значит, что Unix не могла продаваться всем желающим её заполучить. В связи с этим фактом, распространение исходных кодов системы Unix происходило абсолютно бесплатно.
Первоначально Unix использовалась в основном в университетах и крупных финансовых корпорациях. К 1978 году насчитывалось около 600 машин с установленной на них системой Unix.
Появление проекта GNU
В восьмидесятые годы 20 века многие компании, в числе которых IBM и HP, начали создавать свои собственные (в том числе и коммерческие) версии системы Unix. Это привело к путанице дистрибутивов Unix. И к тому же фирмы, продающие свои дистрибутивы, прямо запрещали распространять их исходные коды. Из-за этого другие программисты не могли применять уже внедренные к тому моменту новые компоненты системы, и им приходилось писать их заново.
В 1982 году программист из Массачусетского технологического института (MIT) Ричард Столлман сталкивается с проблемой того, что существующая на тот момент коммерческая лицензия программного обеспечения, с которым он вынужден работать, ограничивает свободу своего использования и не позволяет Столлману обмениваться исходными кодами ПО даже в стенах института.
Поэтому, в 1983 году, с целью создать доступную полноценную Unix-подобную операционную систему с открытыми исходными кодами, обмениваться которой смогут все желающие, он начинает разработку проекта GNU (сокр. от «GNU is Not Unix»).
В рамках проекта GNU создаются необходимые для разработки ядра системы компоненты: текстовый редактор Emacs, набор компиляторов gcc, интерпретатор bash, архиватор gzip, утилиты sed, gawk, Autoconf и многие другие. Помимо этого, в 1988 году с целью юридически закрепить за пользователями права на копирование, модифицирование и распространение программ и исходных кодов проекта GNU, Столлманом публикуется лицензия GNU GPL (сокр. от «GNU General Public License» = «Универсальная общественная лицензия GNU»). Однако, несмотря на все его успехи, даже спустя 8 лет после старта проекта, не хватало самого важного компонента операционной системы — её ядра…
История создания Linux
В январе 1991 года, финский студент Линус Торвальдc, находясь под впечатлением от купленной им книги «Проектирование и реализация операционных систем» автора Эндрю С. Таненбаума, с целью детального изучения концепций и строения ОС Unix, решает купить новый компьютер на базе процессора Intel 80386, на который ставит разработанную Таненбаумом учебную ОС Minix.
Но учебная система — она на то и учебная, что обладает рядом недостатков. В частности, в Minix не только была плохая эмуляция терминала, но и не было возможности перевести в фоновый режим программу, которой временно не пользуешься.
И тогда в августе 1991 года Торвальдс объявляет в сети Usenet о том, что создает свою собственную (свободную) операционную систему с открытыми исходными кодами — Linux. Стоит отметить, что в тот момент речь еще не шла о полноценной системе, скорее это был её прообраз в виде ядра.
17 сентября того же 1991 года, без каких-либо особо публичных объявлений, выходит Linux версии 0.01.
Вскоре после этого, 5 октября, Торвальдс представляет версию 0.02, ставшей первой «официальной» версией своей ОС.
А уже 16 апреля 1994, когда, по мнению Линуса, система стала полностью работоспособной, вышел первый, после более чем двух лет развития, мажорный релиз системы — Linux 1.0.
Примечание: Изначально ОС называлась Freax, что является гибридом от английских слов «freak» (чудак) и «free» (бесплатный) с окончанием X, как дань операционной системе Unix. Однако имя «Linux» системе дал Ари Леммке (Ari Lemmke), по просьбе Торвальдса разместивший ОС на FTP-сервере университета в директории linux , а не freax .
Открытие исходных кодов операционной системы сыграло решающую роль в дальнейшем развитии Linux. Но необходимо все-таки помнить, что технически Linux — это только лишь ядро, без сопутствующих прикладных программ. Полноценной ОС его делает сопутствующее программное обеспечение. Пока роль такого программного обеспечения играли компоненты учебной системы Таненбаума.
Позже, когда Linux немного «окреп и встал на ноги», приложения из проекта GNU заменили соответствующие программы из Minix, так как лицензия (GNU GPL) на исходные коды программ проекта GNU была более удобна для применения в молодой операционной системе.
Таким образом, миру явилась полноценная работающая операционная система под названием «GNU/Linux», которую мы привыкли называть просто «Linux», состоящая из ядра Linux, написанного Торвальдсом, и окружающего программного обеспечения, созданного в рамках проекта Столлмана, GNU.
Что такое Linux?
Linux — это семейство Unix-подобных операционных систем, использующих ядро Linux, которое разработал финно-американский программист Линус Торвальдс. ОС, использующие ядро Linux, называются дистрибутивами Linux, и они являются такими же операционными системами как Microsoft Windows или Apple macOS, но с одной очень важной особенностью, а именно — их исходные коды являются открытыми, так как они распространяются под лицензией GNU GPL, которая подразумевает создание свободного и открытого программного обеспечения (open source software). Это означает, что у любого пользователя есть право изучать и изменять исходный код.
Примечание: Стоит отметить, что есть также и платные дистрибутивы Linux, например, Red Hat Enterprise Linux, Astra Linux Special Edition и др.
Официальным талисманом Linux с 1996 года является пингвин Tux (сокр. от «Torvalds UniX«). Идею использовать пингвина в качестве талисмана Linux выдвинул создатель этого ядра Линус Торвальдс.
Пингвин Tux — талисман Linux
GNU/Linux или Linux?
В сообществе программистов существует спор об именовании операционных систем, использующих ядро Linux и программное обеспечение, разработанное под лицензией GNU GPL. Поскольку ядро Linux само по себе не является работающей операционной системой, то многие предпочитают использовать термин «GNU/Linux».
Примечание: Поскольку статьи цикла «Уроки по Linux» имеют цель донести простыми словами о Linux-системах и их использовании для начинающих, то ради сохранения простоты и лаконичности мы будем использовать термин «Linux», обозначающий операционные системы, работающие на базе ядра Linux.
Вы же можете использовать как термин «Linux», так и термин «GNU/Linux».
Архитектура Linux-систем
На следующем рисунке показана архитектура Linux-систем:
«Железо» — аппаратное обеспечение компьютера (процессор, видеокарта, оперативная память и пр.) со всеми его периферийными устройствами.
Ядро — является основным компонентом операционной системы, взаимодействует непосредственно с аппаратным обеспечением, играя роль посредника между низкоуровневым «железом» и компонентами верхнего уровня.
Оболочка (или «shell», «командный интерпретатор») — интерфейс для взаимодействия между пользователями системы и ядром ОС, абстрагирующий внутреннее устройство системы. Принимает команды от пользователей и запускает на выполнение соответствующие функции.
Утилиты (vi, cat, sed, date, компиляторы и др.) — служебные программы, которые предоставляют пользователю большую часть функциональных возможностей операционной системы.
Ядро Linux
Ядро — это своего рода главная программа, являющаяся основной частью операционной системы. Оно выступает в роли посредника между устройствами компьютера (процессором, видеокартой, оперативной памятью и т.д.) и его программным обеспечением, абстрагируя от обычных программ и пользователей сложную, низкоуровневую работу с «железом» компьютера, предоставляя взамен простой, понятный и удобный в использовании интерфейс. Для этого в код ядра были включены драйверы устройств, которые могут как загружаться в память вместе с ядром ОС, так и подключаться по мере возникновения потребности в ресурсах необходимого устройства.
Примечание: Ядро Linux было разработано в 1991 году программистом Линусом Торвальдсом. Об этом снят документальный фильм «Revolution OS» (2001 г.).
Как вы наверняка знаете, на компьютере может быть запущено сразу несколько программ: какие-то из них работают в фоновом режиме, другие могут ожидать определенных действий от пользователя, а третьим необходимо получать информацию из другой запущенной программы. В такой ситуации именно ядро берет на себя функцию оптимального распределения ресурсов компьютера между запущенными программами и организацию параллельной работы множества различных процессов. Оно первым загружается в оперативную память компьютера и всегда находится в запущенном состоянии, постоянно взаимодействуя с его аппаратным обеспечением и установленными программами.
Как правило, большинство ядер делятся на три типа:
Микроядро — это ядро, состоящее из нескольких подгружаемых в память по мере надобности независимых модулей, выполняющихся в отдельных адресных пространствах. По сути, в таком варианте исполнения оно не сильно отличается от обычных прикладных программ. К достоинствам данного ядра можно отнести теоретически большую надежность в сравнении с другими архитектурами (в действительности же не всё так радужно и гладко) и его модульность (легкость в подключении дополнительных частей ядра). К минусам микроядерной архитектуры относится то, что ядро, построенное по такой схеме, получается очень медленным (ведь ему нужно постоянно переключаться между отдельными частями).
Монолитное ядро — это полная противоположность микроядра, т.к. в памяти компьютера всегда находится весь (или почти весь) код ядра, вследствие чего скорость его работы выше в сравнении с микроядром.
Гибридное ядро — это ядро, сочетающее в себе элементы как монолитной, так и микроядерной архитектур.
Ядро Linux хоть и относится к монолитным ядрам, но оно также заимствует и некоторые идеи из микроядерной архитектуры, что означает, что вся операционная система работает в пространстве ядра, а драйвера устройств (в виде модулей) могут быть легко загружены (или выгружены) прямо во время работы операционной системы.
Заключение
Linux поддерживает целый ряд аппаратных устройств от телефонов и до суперкомпьютеров. Каждая операционная система на базе ядра Linux имеет ядро Linux и набор ПО для управления аппаратными ресурсами компьютера.
На следующих уроках мы детально рассмотрим тему лицензии GNU GPL, сравним Linux и Windows, выполним обзор дистрибутивов Linux и продолжим наше погружение в изучение Linux.
Поделиться в социальных сетях:
Источник