• Nenhum resultado encontrado

Fundamentos de Sistemas Operacionais

N/A
N/A
Protected

Academic year: 2022

Share "Fundamentos de Sistemas Operacionais"

Copied!
52
0
0

Texto

(1)

Fundamentos de Sistemas Operacionais

Aula 17: Gerenciamento de Memória e Tipos de Alocação

Primitivos

Diego Passos

(2)

Aulas Anteriores

(3)

Espaço de Endereçamento

● Região de memória alocada para cada processo.

○ Apenas o próprio processo tem acesso.

○ Outros processos precisam de permissões para ler/escrever dados.

● SO aloca espaço de endereçamento para processo durante a criação.

○ Detalhes sobre esta criação não foram vistos.

(4)

Gerenciamento de Memória:

Introdução

(5)

O que é

● Uma das tarefas mais importantes e complexas de um SO multiprogramado.

○ Grande maioria dos SOs atuais são multiprogramados.

● Sistemas multiprogramados requerem mecanismo de divisão da memória principal entre vários processos.

● Há requisitos de segurança e justiça.

○ O conceito de espaço de endereçamento surgiu desta necessidade.

● Responsável por 3 tarefas:

○ Segurança.

○ Alocação.

○ Tradução de endereços.

● Responsável também por gerenciar outros tipos de memória.

○ Cache, secundária.

(6)

Segurança

● Objetivo:

○ Garantir que um processo não invada o espaço de endereçamento dos demais.

● Solução simples (já vista):

○ Registradores base e limite.

○ Quando processo é escalonado, SO configura ambos os registradores.

○ Registrador base: endereço da primeira posição do espaço de endereçamento.

○ Registrador limite: endereço da última posição.

○ A cada acesso, circuito auxiliar verifica se endereço requisitado está entre base e limite.

(7)

Alocação

● Processo de escolha de uma região de memória para um espaço de endereçamento.

● Sempre que um processo é criado, SO precisa alocar uma região da memória principal

● Depende do tamanho do espaço de endereçamento e do estado atual da memória.

○ Quais endereços estão livres e quais estão ocupados.

● Não é um processo trivial.

(8)

Tradução de Endereços

● Processos não precisam ter visão direta dos endereços físicos de memória.

● É possível adotar um esquema de endereços lógicos.

○ Processos dos usuários acessam endereços lógicos.

○ Algum circuito auxiliar traduz estes endereços para o valor real (posição de memória física).

○ Exemplo:

■ Processo acessa posição 100.

■ Esta é traduzida para a posição 1967 da memória física.

(9)

Memory Management Unit (MMU)

● Nome dado ao circuito auxiliar.

○ Mesmo que faz verificações utilizando registradores base e limite.

○ Mesmo que faz traduções de endereços.

● Responsável por implementar suporte de hardware necessário ao gerenciamento de memória.

● Pode ser simples ou complexo, dependendo das necessidades de gerenciamento.

(10)

Endereçamento Lógico vs.

Endereçamento Físico

(11)

Por que um Endereçamento Lógico?

● Durante a construção de um executável, endereçamento de variáveis é um problema.

○ Compilador precisa determinar as posições.

○ SO pode carregar o processo em qualquer região de memória.

● Soluções:

○ Carregamento absoluto.

■ Compilador define uma posição fixa para carregamento.

○ Relocação dinâmica.

■ SO carrega processo em qualquer lugar.

■ Endereços do programa são "corrigidos".

● Ambas as soluções têm desvantagens.

○ Pouca flexibilidade ou grande overhead.

● Endereçamento lógico pode solucionar o problema.

(12)

Solução Baseada em Endereçamento Lógico

● Processos acessam memória como se localizados no endereço 0.

○ É possível usar carregamento absoluto.

○ Endereço base do espaço de endereçamento é 0.

● Na prática, SO pode alocar qualquer região da memória para o processo.

○ SO armazena endereço inicial do espaço de endereçamento no Registrador Base.

○ Registrador Limite guarda o tamanho do espaço de endereçamento.

● Todo acesso de memória do processo passa pela MMU.

○ Verifica-se se o endereço é menor que o Registrador Limite.

○ Soma-se o registrador base ao endereço.

(13)

Exemplo

● Espaço de endereçamento vai da posição 1200 à posição 1499.

● Endereço 102 é mapeado para o endereço físico 1302.

● Endereço 350 seria mapeado para o endereço físico 1550.

○ Fora do espaço de endereçamento.

(14)

Análise da Solução

● Provê segurança.

○ Impede acessos de processos fora de seu espaço de endereçamento.

● Soluciona problema de carregamento do programa.

○ Carregamento absoluto pode ser usado, sem os problemas geralmente associados a ele.

● Mas ainda não é ideal.

● Há questões em aberto.

○ Por exemplo, como dois ou mais processos podem compartilhar uma área de memória?

(15)

Compartilhamento de Memória

● Para dois processos, é

possível criar uma intersecção.

○ Início do espaço de

endereçamento de P2 é

colocado dentro do espaço de endereçamento de P1.

● Mas como fazer um terceiro processo compartilhar a

mesma área?

(16)

Métodos de Alocação

Primitivos

(17)

Problema

● Quando um novo processo é criado, SO precisa alocar um espaço de endereçamento.

● Há alguns requisitos.

○ Exemplo: espaço alocado não pode pertencer a outro processo.

● Como fazer esta alocação?

○ De maneira rápida.

○ Sem desperdiçar posições de memória.

(18)

Particionamento Fixo

● Primeiro método.

○ E o mais simples.

● Quando o SO é carregado, ele divide previamente as posições de memória em blocos.

○ Também chamados de partições.

● Durante o carregamento, as partições são determinadas.

○ Seus tamanhos e posições não são alteradas posteriormente.

● Quando um novo processo é criado, SO escolhe uma partição livre que consiga comportar o espaço de

endereçamento a ser criado.

(19)

Exemplo

● Início da memória é reservada para o SO.

● Outras 4 partições são criadas.

○ Duas de 100 Bytes

○ Duas de 60 Bytes.

● Critérios para divisão da memória variam.

○ Tem relação com os tamanhos esperados dos programas.

(20)

Particionamento Fixo: Como Escolher Partição a Ser Alocada?

● SO mantém uma tabela de partições.

○ Guarda o tamanho e a disponibilidade de cada partição.

● Quando novo processo deve ser criado, tabela é varrida.

○ SO identifica o tamanho do espaço de endereçamento.

○ Varredura busca menor partição disponível que seja maior ou igual ao novo espaço de endereçamento.

○ Eventualmente, mais de uma partição pode ser alocada.

■ Desde que sejam contíguas.

● Se não há partições disponíveis grandes o suficiente, criação do processo é postergada (ou rejeitada).

(21)

Fragmentação Interna

● Problema que pode ocorrer no

particionamento fixo.

● Tamanhos dos espaços de

endereçamento quase nunca casam

perfeitamente com as partições fixas.

○ Alguns bytes quase sempre sobram.

(22)

Fragmentação Externa

● Outro problema que pode ocorrer no

particionamento fixo.

○ Porém, mais raro.

● Memória é perdida entre partições, ao invés de dentro das partições.

● Exemplo: considere que todos os processos

precisam de 100 bytes.

○ Partições de 60 Bytes são "perdidas".

(23)

Fragmentação Externa (mais)

● Ambos os tipos podem ocorrer simultaneamente.

(24)

Fragmentação Externa (mais)

● Pode ser causada por uma política ruim de alocações.

○ Ou de escolha do tamanho e distribuição das partições.

● Mas é causada também pelo término de certos processos.

○ Processo pequeno termina.

○ SO libera sua partição.

○ Partição passa a não ser útil a outros processos pelo seu tamanho.

● Uma maneira de evitar fragmentação externa é criando partições grandes.

○ No entanto, isso aumenta a possibilidade da fragmentação interna.

○ Tendência é que mais bytes "sobrem" nas partições alocadas.

(25)

Desfragmentação

● Possível correção para o problema da fragmentação externa.

● Ideia é mover espaços de endereçamento já alocados para partições consecutivas.

● Resultado é que partições livres são aglomeradas.

○ Melhora a possibilidade de alocação de novas partições.

(26)

Desfragmentação (mais)

(27)

Desfragmentação (mais)

(28)

Desfragmentação (mais)

(29)

Desfragmentação (mais)

(30)

Desfragmentação (mais)

(31)

Desfragmentação (mais)

(32)

Desfragmentação (mais)

(33)

Desfragmentação (mais)

(34)

Particionamento Variável

● Segundo método de alocação.

● Partições são definidas dinamicamente.

○ De acordo com a necessidade de alocação.

● SO mantém uma lista encadeada de blocos de memória livres.

○ Inicialmente, há um único grande bloco.

● Quando um novo processo é criado, SO procura por um bloco de memória física livre grande o suficiente para acomodar o novo processo.

○ O início do bloco é alocado ao processo.

○ Espaço restante vira um novo bloco livre na lista encadeada.

(35)

Particionamento Variável (mais)

● Não há fragmentação interna.

○ Partições têm o exato tamanho necessário.

● Mas fragmentação externa é bem mais comum.

(36)

Particionamento Variável (mais)

(37)

Particionamento Variável (mais)

(38)

Particionamento Variável (mais)

(39)

Particionamento Variável (mais)

(40)

Particionamento Variável (mais)

(41)

Particionamento Variável (mais)

(42)

Particionamento Variável (mais)

(43)

Particionamento Variável (mais)

(44)

Particionamento Variável (mais)

(45)

Políticas de Escolha de Blocos

● Quatro políticas tradicionais.

○ First-fit: primeiro bloco livre grande o suficiente para armazenar o novo processo.

○ Best-fit: menor bloco que seja grande o suficiente para armazenar o novo processo.

○ Worst-fit: maior bloco da lista.

○ Circular-fit: como o first-fit, mas parte sempre do último bloco selecionado.

(46)

Políticas de Escolha de Blocos (mais)

● First-fit é bastante simples.

○ Circular-fit também, com a vantagem de espalhar mais as alocações.

● Best-fit é bem mais complexo.

○ Precisa de uma varredura completa da lista de blocos.

○ Escolhe blocos mais adequados aos processos.

■ Tenta minimizar fragmentação externa.

● Worst-fit também é complexo.

○ Bytes restantes nos blocos podem ser suficientes para alocar um novo espaço de endereçamento

posteriormente.

(47)

Alinhamento

● O Particionamento Variável pode utilizar o conceito de alinhamento.

● Partições alocadas precisam começar em posições que são múltiplas de um dado valor chamado parágrafo.

○ Exemplo: 4 bytes.

○ Partição pode começar nos endereços 0, 4, 8, ..., 1024, ...

○ Porém não nos endereços 1, 2, 3, 5, 6, 7, ...

● Implementado usando blocos do tamanho de um parágrafo.

○ Partições não são alocadas em bytes, mas em parágrafos.

(48)

Alinhamento (mais)

● Desvantagem:

○ Pode levar a fragmentação interna.

○ Exemplo:

■ Espaço de endereçamento de 98 bytes.

■ Parágrafo de 4 bytes.

■ Tamanho total da partição alocada: 100 bytes.

■ 2 bytes são perdidos.

○ Em geral, no entanto, fragmentação interna é pequena.

● Duas vantagens:

○ Alguns processadores só trabalham com dados alinhados.

○ Se o espaço de endereçamento está alinhado, basta ao programa alinhar o dado com o início do espaço de

endereçamento.

(49)

Alinhamento (mais)

(50)

Alinhamento (mais)

● Segunda vantagem: redução do número de bits para endereçamento.

● Endereço de início de uma partição ou bloco livre agora é dado em múltiplos do parágrafo.

● Número de posições possíveis diminui.

● Exemplo:

○ 1024 bytes de memória.

■ 10 bits para endereçamento.

○ Parágrafo de 4 bytes.

■ 256 posições.

■ 8 bits para endereçamento.

(51)

Revisão

(52)

Para Lembrar

● O que é gerenciamento de memória.

○ Funções básicas.

● O que é a MMU.

● Como funciona um esquema de endereçamento lógico.

○ Vantagens.

○ Método simples de implementação.

■ Registradores base e limite.

● Tipos de alocação.

○ Particionamento fixo.

○ Particionamento variável.

● Problemas decorrentes da alocação.

○ Fragmentação Interna.

○ Fragmentação Externa.

● Alinhamento.

Referências

Documentos relacionados

Em casos de antecedentes de hipersensibilidade ao álcool cetostearílico, é aconselhável a utilização, em vez do creme, de uma forma farmacêutica que não

Estaca de concreto moldada in loco, executada mediante a introdução no terreno, por rotação, de um trado helicoidal contínuo. A injeção de concreto é feita pela haste

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron & Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)

Com relação à germinação das sementes armazenadas em câmara fria, aos três meses de armazenamento (Tabela 10), observou-se em sementes tratadas ou não com fungicidas e

O emprego de um estimador robusto em variável que apresente valores discrepantes produz resultados adequados à avaliação e medição da variabilidade espacial de atributos de uma

Dando prosseguimento, o presidente em exercício, colocou em votação a proposta de menção de elogio para os membros da comissão eleitoral central e comissões

MANUAL DE INSTRUÇÕES MÁQUINAS DE LIMPEZA DE ALTA PRESSÃO J 6500 - J 6800 (BY PASS) J 6500 - J 6800 (STOP TOTAL) Exclusivo para uso doméstico.. Atenção: Não utilizar