>
MENU
gm1

Gestire diversi account Gmail con Firefox

Ubuntu vs Vista: Ubuntu al posto di Windows? (2/2)

10 ottobre 2007 Visualizzazioni: 681 Focus

Architetture: Linux vs. Windows (Parte I)

Capita spesso che le discussioni riguardo le differenze tra le architetture di Linux e Windows sfocino in flame e ondate piroclastiche di ignoranza generalizzata su entrambi i fronti. L’idea quindi è quella di mettere un po di ordine e generare una serie di articoli fruibili dagli interessati e che facciano chiarezza mantenendo una certa obiettività.


Di sicuro non c’è spazio per descrivere esaustivamente ogni punto, a meno di non voler scriverci un libro. A questo proposito ci limiteremo alle differenze più grossolane senza perderci nei meandri oscuri e iper-tecnici di questa materia. Si cercherà inoltre di adottare un approccio tecnico ma chiaro a tutti.

Sistema Operativo
Ma cos’è esattamente un sistema operativo? Molti usano questa parola ma ne ignorano completamente il significato. Tra le definizioni più accreditate eccone due molto interessanti:

Il sistema operativo è un programma che viene eseguito incessantemente dall’avvio(boot) del PC fino al momento in cui viene spento o riavviato.
(A. Silberschatz, P. Galvin “Operating System Concepts”)

Oppure se non vi garba la precedente definizione, eccone un’altra:

Un sistema operativo assomiglia ad un governo. Egli provvede alla gestione delle risorse. E come un governo non utilizza particolari funzioni, si limita semplicemente a creare un ambiente nel quale altri programmi possono essere facilmente utilizzati.
(A. Silberschatz, P. Galvin “Operating System Concepts”)

Quest’ultima definizione calza a pennello sopratutto per il concetto di kernel, esattamente quello che è Linux e che ad oggi (Ottobre 2007) è giunto alla versione non stabile 2.6.24rc1. Ovviamente anche Windows necessita di un kernel che viene caricato al boot, il suo nome è “ntoskrnl.exe” e come è lecito aspettarsi non ha nulla a che vedere con la controparte Open Source, anzi il concetto stesso con cui è sviluppato è estremamente diverso e lo vedremo in seguito.

Kernel
Di cosa si occupa esattamente il kernel?

cake.jpg

Immaginiamo, per semplificare, che il sistema Computer sia diviso in 3 strati: user space, kernel e hardware. Lo User Space è quell’ambiente in cui vengono eseguiti i classici programmi che utilizziamo in prima persona, ad esempio Firefox o OpenOffice.org. L’utente non viene mai in contatto con il kernel vero e proprio, egli infatti oltre a mantenere attiva la macchina è il tramite tra lo user space e l’hardware. Le applicazioni dialogano con il kernel attraverso quelle che vengono definite system call, che a questo punto faranno da tramite tra le nostre volontà e l’oggetto fisico (es. Hard disk) da cui vogliamo ottenere delle informazioni, orchestrando un balletto a noi invisibile in cui eseguono numerose operazioni a basso livello.

OS architettura

Il kernel Linux è definito Monolitico ossia contenuto in un unico file. Questo dovrebbe rappresentare un vantaggio in velocità e semplicità rispetto ai Microkernel tipo Mach su cui si basa MaxOSX. In realtà ci sono state accese discussioni a causa della sua natura monolitica e dell’incredibile complessità a cui è giunto Linux.

Andrew S. Tanenbaum, ideatore di Minix (Microkernel), a cui Linus Torvalds si ispirò per iniziare lo sviluppo di Linux, rimproverò lo stesso Linus per aver scelto questa architettura. Secondo lui obsoleta già nel 1991, in quanto troppo complessa per un sistema tutto fare come Linux.

monolitic kernel
Kernel Monolitico (Wikipedia)

In realtà il kernel Linux nonostante sia ,onolitico utilizza un sistema speciale, per cui attraverso moduli si possono integrare altre funzionalità nel kernel, senza doverle inserire precedentemente nel sorgente e doverlo ricompilare nuovamente; questa funzionalità rende il kernel un po più ibrido e meno monolitico.

microkernel
Microkernel (Wikipedia)

I Microkernel (es. MacOSX) si caratterizzano da un nucleo principale che si occupa di far dialogare altre numerose parti che girano in user space. L’amministrazione delle risorse viene svolta da processi esterni (servers) e non direttamente dal kernel. Questa soluzione offre una maggiore facilità nella gestione dello sviluppo del kernel a discapito di prestazioni lievemente minori.

hybid
Kernel Ibrido (Wikipedia)

Il Kernel di Windows è definito microkernel ma in realtà sarebbe più corretto definirlo hybrid kernel. Al boot viene fatto partire ntoskrnl.exe, in seguito parte il modulo HAL (Hardware Abstraction Layer) che si occupa di caricare a sua volta i driver necessari al sistema, per poi continuare con il Session Manager smss.exe.

Tempi di avvio
C’è da sottolineare una piccola differenza che a prima vista vedrebbe premiare Windows in quanto a velocità nello startup. Windows al momento del login non ha ancora terminato completamente l’avvio del sistema, alcune parti importanti vengono caricate in seguito, come le group policy. Si può dire terminata la fase di avvio circa una decina di secondi dopo il login. Una distribuzione GNU/Linux senza interfaccia grafica è già completamente caricata e funzionante al momento del login, certamente GDM-KDM rallentano l’intero processo e pongono Linux, seppur di poco, al secondo posto in quanto a velocità di avvio.

Volendo fare i fiscali non possiamo dimenticare come i sistemi Windows, a causa della estrema complessità e alcune particolari scelte strutturali, abbiano un generale calo di performance sul lungo periodo e ciò li porta a diventare più lenti rispetto ad alcune distribuzioni GNU/Linux.

di Domiziano Russo - TuxJournal.net

twittergoogle_pluslinkedinmail
  • http://dezone.wordpress.com FDG

    In realtà neanche OS X è un microkernel puro. Per migliorare le prestazioni (il protocollo ipc di Mach non è molto prestante) molti servizi sono caricati in kernel space. Per esser precisi, questo kernel ibrido ha un nome: XNUhttp://en.wikipedia.org/wiki/XNUhttp://www.kernelthread.com/mac/osx/arch_xnu.html

  • http://dezone.wordpress.com FDG
  • http://www.formulaonline.it/blog Enrico

    Bell'articolo.
    Peccato per quella inutile sottolineatura relativa al tempo di avvio.
    Senza stare a sottilizzare, il tempo di avvio credo sia considerato da tutti il tempo necessario affinche il sistema sia disponibile all'utente che può iniziare ad utilizzarlo.
    Citare linux senza interfaccia grafica è come confrontare patate e carciofi, non ha senso, e, ad essere maliziosi, tradisce un po' di partigianeria.
    Non è una tragedia ammettere che Linux è più lento di Windows in avvio. Punto. Sarà una delle cose da migliorare.
    Magari copiando da MacOSX….

  • lightuono

    Enrico se ricompili il kernel con solo i moduli che ti interessano e avvii solo i servizi veramente utili che a te servono, allora il tempo di carica cambia di molto anzi resterai anche sbalordito. Dobbiamo anche contare in che computer si carica il sistema operativo, se è troppo vecchio o l'hard disk non è veloce come un tempo allora si che aumentano i tempi..

  • http://www.formulaonline.it/blog Enrico

    @lightuono
    L'unica parte del tuo commento che non si può applicare a Windows è la ricompilazione.
    Le altre manovre "di buon senso" sono disponibili per qualunque sistema operativo, coi medesimi risultati.
    Ci sono anche ulteriori tweaks per velocizzare l'avvio di Windows e l'esecuzione dei programmi con eccellenti risultati; ma suppongo che vi siano anche in Linux.
    Sono certo che quando si parla di maggiore o minore velocità di questa o quella funzione, si abbia la cura di fare i test sul medesimo hardware!
    Dubito che Domiziano, ma chi in genere cita certi dati, abbia fatto diversamente.

  • harkanik

    In realtà ache essendo modulare il kernel linux non divenda ibrido ma resta sempre monolitico, di fatto anche i moduli risiedono nello stesso spazio di memoria "kernelmem" di tutto il kernel linux.

  • http://http: Likerth

    Ottimo articolo! Molto genuino.
    Inattaccabile da certi punti di vista, ma ci son sempre gli esperti in agguato! :P
    Dire che Linux è meglio di Windows e viceversa, è ormai diventato una cosa un pò complicata! Troppi sono i fattori e le caratteristiche che sono sempre in continua evoluzione. E' diventato come voler paragonare un Mercedes ad un BMW!! Ci sono i colori, i motori, gli optional, i controlli, la sicurezza, che variano da modello a modello ed di giorno in giorno.
    Niente è meglio di niente! Sono lotte "commercializzate" che vanno e andranno avanti per sempre! Perchè ci saranno sempre persone che la penseranno in maniera diversa da altre, e nessuno avrà mai ragione o torto! :)
    Bisogna soltanto considerare che Linux è comunque come una scelta di vita! Come lo può essere un BMW o una Fiat Panda! Bisogna anche considerare i costi! Tutti e 2 i modelli ti possono portare al mare con gli amici, e ad infrattarti con la tua ragazza! Però… Linux è anche un modo per voler dire: "Toh, riesco a guardare un Divx, ed a creare un sito web, senza spendere un euro!!", o senza incombere nella pitateria!! :P
    Io la penso così, e non voglio convincere nessuno a pensarla come me! :)Complimenti signor D. Russo!P.s.
    Se vogliamo essere pignoli, il microkernel o il kernel monolitico, dal punto di vista del northbridge e southbrige della cpu è la stessa identica cosa! Dipende poi dal tipo di architettura della cpu che ne deriva un diverso tempo di risposta (e percui rallentamenti nell'ordine dei nanosecondi!! :) ). Quindi non è detto che un micro e migliore di un monoblocco!! E' sempre questione di punti di vista!! Resta il fatto che non bisogna valutare un sistema dal tempo di avvio!!!

  • Mino

    Ottimo articolo, non credo sia per niente partigiano l'inciso sull'avvio in modalità grafica o no, semplicemente nell'elenco di ciò che pesa e ciò che non lo fa, si è voluto segnalare che
    l' ambiente grafico sia sensibilmente frenante nella gestione prestazionale del sistema in generale. Riguardo al giudicare un sistema operativo dalla sua velocità di avvio: sono d'accordo non si può. Conosco grafici che hanno tempo per il caffè mentre la loro workstation importa una foto ad alta risoluzione e non cambierebbero il loro sistema per niente al mondo perchè ci lavorano benissimo. Personalmente non partecipo alla diatriba meglio windows che linux o viceversa, anche se ho scelto quest'ultimo ormai da tempo.