Confronto Windows-Linux

In questa pagina confronto alcuni aspetti di Windows e Linux. Le considerazioni esposte derivano dalla mia esperienza quotidiana con entrambe i sistemi operativi (sebbene non lo usi per lavoro, accendo il computer quasi tutti i giorni...).

Frammentazione dei dischi

Il problema della frammentazione dei file (quindi dei dischi rigidi) è legata all'idea di suddividere i dischi in settori di valore prefissato (i cluster), e di suddividere conseguentemente i file in unità della stessa dimensione. Poichè la dimensione di un file non è, in generale, un multiplo intero della dimensione di un cluster, si presentano due problemi: uno è la cosiddetta frammentazione interna, dovuta al fatto che l'ultimo cluster occupato da un file non viene mai utilizzato per intero, con conseguente spreco di spazio; il secondo è detto frammentazione esterna, e si ha quando un file occupa due o più cluster: può accadere che questi non siano contigui, ma sparsi in diversi punti del disco, in modo tale che la lettura del file richiede molti spostamenti della testina, con conseguente aumento dei tempi di lettura.
Da un punto di vista teorico, quindi, la frammentazione dei dischi nasce da questioni progettuali abbastanza generali, indipendenti dal sistema operativo. Dal punto di vista pratico, però, possiamo dire tranquillamente che la frammentazione del disco è un problema dei sistemi operativi Microsoft.
Una partizione formattata con ext2 (il filesystem nativo di Linux) non si frammenta mai più di qualche punto percentuale. Inoltre i programmi di "deframmentazione" sono praticamente assenti in Linux: considerata la natura open-source del sistema, e il fatto che molte utility sono sviluppate su base volontaria per soddisfare specifiche necessità, una tale assenza significa che tali programmi non sono necessari.

 Nonostante Windows sia affetto dal problema della frammentazione dei dischi, viene venduto senza una valida utilità di deframmentazione. Il programma in dotazione va bene per deframmentare partizioni di un giga o due, specie se semivuote... Se avete dischi particolarmente affollati i tempi di completamento dell'operazione sono geologici. Inoltre se sono attivi altri programmi, come antivirus, ecc., che agiscono indipendentemente sul filesystem, il processo si interrompe spesso, ripartendo da zero.
Se volete un programma decente, siete costretti ad acquistare un software aggiuntivo. Chi usa Windows a casa può evitare l'esborso e accettare di lasciare accesa tutta notte la propria macchina per effettuare la deframmentazione, oppure rassegnarsi a formattare tutto periodicamente (cosa che ogni tanto si è costretti a fare comunque), ma nel caso di sever aziendali la questione è molto più delicata.
La frammentazione riduce le prestazioni generali della macchina, perché aumenta i tempi di accesso al disco. D'altra parte un server dovrebbe essere spento (o inattivo) per il minor tempo possibile, quindi la formattazione e il ripristino (reinstallazione o restore da un backup precedente) di dati e software è un processo da evitare il più possibile. La soluzione, quasi obbligata in questo caso, è acquistare un software di deframmentazione "evoluto", che possa fare il suo lavoro mentre il server è attivo, che possa deframmentare macchine collegate in rete in modo automatico, che possa essere programmato per attivarsi senza l'intervento dell'amministratore.
Mi preme sottolineare che tale software risolve un problema intrinseco al sistema operativo, e come tale andrebbe integrato nello stesso, mentre viene richiesto agli utenti di spendere altro denaro (oltre alla cospiqua somma necessaria all'acquisto del solo SO) per "mettere una pezza" su gravi problemi di architettura del filesystem.
Considerate infine che deframmentazione significa consumo di CPU e memoria da parte del programma, e spreco di banda per la deframmentazione di macchine in rete. In contesti in cui i tempi di risposta della rete siano stringenti, questo può significare necessità di aggiornamento dell'hardware, con tutti i disagi (solo in ultima analisi economici) che ciò comporta.
 
 

Virus

In una parola, i virus sono un problema dei prodotti Microsoft: su Linux/Unix praticamente non ne esistono!
Credo che una delle cause principali della diffusione dei virus nel mondo MSDOS (che ne è stato la culla) e Windows sia il fatto che non esiste, a livello di SO, una politica di gestione degli accessi. In una macchina Windows l'utente che siede alla consolle può fare tutto ciò che vuole, anche formattare il disco o danneggiare l'mbr se lo desidera. E' come se si utilizzasse Linux sempre come utente root. Nessuno sano di mente (specie se amministratore di sistema) prenderebbe mai una simile abitudine.
Se un utente Linux non privilegiato (cioè diverso da root) lanciasse un ipotetico virus, l'integrità del sistema non sarebbe comunque compromessa, in quanto il virus stesso non disporrebbe dei privilegi necessari a modificare file importanti. Il sistema operativo stesso, in modo automatico, impedirebbe al virus di agire. Al massimo si potrebbe verificare una perdita di dati dell'utente colpito.
A onor del vero va detto che nei sistemi Linux/Unix è possibile aggirare il controllo degli accessi sfruttando le vulnerabilità di determinati programmi che girano con privilegi di root. Una volta compiuto questo passo, si dispone del controllo totale del sistema (e si possono fare parecchi danni...). Questi bug vengono comunque resi pubblici in tempi molti brevi dopo la loro scoperta, quindi un amministratore/utente ben informato può aggiornare il proprio sistema in tempi estremamente rapidi.
C'è poi un'importante differenza tra un'infezione virale su Windows e un attacco riuscito ad un sistema Linux: nel primo caso il danno può essere provocato da gesti all'apparenza "innocenti" come la lettura di un floppy prestatoci da un amico, la lettura di un messaggio di posta elettronica, l'apertura di un file allegato, ecc. Nel secondo caso, invece, una persona esperta e motivata (tipicamente un hacker o un cracker) deve effettuare manualmente (o in modo semiautomatico mediante appositi software) una serie di operazioni volte ad ottenere il controllo del nostro PC. Gli attacchi avvengono solo via rete, quindi la prima cosa da fare è ottenere l'indirizzo IP della nostra macchina. Server aziendali, sempre accesi, con indirizzi IP noti o facili da ottenere (www.<nomeazienda>.com, ad esempio) sono facili bersagli per questo tipo di operazioni. I PC casalinghi, invece, non hanno un nome di dominio, solitamente l'indirizzo IP è dinamico (cambia ad ogni connessione) e inoltre sono connessi ad internet molto saltuariamente.

Trojan Virus

I cosiddetti "cavalli di troia" differiscono da tutti gli altri virus perché si presentano sottoforma di programmi apparentemente innocui, che però nascondono codice pericoloso che si attiva sotto determinate condizioni (una data, la pressione di una combinazione di tasti, ecc.).
Pensate ad esempio a Excel, o Word. Seguendo le istruzioni dei vari "easter eggs" presenti in rete, si attivano videogiochi tridimensionali, finestre scorrevoli con i nomi o le foto degli sviluppatori, ecc. Immaginate di mettere, al posto di questi innocui "gadget", programmi che infettano i vostri documenti con macro virus, cancellano file a caso in c:\windows, scaricano da internet e installano software di controllo a distanza come SubSeven o BackOrifice, comunicano a certi siti il vostro indirizzo IP del momento, ecc. Immaginiamo anche che le sequenze di tasti per attivarli non siano tanto astruse, ma comprendano ad esempio la digitazione di un particolare valore numerico in una cella, o una sequenza di comandi di formattazione usata di frequente. Ecco fatto un "trojan virus" travestito da Word o da Excel!.
Nel mondo Linux (e in generale nel mondo OpenSource) un simile scenario non è possibile. Tutto il software su cui si basa Linux viene distribuito sia come file compilato (binario) che come codice sorgente (a volte solo come codice sorgente). Chiunque può scaricare il programma e controllare cosa fa, non 'leggendo la documentazione', ma studiando il codice che poi compilerà ed eseguirà sulla propria macchina.
Naturalmente non tutti hanno le competenze necessarie per fare questo, e sicuramente nessuno ha il tempo di controllare il codice di ogni programma che installa sul proprio computer. L'importante è che, essendo il codice liberamente disponibile, qualcuno in Internet lo ha sicuramente sudiato. Un programma contenente codice "maligno" avrebbe vita breve, la notizia della sua pericolosità si diffonderebbe con la stessa rapidità con cui si diffondono i bug report dei normali programmi.

Netscape Navigator/Communicator

Il browser di Nestcape (nelle sue diverse versioni) è il più diffuso in ambito Linux, tuttavia non gode certo della stessa salute (dal punto di vista della stabilità) del sistema operativo. Mi è capitato abbastanza spesso che il programma si bloccasse dopo aver attivato una decina di download contemporanei, oppure durante l'esecuzione di una applet Java particolarmente pesante.
Sotto Windows il blocco di Netscape ha solitamente un'unica, inevitabile conseguenza: il riavvio della macchina. Sotto Linux, invece, è sufficiente "uccidere" il processo bloccato mediante programmi come gtop (in modalità grafica) o top (a caratteri), oppure con comandi diretti come kill o killall. I download vengono ovviamente interrotti come sotto Windows, ma il sistema mantiene intatta la sua stabilità, non si perdono i dati in altre applicazioni, non si perde tempo a riavviare la macchina, la connessione del modem rimane attiva, ed eventuali altre applicazioni di rete continuano a funzionare come se niente fosse.
In rarissimi casi, quando il blocco di Netscape provoca il blocco dell'interfaccia grafica, basta entrare nel sistema in modalità consolle e riavviare il server X.
Un'ultima curiosità: l'avvio dell'interprete Java di Netscape richiede un tempo notevole sotto Windows, mentre quasi non ci se ne accorge sotto Linux.
 
 

Installazione di programmi

Come si legge in Halloween Rant, di Eric Raymond, Windows "[...] va riavviato ogni volta che si cambia qualcosa di più profondo dello sfondo del desktop."
L'installazione di quasi tutti i software per Windows richiede il riavvio della macchina. Probabilmente la causa è la presenza del registry, un file dalla struttura estremamente complicata in cui vengono memorizzati tutti i parametri necessari al funzionamento del sistema. La scrittura di nuovi dati nel registry implica il suo ri-caricamento in memoria per attivare la nuova configurazione, e, se non vado errato, questo avviene solo all'avvio di Windows.
A volte mi è capitato di non riavviare dopo l'installazione di un programma, ma di utilizzarlo ugualmente subito dopo averlo installato. Dopo poco il sistema è diventato instabile e sono stato comunque costretto a riavviare.

 Sotto Linux si possono installare e disinstallare programmi senza mai riavviare la macchina. Addirittura è possibile modificare la configurazione del sistema (anche in modo profondo) e vedere gli effetti di tale modifica subito dopo. Al massimo è necessario il riavvio del programma interessato.
Personalmente, ho installato e disinstallato StarOffice 5.2 più volte nella stessa giornata, nell'arco di circa 7 ore, senza mai spegnere nè riavviare il computer. Non ho avuto alcun problema di stabilità nè del programma, né del sistema in generale. Avrei potuto continuare tranquillamente a utilizzare altri programmi contemporaneamente all'installazione. Per confronto, Office Professional richiede due o tre riavvii della macchina per essere installato, il che vuol dire che tale operazione richiede di salvare qualsiasi lavoro si stia svolgendo e di chiudere tutti i programmi attivi...
 
 

Problemi con il lettore di CD-ROM

Spesso il rilevamento del cd-rom (operazione che avviene subito dopo l'inserimento del disco nel drive) blocca Windows per qualche secondo (nemmeno il mouse risponde). Nel caso di CD-ROM masterizzati in modo non ottimale, il rilevamento può richiedere parecchi secondi, durante i quali non è possibile fare altro che aspettare.
A volte poi l'estrazione del CD in momenti "non opportuni" (ad esempio durante l'aggiornamento delle directory di explorer) provoca il blocco dell'interfaccia grafica; compare lo schermo blu con un messaggio del tipo "inserire il CD-ROM numero xxxxxxx. Premere INVIO per continuare." Non sempre il reinserimento del CD risolve il problema; molto più spesso è necessario riavviare il computer, con conseguente perdita di tutti i dati non salvati.

 In Linux è necessario "montare" (mount) e "smontare" (umount) il cd-rom rispettivamente per poterlo leggere ed estrarre dal lettore CD. Questo sistema è una garanzia per evitare problemi: il sistema sa sempre con certezza se un cd-rom è presente nel lettore (e di quale disco si tratta) poiché non è possibile, una volta "montato", estrarre manualmente il CD dal drive (il pulsante di 'eject' viene disabilitato). Dire che questo sistema è scomodo è pura FUD: esiste il programma 'usermount' che riduce il mount al click di un pulsnte, mentre KDE esegue il mount automaticamente cliccando sull'icona CDROM sul desktop. "Smontare" un cd-rom è altrettanto facile: click sulla opportuna voce di menù sotto KDE oppure il comando 'eject' da terminale.

 (C) Copyright 2001 Marcello Romani. Questo documento può essere copiato liberamente, posto che non venga modificato e che si mantenga il nome dell'autore.

 Per commenti, suggerimenti, correzioni, idee: Marcello Romani


Torna alla pagina iniziale

Ultimo aggiornamento: 16 settembre 2001