D. Cosa impedisce a un programma di assemblaggio di arrestare in modo anomalo il sistema operativo?
A. Niente.
Tuttavia, molti programmatori molto intelligenti hanno provato molto negli anni a renderlo sempre più difficile. Sfortunatamente, per ogni programmatore intelligente, ce ne sono molti, molti altri che tra loro sono più creativi, più ambiziosi e talvolta solo più fortunati di quelli intelligenti. Ogni volta che un abile programmatore dice che nessuno dovrebbe, vorrebbe o potrebbe fare qualcosa, qualcuno là fuori troverà un modo per farlo. Microsoft Windows (come esempio) è in circolazione da quasi 35 anni e abbiamo ancora BSoD (Blue Screens of Death), che sono solo istruzioni che hanno causato l'arresto anomalo del sistema operativo.
Cominciamo con un po 'di terminologia. Tutto ciò che gira su un computer lo fa nel codice macchina. Il bit che legge le sequenze di tasti o il movimento del puntatore del mouse, il bit che cambia il colore di un pixel sul display o legge un byte da un file e il bit che calcola se il tuo proiettile ha colpito il cattivo o il bit che decide se la tua richiesta di carta di credito sarà accettata, saranno tutti eseguiti come una sequenza di istruzioni del codice macchina. Alcuni lavori sono così comuni e vengono eseguiti così spesso che ha senso assemblare le istruzioni necessarie per farli e far sì che tutti usino quell'assemblea. Il gruppo di questi lavori che consente o aiuta gli altri a utilizzare il computer tende ad essere chiamato il sistema operativo, ma non c'è nulla di intrinsecamente diverso tra loro e qualsiasi altro programma. Sono solo sequenze di istruzioni sul codice macchina.
Ciò che rende i sistemi operativi più complicati (e quindi soggetti a crash) è che devono tenere conto di cose a cui normalmente non si deve pensare. Prendi il lavoro più semplice come esempio. Voglio scrivere un messaggio alla fine di un file. In una lingua di alto livello dovresti scrivere qualcosa del tipo:
with open("myFile.txt", "w+") as f:
# do some really clever things
f.write("Goodbye cruel world!")
Ignoriamo tutti i dettagli su come si accede e si modificano gli stati fisici o su come vengono interpretati come bit e byte o su come questi byte vengono trasferiti da e verso la memoria e la CPU e si fida che tutto ciò che viene gestito dai programmi forniti dal sistema operativo dietro le quinte. Pensiamo solo a come aggiungere alla fine di un file. 1) Scopri dove si trova la fine del file, 2) scrivi qualcosa in quella posizione. Che cosa potrebbe andare storto? In realtà, abbastanza. Pensa a cos'altro succede sul computer mentre fai cose intelligenti. Se qualcos'altro viene fatto da qualcun altro (incluso il sistema operativo stesso) cambia il file su cui stai lavorando in qualche modo, allora questo lavoro davvero semplice diventa improvvisamente molto più complicato. Il file è più lungo, il file è più corto. Il file non è più lì. Il disco è pieno,