Sistemas Operativos
Arquitectura de um sistema
Sistema Operativo
Helder Daniel
Sumário
1. Serviços de um Sistema
Operativo
2. System Calls
3. Programas do Sistema
Estrutura do Sistema
4. Máquinas Virtuais
Serviços de um Sistema
Operativo
● O SO disponibiliza serviços aos programas
e utilizadores para facilitar a utilização do
computador.
● Esses serviços podem variar entre
Sistemas. Algumas das classes de serviços
mais usuais são:
Execução de programas;
Operações de IO;
Manipulação do sistema de ficheiros;
Comunicação entre processos no mesmo
computador ou processos em
computadores diferentes.
System Calls
● As system calls são o interface entre os
processos e o sistema operativo.
● Estas funções são acessíveis via
instruções Assembly ou então via
bibliotecas de funções de linguagens de
alto nível (C, Pascal, Delphi, C#).
● Os parâmetros para as system calls
podem ser passados por registos ou por
stack ou por uma zona de memória que é
especificada num registo.
System Calls
System calls para gestão de processos
●Load, execute
●End, abort
●Create process, terminate process
●Get process attributes, set process
attributes
●Wait for time
●Wait event, signal event
System Calls
System calls para gestão de ficheiros
●Create file, delete file (e directórios)
●Open, close
●Read, write, reposition
●Get file attributes, set file attributes.
System Calls
System calls para gestão de dispositivos
●Request device, release device
●Read, write, reposition
●Get device attributes, set device attributes
●Logically attach or detach devices
Nota: Alguns dispositivos são tratados
logicamente de uma forma análoga aos
ficheiros (ex: teclado (stdin) e ecrã
(stdout)...)
System Calls
System calls para gestão de informação
●Get time or date, set time or date
●Get system data, set system data
●Get process, file, or device attributes
●Set process, file, or device attributes
System Call
System calls para comunicação
●Create, delete communication connection
●Send, receive messages
●Transfer status information
●Attach or detach remote devices
Nota: A comunicação é normalmente baseada em transmissão de
mensagens (conceito de cliente e de servidor) ou partilha de memória.
Nos sistemas de partilha de memória têm que existir mecanismos de
protecção e sincronização (para evitar conflitos).
Programas do Sistema
● Qualquer SO contém um conjunto de programas de sistema.
● Nalguns casos estes programas basicamente são interfaces
para que o utilizador aceda às system calls. Noutros casos
desempenham funções bastante mais complexas.
EX:
Manipulação de ficheiros
Informação de estado (status)
Suporte para linguagens de programação (Compiladores,
linkers,...)
Carregamento e execução de programas (Debuggers,
loaders, etc.)
Comunicações (login remoto, envio de mail, etc.)
Interpretador de comandos
Estrutura do Sistema
● Sendo um SO por natureza complexo é
necessário bastante cuidado na forma
como ele é concebido.
● A abordagem mais comum em
engenharia de software para implementar
sistemas complexos é a sua divisão em
sub-sistemas mais simples com inputs,
outputs e funções bem definidas.
● Ou seja, uma Arquitectura em camadas.
Estrutura do Sistema
● Nem sempre foi assim.
● Os primeiros sistemas tinham uma
arquitectura simples. Ex: MS-Dos
Estrutura do Sistema
● Arquitectura Simples
● O MS-DOS tinha bastantes limitações pois foi
construído sobre a plataforma 8088 que não possuía
dual mode e não tinha protecção de hardware.
●
● As próprias versões iniciais do UNIX estavam
limitadas. O SO era constituído apenas por duas
partes: os programas do sistema e o Kernel (núcleo).
Ou seja, tudo o que estiver acima do hardware e
abaixo da interface system-call faz parte do kernel
( = file system, CPU scheduling, memory
management, etc.).
Estrutura do Sistema
Arquitectura em Camadas
As novas versões do UNIX já dividem o sistema em mais módulos (Por
exemplo o AIX da IBM).
Os desenvolvimentos ao nível do hardware permitem uma melhor
modularização dos SO mais recentes.
A estratégia de modularização mais comum é a das camadas
(Layers).
Cada camada superior é construída à custa das camadas
inferiores. O nível mais baixo é o nível do hardware e o nível
superior é o nível do interface do utilizador.
Máquinas Virtuais
● Numa arquitectura em camadas cada
camada baseia-se na camada
imediatamente inferior.
● Por exemplo, do ponto de vista de um
programa, ele apenas necessita de:
● Bibliotecas de funções da linguagem de
programação,
● Serviços do Sistema Operativo,
Run-time (Normalmente o CPU da máquina).
● Estes “serviços” podem ser simulados...
Máquinas Virtuais
Exemplos
Ao nível dos Sistemas Operativos:
VMWare (http://www.vmware.com)
VirtualPC (http://www.microsoft.com/windows/
virtualpc/)
Partições no IBM iSeries (http://
www-1.ibm.com/servers/eserver/iseries/lpar/)
Máquinas Virtuais
Exemplos
Ao nível das Linguagens de
Programação
● JVM (http://java.sun.com/docs/books/vmspec/)
●
●.Net CLR (http://msdn.microsoft.com/netframework/programming/clr/)
●