Chamadas de Sistema (SYSCALL)

Propaganda
Chamadas de Sistema (SYSCALL)
Eduardo Ferreira dos Santos
Engenharia de Computação
Centro Universitário de Brasília UniCEUB
Abril, 2016
1 / 26
Sumário
1
Estrutura dos Sistemas Operacionais
2
System Calls
2 / 26
Estrutura dos Sistemas Operacionais
1
Estrutura dos Sistemas Operacionais
2
System Calls
3 / 26
Estrutura dos Sistemas Operacionais
História
Quase todos os sistemas operacionais vêm da mesma raiz.
Evolução dos Sistemas Operacionais
4 / 26
Estrutura dos Sistemas Operacionais
Sistemas Monolíticos
São os mais comuns;
O SO inteiro é executado como um único programa no modo núcleo;
Escrito como uma coleção de procedimentos com parâmetros e
resultados;
Elas podem chamar umas as outras;
Principal vantagem: tempo de resposta das tarefas;
Desvio de controle (trap): chaveamento entre modo usuário e modo
núcleo.
5 / 26
Estrutura dos Sistemas Operacionais
Estrutura básica [Tanenbaum and Machado Filho, 1995]
1
Um programa principal invoca a rotina do serviço;
2
Um conjunto de rotinas de serviço executam as chamadas de sistema;
3
Um conjunto de rotinas utilitárias que auxiliam as rotinas de serviço.
Figura 1.1: Modelo de estruturação para um kernel monolítico
6 / 26
Estrutura dos Sistemas Operacionais
Sistemas Operacionais Unix
Figura 1.2: Organização dos sistemas Unix [Galvin et al., 2013]
7 / 26
Estrutura dos Sistemas Operacionais
MS-DOS
Não é dividido em módulos;
Não tem uma separação muito clara entre as interfaces e a
funcionalidade.
Figura 1.3: Estrutura do MS-DOS [Galvin et al., 2013]
8 / 26
Estrutura dos Sistemas Operacionais
Sistemas em Camadas
Hierarquia entre as camadas;
Os níveis superiores prestam serviço aos inferiores, odecendo a níveis
de complexidade;
Camadas do sistema são dependentes.
Figura 1.4: Funções das camadas [Tanenbaum and Machado Filho, 1995]
9 / 26
Estrutura dos Sistemas Operacionais
Organização em camadas do SO
Figura 1.5: Organização das camadas [Galvin et al., 2013]
10 / 26
Estrutura dos Sistemas Operacionais
Microkernel
Ideia: mover parte dos serviços do kernel para o espaço do usuário;
Implementação: separar o sistema operacional em partes, sendo cada
uma responsável por um tipo de serviço;
Comunicação acontece por meio de troca de mensagem entre os
programas e os serviços;
Vantagens [Galvin et al., 2013]:
Mais fácil de estender;
Mais conável, pois possui menos programas rodando em modo kernel;
Mais seguro.
Desvantagens:
Perde performance na comunicação constante entre os programas em
mdo usuário e modo kernel.
11 / 26
Estrutura dos Sistemas Operacionais
Estrutura do microkernel
Figura 1.6: Estrutura de um sistema operacional com microkernel
[Galvin et al., 2013]
12 / 26
Estrutura dos Sistemas Operacionais
Linus x Tanenbaum
Figura 1.7: Fonte: https:
//groups.google.com/forum/#!topic/comp.os.minix/wlhw16QWltI[1-25]
13 / 26
System Calls
1
Estrutura dos Sistemas Operacionais
2
System Calls
14 / 26
System Calls
Denição
Interface de programação para os serviços do Sistema Operacional.
Um SO tem duas funções principais:
1
2
Fornecer abstrações para os programas de usuário;
Administrar os recursos do computador.
O usuário não precisa administrar manualmente todos os recursos do
computador;
Absração de alto nível: API - Application Programmable Interface.
Exemplos:
POSIX (Unix, Linux e Mac OS X);
Java API.
15 / 26
System Calls
Exemplo de uma SYSCALL
Lembre-se: o processador só pode rodar um programa de cada vez!
Figura 2.1: Copiando o conteúdo para um arquivo [Galvin et al., 2013]
16 / 26
System Calls
Implementação de SYSCALL
Índice de números de chamadas armazenados numa interface de
chamadas de sistema implementada no Sistema Operacional;
A interface executa a chamada e retorna os valores de resultado;
O programa não precisa saber como a SYSCALL é implementada;
Contudo, é necessário entender o que faz o SO e o que a chamada
retorna;
Normalmente os detalhes das chamadas são suportados pelas
bibliotecas e/ou compiladores.
17 / 26
System Calls
Exemplo de API Padrão
Figura 2.2: Exemplo de uma chamada de API padrão POSIX [Galvin et al., 2013]
18 / 26
System Calls
Envio de parâmetros
Normalmente é necessário fornecer mais informações do que o nome
da chamada de sistema.
Existem três métodos de enviar parâmetros para uma SYSCALL
[Galvin et al., 2013]:
1
2
3
Parâmetros enviados através dos registradores (mais simples);
Os parâmetros são armazenados em tabelas ou blocos e seu endereço
enviado como um parâmetro ao registrador (Linux e Solaris);
Utilização de pilha (stack): os parâmetros são empilhados pelo
programa (push) e removidos pelo SO (pop)
Os métodos 2 e 3 não possuem limite em relação à quantidade de
parâmetros que são enviados à chamada.
19 / 26
System Calls
Utilização de pilhas (read)
1
Armazena os bytes;
2
Carrega no buer;
3
Gera o descritor de arquivo (fd);
4
Chama a rotina da biblioteca (call);
5
Executa a instrução TRAP. Nesse momento a chamada é promovida
ao modo kernel;
6
Passa a instrução para um endereço especíco do kernel;
7
Ativa o endereço especíco para a chamada (registradores);
8
Rotina de tratamento das chamadas de sistema;
9
Retorna para a instrução TRAP. Podem também bloquear o programa
que a chamou;
10 Retorna ao programa do usuário;
11 Limpa a pilha.
20 / 26
System Calls
Execução da API
Figura 2.3: Fluxo de execução da chamada read
[Tanenbaum and Machado Filho, 1995]
21 / 26
System Calls
Utilização de tabelas
Figura 2.4: Exemplo de envio de parâmetros por utilização de tabelas
[Galvin et al., 2013]
22 / 26
System Calls
Programa no MS-DOS
Uma única tarefa
singletasking
(
);
O shell é carregado junto com
o sistema;
Espaço de memória único;
Saída do programa -> shell
recarregado.
Figura 2.5: [Galvin et al., 2013]
23 / 26
System Calls
Programa no FreeBSD
Variante do Unix;
Multitasking
;
Login carrega o
O
shell
shell
do usuário;
executa a chamada fork() para
executar um programa:
exec() carrega um programa no
processo;
shell espera o m e retorna o
resultado.
Resultados:
code=0 Sem erros;
Figura 2.6:
[Galvin et al., 2013]
code>0 Algum erro.
24 / 26
System Calls
Galvin, P. B., Gagne, G., and Silberschatz, A. (2013).
Operating system concepts
.
John Wiley & Sons, Inc.
Tanenbaum, A. S. and Machado Filho, N. (1995).
Sistemas operacionais modernos
, volume 3.
Prentice-Hall.
25 / 26
System Calls
OBRIGADO!!!
PERGUNTAS???
26 / 26
Download