Você está na página 1de 45

Arquitetura de Sistemas Operacionais

Estrutura do Sistema Operacional


Introdução
O sistema operacional é formado por um conjunto de
rotinas que fornece serviços aos usuários e as suas aplicações.
Este conjunto de rotinas e chamado de nucleo do sistema ou
Kernel.
Usuário

Supervisor

Executivo

Kernel
Introdução
A maioria dos sistemas operacionais é fornecida e
acompanhada de utilitários e linguagem de comandos, que são
ferramentas de apoio ao usuário, porém não são parte do
núcleo do sistema. O próximo slide apresenta um modelo de
camadas detalhando a estrutura do sistema operacional e suas
interfaces.
4 – Estrutura do Sistema Operacional
Sistema Computacional

Linha de
Aplicativos Utilitários
Comando

Rotinas do Sistema Operacional

Hardware
Funções do Núcleo
A compreensão da estrutura do Sistema Operacional
não é simples. Diferente de uma aplicação convencional como
sequenciamento de ínicio, meio e fim, as rotinas do sistema
operacional são executadas concorrentemente, sem uma ordem
pré-definida, com eventos dissociados do tempo (eventos
Assincronos). Muitos desses exentos são relacionados ao
hardware e a tarefas internas do próprio sistema operacional
Principais Funções do Nucleo do
Sistema Operacional
•Tratamento de interrupções e exceções;
•Criação e eliminação de Processos e Threads;
•Escalonamento e controle de Processos e Threads;
•Gerência de Memória;
•Gerência do Sistema de Arquivos;
•Gerência do dispositivo de E/S
•Suporte a Redes Locais Distribuídas
•Contabilização e Uso do Sistema;
•Auditoria e Segurança do Sistema.
Problemas de Segurança

Com a decorrência da complexibilidade da


arquitetura de um sistema multiprogramável, é natural
que surjam problemas relativos a segurança no
relacionamento dos diversos sistemas existentes.
Como por exemplo uma situação que diversos usuários
compartilhem o mesmo recurso como memoria,
processador e dispositivos de E/S. Esta situação exige
que o sistema operacional garanta a confiabilidade na
execução concorrente de todos os programas e dados
do usuário além de garantir a integridade do Sistema
Operacional
Problemas de Segurança
Sistemas Multiprogramável

Compartilhamento do processador entre tarefas


Sistemas Multiprogramável

O SO não pode permitir que isso ocorra


Modos de Acesso
Uma preocupação que surge nos projetos de
Sistemas Operacionais é a implementação de
mecanismos de proteção ao núcleo do sistema e de
acessos aos seus serviços. Caso uma aplicação que
tenha acesso ao núcleo que realize uma operação que
altere sua integridade, todo o sistema poderá ficar
comprometido e inoperante. Muitas das principais
implementações de segurança de um sistema operacional
utilizam um mecanismo presente no hardware dos
processadores chamados de modo de acesso.
Modos de Acesso

Modo de Acesso Modo de Acesso


Usuário Kernel
Modos de Acesso
Modo Usuário: Quando o processador trabalha no modo
usuário, uma aplicação so pode executar instruções
conhecidas como não privilegiadas, tendo acesso a um
numero reduzido de instruções.

Modo Kernel: A aplicação pode ter acesso a um conjunto


total de instruções do processador. O modo de acesso e
determinado por um conjunto de bits localizado no
registrador de status do processador, que indica o modo de
acesso corrente. Por intermedio desse registrador o
hardware verifica se a instruções pode ser ou não
executada.
Instruções Privilegiadas
As instruções privilegiadas não devem ser utilizadas de
maneira indiscriminada pelas aplicações pois isso poderia
ocasionar sérios problemas à integridade do sistema. Suponha
que uma aplicação atualize um arquivo em disco . O programa
por si só não deve especificar diretamente que acessa seus
dados no disco . Como o disco é um recurso compartilhado, sua
utilização deverá ser gerenciada unicamente pelo Sistema
Operacional, evitando que a aplicação possa ter acesso a
qualquer área do disco sem autorização, o que poderá
comprometer a segurança e a integridade do sistema de
arquivos. Desta forma certas tarefas so devem ser executadas
pelo Sistema Operacional.
Instruções Privilegiadas
Um outro exemplo do uso dos modos de acesso é a
proteção do próprio núcleo do Sistema residente na
memória principal . Caso uma aplicação tenha acesso a
área de memória onde esta carregado o sistema
operacional um programador mau intencionado ou um erro
de programação poderia gravar nesta área, violando o
sistema . Com o mecanismo de modo de acesso, para uma
aplicação escrever numa área onde resida o sistema
operacional o programa deve estar sendo executado em
modo Kernel.
4 – Estrutura do Sistema Operacional
System Call

System Call
Núcleo do
Sistema Operacional

Aplicação Biblioteca Hardware


Rotinas do Sistema Operacional e
System Calls
As rotinas do Sistema Operacional compõem o núcleo
oferecendo serviços aos usuários de suas aplicações. Todas as
funções do núcleo são implementadas por rotinas do sistema que
necessariamente possuem em seu código instruções privilegiadas.
A partir desta condição para que as rotinas possam ser executadas
o processador deve estar obrigatoriamente no modo kernel, o que
exige a implementação do mecanismo de proteção para garantir a
confiabilidade do sistema.
Rotinas do Sistema Operacional e
System Calls
Todo o controle de execução de rotinas do sistema o Sistema
Òperacional é realizado pelo mecanismo conhecido como system
call. Toda vez que uma aplicação deseja chamar uma rotina do
sistema operacional, o mecanismo de system calls é ativado.
Inicialmente, o sistema operacional verificará se a aplicação possui
privilégios necessários para executar a rotina desejada. Em caso
negativo, o sistema operacional impedirá o desvio para a rotina do
sistema sinalizando ao programa chamador que a operação não é
possível.
Este é um mecanismo de proteção por software, no qual o sistema o
operacional garante que as aplicações só poderão executar rotinas do
sistema que estão previamente autorizadas. Esta autorização e
realizada pelo administrador do sistema.
4 – Estrutura do Sistema Operacional
Chamada a uma Rotina do Sistema
Rotinas do Sistema Operacional e
System Calls
Considerando que a aplicação possua o devido privilégios
para chamar a rotina do sistema desejada, o sistema operacional
primeiramente salva o conteúdo corrente dos registradores troca o
modo de acesso do processador de usuário para kernel e realiza o
desvio para a rotina alterando o registrador PC com o endereço da
rotina chamada.
Ao término da execução da rotina do sistema, o modo de
acesso é alterado de kernel para usuário e o contexto dos
registradores restaurados para que a aplicação continue a
execução a partir da instrução que chamou a rotina da sistema.
Rotinas do Sistema Operacional e
System Calls
Uma aplicação sempre deve executar com o processador em
modo usuário. Caso uma aplicação tente executar diretamente uma
instrução privilegiada sem ser por intermédio de uma chamada a rotina
do sistema um mecanismo de proteção por hardware, garantirá a
segurança do sistema, impedindo a operação. Nesta situação em que a
aplicação tenta executar uma instrução privilegiada em modo usuário e
sem a supervisão do sistema operacional, o próprio hardware do
computador sinalizará um erro. Uma exceção é gerada e a execução do
programa e interrompida, protegendo desta forma o núcleo do sistema.
Rotinas do Sistema Operacional e
System Calls
Utilizando o mesmo problema apresentado anteriormente
do acesso a disco, para o programa atualizar um arquivo, a
aplicação deve solicitar a operação de E/S ao sistema operacional
por meio de uma chamada de rotina do sistema. O mecanismo de
system calls verificará se aplicação possui privilégios para a
operação, e em caso afirmativo, ira alterar o modo de acesso ao
processador de usuário para kernel.
O mecanismo de System Call e de proteção por hardware
garantem a segurança e integridade do sistema. Com isso aplicações
estão impedidas de executarem instruções privilegiadas sem a
autorização e supervisão do sistema operacional.
System Calls
Elas podem ser agrupadas, na maioria dos sistemas, em cinco
categorias principais:

• Controle de processos (end, abort, load, execute, create,


terminate, wait event, signal event, set attributes);
• Manipulação de arquivos (create, delete, open, close, read,
write, set attributes);
• Manipulação de dispositivos (request, release, read, write,
logically attach or detach);
• Manutenção de informação (get and set time or date, get and
set process or file);
• Comunicação (create and delete communication connection,
send and receive messages).
System Calls
0 termo system call é tipicamente utilizado em sistemas
Unix, porém em outros Sistemas Operacionais o mesmo
conceito é a apresentado com diferentes nomes, como system
services no OpenVMS, e Application Program Interface (API),
no Windows. No exemplo a seguir desenvolvido em Delphi, é
utilizado a API GetSystemTime para obter a data e a hora do
sistema MS Windows. A função SystemTimeToDateTime
converte a data e a hora no formato DataHoraT do delphi e em
seguida transforma para texto com a função DateTimeToStr.
Exemplo em Delphi
GetSystemTime(SystemTime);
DataHoraT:=SystemTimeToDateTime(SystemTime);
DataHoraS:=DateTimeToStr(DataHoraT);
RichEdit1.Lines.Add(DataHoraS);
Padrão Posix
Cada sistema operacional possui seu próprio conjunto
de rotinas com nomes parâmetros e formas de ativação
específicos. Conseqüentemente uma aplicação desenvolvida
utilizando serviços de um determinado sistema operacional não
pode ser portada diretamente para um outro sistema, exigindo
algumas correções no código-fonte. Uma tentativa de criar uma
biblioteca de chamadas objetivando uma padronização foi
elaborada elos institutos ISO e IEEE, resultando um conjunto
conhecido como POSIX (Portable Operating System Unix).
Inicialmente voltado para a unificação de varias versões do
sistema operacional Unix, o POSIX estabeleceu uma biblioteca
padrão, permitindo que uma aplicação desenvolvida seguindo
este conjunto de chamadas possa ser portada para os demais
sistemas. A maioria dos sistemas operacionais modernos
oferece algum tipo de suporte ao padrão POSIX como o MS
Windows, IBM-AIX, HP-UX e o SUN-Solaris e Linux.
Linguagem de Comandos
• Interpretador de comandos – um dos mais importantes
programas do SO é o interpretador de comandos, que serve de
interface entre o usuário e o SO.
Alguns SO’s incluem este programa no próprio
núcleo (kernel). Já outros sistemas, como o DOS e
o UNIX, tratam o interpretador de comandos como
um programa especial que é executado quando
uma sessão é iniciada.
Comando Descrição
Dir Lista o conteúdo de um diretório
Cd Altera o diretório
Type Exibe o conteúdo de um arquivo
Del Elimina arquivos
Ver Versão do Windows
Ativação/Desativação do Sistema

Boot loader
Post – Power-on Self Test
Shutdown
Arquitetura do Núcleo
O projeto de um Sistema Operacional é bastante
complexo e deve atender a diversos requisitos, algumas
vezes conflitantes, tais como:

•Confiabilidade
•Portabilidade
•Fácil manutenção
•Flexibilidade
•Desempenho

O projeto do sistema irá depender muito da


arquitetura do hardware a ser utilizado e do tipo de sistema
que se deseja construir: batch, tempo compartilhado,
monousuário, multiusuário, tempo real, etc
Arquitetura do Núcleo
Os primeiros sistemas operacionais foram
desenvolvidos integralmente em assembly, e o código
possuía cerca de 1 milhão de instruções (IBM OS/360).
Com a evolução dos sistemas e o aumento de linhas de
código para algo perto de 20 milhões(MULTICS),
técnicas de programação modular foram incorporadas
ao projeto, alem da linguagem de alto nível, como o PL/I
e Algol. Nos sistemas operacionais atuais, o numero de
linhas de código pode chegar a mais de 40 milhões
(Windows 2000), sendo que a grande parte do código é
escrita em Linguagem C/C++
Arquitetura do Núcleo
Além de facilitar o desenvolvimento e a manutenção do
sistema, a utilização de linguagens de alto nível permite uma
maior portabilidade, ou seja, que o sistema operacional seja
facilmente alterado em outra arquitetura de hardware. Uma
desvantagem do uso de linguagens de alto nível em relação a
programação assembly é a perda de desempenho. Por isso as
partes críticas do sistema como os devices drivers, o escalonador
e as rotinas de tratamento de interrupções são desenvolvidas em
assembly.
Arquitetura do Núcleo
Uma tendência no projeto de sistemas operacionais
modernos é a utilização de técnicas de orientação a objetos o que
leva para o projeto do núcleo todas as vantagens deste modo de
desenvolvimento de software. Existe uma serie de vantagens na
programação por objetos no projeto e na implementação de
sistemas operacionais. A seguir os principais benefícios são
apresentados:

•Melhoria na organização das funções e recursos do sistema;


•Redução no tempo de desenvolvimento;
•Maior facilidade na manutenção e na extensão do sistema
•Facilidade de implementação do modelo da computação
distribuída
Abordagens de Desenvolvimento de Sistemas
Operacionais

A maneira como o código do sistema é organizado e o


inter-relacionamento entre os seus diversos
componentes pode variar conforme a concepção do
projeto, que pode ser classificado como:

• Sistemas Monolíticos;
• Sistemas em Camadas;
• Sistemas Cliente-Servidor.
4 – Estrutura do Sistema Operacional
Arquitetura Monolítica
aplicação aplicação

Modo usuário
Modo kernel

System call

Hardware
Arquitetura Monolítica
Características
• É a organização mais comum aos sistemas operacionais;
• Em um sistema monolítico temos um conjunto de rotinas
responsável pela interpretação dos parâmetros passados
quando da chamada do sistema por parte de um programa
aplicativo, pela execução do serviço solicitado e pelo retorno
dos resultados;
• Qualquer rotina presente no sistema operacional pode vir a
chamar qualquer outra das rotinas.

Um bom exemplo é o MS-DOS, originalmente escrito para


fornecer o máximo de funcionalidade no menor espaço, até pela
limitação do hardware no qual era executado. Como o INTEL
8088 da época não tinha registrador de modo de acesso, a
Microsoft (MS-DOS) não teve escolha, deixando o hardware
básico desprotegido (popular; não foi dividido em módulos;
seus níveis de funcionalidade não são separados; programas
errados ou maliciosos podem comprometer seu funcionamento).
4 – Estrutura do Sistema Operacional
Arquitetura em Camadas do OpenVMS
4 – Estrutura do Sistema Operacional
Características

• A modularização de um sistema operacional pode ser feita de


diferentes formas; a mais utilizada é a aproximação em
camadas, que consiste em dividir o sistema operacional em um
número de camadas (níveis), hierarquicamente dispostas, cada
nível construído sobre o nível imediatamente abaixo.
• O nível mais baixo (nível 0) é o hardware e o mais alto é a
interface com o usuário.
• Módulos de uma camada oferecem funções aos módulos de
camadas superiores; cada camada é implementada usando
somente aquelas operações fornecidas pelas camadas de mais
baixo nível, sendo que a camada não necessita saber como
estas operações são implementadas; ela necessita saber o que
estas operações fazem.
Arquitetura MicroKernel
Sistemas Cliente - Servidor
Servidor de Servidor de
Cliente
memória rede

Servidor de Servidor de
arquivo processo
Modo
usuário
Modo
Núcleo kernel

Hardware
Características
• O kernel do SO passa a ser responsável pela comunicação
entre processos e pela implementação de operações que seriam
difíceis de serem executadas a partir dos processos servidores.
• A maioria dos serviços que seriam prestados pelo SO,
executados em modo supervisor em uma organização
monolítica, passariam a ser prestados por um conjunto de
processos servidores que seriam executados em modo usuário,
sendo apenas o kernel ainda executado em modo supervisor.

No caso do Windows NT, da Microsoft, cada subsistema do ambiente e o NT Executive são


implementados como sendo vários processos. Cada processo espera por uma solicitação de um
cliente para um de seus serviços (por exemplo, serviços de memória, serviços de criação de
processos, ou serviços de escalonamento do processador). Um cliente, que pode ser uma aplicação
do usuário ou outro módulo do sistema operacional, solicita um serviço por envio de uma
mensagem. A mensagem é direcionada através do NT Executive para o servidor apropriado. O
servidor realiza a operação solicitada e retorna os resultados por meio de uma outra mensagem,
que é direcionada através do NT Executive de volta ao cliente.
4 – Estrutura do Sistema Operacional
Máquina Virtual

n
VM

VM

VM
Ap 1 Ap2 Apn

SO1 SO2 SOn

HV1 HV2 HVn

Gerência de Máquinas Virtuais

Hardware
4 – Estrutura do Sistema Operacional
Máquina Virtual Java

Aplicação

Máquina Virtual Java

Sistema Operacional

Hardware

4/7
4 – Estrutura do Sistema Operacional
Arquitetura Microkernel

em
ag
me

ns
me
ns
Modo usuário

ag
em
Modo kernel

Microkernel

Hardware

4/8
Exercícios
l. O que é o núcleo do sistema e quais são as suas principais
funções?
2. 0 que são instruções privilegiadas e não privilegiadas? Qual a
relação dessas instruções com os modos de acesso?
3. Explique como funciona a mudança de modos de acesso e dê
um exemplo de como um Programa faz uso desse mecanismo.
4. Como o kernel do sistema operacional pode ser protegido pelo
mecanismo de modos de acesso?
5 Porque as rotinas do sistema operacional possuem instruções
privilegiadas?
6. 0 que é uma system call e qual sua importância para a segurança
do sistema? Como as system calls são utilizadas por um
programa?
Exercícios
7. Quais das instruções a seguir devem ser executas apenas em
modo kernel?
Desabilitar todas as interruções, consultar a data e a hora do sistema,
alterar a data e hora do sistema, alterar informações residentes no
núcleo do sistema, somar duas variáveis declaradas dentro do
programa, realizar um desvio para uma instrução dentro do diretório
do programa e acessar diretamente posições no disco.
8. Pesquise comandos disponíveis em linguagens de controle de
sistemas operacionais.
9. Explique o processo de ativação (boot) do sistema operacional.
10. Compare as arquiteturas monolítica e de camadas. Quais as
vantagens e desvantagens de cada arquitetura?
11. Quais as vantagens do modelo de máquina virtual?
12. Como funciona o modelo cliente-servidor na arquitetura
microkemel? Quais as vantagens e desvantagens dessa arquitetura?
Exercícios
13. Porque a utilização da programação orientada a objetos é um
caminho natural para o projeto de sistemas o operacionais?

Você também pode gostar