Citat:
Windows_Zakon
Imho, nema ni potrebe da tcp stack bude u userspejsu, jer savrseno radi iz kernel spejsa.
Zapravo, TCP/IP stack bi trebalo da bude tamo gde su mrezni drajveri, kako ne bi dolazilo do nepotrebnih context switcheva. Ako su mrezni drajveri u user-modeu, i TCP stack treba da bude tamo, i obrnuto.
E, sad, mrezni drajveri su i u Windowsu i u Linuxu u kernel-spaceu zbog brzine.
Medjutim, to je strahovito zrtvovanje sigurnosti - iz prostog razloga sto mrezne drajvere danas pisu firme koje ne brinu za kvalitet vec zele da sto pre izadju na trziste sa proizvodom.
Ja sam vise puta vidjao da mrezni drajver rusi OS - pre par meseci sam video kako nepotpisani SMC drajver za neki USB LAN adapter rusi Windows XP zbog internog stack-faulta, a ne sumnjam da na Linuxu nema istih takvih slucajeva.
Mozes da zamislis koliko ima kineskih/tajvanskih/i sl... drajvera pisanih za djubre hardver, i svaki od tih drajvera moze u bilo kom momentu da srusi ceo OS (Linux / Windows)... Da ne pricamo o masi outsource-ovanih developmenta u Indiji i sl..
Jednostavno, mislim da je to jako veliki rizik. Microsoft, doduse, ima onaj WHQL program, koji bi trebao da eliminise dosta bagovitih drajvera, ali ... na zalost, i taj program je kompromitovan ukoliko su u pitanju veliki igraci (ajd, cik ti ne dozvoli nekom velikom da ne izbaci proizvod)... Tako, recimo, Creative ima potpisane drajvere a mnogi od njih su bili blagi horor sto se stabilnosti tice.
Za takve stvari bih ja ipak ostavio drajvere u user-spaceu, pogotovu sto danas to nije neki veliki penal (vidi dole)
Citat:
, da dodam, QNX vjerovatno ima svoju namjenu, gdje takav dizajn i ti featursi OS-a imaju neku vrijednost.
Linux ili Microsoft, ciljaju na drugo trziste, gdje te stvari sto QNX ima, nemaju vrijednost.. t.j. nisu trazeni... ista pricha vrijedi i za Solaris.
Fora je u tome sto su dizajnerska pitanja (monolitni / mikrokernel, gde treba da budu drajveri i sl...) resavana u doba kada je zaista imalo smisla drzati drajvere u kernel modu za Windows i Linux, recimo - pricamo o vremenima 486-tica koje su imale context-switcheve reda velicine nekoliko stotina mikrosekundi. Insistiranje na nekoj "cistoci" dizajna na tim sistemima je znacilo veliki gubitak performansi - setimo se Mach kernela.
Danas, na modernim sistemima, nema puno razlike u tome da li je drajver u user-spaceu ili u kernel-spaceu, a dokaz za to je odluka Microsofta da skloni sound-card drajvere u user mode, a poznato je da su bas ti drajveri jako osetljivi na latenciju pogotovu na visokim frekvencijama semplovanja...