View
225
Download
0
Category
Preview:
Citation preview
Geraldo Braz Junior
Sistemas Operacionais IIUnix: Memória e E/S
Gerenciamento de Memória
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
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
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
Gerenciamento de MemóriaEspaço de Endereçamento
6
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
Gerenciamento de MemóriaArquivos Mapeados em Memória
8
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
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
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
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
Gerenciamento de MemóriaPaginação
13
A core map possui uma entrada para cada frame da memória
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
Gerenciamento de MemóriaAlgoritmo de Substituição de Páginas
15
Entrada e Saída
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
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
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
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
E/S no UnixChamadas ao Sistema
21
Chamadas ao sistema para o gerenciamento de terminal
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
E/S no UnixTransmissão em Redes: sockets
23
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
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
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
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
E/S no UnixSockets: Comunicação sem Conexão
28
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
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
E/S no UnixSockets: Comunicação Orientada a Conexão
31
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
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
E/S no UnixTabela cdevsw
34
Alguns campos típicos da tabela cdevsw
E/S no UnixImplementação
Dois componentes principais:
Tratador de arquivos especiais de bloco
Tratador de arquivos especiais de caractere
35
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
E/S no UnixSistema de E/S
37
Recommended