Sappiamo che tutto ciò che viene eseguito sul computer è un enorme programma collaborato da molti.
Quindi, quando un computer si blocca e non siamo in grado di fare nulla, cosa succede allora? Inoltre, è questo scenario in cui tutto blocca anche qualcosa implementato nel programma? o è come se il Contatore del Programma fosse bloccato e non potesse incrementare e quindi c'è qualche problema nel processore?cosa succede quando si dice che un computer "si blocca" o si blocca?
risposta
Il computer potrebbe bloccarsi in circostanze diverse. Questi sono quelli che posso pensare ora:
x86
CLI
eHLT
istruzioni.CLI
disabilita gli interrupt, quindi nessun evento asincrono (come un timer interrompe o premendo un tasto) può spostare il puntatore di istruzioniCS:EIP
in un'altra istruzione eHLT
interrompe letteralmente il processore.
L'istruzione viene usata raramente e lasciata solo al kernel se, ad esempio, qualche routine di inizializzazione nel codice di avvio fallisce. Anche se il riavvio è un'opzione migliore qui.
Nota cheHLT
arresta solo il nucleo è corsa su, non tutti core.Una finestra non risponde (si trova comunemente su Windows). Questo differisce da un'applicazione all'altra. Maggiori informazioni here.
Si tenta di acquisire una risorsa ma è protetta da un lucchetto ed è già stata acquisita. Il processo attende (in realtà un ciclo di occupato o produce un altro processo) fino a quando non può finalmente acquisire la risorsa. Questo è solo uno stato temporaneo , al contrario di ...
Un deadlock. Molteplici circostanze in cui può verificarsi, ma comune, sono due processi che tentano di acquisire risorse che forniscono reciprocamente allo stesso tempo. Nessuno può gestire la richiesta di acquisizione perché entrambi sono in attesa degli altri processi, quindi entrambi i processi terminano con non interrompibile. Questo è il motivo dei processi non interrompibili su Linux, che non possono essere uccisi nonostante venga inviato il segnale a.
Multitasking su processore lento o processore con pochi thread. Un cattivo algoritmo di programmazione rende la situazione ancora peggiore.
Poiché un processo occupa almeno un thread, il numero di processi effettivamente eseguiti contemporaneamente è molto basso. Questo potrebbe essere stabilizzato da un processore molto veloce, però.
Ciò comporta tempi di risposta lunghi per eventi come i clic del mouse.
Per i sistemi x86, HLT
è l'unica istruzione realmente ostacolare il puntatore all'istruzione di avanzare.
Tutti gli altri casi sono solo loop (potenzialmente infiniti) o bug del programma/sistema operativo.
- 1. GuzzleHttp si blocca quando si utilizza il computer host locale
- 2. Installazione Pip si blocca
- 3. Si blocca quando si chiama indexPathForCell
- 4. ddd si blocca all'avvio
- 5. Installazione gemma si blocca indefinitamente
- 6. Cosa fare quando un py.test si blocca silenziosamente?
- 7. Xcode 7.3 si blocca quando breakpoint impostare o applicazione si blocca
- 8. JVM si blocca all'uscita
- 9. IUIAutomation :: RemoveAllEventHandlers si blocca
- 10. iCloud UIDocumentPicker si blocca a intermittenza e si blocca
- 11. BeagleBone Black si blocca
- 12. JVM si blocca periodicamente
- 13. NamedPipeServerStream.EndWaitForConnection() si blocca solo quando viene utilizzato
- 14. Cosa rendere PerformanceCounterCategory.Exists si blocca indefinitamente?
- 15. Sapere A che punto l'applicazione si blocca
- 16. ddd si blocca all'avvio
- 17. Perché gdb si blocca?
- 18. Si blocca selenio Chromedriver?
- 19. file_get_contents si blocca
- 20. L'ottava inferiore si blocca
- 21. vector.push_back() si blocca
- 22. SWIG si blocca Python
- 23. glCreateShader si blocca
- 24. JUnit test si blocca
- 25. sql si blocca all'avvio - cosa posso fare?
- 26. FileDialog si blocca quando fondo 4GB pieno
- 27. Eclipse si blocca all'avvio
- 28. Jenkins si blocca casualmente
- 29. WebRequest.GetResponse si blocca?
- 30. Uccidere quando si blocca madri in pitone
dato che si mette "il multitasking su un processore lento", penso che dovresti aggiungere anche "traffico di scambio elevato su un sistema con poca RAM". Sono nello stesso ballpark: risorse hardware limitate. – bolov
Una domanda interessante è: un errore in un processo utente può bloccare solo l'intero sistema, oppure deve esserci anche un bug nel sistema operativo o driver di sistema affinché ciò accada? – bolov
@bolov È davvero ma piuttosto filosofico.Il buon vecchio bombardamento a forcella è un programma utente e può facilmente bloccare il sistema. Il fatto che i sistemi operativi non lo vietino: è un bug o no? "Philosophical" potrebbe non essere la parola giusta qui, ma spero che tu capisca cosa intendo comunque. ** Nota: ** Adatterò la mia risposta più tardi in base al tuo primo commento, ma al momento non sono in grado di farlo. – Downvoter