Gerência de Memória e Concorrência em Sistemas Operacionais

Classificado em Computação

Escrito em em português com um tamanho de 5,37 KB

Gerência de Memória

A gerência de memória é um dos fatores mais importantes no projeto de um Sistema Operacional (SO). Como o processador executa somente instruções localizadas na Memória Principal (MP), o SO deve transferir as instruções da Memória Secundária (MS) para a MP antes da execução. O objetivo é reduzir o número de operações de E/S na MS para evitar problemas de desempenho.

A função principal é otimizar a MP para comportar o maior número de processos. Mesmo na ausência de espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados, utilizando técnicas como overlay e memória virtual para rodar programas maiores que a memória física. Em multiprogramação, o SO deve proteger as áreas de memória ocupadas por cada processo.

Alocação Contígua Simples

Em sistemas monoprogramáveis, a MP é dividida em duas áreas: SO e programas de usuário. O usuário tem controle total da MP, podendo acessar qualquer posição. Alguns sistemas restringem esse acesso, enviando uma mensagem de erro caso o usuário tente acessar áreas proibidas. Apenas um usuário pode utilizar o recurso, e caso o programa não preencha toda a MP, ocorre desperdício de espaço.

Overlay

Quando o programa é maior que a memória disponível, utiliza-se a técnica de overlay, dividindo o programa em módulos executados independentemente na mesma área de memória. Vantagem: permite expandir a capacidade da MP. Desvantagem: implicações na manutenção e no desempenho devido à transferência excessiva de módulos.

Memória Virtual

Ocorre quando o tamanho combinado do programa, dados e pilha excede a memória física disponível, tornando a simples troca (swapping) insuficiente.

Alocação Particionada

Estática: O tamanho da partição é definido na inicialização. A memória é dividida entre SO e programas de usuário, sendo a parte do usuário subdividida em partições fixas. Se não houver partição livre de tamanho suficiente, o programa não é executado.

Com a evolução, o código passou a ser realocável, onde referências a endereços são relativas ao início do código, permitindo execução em qualquer partição. Esse modelo pode gerar fragmentação interna.

Alocação Particionada Dinâmica

Cada programa utiliza apenas o espaço necessário, eliminando a fragmentação interna. Contudo, ao finalizar programas, podem surgir espaços pequenos insuficientes para novos processos, gerando fragmentação externa. Problemas de fragmentação externa podem ser resolvidos reunindo espaços livres adjacentes ou realocando partições.

  • Best-Fit: Deixa o menor espaço possível sem utilização.
  • Worst-Fit: Deixa o maior espaço sem utilização, permitindo que espaços livres maiores acomodem mais programas.
  • First-Fit: Escolhe a primeira partição livre de tamanho suficiente (mais rápida).

Paginação e Swapping

Paginação: O espaço virtual é dividido em unidades chamadas páginas. Swapping: Quando não é possível manter todos os processos na memória, o SO reserva uma área no disco. O processo é movido para o disco (swap-out) e posteriormente trazido de volta (swap-in), permitindo executar mais processos do que a capacidade física da memória.

Concorrência

Conjunto de rotinas que executam de forma ordenada. O processador executa instruções em paralelo com operações de E/S, permitindo que diversas tarefas ocorram simultaneamente.

  • Sistemas Monoprogramáveis: Apenas um programa por vez.
  • Sistemas Multiprogramáveis: Vários programas residentes em memória. Vantagens: Menor tempo total de execução, uso racional de recursos e melhor aproveitamento do processador durante E/S.

Troca de Contexto e Interrupções

Troca de Contexto: Mudança de um processo para outro, exigindo a troca de todo o estado dos registradores. Interrupção e Exceção: Eventos que desviam o fluxo de execução. A UCP verifica a ocorrência ao final de cada instrução.

  • Interrupção: Evento externo (Hardware). O programa é interrompido e o controle desviado para uma rotina de tratamento. Métodos: Vetor de interrupção ou registrador de status.
  • Exceção: Evento síncrono (Software), como divisão por zero ou overflow. São previsíveis.

Operações de E/S e Buffering

O surgimento de controladores de dispositivos desonerou o processador, permitindo instruções de E/S simplificadas. O Buffering utiliza uma área de memória ultra-rápida para melhorar a velocidade de acesso, permitindo que o sistema leia setores antecipadamente.

Reentrância e Proteção do Sistema

Reentrância: Capacidade de um código ser compartilhado por diversos usuários, exigindo apenas uma cópia na memória. Proteção: O SO deve garantir a integridade dos dados. Caso um programa tente acessar uma posição de memória fora de sua área, ocorre uma violação de acesso.

Entradas relacionadas: