Estou estudando CPUs e sei como ele lê um programa da memória e executa suas instruções. Também entendo que um sistema operacional separa programas em processos e depois alterna entre eles tão rapidamente que você pensa que eles estão sendo executados ao mesmo tempo, mas, na verdade, cada programa é executado sozinho na CPU. Mas, se o sistema operacional também é um monte de código em execução na CPU, como ele pode gerenciar os processos?
Eu estive pensando e a única explicação que eu poderia pensar é: quando o sistema operacional carrega um programa da memória externa para a RAM, ele adiciona suas próprias instruções no meio das instruções originais do programa, para que o programa seja executado, o programa pode ligar para o sistema operacional e fazer algumas coisas. Eu acredito que há uma instrução que o sistema operacional irá adicionar ao programa, que permitirá que a CPU retorne ao código do sistema operacional algum tempo. Além disso, acredito que quando o sistema operacional carrega um programa, ele verifica se há algumas instruções proibidas (que iriam pular para endereços proibidos na memória) e as elimina.
Estou pensando direito? Eu não sou um estudante de CS, mas, de fato, um estudante de matemática. Se possível, eu gostaria de um bom livro sobre isso, porque não encontrei ninguém que explique como o sistema operacional pode gerenciar um processo se o sistema operacional também é um monte de código em execução na CPU e não pode ser executado ao mesmo tempo. hora do programa. Os livros dizem apenas que o sistema operacional pode gerenciar as coisas, mas agora como.