ot gamehack(8-09-2004)

reiting (56)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane



Qdra


V kompyuturniia sviat, iadroto e fundamentalna chast ot operatsionnata sistema. To e chast ot softuera, otgovoren za predostavianeto na siguren dostup na programite do harduera na mashinata. Tui kato ima mnogo programi i dostuput do harduera e ogranichen, iadroto e sushto otgovorno za reshavaneto koga i kolko dulgo edna programa shte bude dopusnata da izpolzva chast ot harduera. Osiguriavaneto na direkten dostup do harduera mozhe sushto taka da bude mnogo slozhno, zatova iadrata obiknoveno implementirat seriia ot harduerni abstraktsii. Tezi abstraktsii sa nachin, chrez koito se skriva slozhnostta, i se dostavia iasen i nepromenliv interfeis kum podlezhashtiia harduer, koeto ulesniava zhivota na programistta.
Ima chetiri vida iadra:

  • Monolitnite iadra osiguriavat bogata i moshtna abstraktsiia ot harduera
  • Mikro iadrata osiguriavat malka seriia ot prosti harduerni abstraktsii i izpolzvat programi narecheni draiveri, za da se sdobiiat s poveche funktsionalnost
  • Hibridnite iadra sa pochti kato mikro iadrata, s izklyuchenie na tova, che imat poveche kod v iadroto i zatova sa po-burzi
  • Vunshnite iadra ne predostaviat nikakvi abstraktsii, no pozvoliavat izpolzvaneto na biblioteki, za da se dobavi poveche funktsionalnost posredstvom direkten ili pochti direkten dostup do harduera


Monolitni iadra

Monolitniia podhod definira interfeis ot visoko nivo vurhu hadruera, zaedno s nabor ot primitivi i sistemni izvikvaniia, za da se inplementirat sistemni uslugi kato menizhdmunt na protsesite, usporednost i menizhdmunt na pametta, v niakolko modula, koito se izpulniavat s pravata na superyuzura(root). Makar che vseki modul obsluzhvasht tezi operatsii e otdelen kato tsialo, integratsiiata na koda e mnogo tiasna i se postiga trudno, i tui kato vsichki moduli se izpulniavat v edno prostranstvo – tova na iadroto – bug v edin ot tiah mozhe da vuvleche sus sebe si tsialata sistema. Obache, kogato implementatsiiata e pulna i nadezhdna, tiasnata integratsiia na komponentite pozvoliava osobenostite na nisko nivo na osnovnata sistema da se izpolzvat efektivno, koeto pravi edno dobro monolitno iadro visoko efektivno.
Povecheto moderni monolitni iadra kato Linuks i FreeBSD iadrata mogat da zarezhdat dopulnitelni binarni moduli po vreme na rabotata si, pozvoliavaiki lesno razshiriavane na vuzmozhnostite na iadroto pri nuzhda.
Primeri za monolitni iadra:
  • Traditsionnite UNIX iadra, takiva kato iadrata na BSD
  • Linuks iadroto


Mikro iadra

Podhodut na mikro iadroto se sustoi v definiraneto na mnogo prosta abstraktsiia nad harduera s nabor ot primitivi i sistemni izvikvaniia, za da se implementira minimalni uslugi kato menizhdmunt na nishki, adresni prostranstva i komunikatsiia mezhdu protsesi.
Glavnata tsel e razdelianeto na osnovnite implementatsii na uslugite ot osnovnite komponenti na sistemata. Naprimer, protsesa na zaklyuchvane na VHODA/IZHODA(Input/Output; I/O) mozhe da bude implementiran v otdelen survuren modul, koito shte se izpulniava nad iadroto. Tezi survurni moduli, koito izpulniavat zadachi ot sistemata ot po-visoko nivo, sa modulni i oprostiavat strukturata i dizaina na iadroto. Ako niakoi modul ne raboti kakto triabva tova ne razvalia tsialata sistema. Po tozi nachin tozi maluk modul mozhe da bude restratiran nezavisimo ot drugite moduli.
Primeri za mikro iadra:
  • AIX
  • Contiki
  • L4 microkernel familiiata
  • Mach, izpolzvan v GNU Hurd i MacOS X
  • Minix
  • MorphOS
  • QNX
  • RadiOS
  • BeOS
  • VSTa


Monolitni iadra sreshtu mikro iadra

Monolitnite iadra se predpochitat poveche ot mikro iadrata, zaradi po-niskoto nivo na slozhnost za boravane s tseliia kod kontrolirasht sistemata v edno adresno prostranstvo.
Monolitnite iadra sa sklonni da budat proektirani pravilno i po tozi nachin mogat da se razrastnat po-burzo otkolkoto edna sistema s mikro iadro. Uspehi ima i v dvata vida iadra. Mikro iadrata sa po-chesto izpolzvani vuv vgradeni robotni ili meditsinski kompyutri, zashtoto po-goliamata chast ot komponentite na OS-a se namirat v tiahna lichna zashtitena pamet. Tova ne e vuzmozhno pri monolitnite iadra, dazhe i s modernite, koito mogat da zarezhdat dinamichno moduli.
Vupreki che Mach e nai-dobroto mikro iadro, niakolko drugi mikro iadra sa razraboteni sus spetsialni tseli. L3 e bil razraboten, za da demonstrira, che mikro iadrata ne sa zadulzhitelno bavni. L4 e posledovateiat na L3 i izvestna negova implementatsiia narechena Fiasco mozhe da izpulniava Linuks zaedno s drugite protsesi v sobstveni adresni prostranstva. Sushtestvuvat shotove na freshmeat.net pokazvashti tova.
QNX e operatsionna sistema, koiato sushtestvuva ot rannite 80-ste i ima mnogo minimalistichen dizain na mikro iadroto. Tazi sistema e dalech po-uspeshna ot Mach v postiganeto na tselite na paradigmata na mikro iadroto. Tia se izpolzva v situatsii, kudeto na softuerut ne mu e pozvoleno da propada. Tova vklyuchva avtomatichnite rutse na sovalkite, kudeto edna greshka mozhe da struva stotitsi hiliadi dolari.

Hibridi

Hibridnite iadra kato tsialo sa mikro iadra, koito imat malko kod, razpolozhen v iadroto, koito ne e osnoven, no e dobaven, za da mozhe niakoi neshta da se izpulniavat po-burzo, otkolkoto ako e v potrebiltelskoto prostranstvo. Tova e bil kompromis napraven v rannite adaptatsii na mikro iadrata predi da bude pokazano, che istinskite mikro iadra sushto mozhe da sa mnogo burzi. Povecheto moderni operatsionni sistemi vlizat v tazi kategoriia – Windows budeiki nai-izvestniia primer. XNU, iadroto na Mac OS X, e sushto modifitsirno mikro iadro, poradi vklyuchvane na kod ot BSD iadroto v Mach iadroto. DragonFly BSD e purvoto BSD, koeto ne e bazirano na Mach iadroto, koeto shte adaptira hibridno iadro.
Primeri za hibridni iadra:
  • Microsoft Windows NT
  • XNU
  • DragonFly BSD
  • ReactOS


Ekzo iadra/Vunshni iadra

Vunshnite iadra, sushto izvestni kato vertikalno strukturirani operatsionni sistemi, sa nov i tvurde radikalen podhod kum dizain na operatsionnata sistema. Ideiata zad tova e razrabotchikut da napravi vsichi resheniia, za deistvieto na harduera. Vunshnite iadra sa izklyuchitelno malki kato razmer, tui kato te limitirat tiahnata funktsionalnost do zashtitata i razpredelenieto na resursite.
Klasicheskite dizaini na iadroto(monolitnite i mikro) skrivat harduera, skrivaiki resursite pod abstrakten hardueren plast. Pri tezi klasicheski sistemi, ako fizicheska pamet bude zadelena, ne mozhe da se kazhe kude e neinoto tochno mestopolozhenie. TSelta na vunshnoto iadro e da pozvoli na programite da zaiaviat opredelena chast ot pametta, opredelen blok ot diska i taka natatuk, i prosto da se uveriat, che poiskaniiat resurs e svoboden, i che programata mozhe da go izpolzva.
Niakoi teoritichni posleditsi ot sistema s vunshno iadro e, che mozhe da sushtestvuvat niakolko vida operatsionni sistemi(Windows, Linux, Unix), koito se izpulniavat pod edno vunshno iadro, i razrabotchikut mozhe da izbira da nezachita ili da razshiriava funktsionalnostta poradi tehnicheski harakteristiki na burzodeistvie.
V momenta, vunshnite iadra v po-goliamata si chast sa nauchno izsledvane i ne se izpolzvat v nito edna ot glavnite komersialni opreratsionni sistemi. Edna kontseptualna operatsionna sistema e Namesis, napisana ot Universiteta na Kaimbridzh(University of Cambridge), Universiteta na Glazgou, TSitriks Sistems i SHvedskiia Institut po Kompyuturna nauka. MIT(Masachuzetskiia Institut po Tehnologii) sushto e izgradil niakolko sistemi bazirani na vunshni iadra.


Linuks Qdroto


Linuks iadroto e svobodno Unix-podobno iadro suzdadeno ot Linus Torvalds prez 1991 i v posledstvie se e podobrilo s pomoshtta na mnogo razrabotchitsi po tseliia sviat.
Purvonachalno e razraboteno za Intel 386 protsesora, no ottogava e portnato za mnogo drugi platformi. To pochti e napisano iztsialo na C s malko GNU C razshireniia i malko asembler.
Razrabotvan pod GPL litsenza, sors koda na Linuks e svobodno dostupen za vseki. Qdroto e nai-izvestniia primer za svoboden softuer i razrabotka na otvoren kod. Distributsii na softuer baziran na tova iadro sa narichat Linuks distributsii.


Istoriia

Proektut e zapochnat prez 1991 s izvestniia veche post v Usenet nyuzgrupata comp.os.minix, koeto vklyuchva izrechenieto:

"I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones..."

Po tova vreme GNU proekta e bil suzdal mnogo ot komponentite, neobhodimi za edna svobodna OS, no sobstvenoto im iadro – GNU Hurd – ne e bilo gotovo. I togava, i sega, BSD operatsionnata sistema vse oshte ne e osvobodena ot legalni spunki. Tova e ostavilo dupka za Linuks iadroto i makar s ogranicheno kolichestvo funktsionalnost, to burzo privliaklo razrabotchitsi i potrebiteli. V nachaloto, Miniks hakeri spomognali s kod i idei na Linus, i dnes iadroto se razviva sus svetkavichna skorost.
Purvonachalno, “Linuks” e bilo imeto na iadroto. Termina “iadro” se otnasia za softuera ot nisko nivo, koito predostavia sloia na harduerno abstrahirane, kontrol vurhu failovata sistema, multitasking, load-balancing, mrezha i sistema za sigurnost. Edno iadro ne e tsialostna operatsionna sistema. Edna tsialostna sistema e izgradena vurhu Linuks iadroto, koiato se podvizava po-chesto pod imeto Linuks OS, makar che niakoi narichat sistemata GNU/Linux i tuk ima malko nerazbiratelstvo po tozi vupros. Horata chesto burkat iadroto s operatsionnata sistema, koeto vodi do mnoto nedorazumeniia.

Versii

Torvalds produlzhava da puska novi versii na iadroto, obediniavaiki prinosa na drugi programisti i estestveno negoviia. Vsichki Linuks versii, koito zavurshvat na chetno chislo se smiatat za stabilni – 1.0.x, 1.2.x, 2.0.x, 2.2.x, 2.4 i tekushtata 2.6.x; versii s nechetni chisla, kato naprimer 2.5.x, sa nestabilni versii. Dokato Linus produlzhava da puska poslednite tekushti versii na iadroto, poddruzhkata na po-starite stabilni iadra se predava na drugi – David Weinehall (2.0), Alan Cox i posle na Marc-Christian Petersen (2.2), Marcelo Tosatti (2.4) i Andrew Morton (2.6). V dopulnenie na tezi ofitsialni iadra, alternativni iadra mogat da se nameriat ot drugi mesta. Distributori na tseli operatsionni sistemi obiknoveno poddurzhat tehni sobstveni versii na iadroto, za da mozhe da vklyuchvat dopulnitelni draiveri, koito vse oshte ne sa odobreni v ofitsialnoto iadro.

Stabilni versii

  • Versiia 1.0 prez Mart 1994 poddurzhalo samo ednoprotsesorni i386 mashini.
  • Versiia 1.2 prez Mart 1995 dobavilo poddruzhka za Alpha, Sparc i Mips.
  • Versiia 2.0 prez YUni 1996 dobavilo poddruzhka za poveche ot 1 protsesor i dobavilo SMP poddruzhka.
  • Versiia 2.2 prez Qnuari 1999.
  • Versiia 2.4 prez Qnuari 2001 dobavilo ISA Plug-and-Play, USB i PC Card poddruzhka. Poddruzhka za Axis Communications' ETRAX CRIS ("Code Reduced Instruction Set") protsesori i InterMezzo failovata sistema.
  • Versiia 2.6 na 17-ti Dekemvri 2003
    • integriran uClinux (za mikrokontroleri)
    • CPU poddruzhka: za Hitachi's H8/300 seriite, NEC v850, i vgradenite protsesori na Motorola m68k), NUMA poddruzhka, poddruzhka za Voyager arhitekturata na NCR i NEC PC-9800, poddruzhka na hyperthreading na Intel i PAE ("Physical Address Extension")
    • OS poddruzhka: za SGI XFS failovata sistema. Podobrena poddruzhka na APIC. Uvelichen maksimuma na potrebiteli i grupi ot 65,000 na nad 4 miliarda. Uvelichen broia na ID-ta na protsesite ot 32,000 na 1 miliard. Uvelichen broia na vidovete ustroistva ot 255 na 4095 i maksimalniia broi ustroistva ot vseki vid ot 255 na poveche ot milion. Podobrena 64-bitova poddruzhka i failovi sistemi do 16 terabaita na obiknoven harduer. Podobreniia na "tsialostnata proizvoditelnost" za interaktivni protsesi (poddruzhka na iadroto da bude preemptible i I/O scheduler-a e napulno prenapisan). Poddruzhka za futexes, prenapisa e infrastrukturata za nishki, za da pozvoli izpolzvaneto na Native POSIX Thread Library (NPTL). Podobren loudur za moduli. Nova failova sistema "system filesystem" narechena sysfs. User Mode Linux entegratsiia.


Arhitektura

Linuks iadroto poddurzha istinski multitasking, virtualna pamet, spodeleni biblioteki, spodeleni copy-on-write izpulnimi failove, menidzhmunt na pametta i poddruzhka na TCP/IP. Dnes Linuks e monolitno iadro s vuzmozhnostta da se zarezhdat moduli. Draiverite za ustroistvata i razshireniiata na iadroto po printsip se izpulnaviat v ring 0, s pulen dostup do harduera, vupreki tova ima niakoi, koito se izpulniavat v potrebitelskoto prostranstvo. Za razlika ot standartnite monolitni iadra, draiverite mogat lesno da budat konfigurirani kato moduli i da budat zarezhdani i otzarezhdani dokato sistemata raboti.

Prenosimost/Portativnost

Makar che purvonachalno Linuks da ne e bil zamislena kato portativna operatsionna sistema, v momenta tia e nai-portativnata operatsionna sistema (vupreki che, NetBSD e portnat za poveche sistemi), koiato raboti na sistemi kato iPAQ (dzhoben kompyutur) chak do IBM S/390 ( masiven, mnogo skup meinfreim). Linuks e zamislen za bude glavnata operatsionna sistema na noviia superkompyutur na IBM - Blue Gene.

V momenta Linuks vurvi na tezi arhitekturi:
  • ARM
    • Acorn: Archimedes, A5000i RiscPC seriite
    • StrongARM, Intel XScale t.n....
    • HP's iPAQ
  • Axis Communications' CRIS
  • Hewlett Packard's Alpha
  • Hewlett Packard's PA-RISC
  • Hitachi: SuperH (SEGA Dreamcast), H8/300
  • IA-64: Kompyutri s 64-bitov Intel Itanium
  • IBM's S/390
  • IBM's zSeries Meinfreimove
  • Intel 80386 i nagore:
    • 80386, 80486, i tehnite AMD, Cyrix, TI i IBM varianti;
    • tsialata Pentium seriia;
    • AMD 5x86, K5, K6, Athlon (vsichki 32-bitovi versii), Duron;
    • AMD64: AMD's 64-bitova protsesorna tehnologiia (predi izvestna kato x86-64)
    • Cyrix 5x86, 6x86 (M1), 6x86MX i MediaGX (National/AMD Geode) seriite;
    • VIA Technologies VIA C3 i po-kusni protsesori;
    • Poddruzhka za 8086, 8088, 80186, 80188 i 80286 protsesorite e v razrabotka;
  • MIPS
  • Motorola 68020 i nagore
  • NEC v850e
  • PowerPC i IBM POWER
  • SPARC i UltraSparc: Sun 4-seriite, SPARCstation/SPARCserver, Ultra, Blade i Fire seriite rabotni stantsii i survuri, sushto taka i kloningi napraveni ot Tatung i drugi.


Qdroto

Sors kodut na Linuks iadroto mozhe da bude svaleno ot kernel.org. Za da prigotvite edno iadro za polzvane, izpulnete tezi komandi:
  • make config za da konfigurirate kakva poddruzhka da ima vgradena(mozhe da izoplzvate sushto make menuconfig, make xconfig, make gconfig).
  • make za da go kompilirate
  • make modules_install za da kompilira modulite i da gi premesti v pravilnata direktoriia (obiknoveno /lib/modules).
  • make install za da kopira iadroto na nuzhnoto miasto i da obnovi buut menidzhura (Lilo ili GRUB)


Litsenzi

Purvonachalno, Torvalds e pusnal Linuks pod litsenz, koito zabraniaval vsiakakvo komersialno izpolzvane. Tova skoro bilo promeneno na GPL v2. Tozi litsenz pozvoliava distrubitsiiata i dazhe prodazhbata na modifitsirani versii na Linuks, no vsichki kopiia triabva da budat pusnati pod sushtiia litsenz i da budat pridruzheni sus sors koda. Linus opredelia litsenziraneto na Linuks pod GPL kato "nai-dobroto neshto, koeto niakoga sum pravil."

Talisman

Talismanut na Linuks e pingvin narechen Tux, suzdaden ot Larry Ewing.

Kernel panic

Pri Linuks, "panic" e nevustanovima sistemna greshka, otkrita ot iadroto. Qdroto mozhe da predprieme takova sustoianie kato izvika "panic" funktsiiata, koiato se namira v hedur faila sys/systm.h. Vupreki tova, povecheto "panics" sa rezultat ot neupravliaemi protsesorni izklyuchenie v koda na iadroto, takiva kato spravki do nevalidni adresi v pametta.


Belezhka: Ochakvaite v nai-skoro vreme mnogo podrobno obiasnenie za tova kak vsushtnost raboti Linuks iadroto...

Pozdravi na vsichki,
gamehack


<< Kontseptsiiata za osnovata na LINUX | UPORSTVO, TURPENIE I SMIRENIE >>