I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-)
-- Andrew Tanenbaum to Linus Torvalds
Na rozdφl od Microsoft Windows a jemu podobn²ch, operaΦnφ systΘm Linux nenφ jednolit², magick², celek. Je tvo°en z mnoha Φßstφ, kde se ka╛dß starß o urΦitou Φßst chodu systΘmu. Ka╛dß tato Φßst je podrobn∞ zdokumentovßna tak, aby ka╛dou z nich mohl vyvφjet odd∞len² t²m. Je podstatnΘ se v tΘto architektu°e orientovat, proto╛e pokud n∞co nefunguje a vy vφte, kdo je za to zodpov∞dn², je vß╣ ·kol mnohem snaz╣φ.
Jßdro Linuxu zodpovφdß za:
Proto je nutnΘ, aby jßdro procesy na hardware nepustilo a v╣echny p°φstupy d∞lalo za n∞. Jednou z nejgenißln∞j╣φch my╣lenek Unixu je, ╛e ve╣ker² tento p°φstup sjednotil pod prßci se soubory. Hardwarovß za°φzenφ (t°eba floppy disk) jsou pak pouze specißlnφ soubory. Zßpisem do takovΘho soubory pak pφ╣ete na disketu. To umo╛≥uje, aby i programy, kterΘ nejsou urΦeny pro prßci se za°φzenφm s nφm pracovaly a u╣et°φ se tak Φas programßtorovi, kter² se nemusφ uΦit novΘ API.
Pokud hardware umφ n∞jakΘ triky, kterΘ se ╣patn∞ schovßvajφ pod prßci se souborem, m∙╛e podporovat IOCTL, kter²m se nap°φklad nastavuje formßt diskety, nebo samplovacφ frekvence p°i v²stupu na disk.
O jednotlivΘ za°φzenφ se starajφ ovladaΦe, kterΘ v p∙vodnφm Unixu byly napevno zakompilovanΘ do jßdra. To je pon∞kud nep°φjemnΘ, proto╛e p°i zm∞n∞ hardwaru musφte p°ekompilovßvat jßdro. Linux dnes podporuje dynamickΘ zavßd∞nφ t∞chto ovladaΦ∙ pomocφ modul∙.
Linux mß v poslednφ dob∞ velice dobrou podporu nejr∙zn∞j╣φch periferiφ a mnoho hardwarov²ch firem ji╛ distribuuje jejich v²voj. P°esto je ale dobrΘ konzultovat seznam podporovanΘho hardware, ne╛ si n∞co novΘho koupφte.
Mezi zßkladnφ operace pro prßci s procesy, kterΘ jßdro umφ je rozd∞lenφ procesu na dva b∞╛φcφ zßrove≥ (fork) a vym∞n∞nφ k≤du b∞╛φcφho procesu (exec) - dan² proces se ukonΦφ a je nahrazen nov²m programem.
Na rozdφl od klasickΘho Unixu, Linux podporuje i multithreading.
Standardn∞ se pam∞╗ procesu sklßdß z jeho k≤du (kter² program nem∙╛e m∞nit), neomezen∞ rostoucφho zßsobnφku a z druhΘ strany adresnφho prostoru rostoucφ haldy.
Navφc jßdro vytvß°φ virtußlnφ pam∞╗ a odklßdß Φßsti na disk, pokud to je t°eba.
Jßdro Linuxu obsahuje velmi kvalitnφ sprßvu pam∞ti. Mezi jeho p°ednosti pat°φ:
Unix zavßdφ pojem u╛ivatele a skupiny, kterΘ se v jßd°e udßvajφ jako Φφsla. Ka╛d² proces mß svΘho u╛ivatele a skupinu. Prost°edky pak majφ svΘ vlastnφky a skupiny majφ nastavena p°φstupovß prßva zvlß╣╗ pro svΘho majitele, svoji skupinu a ostatnφ. U soubor∙ jsou v╛dy t°i zßkladnφ parametry - p°φstup ke Φtenφ, zßpisu a spu╣t∞nφ.
Navφc Unix p°edpoklßdß existenci sprßvce - specißlnφho u╛ivatele "root", s identifikaΦnφm Φφslem 0. Tento u╛ivatel m∙╛e d∞lat v╣e, bez p°ihlΘdnutφ k p°φstupov²m prßv∙m. Navφc jßdro zprost°edkovßvß n∞kolik slu╛eb pouze pro n∞j - nap°φklad jako jedin² mß prßvo rebootovat systΘm.
N∞kdy v╣ak n∞kdy chce sprßvce (nebo i jin² u╛ivatel) "prop∙jΦit" u╛ivateli n∞jakß prßva. Nap°φklad mu chce dovolit rebootovat systΘm, existuje je╣t∞ jedna berliΦka jmΘnem "sbit". Mß-li soubor s programem tento bit nastaven, program mß povoleno na sebe p°evezmout p°φstupovß prßva vlastnφka souboru. Tak nap°φklad program "reboot" spu╣t∞n normßlnφm u╛ivatelem na sebe m∙╛e vzφt prßva superu╛ivatele a restartovat systΘm.
Toto je pon∞kud nebezpeΦn² trik, proto╛e v p°φpad∞, ╛e program oznaΦen² sbitem obsahuje chybu, a u╛ivatel jej m∙╛e donutit k tomu, aby ud∞lal co pot°ebuje, vznikne bezpeΦnostnφ dφra v systΘmu. Je tedy t°eba si na takovΘ programy dßt zvlß╣tnφ pozor.
Dφky tomu n∞kterΘ pozd∞j╣φ systΘmy existenci takto v╣emocn²ch u╛ivatel∙ ru╣φ a zavßd∞jφ flexibiln∞j╣φ systΘm u╛ivatelsk²ch prßv. Linux zatφm nic takovΘho standardn∞ neumφ, i kdy╛ se na tom pracuje. Tyto p°φstupy v╣ak majφ jinß ·skalφ.
Na rozdφl od Unixu, Linux obsahuje abstrakci mezi vlastnφm ovladaΦem filesystΘmu a systΘmov²m volßnφm. Umo╛≥uje tak vyjma svΘho vlastnφho filesystΘmu (ext2) i pracovat s jin²mi filesystΘmy: adfs, affs, coda, efs, msdos, vfat, hfs, hpfs, isofs minix, ncpfs, nfs, ntfs, qnx4, sysv, ufs, romfs, smbfs. A tak se domluvφ s v∞t╣inou ostatnφch operaΦnφch systΘm∙.
Na rozdφl o Windows v Unixu neexistujφ pojmenovanΘ disky (a:, c: apod.). V╣echny disky jsou "naroubovßny" do podadresß°∙ hlavnφho filesystΘmu. Roubovßnφ a odroubovßvßnφ filesystΘmu se provßdφ volßnφm mount a umount.
Linux podporuje mnoho specißlnφch trik∙, jako je firewall, nebo Masquerading, kter² dokß╛e p°ipojit celou sφ╗ k internetu pomocφ jednΘ IP adresy. Proto je Linux jeden z nejlep╣φch operaΦnφch systΘm∙ pro sφ╗ovΘ servery.
Vyjma TCP/IP Linux podporuje i n∞kterΘ dal╣φ protokoly nap°φklad appletalk, nebo ipx. Proto poslou╛φ t°eba i jako "Novellov²" server.
Pro prßci v sφti Linux pou╛φvß API BSD soket∙, kterΘ je dnes nejroz╣φ°en∞j╣φ.
SytΘm p°i startu d∞lß n∞kolik d∙le╛it²ch v∞ci:
KonfiguraΦnφ soubory Linuxu najdete v adresß°i /etc. Na rozdφl od Windows jsou to normßlnφ textovΘ soubory a tak je m∙╛ete opravovat textov²m editorem. To dodßvß velkou kontrolu na systΘmem a konfiguraci znaΦn∞ zjednodu╣uje. Pokud mßte v oblib∞ user friendly okΘnka, existuje n∞kolik nßstroj∙, kterΘ soubory zm∞nφ za Vßs.
Pokud tou╛φte po grafice a user friendly vymo╛enostech, m∙╛ete ale Φφst dßl.
Zßkladem X je grafick² server, kter² je navr╛en tak, aby komunikoval s aplikacφ pomocφ sφ╗ov²ch soket∙. To umo╛≥uje, aby aplikace b∞╛ela na jednom poΦφtaΦi, ale zobrazovala se na druhΘm. P∙vodn∞ auto°i zam²╣leli, ╛e aplikace pob∞╛φ na sßlovΘm poΦφtaΦi a Xserver bude specißlnφ hardware. To se sice dnes moc nepou╛φvß, p°esto ale nenφ od v∞ci mφt mo╛nost spustit program p°es sφ╗. Navφc do dßvß mo╛nost, aby se k poΦφtaΦi p°ipojilo vφce klßvesnic a monitor∙ a pracovalo na n∞m tak vφce u╛ivatel∙.
Server obsahuje pouze nejzßkladn∞j╣φ primitiva pro prßci s grafikou (i kdy╛ v pr∙b∞hu let se dφky snaze stßle odpovφdat modernφm vymo╛enostem znaΦn∞ zkomplikoval). Vzhled aplikace u╛ nenφ jeho starost. Dokonce se nestarß ani o dekorace oken, kterΘ ma na starosti zvlß╣tnφ aplikace jmΘnem WindowManager. O vzhled tlaΦφtek a menu se zase starß specißlnφ knihovna, kterou obsahuje aplikace.
Dßle X systΘm obsahuje knihovnu Xlib, kterß se starß na aplikaΦnφ stran∞ o sφ╗ovou komunikaci, n∞kolik zßkladnφch utilit a dnes zcela zastaral² window-manager twm a GUI toolkit Athena (kter² ale na svoji dobu obsahoval revoluΦnφ objektov∞ orientovanou technologii a umo╛≥oval vytvß°et dialogy bez pevn∞ zadrßtovan²ch sou°adnic, tak aby se p°izp∙sobovaly velikosti pφsma a dΘlce text∙)
Flexibilnφ nßvrh X je sice moc p∞kn², ale vedl k problΘm∙m. Vzniklo toti╛ mnoho Window manager∙ a mnoho GUI toolkit∙ a tak ka╛dß aplikace vypadala dost jinak a aplikace spolu moc nespolupracovaly. To se poda°ilo °e╣it a╛ v poslednφ dob∞, kdy dφky projekt∙m GNOME a KDE, se prosadily jako defakto standard prosadily dv∞ knihovny (GTK a QT) a pou╛φvß se jen n∞kolik mßlo Window manager∙, jejich╛ schopnosti jsou tΘm∞° identickΘ.
Proto doufßm, ╛e tento odv∞k² problΘm X se brzy stane minulostφ. Dal╣φ nev²hodou je pom∞rn∞ velkß slo╛itost (a tφm i nßroΦnost na pam∞╗), kterß vznikla snahou p°izp∙sobit se v╣em grafick²m vymo╛enostem za 30 let. Jeho komplikovanost ale nenφ v∞t╣φ, ne╛ u Windows Φi MacOS.
O spoleΦnou Φßst k≤du X se starß organizace Open Group (d°φve X consorcium), kterß svΘ k≤dy zp°φstup≥uje dal╣φm firmßm, kterΘ dod∞lßvajφ podporu pro danou platformu. Free softwarovou implementace X vyvφjφ organizace XFree86.
Tyto projekty byly pom∞rn∞ d∙le╛it²m meznφkem ve v²voji Linuxu, proto╛e v podstat∞ odstartovaly seri≤znφ snahy ud∞lat Linux vhodn² pro "normßlnφ u╛ivatele". Za poslednφ rok vznikl grafick² program GIMP, kter² odpovφdß znßmΘmu Photoshopu a rozjelo se n∞kolik projekt∙ o vytvo°enφ kancelß°skΘho balφku pro Linux. Uvidφme, jak budou ·sp∞╣nΘ.