Šta je novo?

-ck napusta razvoj linux kernela

audiofreak

Banned
Banovan
Učlanjen(a)
21.07.2003
Poruke
3,894
Poena
410
Sjajan intervju sa -ck koji nam objasnjava zasto su racunari i softver ovakvi (bezvezni) kavi su danas:
Link
 
Ima članak negdje na kerneltrap.org-u. Uglavnom čovjek je puko jer kernel developeri nisu prihvatili njegove ideje u vezi schedulera, forkanja kernela na desktop i produkcijsku verziju isl. Slična situacija kao i sa Hansom Reiserom (ResierFS), ja bih rekao, koji se nekoliko godina oštro svađao s developerima oko uključivanja ResierFSa 4.0 u kernel. Na kraju je završio u buksi kao prvoosumnjičeni za ubojstvo supruge. Opasni su ti linuxsaši 😉.
 
Ma mene vise taj Linux (i Linus) nervira. Definitivno se slazem sa covekom da Linux ovakav kakav je nije za desktop korisnike. To je monolitni kernel, a cak i Microsoft eksperimentise sa micro-kernel arhitekturom. Po meni BeOS je imao najbolju arhitekturu -- mikro-kernel i serveri (application, audio, graphics, network, print, etc), steta sto je propao.

Sad samo da sacekamo da izadje AmigaOS4.0 30. novembra i da se nadamo da ce ga nekad portovati na PC.
 
Nije propao, imas ZetaOS 🙂
 
Ma mene vise taj Linux (i Linus) nervira. Definitivno se slazem sa covekom da Linux ovakav kakav je nije za desktop korisnike. To je monolitni kernel, a cak i Microsoft eksperimentise sa micro-kernel arhitekturom. Po meni BeOS je imao najbolju arhitekturu -- mikro-kernel i serveri (application, audio, graphics, network, print, etc), steta sto je propao.

Sad samo da sacekamo da izadje AmigaOS4.0 30. novembra i da se nadamo da ce ga nekad portovati na PC.

Linux je prilično uspješan takav kakav je. A ima i tu experimentiranja, npr. sa FUSE (file system in userspace) i ntfs-3G driverom koji nije dio kernela. Naravno da je brži ntfs driver u kernelu iako nema sve mogućnosti 3G drivera 😉. Svaki dizajn ima svojih predsnosti i mana.
 
Linux je prilično uspješan takav kakav je. A ima i tu experimentiranja, npr. sa FUSE (file system in userspace) i ntfs-3G driverom koji nije dio kernela. Naravno da je brži ntfs driver u kernelu iako nema sve mogućnosti 3G drivera 😉. Svaki dizajn ima svojih predsnosti i mana.

Ma znam ali postoji fundamentalna razlika izmedju monolitnog i mikro kernela -- u monolitnom imas svasta, a u mikro samo osnovnu apstrakciju.

Na primer, zasto bi deo source code za desktop kernel bio drajver za Chase multiport terminal adapter?

Doesn't make any sense if you ask me. Desktop koristi 32-bit color, a ne serijske terminale. Moze neko da kaze da to ne smeta jer se moze prevesti kao modul ali svejedno, jednostavno mu nije mesto u souce code distribuciji za desktop.

Ukratko, utrpali su svasta u taj kernel i to vise nema nikakvog smisla. Treba pocupati odatle sve sto nema veze sa desktop sistemom -- mislim da je (krajnje) vreme za desktop fork.
 
Ukratko, utrpali su svasta u taj kernel i to vise nema nikakvog smisla. Treba pocupati odatle sve sto nema veze sa desktop sistemom -- mislim da je (krajnje) vreme za desktop fork.

Pa počupaju oni koji prave desktop distribucije Linux-a. Od svih distribucija koje su namenjene dosktopu mislim da jedino Debian nema skresani kernel.
 
Rasprava "monolithic VS microkernel" traje decenijama unazad, jos od pojave prvih modernih operativnih sistema. Koncepcija mikrokernela imala je tvrdo uporiste medju akademskim svetom jer je obecavala modularnost, lagan debugging, eleganciju, ali to se nije potvrdilo u praksi, naprotiv; ispalo je da je pisanje, odrzavanje, dodavanje novih funkcionalnosti u vecini slucajeva teze nego kod monolitnih kernela.

Osim OSX-a koji se bazira na Mach kernelu , svi ostali (uslovno receno) rasprostranjeni operativni sistemi (windows,linux,bsd,solaris,unix) imaju monolitnu strukturu kernela.
Po meni najveci problem sa mikrokernelima je veliki 'overhead' sto u prevodu znaci da, iako ovakva arhitektura deluje elegantnije i bolje, ima losije performanse od organizacije sa monolitnim kernelom. U svetu danasnjih racunara gde raznorazni benchmark testovi znace sve, ovo u startu predstavlja ogroman hendikep.

Naravno monolitni kerneli mogu da budu manje ili vise monolitni - *nixoidni OS-evi to resavaju tako sto delovi kernela mogu da se dinamicki dodaju ili sklone iz kernela u realnom vremenu; sa druge strane imamo windows kernel gde toga nema i gde je cak i GUI deo kernela.
 
Pa počupaju oni koji prave desktop distribucije Linux-a. Od svih distribucija koje su namenjene dosktopu mislim da jedino Debian nema skresani kernel.

Da se razumemo, mozda oni i isporuce konfigurisan kernel sa izbacenim nepotrebnim stvarima, ali kernel source tree je i dalje kompletan i poslednji put kada sam gledao debelo je premasivao 100 MB kad se raspakuje.

Koncepcija mikrokernela imala je tvrdo uporiste medju akademskim svetom jer je obecavala modularnost, lagan debugging, eleganciju, ali to se nije potvrdilo u praksi, naprotiv; ispalo je da je pisanje, odrzavanje, dodavanje novih funkcionalnosti u vecini slucajeva teze nego kod monolitnih kernela.

Ja bih bas voleo da vidim ko je to u praksi probao na trzistu.

Osim OSX-a koji se bazira na Mach kernelu , svi ostali (uslovno receno) rasprostranjeni operativni sistemi (windows,linux,bsd,solaris,unix) imaju monolitnu strukturu kernela.

Da ali Solaris i BSD naginju vise ka desktop optimizacijama, a od svih koje si pomenuo, OS X (narocito sada Leopard!) je the best po mom misljenju trenutno.

Po meni najveci problem sa mikrokernelima je veliki 'overhead' sto u prevodu znaci da, iako ovakva arhitektura deluje elegantnije i bolje, ima losije performanse od organizacije sa monolitnim kernelom.

Overhead u cemu? Gde su losije performanse? Ja i dalje cekam da vidim neki realan test dobro napisanog mikrokernela. Moguce da jos niko nije napisao takav?

Po meni osnovni problem u celoj prici je sto kod monolitnih kernela autori kernela prave kompromise zarad ubacivanja sve vise i vise funkcija i u jednom trenutku to prestaje da bude jednostavno za odrzavanje. Pokrpis jednu rupu, napravis negde drugu i tako u nedogled.

Druga stvar koja mene licno nervira je nepredvidivost. Mnogo brate filozofiraju sa tim schedulerima. Zaboravili su osnovnu premisu rada na racunarima, a to je da krajnju rec ima korisnik.

Ako ja postavim real-time priority za neki proces, ocekujem da tako i radi pa makar mi ubilo masinu. Ne ocekujem raznorazne "pametne" algoritme koji pokusavaju da izbalansiraju raspodelu procesora u zavisnosti od nivoa "interaktivnosti". Jezim se od varijabilnih time slice-va i boostovanja foreground procesa (a bogami i od dugackih DPC-ova).

Zbog toga saosecam sa -ck, jer je i on sam smatrao da scheduler mora da bude predvidljiv, a ne da prcka po onome sto je korisnik zadao.
 
imas (imate) pisanje Dareka Mihocke i na ovu temu - http://www.emulators.com/docs/nx03_10fixes.htm

Symbian je realtime microkernel - negde sam citao da od verzije 9 jedan CPU sluzi i za OS i za GSM sto ranije nije bilo moguce i prvi je OS koji omogucava ovako nesto u mobilnim telefonima.

nije ni cudo da je Mac OS X stvarno najnapredniji i jedini (ili bar najblizi) mikrokernel medju aktuelnim OSovima - od sredine 80tih je Steve Jobs sa NeXTom poceo rad koji je na kraju zavrsio kao Mac OS X.

odo da citam clanak / intervju sa -ck 🙂
 
Zaista ne zelim da ulazim u teoretisanje vezano za monolitne i mikrokernele, jer je to rasprava koja moze da traje unedogled. Sa druge strane nisam ni dovoljno strucan da govorim o tome; citao sam dosta o ovoj problematici na netu ali iskreno nikad se nisam ozbiljno bavio sistemskim a jos manje kernel programiranjem.
Literature i clanaka na netu o tome ima toliko da bez problema moze da se napuni omanja biblioteka, pa koga interesuje neka odvoji par godina zivota i da se na proucavanje 🙂

Btw Mach kernel sigurno nije najbolji kernel danas, poseduje ozbiljna uska grla (komunikacija sa memorijom, forkovanje, inteproceska komunikacija); naravno ovo desktop usera ne pogadja puno, ali je zato OS X ocajan izbor za serverski sistem. Cak bih se usudio da kazem da je Mach dobar primer kako superiorna organizacija na papiru ne znaci i superiornu realizaciju i ponasanje u praksi.
 
Poslednja izmena:
Ja nisam trazio knjige, nego primere, uporedne testove komercijalnih kernela i nekog dobrog mikrokernela. To do sad nisam imao prilike da vidim iako sam puno puta cuo da mikrokerneli ne valjaju, niko nije hteo (ili znao) da mi kaze zasto.

Interesantno je da se na primer L4 microkernel cesto koristi kao hypervisor (za virtualizaciju). Narocito je zanimljiv Fiasco.

Sto se tice Mach kernela:

Neither Mac OS X nor FreeBSD maintain the microkernel structure pioneered in Mach, although Mac OS X continues to offer microkernel Inter-Process Communication and control primitives for use directly by applications.

A Leopard vise nije Unix-like:

Leopard is an Open Brand UNIX 03 registered product on the Intel platform. It is also the first BSD-based OS to receive the UNIX 03 certification.
 
Poslednja izmena:
Ja nisam trazio knjige, nego primere, uporedne testove komercijalnih kernela i nekog dobrog mikrokernela. To do sad nisam imao prilike da vidim iako sam puno puta cuo da mikrokerneli ne valjaju, niko nije hteo (ili znao) da mi kaze zasto.

Evo jako grubog objasnjenja - zasto po defaultu mikrokernel mora da bude sporiji od monolitnog kernela. Procesi,threadovi,semafori, sve ide preko tzv. servisa koji su izmesteni iz kernela; recimo ako 2 procesa zele da komuniciraju medjusobno to moraju da rade preko dodatnog posrednika. Isto se odnosi i na forkovanje, kreiranje threadova, postavljanje semafora, rad sa memorijom itd. Prakticno sto je vise stvari 'iscupano' iz srca kernela to je vece kasnjenje i overhead.

Evo linka koji dosta govori o problemima sa performansama na Mach 3 kernelu (od koga je proistekao kernel OS X-a): http://en.wikipedia.org/wiki/Mach_kernel

A evo i mali quote iz teksta:
Unfortunately, the use of IPC for almost all tasks turned out to have serious performance impact. Benchmarks on 1997 hardware showed that Mach 3.0-based Unix single-server implementations were about 50% slower than native Unix.

Studies showed the vast majority of this performance hit, 73% by one measure, was due to the overhead of the IPC. And this was measured on a system with a single large server providing the operating system; breaking the system down further into smaller servers would only make the problem worse. It appeared the goal of a collection-of-servers was simply not possible.

Tema je vrlo kompleksna i zahteva dobro poznavanje kako teorije operativnih sistema tako i praktnicnih realizacija (tj. open-sors kernela).

Danas ne postoji nijedan siroko rasprostranjeni mikrokernel (osim za neke jako specijalizovane primene kao sto je real-time obrada u specijalizovanim masinama i sl.). Ne znam kako ces da nadjes uporedne testove mikrokernel vs monolitni kernel kad mikrokernela gotovo da nema za mainstream operativne sisteme. Mislim da je Osim ako sam ne preradis neki od open-sors kernela, jer ocito je da niko drugi ne zeli da se 'mlati' sa tim 🙂

Eto cak i Apple polako odustaje od mikrokernel i sad ima hibridnu arhitekturu, pretpostavljam bas zbog brzine i lakoce razvoja. Inace upravo taj deo koji su ostavili (IPC tj inter-process communication) radi jako jako sporo.

A Leopard vise nije Unix-like:
Ne kapiram sto ubacujes pricu o SUS standardu 🙂 Standard se odnosi na organizaciju sistema u celini a ne kernela. Po POSIX i SUS standardima kernel mora da ima implementirane odredjene standardne sistemske pozive, bez zalazenja u detalje 'kako, sta, gde'.
 
Ocigledno nisi procitao o L4 i Fiasco mikrokernelu. Mach je prevazidjen (mada je i on unapredjen po ugledu na L4), a problem sa IPC-om je resen u L4 i novijim mikrokernelima i sada imaju isti nivo performansi kao i monolitni.

Apple nije odustao od mikrokernela, ne znam odakle ti to. Oni koriste hibrid BSD i Mach kernela.
 
Apple koristi Mach kernel i userland BSDa.

btw ajd samo malo smanji taj sign 😀
 
Ocigledno nisi procitao o L4 i Fiasco mikrokernelu. Mach je prevazidjen (mada je i on unapredjen po ugledu na L4), a problem sa IPC-om je resen u L4 i novijim mikrokernelima i sada imaju isti nivo performansi kao i monolitni.

Da ali po koju cenu?

PC calls under L4 on a 486DX-50 take only 5 μs, faster than a Unix syscall on the same system, and over 20 times as fast as Mach.
Of course this ignores the fact that L4 is not handling permissioning or security, but by leaving this to the user-space programs, they can select as much or as little overhead as they require.

Kad se doda obrada koju moraju da izvrse user-space programi, a koju monolitni kerneli imaju u sebi, opet se dobija sporiji rezultat. I postoji overhead. Ovaj mikrokernel se koristi u real-time sistemima gde security i permission-i nisu vazni, ali na serverskom/desktop sistemu bez toga ne moze.

Apple nije odustao od mikrokernela, ne znam odakle ti to. Oni koriste hibrid BSD i Mach kernela.

Sa linka iz mog prethodnog posta:

Neither Mac OS X nor FreeBSD maintain the microkernel structure pioneered in Mach, although Mac OS X continues to offer microkernel Inter-Process Communication and control primitives for use directly by applications.

Tesko da cemo ikada znati kako tacno Mach varijanta OS X-a izgleda jer ne moze da se zaviri u sors kod. Ali sudeci po gornjem citatu Apple koristi jedan veliki server koji radi gotovo sve sto je izmesteno iz kernela; to meni ne izgleda bas kao prava mikrokernel arhitektura. Da je izvrsena dalja fragmentacija kao sto stoji u teoriji mikrokernela, overhead i performanse bi bile jos gore nego sada (a ni sada nisu na visokom nivou).
 
Nisam imao pojma da daju sors 🙂

Sad jos da nadjemo nekog jakog sistemskog programera da nam 'sazvace' sta su ljudi radili, da uporedi sa originalnim Mach-om, linuxom, BSD varijantama, i na konju smo 🙂

poz. i hvala za link!
 
Da ali po koju cenu?

Pfff bre salac, kakvo pitanje. Kakve veze ima cena ako su performanse skoro identicne?

Mikrokernel ima svojih prednosti i ja smatram da je on ipak buducnost i da ce im napokon doci iz dupeta u glavu da odustanu od monolitnih mrcina.

Sto se tice obrade u userland-u, sve druge operacije osim DMA transfera mogu da se rade bez gubitka performansi u user modu, a verovatno i za to postoji neko resenje. Znaci, vecina drajvera moze da leti iz kernel moda bez problema.

Sto se tice bezbednosti, kernel treba da obezbedi API za to, a ne da on enforsira security. O bezbednosti treba da brinu serveri, a ne kernel. Kernel treba da bude interfejs izmedju hardvera i servera/aplikacija i da to radi najbolje sto moze.

Trenutni model i dovodi do bezbednosnih problema, ako kernel security ne valja, probijes u kernel mod i imas sve privilegije. Ako u kernel mod ne mozes da udjes iz aplikacije (nego samo iz servera) onda to znaci da kernel vise nije meta napada, nego serveri. Posto svaki od njih radi samo jednu stvar mnogo je lakse napraviti njih da budu bulletproof nego ogromnu kernelcinu koja radi zilion stvari i busna je ko sito jer se svugde stalno nesto menja.

kovacm je napisao(la):
btw ajd samo malo smanji taj sign

Hteo sam ali limit u karakterima mi ne dozvoljava da zadam font tagove.
 
Poslednja izmena:
Pazi, cena brzine L4 kernela je da on ne vodi racuna o security-ju ni permission-ima. Zato sam i rekao da se koristi samo u real-time sistemima, jer tamo je brzina obrade low level interapta najbitnija.

I uvek ce biti tako - mikrokerneli po brzini nikad nece moci da dostignu monolitne kernele. Rad sa serverima mora da unese dodatno kasnjenje i to je to. U nekom od ranijih postovao pokusao sam da obrazlozim zasto je to velika mana - ljudi danas najpre gledaju benchmark testove.

Ja licno ne mislim da je brzina vaznija od sigurosti, stabilnosti i mogucnosti samoregeneracije OS-a. Ali sa druge strane, ja ne pisem niti sam ukljucen u razvoj nijednog kernela, tako da sve sto mi preostaje je da sedim sa strane i 'slezem ramenima'.
 
imas (imate) pisanje Dareka Mihocke i na ovu temu - http://www.emulators.com/docs/nx03_10fixes.htm

Symbian je realtime microkernel - negde sam citao da od verzije 9 jedan CPU sluzi i za OS i za GSM sto ranije nije bilo moguce i prvi je OS koji omogucava ovako nesto u mobilnim telefonima.

nije ni cudo da je Mac OS X stvarno najnapredniji i jedini (ili bar najblizi) mikrokernel medju aktuelnim OSovima - od sredine 80tih je Steve Jobs sa NeXTom poceo rad koji je na kraju zavrsio kao Mac OS X.

odo da citam clanak / intervju sa -ck 🙂

Valja napomenuti da je do Leopard-a Mac OS X patio od sporog odziva na komande i generalno sporijeg rada sa GUI-jem (tu igra ulogu i Quartz koji opterecuje sistem).

Tek su u Leopard-u u sklopu opste manije da preotmu sto vise Win korisnika, optimizovali kernel tako da se napravi povoljniji tread off po pitanju brzine odziva i samog OS-a. Nisam expert za programiranje, ali imam u folderu sa zanimljivim textovima neki osvrt na izmene u Mach kernelu koje je apple uneo kako bi Leopard bio sto vise responzivniji OS i slicniji po tom pitanju Windows-u. I zaista, razlika je lako primetna i oseca se.

Ipak to ima i neke nuspojave, ali generalno uz ostala poboljsanja Leopard je u ukupnom skoru brzi od Tigra...
http://www.barefeats.com/leopard.html

PS: Neko je spomenuo lose performanse Mac OS X servera. Pre izvesnog vreme sam citao neko poredjenje Linux i Mac OS X servera u MySQL-u... Linux server je ostavio iza sebe XServe u pojedinim slucajevima i za par stotina procenata.

Laicki govoreci, meni deluje da je prica oko monolitnog i majkro kernela pre prica koja je mogla biti aktuelna u vreme kada je nastala, posto racunari danas imaju dosta memorije, mogu da drze mnogo vise toga u memoriji, pa ne cude bolje performanse sistema sa monolitnim kernelom, jer deluje kao da ceo kornel moze da se keshira u memoriju, sto sa mikro-kernelom nije slucaj, posto se za sve i svasta, pa i najosnovnije, pozivaju moduli koji nisu sastavni deo kernela. Naravno, ne valja ni kada kernel postane boatware kao kod Viste, ali mi nije jasno sta sada MS zeli da postigne kroz Windows 7 koji ima kernel od 30 MB? Da li ce sada tih 30 MB ispocetka da nazidaju na novi monolitni kernel koji ce raditi brze ili ce se okrenuti majkro kernelu?
 
Poslednja izmena:
Posto je kod windowsa GUI deo kernela nije cudno sto je kernel viste toliko koliki je (obzirom na ubacivanje novih vizuelnih efekata i sta ti ja znam).

Posledice ove odluke (koja datira iz vremena pisanja prvog NT kernela pa do dana danasnjeg) su: windows ce uvek imati najhitriji GUI, ali po cenu stabilnosti - windows je jedini OS gde pucanje grafickog okruzenja znaci zakucavanje kompletnog sistema.
 
Nazad
Vrh Dno