Sistemas Operacionais - AULA 8
 

Paginação - Questões de Projeto e Implementação

Questões de Projeto

Vimos como funciona um sistema de paginação, agora veremos alguns dos aspectos que devem ser observados na hora de projetar um sistemas destes:

  • Politica de Alocação: Na hora da substituição da página, o escopo para escolha da página abrange todas as páginas de todos os processos ou somente páginas do processo que sofreu o page fault?
  • Controle de Carga: Mesmo com o algoritmo de substituição de páginas ótimo, pode ocorrer eventos de paginação excessiva (thrashing). Isso deve ocorrer sempre que o conjunto de páginas necessárias for maior do que a RAM. Ou seja algum processo precisa de mais páginas e nenhum outro processo pode trabalhar com menos páginas, assim pode ser interessante colocar um processo todo em disco.
  • Tamanho da página: Em geral o tamanho da página é definido pelo hardware porém é possível implementar em nível de SO, paginas que tenha tamanhos que seja multiplos do tamanho de página fornecido pelo hardware.
  • Espaços separados para instruções e Dados: Algumas poucas arquiteturas apresentam 2 memórias (Dados e programa). Neste casos a paginação deve ser feita para as duas memórias independentemente.
  • Paginas compartilhadas: Em geral qualquer processo pode ser divido em dados e instruções. Diferentes instâncias de um programa podem ser carregadas na memória. Um sistema de gerencia de memória que permita que cada processo tenha sua própria área de dados mas possa compartilhar as instruções pode trazer uma grande economia de memória.
  • Politica de Limpeza: O sistema de paginação funciona melhor se existir molduras livres. Sendo assim, ter um serviço responsável por inspencionar a memória em busca de possíveis páginas candidatas para ir a disco pode ser uma boa idéia. O serviço usará o algoritmo de substituição de páginas para achar essas páginas.
  • Interface de Memória Virtual: Prover ou não prover uma forma do programador decidir como o sistema de paginação vai tratar as páginas do seu programa? Um exemplo disto é dar o poder ao programador de dizer quais paginas devem ser compartilhadas.

Questões de Implementação

Envolvimento do SO com paginação, Recuperação da Instrução, Fixação de Páginas na memória, Memória Secundária, Politica X Mecanismo - A fazer

Tratamento de Falta de Página

Quando um processo faz referencia a um endereço que não está em uma moldura, o processo não pode seguir até que o endereço referenciado esteja em alguma modura. Aqui vamos descrever a sequencia de acontecimentos e ações que o SO precisa tomar para garantir que o processo em questão possa continuar.

  1. Interrupção de HW (Page Falt): Uma interrupção é gerada e o controle volta para o sistema operacional.
  2. Salvamento do Contexto: É a primeira coisa que o tratador da interrupção precisa fazer. Os dados do contexto do processo atual precisam ser salvos para que o processo possa continuar quando a página estiver disponível.
  3. Tratamento da Interrupção: descobrir qual página precisa ser recuperada. Como fazer isso? a) Através de algum registrador no hardware específico para este fim. b) Ou através do PC (do contexto) recuperar a instrução para descobrir o endereço que causou a falta.
  4. Verificação do endereço: O endereço é válido? o tipo de acesso que está sendo feito é valido? Existe moldura disponível? Chamar o algoritmo de substituição?
  5. Se a moldura precisar ser salva (foi modificada), vai ser necessário acionar o substema de E/S, assim o processo é marcado como bloqueado e outro processo deve ser escalonado, entratanto a moldura deve ser marcada como indisponível para que outro processo não tente acessá-lo.
  6. A página faltante deve ser carregada em uma moldura, até esse momento o processo continua bloqueado.
  7. Quando o disco informar o termino da operação a tabela de páginas deve ser atualizada para refletir essa nova situação (a pagina agora está em uma moldura).
  8. É importante lembrar que a instrução que causou a falta deve ser re-executada, pois do ponto de vista do contexto a mesma foi executada, o sistema operacional deve garantir que essa instrução será re-executada quando o seu contexto for restaurado.
  9. A página está disponível, o processo já pode ser executado, então deve-se marcá-lo como pronto.
  10. O processo ao ser escalonado tem o seu contexto restaurado.