Crash Di Sistema

Ogni Sistema Operativo desktop va in crash. Nessuno può evitarlo se si usano programmi altamente complessi, quali quelli Microsoft. Possono esistere centinaia di cause - la rete senza fili smette di funzionare senza un motivo apparente, altre volte il computer si blocca e non ne vuole sapere di riprendersi. I driver sono causa di instabilità se sono scritti male o se sono applicati ad hardware non supportato. I programmi installati vanno a sovrascrivere le configurazioni di altre applicazioni causandone dei comportamenti anormali, ecc. Esistono molte spiegazioni per questi avvenimenti. Sono sicuro che ciascuno di voi ha incontrato almeno una volta una finestrella contenente uno strano messaggio senza alcuna utilità del tipo "qualcosa non è riuscito" oppure alcune finestre pop-up che compaiono durante l'avvio del sistema.

Sono cose che accadono in GNU/Linux, MS Windows, MacOs, Haiku, Syllabe ed altri. Il Sistema Operativo non può farci nulla. Il Sistema Operativo può tuttavia fornire delle soluzioni standard per far fronte a questi problemi. Sarò sincero. MS Windows è l'unico Sistema Operativo in cui non sono in grado di diagnosticare la maggior parte degli errori. Sono spiacente ma non ho la minima idea di cosa devo guardare nel caso che qualche driver vada in crash o che qualche altro software lavori in modo instabile. Sul serio. Ecco il perché.

Automazione completa

I sistemi Windows sono stati sviluppati tenendo a mente l'utente "medio". E' il modo migliore per nascondere le operazioni che avvengono a basso livello come il [http://en.wikipedia.org/wiki/Mount_(computing) montaggio] dei files di sistema, l'avvio dei [http://it.wikipedia.org/wiki/Demone_(informatica) demoni]demoni (programmi che girano in backgroud) oppure per installare i driver per l'hardware (il famoso "plug & play"). Il Sistema Operativo Windows tenta sempre di fare le cose automaticamente. Un'altra regola della Microsoft è che non dev'essere l'utente a prendere le decisioni in quanto non è abbastanza competente. Stiamo parlando di cose quali la scelta del file system (NTFS è lo standard), i suoni del sistema, l'ambiente desktop che si preferisce, le applicazioni o le configurazioni di default, ecc. E' molto premuroso (non faccio ironia!). L'automazione completa è ciò che i Sistemi Operativi permettono di fare. Così, il sistema Microsoft compie un buon lavoro nel prendere le decisioni al posto degli utenti, senza che questi ne siano informati e lo accettino. Questo metodo (nella maggior parte dei casi) rende la vita di molti ignari utenti più semplice - essi si trovano così un problema risolto senza ulteriori costi. Purtroppo (sì, esiste sempre un "ma"), utilizzando tale metodo c'è un grosso problema. Quando la magia finisce, scoprire il motivo del guasto e ripararlo manualmente può essere un inferno. Usandolo in automatico, finiamo per fidarci ciecamente del Sistema Operativo. Non conosciamo che genere di operazioni il nostro sistema effettua e così non possiamo fare nulla di sensato quando le cose vanno male. In effetti non è semplice trovare una causa quando non sappiamo neppure dove guardare!

Quasi tutte le distribuzioni GNU/Linux funzionano in una maniera differente. La maggior parte della magia è comunque presente, è però l'utente a decidere se utilizzarla o meno. In tal modo, la maggioranza delle operazioni che effettuiamo regolarmente tramite wizard o processi in background, possono essere eseguite manualmente senza alcun problema (a condizione che uno possieda le conoscenze adeguate su tali operazioni) modificando manualmente i files di configurazione o utilizzando qualche basilare programma che ci possa aiutare a farlo. Così l'utente che avrà bisogno di automazione l'avrà… ma non sarà costretto ad usarla! Spero che la differenza sia abbastanza chiara.

Log di sistema

Scovare la causa di un errore in MS Windows è un po' come cercare un ago in un pagliaio. La ragione principale di ciò è una mancanza di dettagliati log di sistema, che annotino quello che accade mentre il Sistema Operativo è in funzione. Al contrario, in GNU/Linux, ogni qual volta che il Sistema Operativo rileva un certo driver video incompatibile, una configurazione di rete corrotta, dei riferimenti a qualche file protetto o non esistente, un apposito messaggio viene salvato all'interno di un log che spiega appunto cosa è accaduto. E' quindi molto semplice analizzare la causa dell'errore ed agire per correggerlo. Ed anche se voi non siete in grado di capire il significato del messaggio d'errore, ci sono buone probabilità che questo venga capito da qualche utente più esperto (che potete contattare attraverso forum, IRC, ecc). Anche gli sviluppatori dei primi sistemi UNIX degli anni '70 avevano compreso che un corretto logging rappresenta un fattore chiave per un Sistema Operativo. Purtroppo, MS Windows non ha ancora sviluppato questa funzionalità di base ed il sistema di logging di Windows XP fa ridere gli esperti UNIX di tutto il mondo.

Verbose e debug

La maggior parte dei programmi di Windows (anche se semplici tipo Notepad o Paint) hanno un codice sorgente chiuso che bene o male rende impossibile eseguire un debugging del codice sorgente ed un'analisi degli errori. Le applicazioni proprietarie sono sviluppare per funzionare. Se non funzionano, il produttore dovrà correggere gli errori, il che naturalmente può prendere mesi oppure mai neppure avvenire. Vice versa, i programmi Open Source, sono sviluppati tenendo a mente la comunità. In genere consentono di eseguire il programma in modalità “verbose” o di debug, permettendo quindi all'utente di vedere tutte le operazioni che l'applicazione esegue in ogni dato momento.

Console di recupero

La console è una potente caratteristica di GNU/Linux e di UNIX in generale, il suo ruolo sarà trattato più in dettaglio nella terza parte di questo articolo. Per ora voglio solo accennare che è insostituibile in caso di crash di sistema di una certa rilevanza.

Di tanto in tanto accade che l'interfaccia grafica non risponda più ai comandi ed al mouse. Solitamente il problema consiste nel fatto che un singolo programma (processo) occupa tutte le risorse del processore rendendo di conseguenza momentaneamente non utilizzabili gli altri vari processi. Se il problema è più grave, per esempio il programma entra in un loop (ciclo infinito) o prova ad usare un driver corrotto, l'unica opzione è semplicemente quella di terminarlo (forzarne la chiusura). In Windows lo si fa solitamente premendo CTRL+ALT+CANC e chiudendo manualmente il programma dal Task Manager. Purtroppo, se il Task Manager non risponde, difficilmente possiamo fare qualcosa se non aspettare.

Se già se già utilizzate GNU/Linux non è necessario dire altro. Con GNU/Linux potete sempre abbandonare l'interfaccia grafica per passare alla console dei comandi premendo CTRL+ALT+F1. In genere funziona anche se l'interfaccia grafica sembra non rispondere. Quando sarete loggati nella console, potrete facilmente controllare quali programmi stanno causando l'instabilità del sistema (i comandi top, ps, e lsof saranno utili) e terminarli manualmente (kill -9 process_id). Inoltre, se la console non dovesse apparire oppure risultasse molto lenta (cosa che può verificarsi in presenza di gravi problemi), potete sempre connettervi al vostro computer da remoto attraverso un'altra macchina (certo, per fare questo vi serve un altro computer nella vostra rete :-)) ed eseguire lo stesso identico comando per terminare il processo tramite una connessione SSH. Funziona bene nella maggior parte dei casi e può evitarvi di dover forzare un riavvio manuale, rischiando così di perdere i vostri dati preziosi. Mi sorprendo sempre quando, dopo che l'applicazione è stata terminata, il desktop ritorna ad essere quello di prima. come se niente fosse accaduto, e posso immediatamente tornare al mio normale lavoro.

Non male, vero? Situazione in MS Windows: non ancora implementata.

Il logging degli errori ed il debugging concedono all'utente un tentativo per rilevare quasi tutti i comportamenti indesiderabili del sistema e correggerli manualmente, o chiedere a qualcuno di correggerceli (ad esempio tramite USENET, IRC o forum). È decisamente più semplice trovare gli errori quando conosciamo cosa non ha funzionato. Nel caso di un computer con installato Windows, possiamo soltanto tentare di indovinare che cosa potremmo aver sbagliato e provare quindi a trovare una possibile causa. Potete scegliere il metodo che vi suona più sensato.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.