QNA > U > Un Sistema Operativo È In Grado Di Rilevare I Loop Infiniti Durante L'esecuzione?

Un sistema operativo è in grado di rilevare i loop infiniti durante l'esecuzione?

Un sistema operativo è in grado di rilevare loop infiniti quando è in esecuzione?

Ci sono almeno due facce diverse per questa domanda:

  1. I sistemi operativi implementano il rilevamento di loop infiniti?
  2. I sistemi operativi possono rilevare loop infiniti?

Risponderò in modo frammentario.

I sistemi operativi implementano il rilevamento di loop infiniti?

No. I sistemi operativi implementano una serie di caratteristiche intorno ai processi che possono aiutare a garantire che escano con grazia e rispondano tempestivamente, ma controllare la logica interna delle applicazioni per le condizioni di uscita non è davvero qualcosa che i sistemi operativi fanno o hanno bisogno di fare. Nella migliore delle ipotesi, la vostra applicazione riceverà segnali dal sistema operativo e/o sarà monitorata da un watchdog. Quando questi falliscono potreste ritrovarvi con qualcosa come:

main-qimg-0d98e18b2227968e2a21d0966ce93910

I sistemi operativi possono rilevare i loop infiniti?

Tutti i "loop infiniti"? La risposta è no. Nessun sistema di calcolo può garantire la determinazione se un programma alla fine terminerà o meno. Questo è un problema ben noto della teoria computazionale noto come problema di Halting. Si può essere in grado di categorizzare i programmi in sottoinsiemi più definiti di comportamento di esecuzione in modo decidibile. Tuttavia, ci sono alcuni programmi tali che semplicemente non possiamo dedurre in un tempo finito se tale programma alla fine si fermerà o meno.

Il precedente è semplicemente a livello di calcolo teorico, ma quando si aggiunge che i sistemi del mondo reale spesso dipendono da sistemi esterni per le condizioni di terminazione e diventa ancora più impossibile garantire se un programma alla fine terminerà. Immaginate un programma che aspetta una risposta da un server prima di elaborare alcuni dati e terminare. Se il server non invia mai una risposta, allora il vostro sistema andrà in loop all'infinito, non c'è modo che il vostro sistema operativo possa sapere se il server remoto risponderà o meno. Quindi il caso del mondo reale è ancora più difficile del problema dell'halting, perché anche se risolvete il problema dell'halting questo non vi darà la possibilità di oracolare se i sistemi remoti alla fine risponderanno o meno.

Di Kristof Bagaram

Come rendere il testo lampeggiante in HTML :: Qual è meglio per i tuoi occhi, OLED o LCD?
Link utili