20.1.07

Estrutura Básica dos Sistemas Operativos

Os sistemas operativos podem dividir-se em single-task e multi-task. De qualquer forma, a sua estrutura lógica baseia-se nuns mesmos três níveis:
.O HINT, Human Interface, fornece os comandos básicos para serem utilizados no sistema pelo utilizador, e transformando-os em System Calls à XIOS.
.O XIOS, Extended Input Output System, aceita e controla as System Calls ao sistema operativo por parte da aplicação. É onde se encontram as ferramentas de gestão de ficheiros, memória, controlo e tratamento de erros e atribuição de nomes lógicos aos dispositivos.
.A BIOS, Basic Input Output System, é a camada que comunica directamente com o hardware.

Contudo, a estrutura “física” de um sistema operativo baseia-se numa série de subsistemas interligados entre si:

1.Kernel
O Kernel de um sistema operativo é entendido como o núcleo deste. Representa a camada mais baixa de interface com o hardware, sendo responsável por gerir os recursos do sistema operativo como um todo. É no Kernel que estão definidas funções para operações de entrada/saída com periféricos (rato, teclado, discos, impressoras, scanners, interface serial/paralela), gestão de memória, tratamento de interrupções, gestão de processos (criação e destruição de processos, sincronização e comunicação entre processos...) e gestão do sistema de arquivos.
Quanto à sua arquitectura, o Kernel pode ser monolítico – num único bloco, com todas as funcionalidades carregadas na memória – ou modular – com os módulos específicos para cada tarefa carregados opcionalmente, dinamicamente.
O Kernel é a parte mais importante do sistema operativo pois sem ele, a cada programa novo que se criasse seria necessário que o programador se preocupasse a escrever as funções de entrada/saída, de impressão, entre outras, em baixo nível, causando uma duplicação de trabalho e uma enorme perda de tempo. Como o Kernel já fornece a interface para que os programas possam aceder aos recursos de sistema de um nível mais alto e de forma transparente, fica resolvido o problema da duplicação.
Quando há periféricos ou elementos de um sistema operativo que o Kernel não cobre, é necessário escrever-lhes a interface e criam-se então os Device Drivers.
Desta forma, o Kernel, é o software que fornece serviços básicos para todas as outras partes de um sistema operativo. De forma mais detalhada, é um conjunto de rotinas que oferecem serviços aos utilizadores do sistema e às suas aplicações, bem como a outras rotinas do próprio sistema operativo.

2.System Calls
As System Calls, Chamadas ao Sistema, são um mecanismo de protecção ao Kernel e de acesso aos seus serviços. Quando o utilizador, ou uma aplicação executada pelo mesmo, desejam utilizar um serviço do sistema operativo, fazem a respectiva chamada por meio de uma rotina (procedimento de biblioteca) que está directamente associada às Chamadas ao Sistema.

3.Modos de Acesso
As Chamadas ao Sistema estão relacionadas com os Modos de Acesso do processador. O Modo de Acesso é um mecanismo para impedir a ocorrência de problemas de segurança e mesmo violação do sistema. Existem as instruções privilegiadas que, por actuarem directamente no hardware da máquina, podem comprometer o sistema. As instruções não-priveligiadas não oferecem qualquer perigo ao sistema. Nos Sistemas Operativos os Modos de Acesso podem ser divididos em dois:
a) Modo Núcleo (Modo Kernel): a aplicação pode ter acesso ao conjunto total de instruções do processador. O Sistema Operativo executa no Modo Núcleo, de modo que somente ele tem acesso às instruções privilegiadas.
b) Modo Utilizador: a aplicação pode executar somente instruções não-privilegiadas tem acesso a um número reduzido de intrusões. Alguns dos programas de sistema, tais como editores e compiladores, também executam em Modo Utilizador. É importante mencionar que os editores e compiladores não fazem parte do Sistema Operativo, embora sejam normalmente fornecidos com o mesmo.

4.Interpretador de Comandos
Um interpretador de comandos não faz parte de um sistema operativo, embora seja extremamente útil. No UNIX, o interpretador de comandos é denominado de shell e é a interface primária entre um utilizador e o Sistema Operativo. O shell e o kernel do sistema operativo são programas separados que comunicam entre si através de um conjunto de System Calls.