PDA

View Full Version : De kernel natura


Steve
24-02-2004, 18:32
Un amministratore attento può quindi mantenere il sistema sicuro in tempi brevi e questo grazie al fatto che il codice sorgente è accessibile e modificabile da chiunque.

Un'altra cosa carina e' che ogni sistema Unix/Linux e' configurabile in modo molto variabile, grazie alla modularita' dei singoli pacchetti. In sostanza, il mio sistema potrebbe avere il kernel compilato con i pacchetti A+B+D e quello di C|ty potrebbe avere B+C+D+E... e comunque essere due elaboratori perfettamente funzionanti ed operativi, seppur adattati alle rispettive esigenze.
Questo e' sostanzialmente impossibile su sistemi Windows, dove kernel32.dll e' unico per ogni versione del sistema operativo e la modularita' a quel livello e' troppo bassa per essere competitiva con unix. :)

Mav
25-02-2004, 11:12
Un amministratore attento può quindi mantenere il sistema sicuro in tempi brevi e questo grazie al fatto che il codice sorgente è accessibile e modificabile da chiunque.

Un'altra cosa carina e' che ogni sistema Unix/Linux e' configurabile in modo molto variabile, grazie alla modularita' dei singoli pacchetti. In sostanza, il mio sistema potrebbe avere il kernel compilato con i pacchetti A+B+D e quello di C|ty potrebbe avere B+C+D+E... e comunque essere due elaboratori perfettamente funzionanti ed operativi, seppur adattati alle rispettive esigenze.
Questo e' sostanzialmente impossibile su sistemi Windows, dove kernel32.dll e' unico per ogni versione del sistema operativo e la modularita' a quel livello e' troppo bassa per essere competitiva con unix. :)

Aehm... Quella di Linux è modularità per così dire "apparente"... Linux è, di fatto, un kernel monolitico, in cui i moduli sono solo "pezzi di codice" inseribili e disinseribili a runtime. Il kernel di windows (NT/2000/XP/.NET) è un microkernel. In pratica quello che su Linux fai con i "moduli del kernel", in windows lo fai con i "driver"... che poi il numero di opzioni su Linux sembri maggiore è dato (a mio parere) dai seguenti fattori:

1) Possibilità di ricompilare il kernel sapendo esattamente COSA si abilita.
2) Supporto per numerose tecnologie già presente nel kernel stesso (proprio perchè è monolitico).
3) Maggior "trasparenza" nel funzionamento di tutto il sistema operativo GNU (= un software non installa moduli strani senza fartelo sapere... di solito)

Però non dimentichiamo che con i giusti driver in Windows si possono supportare tutte (o quasi) le funzionalità di Linux. Con ciò non voglio dire che Linux sia meglio di Windows o viceversa... i kernel appartengono a due "categorie" diverse, Linux è di concezione più "datata", Windows di concezione più "recente". Sarebbe interessante provare HURD a questo proposito... un microkernel per GNU il cui sviluppo è iniziato PRIMA di quello di Linux, ma che procede molto a rilento.

PS: kernel32.dll NON è il kernel di windows, anche se il nome trae facilmente in inganno. ;-)

City_Hunter
25-02-2004, 13:36
Win NT/2000/XP è una struttura ibrida, visto che diversi layer risiedono sempre e comunque in kernel space. In user space risiedono sistemi client-server per il funzionamento dei programmi Win32, OS/2 e POSIX. Non mi sentirei di portarlo come esempio di microkernel, meglio QNX o certi sistemi UNIX (Tru64) basati sul Mach kernel.

Peraltro in Windows l'installazione di un nuovo driver, seppur in userspace, non riesce a prescindere nella maggior parte dei casi dalla necessità di riavviare l'intero sistema.

A mio avviso tutti i tentativi di scrittura di un microkernel si scontrano prima o poi con l'impossibilità di portar "tutto fuori dal kernel space", come la filosofia dietro questa architettura imporrebbe, salvo accettare decadimenti delle prestazioni. In tal senso, ma è solo una mia congettura, interpreto i ritardi di GNU HURD.

p.s.
dipendesse da me, cambierei volentieri il software della web board... non ne esiste uno "a la cvs" in cui biforcare i thread quando si comincia a parlar di cose completamente diverse?

Mav
25-02-2004, 14:16
Win NT/2000/XP è una struttura ibrida, visto che diversi layer risiedono sempre e comunque in kernel space. In user space risiedono sistemi client-server per il funzionamento dei programmi Win32, OS/2 e POSIX. Non mi sentirei di portarlo come esempio di microkernel, meglio QNX o certi sistemi UNIX (Tru64) basati sul Mach kernel.

Peraltro in Windows l'installazione di un nuovo driver, seppur in userspace, non riesce a prescindere nella maggior parte dei casi dalla necessità di riavviare l'intero sistema.


Che il kernel di Win non sia un vero e proprio microkernel son d'accordo, ma di certo non è un kernel monolitico come Linux... che a sua volta sembra "meno monolitico" per il fatto di avere dei moduli (s)caricabili... :-)

Per quanto riguarda i riavvii... probabilmente è una questione di "scelte progettuali"... perchè ad esempio l'inserimento di un nuovo modulo nel kernel di linux, seppure sia codice che gira in kernel-space non richiede assolutamente un riavvio.

p.s.
dipendesse da me, cambierei volentieri il software della web board... non ne esiste uno "a la cvs" in cui biforcare i thread quando si comincia a parlar di cose completamente diverse?

Ehm... il tasto "spezza topic" non basta?

City_Hunter
25-02-2004, 14:22
Ehm... il tasto "spezza topic" non basta?
E' meglio di niente. Great! :)