Please enable JavaScript.
Coggle requires JavaScript to display documents.
Cap 18 : Tópicos em gestão de memória - Coggle Diagram
Cap 18 : Tópicos em gestão de memória
Compartilhamento de memória
É comum ter várias instâncias de um mesmo programa em execução
Essa situação é ainda mais comum em servidores
Esses processos operam com dados distintos, mas possuem o mesmo código executável
Seria possível compartilhar a seção de código na memória do processo já que ela é read-only
Basta fazer com que os segmentos de código apontem para a mesma área de memória física
O compartilhamento é transparente para os processos
No caso da paginação a tabela de páginas é ajustada
O compartilhamento das seções de código permite economizar muita memória física
Áreas de memória compartilhadas também podem servir para fazer comunicação entre os processos
Copy-on-Write (COW)
Qualquer área de memória protegida contra escrita pode ser compartilhada
A técnica COW é usada quando o sistema precisa copiar páginas de um espaço de memória para outro
Nessa técnica ao invés de efetivamente copiar as páginas o núcleo compartilha elas e as marca como read-only e copy-on-write
Quando um processo tentar escrever em uma dessas páginas, a proteção irá gerar um page fault
Então, o núcleo irá verificar que se trata de uma página COW e criará uma cópia separada daquela página removendo o read-only para que o processo que deseja fazer a escrita possa escrever
Todo esse procedimento é feito de forma transparente para os processos envolvidos
É mais eficiente em sistemas baseados em páginas pois elas são menores que os segmentos
Mapeamento de arquivo em memória
Associar uma área específica da memória do processo com um arquivo em disco; cada byte do arquivo corresponderá a um byte naquela área
O conteúdo do arquivo mapeado pode ser acessado pelo processo através dessa área
O mapeamento não implica em carregar o arquivo inteiro na memória
Ao invés disso é criada uma área de memória com o mesmo tamanho do arquivo e páginas ajutadas para acesso proibido
Quando um processo tentar acessar essa área irá gerar page fault
O núcleo então busca e carrega naquela paǵina o conteúdo do arquivo ; Paginação sob demanda
Os mapeamentos podem ser compatilhados ou privados ; Se for compartilhado as escritas feitas pelo processo são copiadas no arquivo. Se for privado é usado COW para não propagar as mudanças
Paginação sob demanda é interessante para o lançamento de processos ; A carga de código do processo pode ser feita mapeando as seções correspondentes na memória do processo
Somente os trechos efetivamente executados serão serão carregados na memória
Caso mais processos que executem o mesmo programa sejam lançados, estes poderão usar as páginas já carregadas pelo primeiro processo