Altra leggenda informatica è quella per cui si rompe una periferica USB se si sconnette senza aver prima eseguito la procedura di sblocco tramite il sistema operativo.
Benché vi sia un reale problema di fondo in realtà la periferica USB non si danneggia in alcun modo. Quello che si danneggia sono i dati in essi contenuti o meglio ancora quelli che sono stati messi o spostati prima che ella fosse sconnessa senza la suddetta procedura.
Detto in maniera spicciola dovete sapere che quando attaccate un hard disk, stampante, scanner con cavo usb i driver usati per identificare la periferica ed usarla correttamente ci appoggiamo in maniera completamente trasparente al protocollo Plug&Play che permette di attaccare e staccare tali periferiche senza la necessità di spengere la macchina. Tale protocollo garantisce da parte di qualunque sistema operativo moderno di allocare driver e risorse fornendo strumenti come indirizzi I/O, canali DMA, IRQ e porzioni di memoria il tutto gestito in maniera automatica per far sì che non vi siano conflitti hardware, cosa anche se rara ma che comunque succede ugualmente.
Tutti noi abbiamo ben presente in mente come funziona il salvataggio o la copia di dati su floppy e hard disk connessi col normale cavo ide/sata. Spostiamo i file e immediatamente sono messi sul supporto senza attese. Nel caso dei CD/DVD invece fino a quando non premiamo il pulsante Masterizza sul programma apposito la procedura di salvataggio dei dati non è eseguita e pertanto se il computer dovesse essere spento o il programma chiuso, si tramuterebbe in un nulla di fatto, anche se virtualmente era stato deciso il contrario.
Nel caso delle periferiche usb può sembrare di trovarci nel primo caso dove i dati sono immediatamente salvati. In realtà questo non è completamente vero. Essendo periferiche controllate dal sistema operativo per semplificare la vita all’utente sulla questione hardware, questa gestione comporta anche che sia lui ha decidere quando scriverci per salvare/cancellare o rimuovere i dati. Anche se tramite terminale o interfaccia grafica possiamo vedere le modifiche, a livello di file system non possiamo avere la certezza matematica che è realmente così.

Ma perché avviene questo? Semplicemente perché in quel momento potrebbe capitare che il computer sia impegnato in altre operazioni e magari ha la memoria o processi occupati in altro. Un sistema di scheduler metterà in coda la richiesta di modifica sull’hard disk usb e non appena sarà possibile completerà l’operazione. La procedura guidata di rimozione sicura dell’hardware consiste nel saltare la coda dello scheduler e fargli eseguire le operazioni di salvataggio dei cambiamenti mettendo in secondo piano tutto il resto.
Quindi se sconnettete una penna usb dove avete solo letto dati ma non scritti o modificati, non avete bisogno di eseguire la procedura di sconnessione perché il sistema non ha alcun eventuale processo a suo carico. In caso contrario la procedura di rimozione è consigliata.
Ho eseguito la procedura di sconnessione, ma ricevo un errore che qualcuno sta utilizzando la periferica ma non ho alcun programma aperto: Molte volte capita che pur facendo le cose secondo il manuale qualcosa non funzioni. Se tentate di sconnettere la penna usb e riceve questo tipo d’errore vuol solamente ricordare che il sistema rileva che qualcuno deve ancora terminare dei processi di scrittura o lettura su tale periferica. Molte volte magari vi siete dimenticati di chiudere un programma, ma altre volte non è sufficiente. Questo succede perché il sistema ha delle operazioni da fare anche se tutti i programmi sono chiusi. In quel caso non c’è nulla da fare se non staccare la periferica, riavviare il computer o eseguire un comando apposito di “rimozione forzata”. In tutti i casi non è garantita l’integrità dei file.
Considerato che nel caso di penne usb i dati spostati saranno nell’ordine di qualche centinaio di mega, le procedure di modifica sulla periferica saranno quasi sicuramente eseguite immediatamente. Nel caso invece si abbia a che fare con periferiche di massa più grandi allora la procedura di rimozione sicura è particolarmente consigliata.
Qualcuno, a sentir questo, potrebbe obbiettare che si esegue la procedura di rimozione sicura per una questione di alimentazione evitando sovralimentazioni o sbalzi di corrente. Anche questo è falso perchè quando si esegue la “famosa procedura”, la periferica non smette di funzionare ma gli viene tolta l’alimentazione che equivale a staccarla a mano o spengere il computer di botto. Eventuali sbalzi si possono avere mentre la periferica è connessa non in quella frazione di secondo necessaria per toglierla.
Vuoi ricevere gratuitamente i nuovi articoli sull'informatica di David Terni nella tua casella E-mail o tramite Feed?
Contattami
Rss
Quasi tutto vero a metà, ovvero falso.
L’unico problema della perdita dei dati sta nel semplicissimo fatto che le scritture e le letture sono bufferizzate. Scrivendolo in maniera sbagliata ma intuitiva, se la periferica ha blocchi da 4Kb e l’utente scrive 1Kb soltanto, la richiesta non viene eseguita ma memorizzata: l’esecuzione effettiva avviene quando il blocco è completo, quando l’utente stesso chiede un “sync” (esplicitamente, o implicitamente per esempio con la famosa “rimozione”) o quando il sistema operativo decide che sia ora di farlo (per esempio se sta usando troppa memoria per le richieste pendenti). Questo ovviamente avviene per eseguire il minor numero di operazioni di I/O che sono notoriamente lentissime rispetto alla velocità della memoria volatile.
Su praticamente tutti i sistemi, a livello utente il sistema di buffering è comunque doppio o triplo, in quanto esistono buffer (di blocchi) per la periferica fisica, buffer per l’I/Oscheduler e buffer di libreria, utilizzato da qualsiasi pezzo di codice che non giri in spazio kernel. Sempre su praticamente tutti i sistemi decenti è possibile per l’utente gestire ogni parte di questo solo apparentemente complicato quadro (sempre che possegga i permessi, le conoscenze e la voglia).
Per quanto riguarda l’alimentazione è anche qui presente un’informazione falsa: non dipende certo dal tempo che ci si mette a togliere e levare la penna (almeno che non siate più veloci della corrente elettrica non prendiamo in esame il caso), ma da una semplicissima barriera (o filtro) di resistenze e condensatori, che sono posti all’ingresso di praticamente qualsiasi altro pezzo hardware.
5 Agosto, 2008 13:36
Grazie per il tuo contributo ma forse hai travisato le mie parole e il mio intento, mi scuso per questo. L’idea è quella di scrivere in maniera comprensibile per tutti usando il meno possibile tecnicismi che implicano una conoscenza di base che un lettore da un “profilo” medio/basso non può avere. Già solo introdurre concettualmente politiche di sheduler o del perchè le informazioni vengano suddivise in blocchi costringerebbe ad allungare di molto l’articolo rendendo tediosa la lettura e uscendo dalle regole non scritte di un blog [sintetico e chiaro] perchè la mia non vuole essere una lezione sui Sistemi operativi.
Per quanto concerne il fatto dell’alimentazione non era mio intento affermare quello per cui mi accusi, era solo una battuta perchè sarei entrato troppo nel dettaglio dell’elettroni che al lettore magari non capirebbe o interesserebbe.
Ti pregherei di rispondermi nel caso non condividessi il mio punto di vista, il dialogo per migliorare ciò che faccio è per me strumento importantissimo.
5 Agosto, 2008 15:11
Lungi da me l’idea di insultare o fare polemiche su chiunque abbia la voglia e lo spirito di divulgare informazioni in maniera comprensibile a tutti coloro che non sono del settore, anzi, complimenti per il lavoro!
Il fatto è che ciò che effettivamente succede in un pc è mascherato a diversi livelli a seconda dell’utilizzo del pc stesso, ovvero: allo end-user (”devi rimuovere la penna altrimenti si rompe”), al sistemista (come sei te da quanto ho capito, che conosce gli OS e la loro gestione di periferiche e processi) e lo scrittore di OS (come sono io, che vede cascate di interrupt, IRQs e context switches ad ogni tasto premuto, e cerca spiegazioni a livelli più bassi di quanto sia in effetti necessario). Purtroppo ognuno ha la sua deformazione professionale.
Ho solo scritto un commento perchè certe affermazioni erano semplicemente errate, come “perché in quel momento potrebbe capitare che il computer sia impegnato in altre operazioni e magari ha la memoria o processi occupati in altro”(falso perchè in molte situazioni il sistema è in idle eppure le scritture non avvengono), oppure “Anche se tramite terminale o interfaccia grafica possiamo vedere le modifiche, a livello di file system non possiamo avere la certezza matematica che è realmente così.”(falso perché in molti sistemi tra cui linux è possibile vedere lo stato dei filesystems e/o forzarne manualmente le operazioni), oppure “la periferica non smette di funzionare ma gli viene tolta l’alimentazione che equivale a staccarla a mano o spengere il computer di botto”(falso perchè sempre in molti sistemi l’alimentazione non viene staccata dopo una rimozione, e “non smette di funzionare” è fuorviante, in quanto letteralmente equivale a supporre un’alimentazione esterna (o una periferica che funzioni senza alimentazione?!)).
Ripeto, apprezzo i tuoi articoli e soprattutto lo scopo per cui li scrivi, ma sono anche convinto che esista un modo per scrivere concetti apparentemente complessi in maniera comprensibile a tutti. Basta pensare che tutti sappiamo cosa fa un atomo e perché anche se non abbiamo una laurea in fisica.
5 Agosto, 2008 18:04
4 Agosto, 2008 09:57
11 Agosto, 2008 07:17
29 Agosto, 2008 21:00