SóProvas


ID
5530
Banca
CESGRANRIO
Órgão
Transpetro
Ano
2006
Provas
Disciplina
Sistemas Operacionais
Assuntos

O sistema operacional, através do gerenciador de memória, deve tentar manter na memória principal o maior número de processos residentes, permitindo maximizar o compartilhamento do processador e demais recursos computacionais. Mesmo na ausência de espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados. A técnica de swapping foi introduzida para contornar o problema de insuficiência de memória principal e consiste em:

Alternativas
Comentários
  • Swapping é o movimento de processos entre a memória e o disco rígido do computador:? Um processo bloqueado é transferido para o disco? O espaço de memória é liberado? Outro processo é carregado no local
  • a) escolher um processo residente, a ser transferido da memória principal para a memória secundária (swap out), sendo que, posteriormente, o processo é carregado de volta da memória secundária para a memória principal (swap in).

    CORRETO. Swap é uma área de troca do sistema operacional onde os processos que não estão em execução e não cabem na memória principal são guardados. Cada processo pode ter sua pilha (Stack), sua área de dados ( Heap ) e o programa em si, as instruções.

    Outra alternativa ao swap é a memória virtual, nesse caso o processo pode ser executado mesmo que não esteja totalmente carregado na memória principal. 
    Digamos que a memória física disponível esteja no espaço de endereçamento de  0x00 até  0xF0 . Com a memória virtual podemos fornecer ao processo um endereçamento maior que esse, de 0x00 até 0xFF por exemplo, sendo que acima de 0xF0 os dados estão no disco virtual, mas isso torna-se transparente ao processo.

    É a MMU ( Memory Management Unit) quem vai mapear endereços de memória virtuais em endereços de memória físicos.



    b) dividir a memória principal em pedaços de tamanho fixo, chamados partições, onde o tamanho das partições é estabelecido na fase de inicialização do sistema.

    Isso aí era nos tempos que os dinossauros ainda andavam sobre a terra. Nos computadores IBM OS 360. O operador definia manualmente o tamanho das partições e os JOBs iam chegando e uma partição era alocada para o JOB.

    Isso é usado muito raramente hoje.

    c)  dividir o programa em módulos, de forma que seja possível a execução independente de cada módulo, utilizando uma mesma área de memória.

    ISSO aí era uma técnica conhecida como OVERLAY. O programa era subdividido em módulos de forma que coubesse na memória. Quando um módulo terminava sua execução chamava outro módulo que ocupava a memória. Era o programador quem tinha que dividir os módulos. Isso acabou evoluindo para memoria virtual, onde o que está na Memória Principal e o que está no disco é completamente transpartente para o programador.


     
  • d) dividir a memória em pedaços de tamanho variável, de modo que cada programa utilize apenas o espaço necessário para sua execução.
     
    Isso aí refere-se a gerência de memória. Nesse caso é utilizado algum algoritmo para alocar dinamicamente memoria para algum processo. Esse algoritmo pode ser (não-exaustivamente) First-Fit - Que vai alocar a memória para o processo no primeiro espaço que couber essa quantidade de memória necessária, nesse caso, a memória restante pode ser utilizada por outro processo. Outro algoritmo é o Best-Fit, que vai alocar a memória necessária no menor espaço suficientemente grande, com o objetivo de deixar a menor fragmentação possível ( espaço restante) - essa é uma estratégia gulosa que não dá muito certo porque com o passar do tempo a memória fica com , fragmentos que não podem ser utilizados por outros processos porque são muito pequenos. Outro algoritmo é o Worst-Fit, que tenta fazer ao contrário do Best-Fit, deixar o maior fragmento livre possível.
     
    e) desenvolver as aplicações de modo a não ultrapassar o espaço de endereçamento de memória disponível.
    A memória utilizada pelos processos tende a crescer indefinidamente. Mesmo processos que aparentemente podem usar pouca memória, como por exemplo operações matemáticas, que utilizem, por exemplo, recursão, podem acabar sempre precisando de mais memória (algoritmos recursivos precisam crescer a stack - pilha - a cada recursão), ou quem nunca tomou um stack overflow...
  • Swapping - transfere temporariamente um processo da memória para o disco e depois do disco para a memória, tipo pin pong.