Introdução à programação e aos algoritmos
1.12 Sistema Operacional
A máquina virtual tem seu próprio conjunto de instruções binárias que entende e processa. Chamamos esse código de bytecode, código de bytes, que permite uma padronização dessa máquina virtual que sempre irá entender o mesmo conjunto de bytecodes, independentemente da máquina real em que é executada. A máquina virtual processa programas-objetos gerados com bytecodes e gera o código de máquina para executar o programa na máquina real.
Por exemplo, a linguagem Java funciona dessa maneira: um compilador Java traduz o programa-fonte em bytecodes independentes da máquina. No momento da execução, esses bytecodes devem ser executados dentro de uma máquina virtual, que na realidade se comporta como um interpretador de bytecodes.
Figura 1.20 Híbrido entre compilação e interpretação.
1.12 SISTEMA OPERACIONAL
“Olá a todos que estão usando minix – Eu estou fazendo um sistema operacional livre (é apenas um hobby, não será grande e profissional como o gnu) para os clones AT 386(486)... e provavelmente nunca será compatível com nada além de discos rígidos AT, uma vez que isso é tudo o que eu tenho :-(.” Linus Torvalds, em 1991, anunciando o sistema operacional Linux.
Na última seção menti para você. Muito raramente seu programa vai executar diretamente sobre o hardware de seu computador. Para isso, você teria de conhecer tantos detalhes que demoraria anos e anos para dominar a escrita dos programas mais simples. Nos primórdios da Computação, a programação era feita diretamente sobre o hardware, depois foram criadas camadas que facilitam sua vida na hora de codificar, além de aumentar a segurança do código que você irá gerar.
Um sistema operacional é um programa especial que tem a
tarefa de garantir que os recursos do hardware estejam disponíveis para os programas que você quiser executar. Esse sistema gerencia todos os aspectos do hardware para que você não tenha de se preocupar com coisas como escrever um arquivo no disco, ler um caractere do teclado ou escrever letras na tela do monitor.
Mesmo que você tenha somente um processador, o Sistema
Operacional gerencia este recurso de modo que você possa executar vários programas ao mesmo tempo.
Essencialmente, um sistema operacional ocupa-se do
gerenciamento de processos; decide qual será o programa que poderá usar o processador; gerencia a memória, reservando partes da memória para seu programa e evitando acessos não autorizados a determinadas regiões da memória; processa a entrada e a saída de dados, isolando seus programas dos detalhes acerca da comunicação do computador com o mundo externo e sistema de arquivos; e implementa o acesso aos discos, garantindo a integridade dos arquivos salvos.