DEV Community

Cover image for Aprendizados sobre sistemas operacionais – Parte 1
Igor
Igor

Posted on

Aprendizados sobre sistemas operacionais – Parte 1

Neste artigo falarei sobre conceitos que eu aprendi lendo os livros “Modern Operating Systems” do Tanenbaum e “Understanding the Linux Kernel” de Daniel Bovet & Marco Cesati.
Vamos para o que interessa:

  • Um computador moderno consiste em um ou mais processadores, alguma quantidade de memória principal (RAM), discos rígidos (HDD/SSD), impressoras, um teclado, um mouse, um monitor, interfaces de rede e vários outros dispositivos de entrada/saída (I/O).

Imagem representando a comunicação entre software e hardware

  • O hardware consiste de chips, placas, discos, um teclado e outros objetos físicos. Em cima do hardware fica o software.
  • A maioria dos computadores possuem 2 modos de operação: o modo Kernel e o modo Usuário. O sistema operacional, a peça de software mais fundamental (como Windows, Linux, MacOS), executa no modo Kernel (ou modo de supervisor). Nesse modo, ele tem acesso completo a todo o hardware e pode executar qualquer instrução que a máquina seja capaz de executar. O resto do software roda no modo de usuário, em que somente um conjunto menor de instruções de máquina estão disponíveis. Em particular, as instruções que afetam o controle da máquina ou que realizam I/O são proibidas no modo usuário (programas de aplicações).
  • O “User Interface Program”, shell ou GUI (Graphical User Interface), é o software de modo usuário de nível mais baixo e eles permitem o usuário iniciar outros programas.
  • Uma distinção importante entre o SO e softwares normais é que se um usuário não gostar de um certo programa de email, ele é livre para usar um diferente ou escrever o seu próprio; ele não é livre para escrever o seu próprio clock interrupt handler, que faz parte do SO e é protegido pelo hardware contra tentativas do usuário de modifica-lo.
  • Alguns sistemas embarcados (embedded software) podem não conter um modo kernel.
  • Existem programas que permitem o usuário trocar de senha, ou seja, eles possuem funções privilegiadas. Eles não fazem parte do SO e não são executados no modo Kernel, portanto, devem ser protegidos de uma forma especial.
  • O código fonte de sistemas operacionais chegam a 5 milhões de linhas de código ou mais.

Top comments (0)