Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix...

37
Geraldo Braz Junior Sistemas Operacionais II Unix: Memória e E/S

Transcript of Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix...

Page 1: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Geraldo Braz Junior

Sistemas Operacionais IIUnix: Memória e E/S

Page 2: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de Memória

Page 3: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaEspaço de Endereçamento

1. Segmento de código

Instruções de máquina que formam o código executável do programa;

Produzido pelo compilador;

Somente de leitura.

3

Page 4: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaEspaço de Endereçamento1. Segmento de dados

Armazenamento das variáveis;

Duas partes: dados inicializados e não inicializados (BSS);

Arquivo executável contém apenas as variáveis inicializadas. Para as não inicializáveis apenas é indicado no cabeçalho quantos bytes devem ser alocados;

Exemplo: processo A: 8KB código + 8KB de variáveis inicializadas + 4KB variáveis não inicializados;

Leitura e escrita;

Pode mudar de tamanho (alocação dinâmica).4

Page 5: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaEspaço de Endereçamento

1. Pilha de execução

Inicia no topo do espaço de endereçamento e cresce para baixo, em direção ao endereço 0;

No início possui: variáveis do ambiente e a linha de comando digitada no shell

Segmentos de código podem ser compartilhados

5

Page 6: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaEspaço de Endereçamento

6

Page 7: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaArquivos Mapeados em Memória

Arquivo é mapeado no espaço de endereçamento do processo podendo ser lido e escrito como um vetor de bytes;

Dois ou mais processos podem mapear um arquivo simultaneamente;

Escritas são visíveis a todos instantaneamente.

7

Page 8: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaArquivos Mapeados em Memória

8

Page 9: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaChamadas ao Sistema

s - código de erro

addr – endereços de memória

len - comprimento

prot – controles de proteção

flags – bits miscelâneos

fd – descritor de arquivos

offset – offset do arquivo9

Page 10: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaTroca de Processos Memória e Disco

Antes do 3BSD: na falta de memóriaalguns processos eram inteiramentetrocados para o disco (swapped out);

Movimentação entre memória e disco era tratada pelo escalonador de nívelsuperior conhecido como trocador(swapper);

A troca era iniciada quando o sistemaficava sem memória livre devido a:

1. Chamada fork para criação de processo

2. Chamada brk para expandir segmento de dados

3. Uma pilha se torna maior

10

Page 11: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaTroca de Processos Memória e Disco

Algoritmo do trocador Para remover um processo, era escolhido entre

aqueles bloqueados o que tivesse o maiorsomatório da prioridade com o tempo de residência;

A cada poucos segundos os processos em disco eram verificados. Dos prontos para executar, o que estivesse a mais tempo no disco era escolhido;

O trocador verificava se o processo escolhido era de troca fácil ou difícil;

O espaço livre na memória e no disco era controlado por listas encadeadas de espaçosvazios usando first fit.

11

Page 12: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaPaginação

Introduzido no 3BSD;

Um processo não necessita estar totalmente na memória para ser executado;

É necessário apenas as tabelas de páginas e a estrutura do usuário;

A paginação é feita por demanda;

O daemon de paginação é executado periodicamente. Ao verificar que a quantidade de páginas livres está pequena, ele começa a liberar páginas.

12

Page 13: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaPaginação

13

A core map possui uma entrada para cada frame da memória

Page 14: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaAlgoritmo de Substituição de Páginas

Executado pelo daemon de paginação; Ele é acordado a cada 250 ms para

verificar se qtde páginas livres parâmetro lostfree (normalmente ¼ damemória);

Utiliza um algoritmo global (o númerode páginas de cada processo varia no tempo);

Baseado no algoritmo do relógio; Cada página possui um bit R associado; O bit R é ligado sempre que a página é

referenciada (para leitura ou escrita).14

Page 15: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Gerenciamento de MemóriaAlgoritmo de Substituição de Páginas

15

Page 16: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Entrada e Saída

Page 17: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no Unix

Dispositivos de E/S são tratados como arquivos e acessados com as mesmas chamadas ao sistema read e write;

O ajuste de parâmetros nos dispositivos é feito através de chamadas ao sistema especiais;

O Unix integra os dispositivos no sistema de arquivos, chamando-os de arquivos especiais (diretório /dev).

17

Page 18: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no Unix

Categorias de arquivos especiais:

De bloco Cada bloco pode ser acessado e endereçado

individualmente

Exemplo: discos

De caracteres E/S através de fluxo de caracteres

Exemplos: teclados, impressoras, redes, mouses

18

Page 19: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no Unix

Cada arquivo especial possui um driver associado;

Cada driver tem um número do dispositivo principal. Se suporta váriosdispositivos (ex. 2 discos) cada um terá um número do dispositivo secundário;

Os números principal e secundárioidentificam cada dispositivo de forma única;

Em alguns casos um driver simples podetratar dois dispositivos muito relacionados(ex. /dev/tty).

19

Page 20: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixChamadas ao Sistema Configurações em dispositivos de E/S

podem ser realizadas através da chamadaioctl;

Com o passar do tempo esta chamada se tornou muito complexa e o padrão POSIX estabeleceu novas chamadas paragerenciamento de terminais;

Valores diferentes para velocidade de entrada e saída devem-se a antigossistemas videotexto mas são utilizados atéhoje em sistemas ADSL (asymmetric digital subscriber line).

20

Page 21: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixChamadas ao Sistema

21

Chamadas ao sistema para o gerenciamento de terminal

Page 22: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixTransmissão em Redes: sockets

Introduzido pelo Unix de Berkeley;

Podem ser criados e destruídosdinamicamente;

Sua criação retorna um descritornecessário para o estabelecimento daconexão, leitura e escrita dos dados e liberação da conexão;

Tipos:1. Fluxo confiável de bytes orientado a conexão

2. Fluxo confiável de pacotes orientado a conexão

3. Transmissão não confiável de pacotes

22

Page 23: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixTransmissão em Redes: sockets

23

Page 24: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixTransmissão em Redes: sockets

Criado através de uma chamada ao sistema queretorna um descritor utilizado em operaçõessubsequentes;

Um dos parâmetros de criação especifica o protocolo a ser utilizado;

O descritor é chamado de LCE (Local Communication Endpoint);

O LCE deve ser associado a um PCE (Physical Communication Endpoint) para o transporte de dados;

O PCE é especificado pelo endereço de rede damáquina e por um número correspondente a umaporta;

Esta associação é realizada pela chamada bind.

24

Page 25: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixTransmissão em Redes: sockets

A comunicação envolve dois PCEs, cadaum pertencente a um dos processosenvolvidos;

Tanto o endereço local quanto o PCE remoto são necessários a cada operaçãosendto/recvfrom a não ser que se utilize um socket orientado à conexão;

Protocolo TCP é normalmente utilizadopara transmissões de fluxo confiável;

Protocolo UDP é normalmente utilizadopara transmissões não confiáveis (ex de uso: sistemas de tempo real, transmissão multimídia).

25

Page 26: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Analogia TCP

TCP = Sistema Telefônico

Você disca para um número, o outro lado atende e uma conexão é estabelecida;

O outro lado escuta suas palavras na ordem em que foram emitidas;

Se o telefone está ocupado ou se não há resposta você descobre prontamente.

26

Page 27: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Analogia UDP

UDP = Correios Você envia pacotes em cartas destinadas a

um endereço;

A maioria das cartas chega mas algumas podem ser perdidas no caminho;

As cartas provavelmente chegarão na ordem em que foram enviadas mas não há garantias;

Quanto mais distante você estiver do destinatário, aumenta a chance das cartas chegarem fora de ordem ou serem perdidas;

Você pode acordar em numerar as cartas e o destinatário lhe escrever solicitando aquelas que não recebeu.27

Page 28: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixSockets: Comunicação sem Conexão

28

Page 29: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixSockets: Comunicação Orientada a Conexão

O endereçamento explícito do PCE remoto nas chamadas send/receive pode ser eliminado através da chamada connectque realiza o bind do LCE com o PCE remoto antes de iniciar a transferência de dados;

O cliente envia um connect ao servidor

que aceita a comunicação através da chamada accept e assim estabelece uma

conexão com o cliente.

29

Page 30: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixEtapas de Utilização: Servidor

1. Cria o socket;

2. Realiza o bind do socket com uma porta;

3. Escuta no socket até que alguém se comunique através dele;

4. Aceita a comunicação;

5. Realiza a comunicação através de comandos read e write;

6. Encerra a comunicação.

30

Page 31: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixSockets: Comunicação Orientada a Conexão

31

Page 32: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixImplementação Implementada por um conjunto de drivers

de dispositivos;

O driver isola o restante do sistema das idiossincrasias do hardware;

Quando o usuário acessa um arquivoespecial, o sistema de arquivos determinaos números do dispositivo principal e secundário associados;

O número principal é usado para indexaruma entre duas tabelas internas: Bdevsw : para arquivos especiais de bloco

Cdevsw : para arquivos especiais a caractere

32

Page 33: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixTabela cdevsw

Cada linha se refere a um único dispositivo de E/S (um único driver);

Colunas representam as funções que todos drivers de caractere devem suportar.

33

Page 34: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixTabela cdevsw

34

Alguns campos típicos da tabela cdevsw

Page 35: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixImplementação

Dois componentes principais:

Tratador de arquivos especiais de bloco

Tratador de arquivos especiais de caractere

35

Page 36: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

Tratador de Arquivos de Bloco

Objetivo: minimizar o acesso a disco;

Unix mantêm uma cache de blocos (buffer cache) entre o disco e o sistema de arquivos;

Blocos na cache são ligados por uma lista encadeada:

Sempre que o bloco é acessado ele é movido para o início da lista;

Quando um bloco tem de ser removido, aquele constante do final da lista é selecionado.

36

Page 37: Sistemas Operacionais II Unix: Memória e E/S - …geraldo/soii/3.unix_03.pdf · E/S no Unix Transmissão em Redes: sockets Criado através de uma chamada ao sistema que retorna um

E/S no UnixSistema de E/S

37