Quanto de memória lógica é alocada para cada processo no disco?

0

Suponha que o processador seja de 32 bits. Assim, cada processo em execução nesse processador obtém 2 ^ 32 bits de memória lógica.

  1. Se o sistema está tendo n processos, é n * 2 ^ 32 bits alocados no disco? onde é alocado? está no espaço de troca?
  2. Se o tamanho da página for 4KB, o número total de páginas será 2 ^ 32/2 ^ 12 = 2 ^ 20. a soma das páginas reside no disco e a RAM para este processo é 2 ^ 20? se não, quantos desses 2 ^ 20 são alocados? 3. #include <stdio.h> int main(){ printf("Hello World"); }

    este processo simples também ocupa 2 ^ 20 páginas em RAM + Disco?

  3. #include <stdio.h> int main(){ int x; scanf("%d",&x); while(x!=0){ malloc(sizeof(int)); x--; } }

    Quantas páginas são alocadas no disco + RAM inicialmente no momento do carregamento? é também 2 ^ 20? se não como cresce a chamada de cada malloc?

por veerendra 04.06.2016 / 04:38

1 resposta

1

O OS aloca quantas páginas virtuais forem necessárias para mapear as seções definidas nos arquivos executáveis.

Se outro processo já estiver executando os mesmos executáveis, o SO reutilizará pelo menos as páginas somente leitura e, se o sistema operacional oferecer suporte a "copy-on-write", ele reutilizará as páginas de leitura / gravação inalteradas para um novo processo. Para pilhas, pilhas, etc., ele reserva o espaço de endereço virtual, mas as páginas seriam alocadas sob demanda, ou seja, quando a pilha cresce além do espaço já mapeado, o sistema operacional aloca mais páginas (s)

O espaço em um arquivo de troca é alocado quando o sistema decide trocar algumas páginas alteradas de um processo da RAM. Esta é a estratégia ideal, porém, o comportamento real pode variar de sistema operacional para sistema operacional.

    
por 04.06.2016 / 04:53