Você está na página 1de 26

Sistema operacional

Chamadas de sistema
Escalonamento

Sistemas operacionais e Escalonamento

Alan Godoy Souza Mello


godoy@dca.fee.unicamp.br

06 de maio de 2010

1 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Sistema operacional

Abstração e portabilidade: camada de software que separa


as aplicações de usuário do hardware, provendo uma interface
tratável e unificada.
Gerenciamento de recursos: distribui recursos e garante a
segurança do sistema, mesmo quando há multiplos processos
rodando paralelamente.

2 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Tarefas: Escalonamento de processos, comunicação


inter-processos, gerenciamento de memória, gerenciamento de
entrada/saı́da e organização do sistema de arquivos.
Metas: eficiência, robustez, escalabilidade, extensibilidade,
portabilidade, segurança, interatividade e usabilidade.

3 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Tipos de sistemas operacionais

Dependendo da necessidade do sistema, há sistemas


operacionais com diferentes caracterı́sticas:
Grande porte
Servidores
Computadores pessoais
Portáteis
Embarcados (dispositivos simples, redes de sensores, smart
cards)
Em rede
Distribuı́dos

4 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Arquitetura

5 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Shell: responsável pela interface entre o sistema e o usuário.


Exemplos: terminal, Windows 3.11, GNOME, KDE.
API: interface entre as aplicações de usuário e o sistema
operacional.
Núcleo (ou kernel): software que contém os componentes
centrais do sistema operacional, como o gerenciamento de
processos, detendo controle irrestrito do hardware.
O sistema operacional é composto apenas pelo kernel?

6 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Arquiteturas de kernel

Monolı́tico: todas as atividades básicas estão no núcleo e os


componentes dele podem comunicar-se irrestritamente entre
si.
Menor organização – mais difı́cil depuração.
Maior vulnerabilidade.
Mais eficiente.

7 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Em camadas: componentes que realizam tarefas são


agrupados em camadas: uma camada só se comunica com
aquelas imediatamente superiores e inferiores.
Mais modular (facilidade de uso e depuração).
Menor eficiência (múltiplas chamadas são necessárias para
realizar uma atividade).
Não elimina o problema de vulnerabilidade (as camadas
continuam em modo kernel).

8 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Microkernel: o kernel é mı́nimo, contendo apenas alguns


serviços essenciais, como sincronização básica, enquanto o
restante dos serviços é executado através de servidores em
modo usuário.
Mais modular (facilidade de uso e depuração).
Menor eficiência (exigência de mais comunicação, tanto do
usuário com o kernel, como do kernel com os servidores).
Mais seguro (um componente pode falhar sem derrubar o
sistema).
9 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Máquinas virtuais: camada que media a relação das


aplicações (elas podem ser, inclusive, sistemas operacionais)
com o hardware, podendo maior separação e emulando
recursos não presentes no sistema (exemplos: JVM, VMware).

Garante maior isolamento das aplicações, permitindo multiplos


sistemas operacionais serem executados simultaneamente.
Pode ser implementada diretamente sobre o hardware ou sobre
um sistema operacional hospedeiro.

10 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Organização do Microsoft Windows

Implementa um microkernel hı́brido: há um núcleo dentro do


kernel, junto de um núcleo executivo, responsável pelas
tarefas não essenciais.
Não há uma separação de núcleos via hardware, apenas uma
abstração de software.
A camada executiva é organizada em componentes especı́ficos
e, em sua maior parte, independente de arquitetura.
Drivers de dispositivo são implementados através de
bibliotecas de ligação dinâmica (DLL).

11 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

12 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

Organização do GNU/Linux

Implementa um kernel monolı́tico hı́brido, organizado segundo


camadas e módulos.
Drivers de dispositivos e outras funcionalidades são carregados
como módulos dinâmicos e executam em modo núcleo.

13 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

14 / 26
Sistema operacional Arquitetura
Chamadas de sistema Organização do Microsoft Windows
Escalonamento Organização do GNU/Linux

O kernel, em si, não é um processo, mas um gerenciador de


processos, executado nas seguintes situações: em resposta a
uma chamada de sistema, exceção ou interrupção ou, mais
raramente, em alguma thread do kernel, que seja responsável
por executar algumas funções periodicamente.

15 / 26
Sistema operacional
Chamadas de sistema no Microsoft Windows
Chamadas de sistema
Chamadas de sistema no GNU/Linux
Escalonamento

Chamadas de sistema

A abstração dos detalhes de hardware, provida aos aplicativos


de usuário representa a maior parte da interação destes com o
sistema operacional (gerenciamento de recursos é,
usualmente, transparente).
Chamadas de sistema fornecem a interface entre as aplicações
de usuário e o kernel.
Nem todas as rotinas são providas através de chamadas de
sistema: algumas delas são resolvidas em espaço de usuário
apenas.
O conjunto de funcionalidades fornecidas pelo sistema
operacional é definido através da API.

16 / 26
Sistema operacional
Chamadas de sistema no Microsoft Windows
Chamadas de sistema
Chamadas de sistema no GNU/Linux
Escalonamento

Chamadas de sistema no Microsoft Windows

A descrição completa das chamadas de sistema não é


publicada pela Microsoft – a inteface é feita, prioritariamente,
pelas APIs (usualmente a Win32, porém há implementações
de outras APIs, como POSIX).
A interface nativa é usada apenas por sistemas que
acompanham o SO e por drivers de dispositivos, podendo ser
modificada regularmente, inclusive dentro de uma mesma
versão, sem causar a quebra de aplicações.
API do Win32 é muito abrangente, com chamadas envolvendo
com muitos parâmetros, contendo, inclusive, funções relativas
à interface gráfica.

17 / 26
Sistema operacional
Chamadas de sistema no Microsoft Windows
Chamadas de sistema
Chamadas de sistema no GNU/Linux
Escalonamento

18 / 26
Sistema operacional
Chamadas de sistema no Microsoft Windows
Chamadas de sistema
Chamadas de sistema no GNU/Linux
Escalonamento

Chamadas de sistema no GNU/Linux

Desenvolvedores não costumam usar diretamente chamadas


de sistema, porém rotinas da GNU C Library (glibc), as quais
costumam recorrer às chamadas de sistema.

19 / 26
Sistema operacional
Chamadas de sistema no Microsoft Windows
Chamadas de sistema
Chamadas de sistema no GNU/Linux
Escalonamento

20 / 26
Sistema operacional
Processos
Chamadas de sistema
Escalonador
Escalonamento

Processos

Campos administrados por processos:


Gerenciamento de processos: registradores, contador de
programa, estado, prioridades, identificadores de processo,
sinais...
Gerenciamento de memória: apontadores para segmentos
de dados, texto e pilha.
Gerenciamento de arquivos: descritores de arquivos abertos,
informações sobre sistema de arquivos e pipes, identificadores
de usuários e grupos.

21 / 26
Sistema operacional
Processos
Chamadas de sistema
Escalonador
Escalonamento

Estados de processos

22 / 26
Sistema operacional
Processos
Chamadas de sistema
Escalonador
Escalonamento

Escalonador

Sistema responsável por determinar qual a próxima tarefa a


ser executada e qual a fatia de tempo a ela atribuı́da.
Quando escalonar?
Quando um processo é criado
Quando um processo é finalizado
Quando o processo em execução é bloqueado (em uma
requisição de I/O, por exemplo)
Interrupção do hardware (por exemplo, do relógio em sistemas
preemptivos)

23 / 26
Sistema operacional
Processos
Chamadas de sistema
Escalonador
Escalonamento

Sequência básica:
1 Execução do escalonador (modo kernel)
2 Salvar o contexto do processo em execução (inclusive
registradores)
3 Seleção do próximo processo a executar
4 Carregamento do novo processo
Pode invalidar toda a cache!
Tem de ser eficiente!

24 / 26
Sistema operacional
Processos
Chamadas de sistema
Escalonador
Escalonamento

Objetivos gerais do algoritmo de escalonamento:


Justiça: cada processo recebe sua parte da CPU e processos
semelhantes são tratados de forma semelhante.
Policy enforcement: respeito às polı́ticas estabelecidas
Previsibilidade: a execução de um processo sob cargas
semelhantes do sistema deve durar aproximadamente o mesmo
tempo.
Eficiência: deve ser maximizado o uso dos recursos
disponı́veis.

25 / 26
Sistema operacional
Processos
Chamadas de sistema
Escalonador
Escalonamento

Polı́tica versus mecanismo

Imagine o seguinte cenário:


Um processo pai e vários processos filhos
Processos filhos atendem requisições diversas
Processo pai sabe quais são os filhos mais prioritários.
Como garantir uma boa decisão?
O escalonador provê o mecanismo de escalonamento e o
processo pai define a polı́tica de escalonamento (através de
prioridades estáticas, por exemplo).

26 / 26

Você também pode gostar