SóProvas


ID
320785
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2010
Provas
Disciplina
Sistemas Operacionais
Assuntos

Considere um sistema com swapping, no qual as seguintes partições vazias de tamanho fixo estão na memória, na ordem apresentada: 20K, 14K, 35K, 8K, 17K, 39K, 22K e 27K. Se um processo solicitar a alocação de uma área de memória de 21K, o algoritmo de alocação de memória que faz a alocação minimizando a fragmentação interna é

Alternativas
Comentários
  • Vários algoritmos podem ser utilizados para encontrar uma lacuna de memória para alocação de um processo:


    1 - Primeiro ajuste (first fit): varre a lista desde o início e aloca no primeiro espaço (lacuna) suficientemente grande;

    2 - Próximo ajuste (next fit): varre a lista da posição atual e aloca no primeiro espaço suficientemente grande;

    3 - Melhor ajuste (best fit): varre a lista completamente e aloca no espaço que gerar a menor lacuna de memória;

    4 - Pior ajuste (worst fit): varre a lista completamente e aloca no espaço que gerar a maior lacuna de memória disponível, de modo que a lacuna resultante possa ser suficientemente grande para ser útil;

    5 - Ajuste rápido (quick fit): mantém diversas listas separadas para os tamanhos de processos mais comuns.

  • De acordo com o próprio livro de SO do Tanenbaum, o algorítmo best fit é um dos que apresenta pior fragmentação, por deixar pequenos fragmentos de memória inúteis (quando não encontra a alocação perfeita, ele aloca em um espaço com uma pequena sobra que acaba não sendo usada com facilidade). Tanto que o worst fit foi criado com a intenção de reduzir a fragmentação deixando espaços maiores que podem ser úteis. Acredito que a alternativas B e C seriam melhores opções que a considerada pelo gabarito.
  • Achei a redação da questão bem confusa!

    Fragmentação interna ocorre com paginação, quando sobra espaço dentro da página ocupada pelo processo.
    Fragmentação externa ocorre com segmentação, quando vão aparecendo sobras/buracos na memória principal.

    Entendo que usando worst-fit ou best-fit ocorrerá fragmentação interna nas partições de tamanho fixa.

    As partições disponíveis para alocar 21k são:
    39k / 35k / 27k / 22k

    (I) Se usarmos worst-fit, colocaremos na 39k. O tamanho do maior processo que poderemos alocar seria 22k.
    (II) Se usarmos best-fit, colocaremos na 22k. O tamanho do maior processo que poderemos alocar seria 27k.

    Se tivéssemos processos de 23k, 24k, 25k, 26k não conseguiríamos alocar usando (I). Então parece que (II) minimizaria o problema da fragmentação.
  • Questão casca de banana, a perceber pelos comentários.
    A questão apresenta um cenário de páginas com várias possibilidades de tamanho fixo a aderir.
    Naturalmente, o algortimo que minimiza o espaço livre dentro da página é o best-fit.
  • sss

  • Absurdo, Tanenbaum diz exatamente o oposto, a best-fit vai gerar um monte de fragmentos pequenos inúteis.

  • Best fit usa o menor bloco possivel. Porque esse algoritmo deixa a menor area livre, com o tempo a memoria vai ter mais areas nao contiguas, aumentando fragmentacao

  • Questão bem malandra...

    Como mencionado pelos colegas, best fit aumenta a fragmentação. Segue uma definição:

     

    Best-fit
    Escolhe a melhor partição, ou seja, aquela que o programa deixa o menor espaço sem utilização.
    Desvantagem de deixar pequenas áreas não contíguas, aumentando o problema da fragmentação.

     

    O enunciado fala que best-fit "faz a alocação minimizando a fragmentação interna".

     

    Forçando muito a barra, a única coisa que consigo imaginar para validar essa questão é que esse "minimizar" não se refere à redução da quantidade de fragmentações existentes, mas sim ao tamanho dos fragmentos, gerando desperdício ao deixa pequenas áreas não contíguas tão minúsculas que dificilmente serão utilizadas por outro processo.