Sistema Operacional

 

 

Resumo: Ao longo de mais de 40 anos, sistemas operacionais têm sido

desenvolvidos com o propósito de tornar a utilização do computador mais

eficiente  e mais conveniente. Para isso, um enorme número de conceitos,

abstrações, mecanismos e algoritmos foram criados e aprimorados. Este artigo

é um tutorial a respeito das técnicas fundamentais empregadas nos sistemas

operacionais contemporâneos. Também são discutidos aqui os sistemas

operacionais distribuídos e de tempo real.

 

Introdução

    O sistema operacional procura tornar a utilização do computador mais eficiente e
mais conveniente. A utilização mais eficiente busca um maior retorno no investimento feito
no hardware, significa mais trabalho obtido do mesmo hardware. Uma utilização mais
conveniente vai diminuir o tempo necessário para a construção e utilização dos programas.
Um enorme número de conceitos, abstrações, mecanismos e algoritmos foram criados e
aprimorados ao longo dos últimos 40 anos. Este artigo é um tutorial a respeito das técnicas
fundamentais empregadas nos sistemas operacionais contemporâneos. O artigo baseia-se, em
grande parte, no texto do livro “Sistemas Operacionais”, dos mesmos autores [1].
    Para atingir os objetivos propostos, o sistema operacional oferece diversos tipos de
serviços. Todo sistema operacional oferece meios para que um programa seja carregado na
memória principal e executado. Talvez o serviço mais importante oferecido seja o que
permite a utilização de arquivos e diretórios. Também o acesso aos periféricos é feito através 
do sistema operacional. À medida que diversos usuários compartilham o computador, passa a 
ser interessante saber quanto de quais recursos cada usuário necessita. Diversas informações
sobre o estado do sistema são mantidas. Nessa categoria, temos a hora e a data correntes, a
lista de usuários utilizando o computador no momento, a versão do sistema operacional em
uso. Cabe também ao sistema operacional garantir que cada usuário possa trabalhar sem
sofrer interferência danosa dos demais.
    Os programas solicitam serviços ao sistema operacional através das chamadas de
sistema. Elas são semelhantes às chamadas de sub-rotinas. Entretanto, enquanto as chamadas 
de sub-rotinas são transferências para procedimentos normais do programa, as chamadas de
sistema transferem a execução para o sistema operacional. Através de parâmetros, o
programa informa exatamente o que necessita. O retorno da chamada de sistema, assim como 
o retorno de uma sub-rotina, faz com que a execução do programa seja retomada a partir da
instrução que segue a chamada. Para o programador assembly (linguagem de montagem), as
chamadas de sistema são bastante visíveis. Por exemplo, o conhecido "INT 21H" no MSDOS. Em uma linguagem de alto nível, elas ficam escondidas dentro da biblioteca utilizada
pelo compilador. O programador chama sub-rotinas de uma biblioteca, e estas chamam o
sistema. Por exemplo, qualquer função da biblioteca que acesse o terminal (como
printf()na linguagem C) exige uma chamada de sistema.
    A parte do sistema operacional responsável por implementar as chamadas de sistema
é normalmente chamada de núcleo ou kernel. Os principais componentes do kernel de
qualquer sistema operacional são a gerência de processador, a gerência de memória, o
sistema de arquivos e a gerência de entrada e saída. Cada um desses componentes será
descrito nas próximas seções.
    Os  programas de sistema, algumas vezes chamados de utilitários, são programas
normais executados fora do kernel do sistema operacional. Eles utilizam as mesmas
chamadas de sistema disponíveis aos demais programas. Esses programas implementam