LINUX-BG Адрес : http://www.linux-bg.org |
Видове ядра - и къде се вписва Линукс? |
От: gamehack Публикувана на: 8-09-2004 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=history&key=364777436 |
Ядра В компютърния свят, ядрото е фундаментална част от операционната система. То е част от софтуера, отговорен за предоставянето на сигурен достъп на програмите до хардуера на машината. Тъй като има много програми и достъпът до хардуера е ограничен, ядрото е също отговорно за решаването кога и колко дълго една програма ще бъде допусната да използва част от хардуера. Осигуряването на директен достъп до хардуера може също така да бъде много сложно, затова ядрата обикновено имплементират серия от хардуерни абстракции. Тези абстракции са начин, чрез който се скрива сложността, и се доставя ясен и непроменлив интерфейс към подлежащия хардуер, което улеснява живота на програмистта. Има четири вида ядра:
Монолитни ядра Монолитния подход дефинира интерфейс от високо ниво върху хадруера, заедно с набор от примитиви и системни извиквания, за да се инплементират системни услуги като мениждмънт на процесите, успоредност и мениждмънт на паметта, в няколко модула, които се изпълняват с правата на суперюзъра(root). Макар че всеки модул обслужващ тези операции е отделен като цяло, интеграцията на кода е много тясна и се постига трудно, и тъй като всички модули се изпълняват в едно пространство – това на ядрото – бъг в един от тях може да въвлече със себе си цялата система. Обаче, когато имплементацията е пълна и надеждна, тясната интеграция на компонентите позволява особеностите на ниско ниво на основната система да се използват ефективно, което прави едно добро монолитно ядро високо ефективно. Повечето модерни монолитни ядра като Линукс и FreeBSD ядрата могат да зареждат допълнителни бинарни модули по време на работата си, позволявайки лесно разширяване на възможностите на ядрото при нужда. Примери за монолитни ядра:
Микро ядра Подходът на микро ядрото се състои в дефинирането на много проста абстракция над хардуера с набор от примитиви и системни извиквания, за да се имплементира минимални услуги като мениждмънт на нишки, адресни пространства и комуникация между процеси. Главната цел е разделянето на основните имплементации на услугите от основните компоненти на системата. Например, процеса на заключване на ВХОДА/ИЗХОДА(Input/Output; I/O) може да бъде имплементиран в отделен сървърен модул, който ще се изпълнява над ядрото. Тези сървърни модули, които изпълняват задачи от системата от по-високо ниво, са модулни и опростяват структурата и дизайна на ядрото. Ако някой модул не работи както трябва това не разваля цялата система. По този начин този малък модул може да бъде рестратиран независимо от другите модули. Примери за микро ядра:
Монолитни ядра срещу микро ядра Монолитните ядра се предпочитат повече от микро ядрата, заради по-ниското ниво на сложност за бораване с целия код контролиращ системата в едно адресно пространство. Монолитните ядра са склонни да бъдат проектирани правилно и по този начин могат да се разрастнат по-бързо отколкото една система с микро ядро. Успехи има и в двата вида ядра. Микро ядрата са по-често използвани във вградени роботни или медицински компютри, защото по-голямата част от компонентите на ОС-а се намират в тяхна лична защитена памет. Това не е възможно при монолитните ядра, даже и с модерните, които могат да зареждат динамично модули. Въпреки че Mach е най-доброто микро ядро, няколко други микро ядра са разработени със специални цели. L3 е бил разработен, за да демонстрира, че микро ядрата не са задължително бавни. L4 e последоватеят на L3 и известна негова имплементация наречена Fiasco може да изпълнява Линукс заедно с другите процеси в собствени адресни пространства. Съществуват шотове на freshmeat.net показващи това. QNX е операционна система, която съществува от ранните 80-сте и има много минималистичен дизайн на микро ядрото. Тази система е далеч по-успешна от Mach в постигането на целите на парадигмата на микро ядрото. Тя се използва в ситуации, където на софтуерът не му е позволено да пропада. Това включва автоматичните ръце на совалките, където една грешка може да струва стотици хиляди долари. Хибриди Хибридните ядра като цяло са микро ядра, които имат малко код, разположен в ядрото, който не е основен, но е добавен, за да може някои неща да се изпълняват по-бързо, отколкото ако е в потребилтелското пространство. Това е бил компромис направен в ранните адаптации на микро ядрата преди да бъде показано, че истинските микро ядра също може да са много бързи. Повечето модерни операционни системи влизат в тази категория – Windows бъдейки най-известния пример. XNU, ядрото на Mac OS X, е също модифицирно микро ядро, поради включване на код от BSD ядрото в Mach ядрото. DragonFly BSD е първото BSD, което не е базирано на Mach ядрото, което ще адаптира хибридно ядро. Примери за хибридни ядра:
Екзо ядра/Външни ядра Външните ядра, също известни като вертикално структурирани операционни системи, са нов и твърде радикален подход към дизайн на операционната система. Идеята зад това е разработчикът да направи всичи решения, за действието на хардуера. Външните ядра са изключително малки като размер, тъй като те лимитират тяхната функционалност до защитата и разпределението на ресурсите. Класическите дизайни на ядрото(монолитните и микро) скриват хардуера, скривайки ресурсите под абстрактен хардуерен пласт. При тези класически системи, ако физическа памет бъде заделена, не може да се каже къде е нейното точно местоположение. Целта на външното ядро е да позволи на програмите да заявят определена част от паметта, определен блок от диска и така нататък, и просто да се уверят, че поисканият ресурс е свободен, и че програмата може да го използва. Някои теоритични последици от система с външно ядро е, че може да съществуват няколко вида операционни системи(Windows, Linux, Unix), които се изпълняват под едно външно ядро, и разработчикът може да избира да незачита или да разширява функционалността поради технически характеристики на бързодействие. В момента, външните ядра в по-голямата си част са научно изследване и не се използват в нито една от главните комерсиални опрерационни системи. Една концептуална операционна система е Namesis, написана от Университета на Каймбридж(University of Cambridge), Университета на Глазгоу, Цитрикс Системс и Шведския Институт по Компютърна наука. MIT(Масачузетския Институт по Технологии) също е изградил няколко системи базирани на външни ядра. Линукс Ядрото Линукс ядрото е свободно Unix-подобно ядро създадено от Линус Торвалдс през 1991 и в последствие се е подобрило с помощта на много разработчици по целия свят. Първоначално е разработено за Intel 386 процесора, но оттогава е портнато за много други платформи. То почти е написано изцяло на C с малко GNU C разширения и малко асемблер. Разработван под GPL лиценза, сорс кода на Линукс е свободно достъпен за всеки. Ядрото е най-известния пример за свободен софтуер и разработка на отворен код. Дистрибуции на софтуер базиран на това ядро са наричат Линукс дистрибуции. История Проектът е започнат през 1991 с известния вече пост в Usenet нюзгрупата comp.os.minix, което включва изречението: "I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones..." По това време GNU проекта е бил създал много от компонентите, необходими за една свободна ОС, но собственото им ядро – GNU Hurd – не е било готово. И тогава, и сега, BSD операционната система все още не е освободена от легални спънки. Това е оставило дупка за Линукс ядрото и макар с ограничено количество функционалност, то бързо привлякло разработчици и потребители. В началото, Миникс хакери спомогнали с код и идеи на Линус, и днес ядрото се развива със светкавична скорост.Първоначално, “Линукс” e било името на ядрото. Термина “ядро” се отнася за софтуера от ниско ниво, който предоставя слоя на хардуерно абстрахиране, контрол върху файловата система, мултитаскинг, load-balancing, мрежа и система за сигурност. Едно ядро не е цялостна операционна система. Една цялостна система е изградена върху Линукс ядрото, която се подвизава по-често под името Линукс ОС, макар че някои наричат системата GNU/Linux и тук има малко неразбирателство по този въпрос. Хората често бъркат ядрото с операционната система, което води до мното недоразумения. Версии Торвалдс продължава да пуска нови версии на ядрото, обединявайки приноса на други програмисти и естествено неговия. Всички Линукс версии, които завършват на четно число се смятат за стабилни – 1.0.x, 1.2.x, 2.0.x, 2.2.x, 2.4 и текущата 2.6.x; версии с нечетни числа, като например 2.5.x, са нестабилни версии. Докато Линус продължава да пуска последните текущи версии на ядрото, поддръжката на по-старите стабилни ядра се предава на други – David Weinehall (2.0), Alan Cox и после на Marc-Christian Petersen (2.2), Marcelo Tosatti (2.4) и Andrew Morton (2.6). В допълнение на тези официални ядра, алтернативни ядра могат да се намерят от други места. Дистрибутори на цели операционни системи обикновено поддържат техни собствени версии на ядрото, за да може да включват допълнителни драйвери, които все още не са одобрени в официалното ядро. Стабилни версии
Архитектура Линукс ядрото поддържа истински мултитаскинг, виртуална памет, споделени библиотеки, споделени copy-on-write изпълними файлове, мениджмънт на паметта и поддръжка на TCP/IP. Днес Линукс е монолитно ядро с възможността да се зареждат модули. Драйверите за устройствата и разширенията на ядрото по принцип се изпълнавят в ring 0, с пълен достъп до хардуера, въпреки това има някои, които се изпълняват в потребителското пространство. За разлика от стандартните монолитни ядра, драйверите могат лесно да бъдат конфигурирани като модули и да бъдат зареждани и отзареждани докато системата работи. Преносимост/Портативност Макар че първоначално Линукс да не е бил замислена като портативна операционна система, в момента тя е най-портативната операционна система (въпреки че, NetBSD е портнат за повече системи), която работи на системи като iPAQ (джобен компютър) чак до IBM S/390 ( масивен, много скъп мейнфрейм). Линукс е замислен за бъде главната операционна система на новия суперкомпютър на IBM - Blue Gene. В момента Линукс върви на тези архитектури:
Ядрото Сорс кодът на Линукс ядрото може да бъде свалено от kernel.org. За да приготвите едно ядро за ползване, изпълнете тези команди:
Лицензи Първоначално, Торвалдс е пуснал Линукс под лиценз, който забранявал всякакво комерсиално използване. Това скоро било променено на GPL v2. Този лиценз позволява диструбицията и даже продажбата на модифицирани версии на Линукс, но всички копия трябва да бъдат пуснати под същия лиценз и да бъдат придружени със сорс кода. Линус определя лицензирането на Линукс под GPL като "най-доброто нещо, което някога съм правил." Талисман Талисманът на Линукс е пингвин наречен Tux, създаден от Larry Ewing. Kernel panic При Линукс, "panic" е невъстановима системна грешка, открита от ядрото. Ядрото може да предприеме такова състояние като извика "panic" функцията, която се намира в хедър файла sys/systm.h. Въпреки това, повечето "panics" са резултат от неуправляеми процесорни изключение в кода на ядрото, такива като справки до невалидни адреси в паметта. Бележка: Очаквайте в най-скоро време много подробно обяснение за това как всъщност работи Линукс ядрото... Поздрави на всички, gamehack << Концепцията за основата на LINUX | УПОРСТВО, ТЪРПЕНИЕ И СМИРЕНИЕ >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|