Menores alterações são necessárias em alguns lugares ( testes para limites de memória vem para a mente) para prover suporte para definidos segmentos programados. [ Há agora uma modificação – |c| + O sistema de ligação usado por dosane, Wine, Twin, and Wabi para criar segmentos arbitrários.

 

4.2 – Memória Física

 

Aqui está um mapa de memória física antes que qualquer processo de usuário for executado. A coluna da esquerda mostra o endereço de partida do item e os números em negrito são aproximados.

A coluna do meio mostra os nomes dos itens. A grande coluna da direita mostra a rotina relevante ou o nome variável ou explicações para ingresso.

* Projeto – Inits que adquirem memória são (principais.c) profil – buffer, com, init, psaux, init, rd, , init, scsi.dev – init.
Note que toda memória não marcada como livre é reservada (mem-init). Páginas reservadas pertencem ao Kernel e nunca estão livres ou trocadas.

Uma visão de memória do user process. O código de segmento e dados do segmento extendem todo o caminho de 0 X 00 para 3 Gb.

Correntemente o page fault handler do wp_page confere para assegurar que um processo não escreve para seu código de espaço. De qualquer modo, pegando o sinal segu, é possível escrever para o code space, causando ocorrência de um copy – on – write.

O Handler do_no_page assegura que qualquer página nova que o processo adquira pertença ao executável, uma biblioteca dividida, ao stack, ou dentro do valor do brK.

Um usuário de processo pode reordenar seu valor brK chamando sbrK ( ). Isto é o que malloc ( ) faz quando precisa. O texto e a porção de dados são distribuídos em páginas separadas ao menos que alguém escolha o N opção composta.

A biblioteca dividida carrega endereços são correntemente tornadas da imagem dividida por ele mesmo. O endereço é entre 1.5 Gb e 3 Gb, exceto em casos especiais.

 

4.3 – Distribuição da memória do processo usuário

 

O Stack, shlibs e os dados são muito afastados um do outro para serem spanned por uma tabela de página. Todas KPT são divididas por todos processo e deste modo eles não estão na lista.

Apenas páginas sujas são trocadas páginas limpas são roubadas e deste modo o processo pode tê-los de volta para o executável se for desejado. A maioria das vezes apenas as páginas limpas são divididas.

Uma página suja termina dividida sobre um fork até que parent ou child escolham para escrever isto de novo.

Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Páginas ( 3 de 14 ): « Previous12 3 4567891011121314Next »