Quattro chiacchiere sugli OS

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Quattro chiacchiere sugli OS

Messaggio da Blizzard »

come promesso apro questa discussione :D
Comincio facendo un po di quote sull'argomento che effettivamente è nato in un altro topic:
Mario Vanoni ha scritto:[...]uso solo kernel statici.
Blizzard ha scritto:[...]qualche giorno metto in libera un topic per sapere che pareri avete a riguardo di kernel monolitici e modulari.
Non me ne voglia Linus ma ho un po di simpatia per la modularizzazione
Mario Vanoni ha scritto:
Blizzard ha scritto: A parte gli scherzi qualche giorno metto in libera un topic per sapere che pareri avete a riguardo di kernel monolitici e modulari.
Non me ne voglia Linus ma ho un po di simpatia per la modularizzazione
ATTENTO:
Linux e` un kernel monolitico, con o senza moduli,
Minix, plan9, Hurd ed altri sono kernel modulari.

Mario Vanoni
conraid ha scritto:
Blizzard ha scritto: A parte gli scherzi qualche giorno metto in libera un topic per sapere che pareri avete a riguardo di kernel monolitici e modulari.
Uno dei flame entrati nella storia dell'informatica
http://www.educ.umu.se/~bjorn/mhonarc-f ... 00000.html
Blizzard ha scritto: Non me ne voglia Linus ma ho un po di simpatia per la modularizzazione
Come Windows? ;-)
BENE! RIPRENDERO' LA DISCUSSIONE DA QUI

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Quattro chiacchiere sugli OS

Messaggio da Blizzard »

ATTENTO:
Linux e` un kernel monolitico, con o senza moduli,
Sai che credevo che in fin dei conti Linux fosse diventato ibrido. Non devo averci capito granchè.
Per quello che so, un kernel statico è un kernel che risiede in un unico file eseguibile (la bzImage nel nostro caso, giusto?)
quindi quando si modifica una parte del kernel bisogna ricompilare il tutto.
Tuttavia, dato che si possono caricare anche filesystem come moduli, sono stato indotto a pensare che Linux avesse una struttura ibrida.
La mia paura, comunque, è che sto commettendo un errore di fondo :D
Uno dei flame entrati nella storia dell'informatica
http://www.educ.umu.se/~bjorn/mhonarc-f ... 00000.html
La lessi parecchio tempo fa! Sinceramente penso che Tanembaum stava rosicando alla grande e che Linus comunque quando c'è da sparare a zero non si tira certo indietro :D (ricordate quando esplose sul C++, previa lode di KDE??? [-X )

Blizzard ha scritto:Non me ne voglia Linus ma ho un po di simpatia per la modularizzazione

Come Windows? ;-)
Windows non è modularizzato... è sconnesso e confuso :D
A parte gli scherzi la modularizzazione è in generale una tecnica molto buona. Consente una divisione del problema tale da rendere più agile progettazione, scrittura e soprattutto mantenimento del codice.
Correggetemi se sbaglio ma penso comunque che un programma per moduli possa comunque essere più lento di uno monolitico.
Forse ricordo male ma mi sembra che gia minix ha bisogno di strutture apposite per lo scambio dei dati tra moduli (non accenno a socket o shared mem perchè davvero non lo ricordo ora come ora).

ciao
Gio

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Quattro chiacchiere sugli OS

Messaggio da Blizzard »

Forse ricordo male ma mi sembra che gia minix ha bisogno di strutture apposite per lo scambio dei dati tra moduli (non accenno a socket o shared mem perchè davvero non lo ricordo ora come ora).
Adesso che mi viene in mente, mi sembra che nel Tanembaum si parli di struttura client/server tra i moduli

birg81
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: lun 16 gen 2006, 10:57
Nome Cognome: Biagio
Slackware: 12.2
Kernel: 3.4.7
Desktop: LxDE
Distribuzione: ArchLinux
Località: Castellammare di Stabia (NA)
Contatta:

4 chiacchiere sugli OS

Messaggio da birg81 »

Mi spiegate un po' la questione di questo grande diverbio.

I kernel monolitici sono pesanti e alla lunga inutili perché se nel kernel compili magari funzionalita' che usi raramente sfrutti risorse inutilmente..
oltre al fatto che una modifica nel kernel implica necessariamente ricompilarlo tutto
la modularizzazione invece ti consente di caricare e all'occasione "smontare" (spero che usare la parola smontare sia corretto) i moduli che servono quindi il kernel risulta molto più snello
pero' con la modularizzazione sei costretto a fare l'initrd file e a caricarlo nel boot loader
inoltre la modularizzazione può rallentare le comunicazione tra moduli ma se la parte di kernel modulare è ben fatta i ritardi sono minimi, ma questo implica anche una piena conoscenza del proprio sistema per una giusta scelta

in quest'ottica tendenzialmente la strada migliore non è sempre la modularizzazione o ho detto fregnaccie e perché?
RISP PLEASE

Offtopic: Parlando di queste cose sono giunto ad una mia piccola illuminazione.
Un'idea che potrebbe aiutare molti neofiti (spero che sia giusta la parola intendevo newble o dummy)!!!

non si potrebbe creare un'applicazione on demeand che fa un'analisi del tuo sistema e ti mandi un file config quanto migliore per il tuo PC in modo che tu con menuconfig devi solo ridefinirlo e compliarlo in modo da avere un kernel quanto più performante per la tua macchina???

E' così pazza come idea??

Il vantaggio è che pure se stai sotto un'altro os diverso da linux (vuoi perché sotto linux magari non riesci a configurare la connessione o per altri banali motivi) ti viene inviato ugualemente un file config per una versione di kernel da te segnata nella gui dell'applicazione on demand e poi tu successivamente sotto linux grazie a quel file config puoi compilare con calma il tuo kernel perfomante

bloodlust
Linux 3.x
Linux 3.x
Messaggi: 523
Iscritto il: mar 14 feb 2006, 12:02
Slackware: -1
Località: it_IT

Re: Quattro chiacchiere sugli OS

Messaggio da bloodlust »

Linux compilato con il supporto ai moduli rimane sempre un kernel monolitico!

L'idea di fondo di un microkernel è quella di far girare in kernel mode solamente le porzioni di codice che per forza di cose non potrebbero essere relegate allo user mode (IPC, gestione e schedulazione processi, gestione clock,...), e di implementare invece tutte le altre strutture in user mode (con i drawback che questo comporta).
Device driver, processi server e processi client sono implementati in layer differenti.
Il microkernel si occupa quindi essenzialmente della comunicazione tra processi client e server.
L'approccio di Tanenbaum su questa questione è di evitare shared memory ed implementare un sistema di passaggio messaggi (quindi nascondere le strutture e gli algoritmi interni al modulo) tra client e server.

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Re: Quattro chiacchiere sugli OS

Messaggio da gioco »

Le classificazioni sono due: monolitico/microkernel e statico/modulare. La prima indica come è stato progettato il kernel, la seconda come è stato compilato.

Un kernel monolitico implementa tutte le funzioni necessarie al suo interno. Il codice del kernel viene eseguito in modalità privilegiata (kernel). Linux è un kernel monolitico. I vantaggi del kernel monolitico sono:
- progettazione più facile
- prestazioni
Uno degli svantaggi è che modifiche a una funzione possono comportare la riscrittura di quelle parti di codice che la usano.

Un microkernel implementa solo le funzioni essenziali. Le altre funzioni sono fornite da componenti esterne che comunicano fra di loro attraverso messaggi. Il microkernel viene eseguito in modalità kernel, mentre le componenti esterne sono eseguite in modalità utente. Hurd è un microkernel. I vantaggi del microkernel sono:
- la possibilità di aggiungere/rimuovere funzionalità senza dover modificare altri componenti: tutti i componenti interagiscono esclusivamente attraverso messaggi
- testing di una singola nuova componente più facile: ogni componente interagisce con un numero ristretto di altri servizi e fa uso di un numero ristretto di API
- portabilità: il codice che dipende dall'hardware è tutto nel microkernel, le componenti sono indipendenti dall'architettura
Un microkernel ha in genere uno svantaggio in termini di prestazioni: il sistema di scambio di messaggi e il numero di context switch (utente/kernel) generano un overhead.
Altro svantaggio è la difficoltà di progettazione (vedi di seguito).

Un kernel statico è compilato senza il supporto ai moduli. Il vantaggio principale è in termini di sicurezza: senza il supporto ai moduli non è possibile per un attaccante installare rootkit basati appunto su moduli kernel.

Un kernel modulare è compilato con il supporto ai moduli. I vantaggi sono la possibilità di avere supporto per una gran quantità di hardware; la possibilità di caricare/scaricare pezzi di kernel quando servono; la possibilità di estendere il kernel aggiungendo nuovi moduli senza dover ricompilare tutto il kernel.
Blizzard ha scritto:A parte gli scherzi la modularizzazione è in generale una tecnica molto buona. Consente una divisione del problema tale da rendere più agile progettazione, scrittura e soprattutto mantenimento del codice.
Quello che dici tu (l'onorabile pratica di separare il codice in file e sezioni logicamente indipendenti) è vero per quanto riguarda la gestione del codice sorgente: anche in Linux i sorgenti sono organizzati in modo che sia possibile gestirli più facilmente. Ma non è vero rispetto alla progettazione: nel caso del microkernel a quei vantaggi va aggiunto il lavoro necessario affinchè le varie componenti possano comunicare. Ed è un lavoro molto complicato perchè è difficile trovare bug in problemi di scambio asincrono di messaggi. Hurd ne è un esempio. Il suo sviluppo è stato rallentato dalla difficoltà di far funzionare insieme i vari pezzi, nonostante ognuno di essi fosse in grado di funzionare singolarmente. Uno dei motivi per cui Linux ha avuto subito successo è perchè ha funzionato da subito: non è stato necessario progettare un sistema di scambio di messaggi e lo sviluppo è stato concentrato sull'aggiunta di nuove caratteristiche e sulla risoluzione dei bug.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Quattro chiacchiere sugli OS

Messaggio da conraid »

gioco ha scritto:Le classificazioni sono due: monolitico/microkernel e statico/modulare. La prima indica come è stato progettato il kernel, la seconda come è stato compilato.

Un kernel monolitico implementa tutte le funzioni necessarie al suo interno. Il codice del kernel viene eseguito in modalità privilegiata (kernel). Linux è un kernel monolitico. I vantaggi del kernel monolitico sono:
- progettazione più facile
- prestazioni
Uno degli svantaggi è che modifiche a una funzione possono comportare la riscrittura di quelle parti di codice che la usano.
Hai fatto bene a ricordare la differenza tra monolitico e statico. La modularizzazione del kernel linux è nata proprio per evitare degli unici file enormi, ma il sistema rimane sempre monolitico. E Linus proprio nella discussione citata sopra spiegava che aveva scelto questa strada per la maggiore semplicità nel gestire un progetto simile in modo "open source" e collaborativo.
Oltre che scelta tecnica, fu una scelta culturare.
Ma il kernel Linux era già vecchio quando è nato ed insieme al PC IBM "non starà in giro per così tanto tempo" :-) tutti noi sappiamo come andò la storia :-)

Nel libro OpenSources. Voci dalla rivoluzione informatica, c'è uno scritto di Linus che spiega il perché della scelta di un kernel monolitico. E c'è anche tradotta la famosa discussione con Tanembaum.

Qui il link all'articolo di Linus
http://www.apogeonline.com/openpress/li ... valds.html

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Quattro chiacchiere sugli OS

Messaggio da Mario Vanoni »

IMHO:
- microkernel, e.g. Hurd, Minix, plan9, stretto necessario, il resto poi
- monolitico statico coinvolge tutta la HW prevista alla compilazione
- monolitico con moduli: parte della HW viene caricata quando richiesta

Mario Vanoni

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Quattro chiacchiere sugli OS

Messaggio da Blizzard »

Ahhhh!
grazie dei chiarimenti! finalmente ho messo un po di ordine tra i neuroni.
l microkernel viene eseguito in modalità kernel, mentre le componenti esterne sono eseguite in modalità utente.
Hum! questa cosa non mi piace proprio.
- la possibilità di aggiungere/rimuovere funzionalità senza dover modificare altri componenti: tutti i componenti interagiscono esclusivamente attraverso messaggi
- portabilità: il codice che dipende dall'hardware è tutto nel microkernel, le componenti sono indipendenti dall'architettura
Queste però mi piacciono. Anche se un mps lo vedo veramente lento IMHO :(
- monolitico statico coinvolge tutta la HW prevista alla compilazione
- monolitico con moduli: parte della HW viene caricata quando richiesta
Beh! se sei pigro nel ricompilare il kernel e ogni tanto inserisci qualche pezzo nuovo nel pc, un monolitico con moduli sarebbe una buona scelta.
Se invece hai trovato stabilità nel tuo hardware allora un kernel statico con il supporto affinato solo per il tuo hardware penso sia una scelta ottima.
Vado errato??

ciao
Gio

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Quattro chiacchiere sugli OS

Messaggio da Mario Vanoni »

Blizzard ha scritto:
- monolitico statico coinvolge tutta la HW prevista alla compilazione
- monolitico con moduli: parte della HW viene caricata quando richiesta
Beh! se sei pigro nel ricompilare il kernel e ogni tanto inserisci qualche pezzo nuovo nel pc, un monolitico con moduli sarebbe una buona scelta.
Se invece hai trovato stabilità nel tuo hardware allora un kernel statico con il supporto affinato solo per il tuo hardware penso sia una scelta ottima.
In campo commerciale una macchina viene cambiata ogni tot anni.
Quella nuova, sai la HW, configuri un kernel statico e sei sicuro.
In campo utonto dozzinale meglio kernel con moduli.
La petite difference.

Mario Vanoni

Rispondi