Perché i sistemi operativi hanno un'opzione per l'arresto? [duplicare]


10

Schermata di arresto di Windows 98
(fonte: ytimg.com )

Voglio sapere perché i sistemi operativi richiedono la chiusura mediante un'opzione. Perché non riesco a spegnere con un interruttore meccanico?

Danneggerò l'hardware o danneggerò i miei dati se spengo costantemente un computer senza usare l'opzione OS?

Per chiarire: voglio usare una Intel Compute Stick come un lettore multimediale collegato a un proiettore, quindi sarà controllato da un interruttore elettrico. Il computer avrà solo il video in esecuzione e non verranno installati i programmi. Il computer non avrà accesso a Internet.


30
Cosa ti ha detto la tua ricerca? Una rapida ricerca su Google per "perché devo spegnere il mio computer invece di togliere l'energia" troverà numerose risposte ... E sì, puoi danneggiare il tuo hardware, ma i rischi sono bassi, ma c'è sicuramente una possibilità di corruzione o perdita di dati.
Acejavelin,

1
Se il tuo hardware lo supporta e il sistema con cui stai lavorando accede completamente a qualsiasi memoria in modalità di sola lettura e il sistema non sta eseguendo l'hardware che deve essere spento con una procedura (ad esempio alcune schede di sintonizzazione TV, modem, ...) , quindi non c'è problema solo a tagliare la potenza. Tali sistemi sono ... piuttosto difficili da trovare, però.
Daniel Jour


1
L'hardware precedente era meno tollerante di improvvisa perdita di potenza. Ma l'hardware moderno è tollerante all'improvvisa perdita di potenza. I sistemi desktop tendono a richiedere un arresto ordinato. I sistemi integrati possono tollerare improvvise perdite di potenza. Embedded Linux utilizza spesso filesystem JFFS2 e UBIFS; "Sia UBI (vedi qui ) sia UBIFS sono tolleranti alle interruzioni di corrente, e sono stati progettati pensando a questa proprietà." . Si noti che si tratta di filesystem letti / scrivibili.
segatura

1
@DrZoo era (è ancora) identico in XP se lo avvii su un sistema senza un alimentatore ATX. Usavo un po 'di kit di test con un PC standard XP integrato.
Chris H

Risposte:


41

Dipende da cosa sta succedendo con il sistema nel momento in cui hai scelto di interrompere improvvisamente la potenza. Se il sistema è impegnato a scrivere dati importanti e si interrompe l'alimentazione, si potrebbero potenzialmente danneggiare i dati o corrompere il sistema operativo. Stanno succedendo molte cose che non vedi davvero. Per lo più, devi preoccuparti di una rottura del software quando esegui un hard reset. Per quanto riguarda l'hardware, non dovresti riscontrare problemi. Toccando ferro

Non si vuole prendere l'abitudine ignorando il metodo di spegnimento e tagliando l'alimentazione. Sarebbe solo questione di tempo fino a quando qualcosa non si corrompe e ti costringe a reinstallare il sistema operativo.

In alcuni casi, un hard reset è l'unica scelta che hai. Se il tuo computer si blocca e non riesci a fare nulla quale altra opzione c'è?

L'origine di questa schermata proviene dai sistemi Windows 9X, in cui il messaggio viene visualizzato quando Windows si è chiuso correttamente con MS-DOS ma non è configurato per tornare nuovamente al prompt (COMMAND.COM). Sui sistemi con adeguato supporto ACPI e alimentazione ATX, il PC potrebbe invece spegnersi.

In qualsiasi situazione in cui eseguirai un hard reset, assicurati di urlare " Sono il signore dell'elettricità !!! sul tuo PC. Dimostralo chi è il capo.


26
L'ultima riga ... purtroppo non ha la stessa sensazione quando si tratta di una macchina virtuale
Burgi

14
@Burgi " Sono il barone dell'elettricità !!! * " - risolto?
Corsika

5
@Burgi " Sono il re dei pezzetti !!! "
hBy2Py

5
Per quanto riguarda l'hardware, la mia comprensione è che l'estrazione dell'alimentazione farà sì che un disco rigido faccia un "parco di emergenza". Sebbene ciò prevenga normalmente il danneggiamento dell'unità, i dischi rigidi sono classificati per un numero molto più piccolo di parchi di emergenza rispetto ai parchi normali (comandati), quindi l'unità potrebbe consumarsi più rapidamente.
Nate Eldredge,

6
Su un moderno filesystem con journal, non sarà necessario reinstallare il sistema operativo in circostanze normali. Ma potresti plausibilmente perdere molti dati dell'applicazione che pensavi di aver salvato su disco.
Kevin

27

I computer sono progettati per essere veloci. Ciò può includere barare. Ad esempio, quando si suppone che un computer scriva dati, i computer potrebbero archiviarli nella RAM invece di scriverli su un disco rigido. Questo perché la RAM è molto più veloce.

Lo spegnimento indica al computer di svuotare i buffer, il che significa interrompere la memorizzazione di oggetti nella RAM e preparare il sistema a perdere energia elettrica. Se si perde effettivamente energia elettrica prima di assicurarsi che tutti questi dati siano scritti correttamente, è possibile che vengano persi.

Parte dei dettagli della struttura del volume del filesystem sono gestiti dal codice di gestione del filesystem del sistema operativo (a volte chiamato driver del filesystem). Spesso, i filesystem usano le tabelle. (Visivamente, puoi pensare a questi come grafici.) Immagina se stavi scrivendo una tabella di moltiplicazione e dicesse:
2 4 6 8 10 12 14 1

Prima di tutto, ogni colonna ha solo una riga. I problemi di moltiplicazione dovrebbero avere tre parti (due numeri che vengono moltiplicati (il moltiplicatore e il moltiplicatore) e una risposta (il prodotto)). Qui tutto ciò che stiamo vedendo è un gruppo di numeri singoli, quindi non abbiamo nemmeno un esempio completo di un prodotto di moltiplicazione. Quello che abbiamo è inutile.

In secondo luogo, ciò che abbiamo in realtà è peggio che inutile. A volte, l'unica cosa peggiore delle informazioni mancanti (che ti impediscono di fare progressi mentre capisci le informazioni di cui hai bisogno) sono informazioni fuorvianti affidabili che ti fanno spendere risorse per procedere in una direzione inutile e sbagliata. In questo caso, hai dati non validi verso la fine: uno invece di un 16. (L'idea qui è che il grafico ha smesso di essere aggiornato improvvisamente, prima che l'intero numero "16" sia stato annotato correttamente.) Se non lasci che il computer completa correttamente i suoi grafici, quindi ciò può causare confusione. (Se al computer viene chiesto di aggiornare alcuni dati e dovrebbe scrivere nella posizione numero sedici ... non vuoi che scriva nella posizione numero uno!) Il computer si basa su tabelle di natura abbastanza simile a questa.

Un altro esempio è la memoria virtuale. Se un computer esaurisce la RAM, può utilizzare lo spazio su un disco rigido per tenere traccia dei dettagli. Ad esempio, forse hai un documento di cinquanta pagine in un elaboratore di testi. Il computer sta tenendo traccia del fatto che il word processor è aperto e tiene traccia delle prime 12 pagine, ma le restanti 38 pagine sono memorizzate sul disco rigido, in quella che viene chiamata "memoria virtuale". Quando si spegne, il computer eseguirà l'intero processo di chiusura dei programmi, che libererà un po 'di RAM e alla fine utilizzerà la "memoria virtuale" per gestire correttamente il word processor. Se hai semplicemente perso energia elettrica, il word processor smette di funzionare (perché tutto si ferma). Quindi, all'avvio del computer, vede che la memoria virtuale ha i dati dalle 38 pagine del documento che è stato aperto in un elaboratore di testi. Il computer non sa nemmeno che i dati venivano utilizzati da un elaboratore di testi. La chiusura consente di occuparsi di tali cose mentre il computer è in grado di tenere traccia di questi dettagli.

Rispetto a Windows 95, MS-DOS era più resistente (meno soggetto a problemi) in caso di improvvise interruzioni di corrente. (Parte di quella maggiore vulnerabilità era dovuta alle capacità di Windows 95 di multitasking e gestione della memoria virtuale.) Quindi la suscettibilità del computer a arresti non validi, o anche se è richiesta una procedura di arresto ufficiale, si basa sul sistema operativo in uso. La maggior parte dei sistemi operativi moderni è progettata per fare affidamento sulla necessità di un arresto corretto, poiché i sistemi operativi sono più facili da progettare con tale requisito. Non c'è motivo che debba essere così, e in effetti, alcuni sistemi operativi nanobsd consentono a una persona di spegnerlo. Ad esempio, una pagina su nanobsd dice "Tutto è di sola lettura in fase di esecuzione - È sicuro staccare la spina di alimentazione."La home page di resflash ha un punto elenco che dice "Il potere può essere perso in modo sicuro in qualsiasi momento". Quindi non vi è alcun motivo per cui gli arresti assoluti debbano essere un requisito imposto dai progettisti del sistema operativo quando creano il design di un sistema operativo. L'arresto è semplicemente un requisito abbastanza comune.


1
"Quindi, quando il computer si avvia, vede che la memoria virtuale ha i dati delle 38 pagine del documento che è stato aperto in un elaboratore di testi." - non importa, tratta questi dati come immondizia e non li utilizza fino a quando non viene sovrascritto. (Perché cosa ti aspetteresti di essere lì? Non sarà mai nulla di utile)
user253751

1
"non gli importerà, lo tratterà come spazzatura" - giusto. Ecco perché la mia frase successiva (dopo quella che hai citato) diceva: "Il computer non sa nemmeno che i dati sono stati utilizzati da un elaboratore di testi". Ha perso la cognizione di questo fatto.
TOOGAM

Quello che voglio dire è che ciò non causa alcun problema.
user253751

" La maggior parte dei moderni sistemi operativi sono progettati ... più facili da progettare con tale requisito ". IMO questa è una semplificazione eccessiva. Possiamo evitare gli arresti, ma a costi molto costosi . Nessuna memorizzazione nella cache, nessun modo per la notifica dei processi in background (server, gestori dei backup, aggiornamenti). Inoltre, l'hardware moderno non viene più utilizzato con PIO ma con DMA , dici all'HDD e alla scheda di rete di leggere i dati dalla RAM e ti avvisano quando hai finito. Cosa succede se la potenza persa tra l'HDD sta scrivendo dalla sua cache ai suoi piatti? Lascia che il sistema operativo decida quanto ritardare l'arresto. Conosce meglio.
Margaret Bloom,

5

Ai tempi di MS-DOS, l'uccisione dell'alimentazione al computer avrebbe generalmente causato la perdita di qualsiasi informazione contenuta nella RAM ma non archiviata sul disco, ma non avrebbe influenzato le informazioni archiviate sul disco. L'atto di archiviare informazioni sul disco, tuttavia, renderà spesso illeggibili le informazioni precedenti almeno leggermente prima che la nuova versione sia leggibile. Perdita di potere tra il momento in cui la vecchia versione viene distrutta e la nuova versione scritta ne lascerebbe una senza alcuna versione delle informazioni. Se le informazioni in questione sono qualcosa di simile a una struttura di directory, ciò potrebbe rendere inaccessibili ampie aree del disco.

Se si sta utilizzando un software che scrive informazioni sul disco solo quando viene esplicitamente richiesto di farlo, a condizione che non si interrompa immediatamente l'alimentazione dopo aver chiesto al sistema di scrivere sul disco, non si dovrebbe bloccare accidentalmente alcuna informazione sul disco. I sistemi moderni, tuttavia, hanno spesso una o più attività che possono iniziare a scrivere informazioni sul disco a volte l'utente non si aspetta necessariamente. Se il sistema inizia a scrivere alcune informazioni poco prima che l'utente abbia interrotto l'alimentazione, ciò potrebbe causare la corruzione del disco e la perdita di dati.

Parte dello scopo di selezionare "shutdown" è quello di eliminare la possibilità che il sistema avvii spontaneamente qualsiasi azione che scriva i dati sul disco proprio mentre l'utente sta per interrompere l'alimentazione. Tutte le azioni che non vengono attivate prima che venga visualizzato il messaggio "Ora puoi spegnere il computer" non possono essere attivate fino a quando non viene riavviato il sistema, quindi non c'è pericolo che accada qualcosa mentre l'utente scollega la spina.


1
Anche ai tempi di DOS, è stata una pessima idea. Se un file fosse stato aggiornato ma il FAT non fosse stato aggiornato, si otterrebbe un file danneggiato.
Dewi Morgan,

1
@DewiMorgan: Ai tempi di DOS c'erano utilità disponibili per la memorizzazione nella cache del write-back, ma ogni versione standalone di DOS ricordo che la cache di write-through usata era il suo comportamento normale. Cosa si farebbe altrimenti per notificare al sistema che si voleva spegnere?
supercat

3
@DewiMorgan: So che alcuni vecchi dischi rigidi avevano utility head-park, ma erano praticamente obsoleti ben prima che Windows 95 sostituisse DOS.
supercat

1
supercat: No, MS-DOS non ha eseguito la memorizzazione nella cache a meno che non si eseguisse il software per farlo, come SmartDrv in bundle. Come notificare che il sistema doveva essere spento è usare SmartDrv/C. (Credo che il comportamento predefinito, per quanto riguarda la memorizzazione nella cache di scrittura, fosse diverso tra MS-DOS 5.0 e 6.22 ... Non dimentico di ricordare se è stato l'aggiornamento 5.0-> 6.0 o un aggiornamento successivo a apportare la modifica). Se la memoria mi serve bene, uno degli aggiornamenti successivi (a partire dal 6 o successivo) ha fatto sì che SmartDrv lo facesse automaticamente prima di lasciare Command.Com mostrare di nuovo il prompt, così sicuro da spegnere quando richiesto
TOOGAM

1
@Supercat A quanto ho capito, la cache write-through protegge un singolo blocco di dati dalla corruzione durante una scrittura. Non protegge due blocchi diversi (FAT e contenuto del file) dalla perdita di sincronizzazione se si interrompe l'alimentazione tra la scrittura dell'uno e l'altro.
Dewi Morgan,

4

Esistono due ragioni principali per cui i sistemi informatici necessitano di un arresto ordinato:

Stato dell'applicazione

Molte applicazioni hanno dichiarato che devono essere scritte nella memoria permanente. L'esempio ovvio è un server di database, ma anche applicazioni per lo più in lettura come server Web o NTP possono scrivere registri o statistiche che potrebbero essere incomprensibili se una scrittura viene interrotta.

Potrebbe essere possibile alleviare questo problema se le applicazioni in questione non leggono o scrivono direttamente i file, ma eseguono queste operazioni tramite un meccanismo transazionale come la scrittura su un database relazionale.

Struttura del filesystem

Man mano che il sistema operativo scrive i file per conto delle applicazioni, le scritture possono essere memorizzate nel buffer fino a quando i dischi non raggiungono, il che significa che le scritture delle applicazioni non vengono necessariamente completate fino a qualche tempo dopo. I meccanismi di risparmio energetico tendono ad aumentare il ritardo qui, quindi hai un compromesso tra consumo di energia e sicurezza dei dati.

Mentre i dati vengono scritti su disco, ci sono punti in cui i dati del filesystem sono incoerenti. Le moderne implementazioni del filesystem si occupano di ridurre al minimo i periodi, ma non possono essere eliminate del tutto. Ad esempio, quando un blocco viene prelevato dall'elenco libero, è presente una breve finestra in cui non è né allocato né libero. Questo problema di coerenza è il motivo per cui dopo un arresto impuro, un sistema operativo dovrà eseguire un controllo del filesystem all'avvio successivo, per esaminare tutti i blocchi e assicurarsi che siano correttamente contabilizzati.

I filesystem di journaling lo attenuano in una certa misura, registrando le modifiche previste in un registro prima di eseguirle effettivamente. Quindi il controllo del filesystem può essere eseguito molto più velocemente, riproducendo tutte le voci di registro complete e scartando quelle incomplete.

I problemi di coerenza del filesystem possono essere evitati non avendo dischi locali e montando NFS sul filesystem di root, ma la perdita di scritture nella cache è ancora un problema per questi sistemi. Gli unici sistemi che sono disposti a spegnere duramente senza spegnimento sono quelli che hanno i dischi montati in sola lettura (principalmente sistemi embedded come il mio lettore musicale Empeg Car, ma anche un paio di terminali di navigazione web meno disco che ho mentito in giro per i visitatori).

TL; DR

Le scritture di dati nella memoria permanente devono essere completate prima dello spegnimento. Se non si dispone di memoria scrivibile, rimuovere l'alimentazione è a basso rischio.


-1

perché se un file descrittore è aperto, può corrompere un file importante e lasciare il sistema operativo inattivo


15
Benvenuto in Super User. Un errore comune che i nuovi utenti fanno è quello di rispondere senza dettagli su come risolvere effettivamente il problema. Le risposte devono essere dettagliate e includere riferimenti, se necessario. Ti preghiamo di dedicare qualche minuto a modificare la tua risposta per includere i dettagli del motivo per cui la tua risposta è valida. Se hai bisogno di aiuto, leggi Come posso scrivere una buona risposta? .
CharlieRB
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.