Eu estava pensando em minha introdução à programação recentemente e me lembrei de escrever um programa C++ que deliberadamente lia e gravava em endereços de memória aleatoriamente. Fiz isso para ver o que aconteceria.
Para minha surpresa, no meu PC com Windows 98, meu programa criava alguns efeitos colaterais muito estranhos. Ocasionalmente, alternava as configurações do sistema operacional ou criava falhas gráficas. Na maioria das vezes, não faria nada ou apenas travaria todo o sistema.
Mais tarde, descobri que isso acontecia porque o Windows 98 não restringia o que um processo de usuário tinha acesso. Eu podia ler e escrever na RAM usada por outros processos e até mesmo pelo sistema operacional.
É meu entendimento que isso mudou com o Windows NT (embora eu ache que demorou um pouco para acertar). Agora o Windows impede que você vasculhe na RAM que não pertence ao seu processo.
Lembro-me vagamente de executar meu programa em um sistema Linux mais tarde e não obter tantos resultados interessantes. Se bem entendi, isso se deve, pelo menos em parte, à separação do espaço do usuário e do kernel.
Então, minha pergunta é:
Houve uma época em que o Linux não separava o espaço do usuário e do kernel? Em outras palavras, houve um momento em que meu programa desonesto poderia ter causado estragos semelhantes em um sistema Linux?