P. O que impede um programa de montagem de travar o sistema operacional?
A. Nada.
No entanto, muitos programadores muito inteligentes tentaram muito ao longo dos anos para torná-lo cada vez mais difícil. Infelizmente, para todo programador inteligente, existem muitos outros que, entre eles, são mais criativos, mais ambiciosos e, às vezes, mais sortudos que os inteligentes. Toda vez que um programador inteligente diz que ninguém deve, faria ou poderia fazer algo, alguém por aí encontrará uma maneira de fazê-lo. O Microsoft Windows (por exemplo) existe há quase 35 anos e ainda temos o BSoD (Blue Screens of Death), que são apenas instruções que causaram um travamento no sistema operacional.
Vamos começar com um pouco de terminologia. Tudo o que é executado em um computador faz isso em código de máquina. O bit que lê as teclas pressionadas ou o movimento do ponteiro do mouse, o bit que muda a cor de um pixel na tela ou lê um byte de um arquivo e o bit que calcula se sua bala atinge o bandido ou o que decide se o seu pedido de cartão de crédito for aceito, todos serão executados como uma sequência de instruções do código da máquina. Alguns trabalhos são tão comuns e são realizados com tanta frequência que faz sentido reunir as instruções necessárias para fazê-los e fazer com que todos usem esse conjunto. O conjunto desses trabalhos que permitem ou ajudam outras pessoas a usar o computador costumam ser chamados de sistema operacional, mas não há nada inerentemente diferente entre eles e outros programas. São apenas sequências de instruções de código de máquina.
O que torna os sistemas operacionais mais complicados (e, portanto, propensos a travamentos) é que eles precisam dar conta de coisas nas quais você normalmente não precisa pensar. Tome o mais simples dos trabalhos como exemplo. Quero escrever uma mensagem no final de um arquivo. Em um idioma de alto nível, você escreveria algo como:
with open("myFile.txt", "w+") as f:
# do some really clever things
f.write("Goodbye cruel world!")
Vamos ignorar todos os detalhes sobre como os estados físicos são acessados e alterados, ou como são interpretados como bits e bytes, ou como esses bytes são transferidos para e da memória e da CPU, e confiar que tudo o que é tratado pelos programas que o sistema operacional fornece Por trás das cenas. Vamos pensar sobre como você anexa ao final de um arquivo. 1) Descubra onde está o final do arquivo, 2) escreva algo nessa posição. O que poderia dar errado? Na verdade, bastante. Pense no que mais está acontecendo no computador enquanto você faz coisas inteligentes. Se qualquer outra coisa que estiver sendo feita por outra pessoa (incluindo o próprio sistema operacional) alterar o arquivo em que você está trabalhando de alguma forma, esse trabalho realmente simples de repente se torna muito mais complicado. O arquivo é mais longo, o arquivo é mais curto. O arquivo não está mais lá. O disco está cheio,