o Olá no vídeo de hoje daremos continuidade ao assunto Abstrações de memória vamos falar sobre memória virtual e a técnica de paginação é uma técnica muito utilizada para se implementar um sistema de memória virtual e a memória virtual trabalhamos com o conceito de virtualização de endereços físicos basicamente endereço gerados pelos processos são endereços virtuais e constituir um espaço de endereçamento virtual dos processos nesse espaço de endereçamento virtual temos um espaço que a contigo começando sempre pelo endereço 10 e esses endereços são mapeados de alguma forma para endereços físicos na memória RAM em novembro espaço para armazenar dados na memória RAM o sistema de memória virtual permite que dados sejam mapeadas também no disco utilizando-se a técnica disso é bem que já tratamos anteriormente e essa figura temos uma visão Geral de um cenário onde temos dois processos A e B em um sistema de memória virtual no centro temos a memória física do computador com seus endereços físicos de 0 a ter nós esquerdo temos o processo a com o seu espaço de endereçamento virtual indo do endereço virtual 0 até o endereço virtual M na mesma forma temos o espaço de endereçamento virtual do processo B que também vai do endereço virtual 0 até o endereço virtual m e no processo a alguns dos seus endereços virtuais estão mapeados e endereços físicos na memória RAM por exemplo o endereço virtual zero do processo a está mapeado no endereço físico 2 e já o endereço virtual um do processo a está mapeado no endereço físico zero na memória RAM e ainda temos que alguns desses endereços virtuais os processos A e B estão mapeados em dados que estão armazenados no disco como é o caso do endereço virtual dois do processo ar e os endereços virtuais dois e três do processo B e aqui embaixo temos então um disco que será utilizado parte dele como suep Ou seja quando não temos espaço para armazenar todos os dados na memória RAM parte desse mapeamento será feito diretamente no disco a ideia de um sistema de memória virtual é permitir que o espaço de endereçamento do processo possa ser efetivamente maior do que o espaço de endereçamento físico Portanto o número de endereços virtuais e me nesse nosso exemplo será sempre maior do que o número de endereços físicos n na memória RAM e aqui temos um exemplo do espaço de endereçamento virtual de processos em um sistema Linux com 32 bits a cada processo no Linux é descrito pelo descritor de processos O que é definido pela estrutura Task underline Street dentro desse de escritório de processos temos inúmeros informações sobre cada um dos processos do sistema uma dessas informações é o descritor de memória definido pela estrutura MM underline Street e por escrito de memória temos dentre outras informações os endereços virtuais em que começam e terminam cada um dos elementos que compõem um processo e como estamos trabalhando aqui nesse exemplo com sistemas de 32 bits o espaço de endereçamento virtual de um processo é de no máximo 4 GB no Linux 1 Gigabyte é reservado para o cargo que ocupa a porção superior do espaço de endereçamento esse 1gb na parte aqui do topo de dentro do espaço de Kernel temos basicamente instruções e dados do Caru Olá abaixo do que no temos 3gb que compõe o espaço de endereçamento das aplicações na parte inferior temos o segmento de texto que segue um padrão no caso aqui o padrão elf que contém as instruções do programa e acima dele temos o segmento de dados e segmento de dados contém dados que foram inicializados e acima do segmento de dados temos o segmento bss que também é um segmento de dados estáticos porém contém variáveis que não foram inicializados e acima do bss temos um hip o que vai servir para armazenar dados que são alocados dinamicamente pelos processos com por exemplo através da utilização do malloc no caso dos e o do operador mil no caso você mais note aqui inicialmente o tamanho do hip ela é pequeno e a medida em que os processos alocam dinamicamente mais dados esse tamanho do hip cresce nessa direção de baixo para cima e na outra ponta temos a i-tec ou pilha que armazena informações sobre dados locais dentro de funções endereços de retorno de função entre outras informações a i-tec cresce no sentido oposto ao hip portanto de cima para baixo se entristece e o hip Essa parte é utilizada para mapear arquivos por exemplo com incluímos alguma biblioteca dinâmica ao compilar junto com nosso programa ou fazer mapeamentos Anônimos e vamos falar agora sobre a técnica de paginação e a maioria dos sistemas de memória virtual usa técnica de paginação da paginação o espaço de endereçamento virtual do processo é dividido em unidade de armazenamento de tamanho fixo denominado as páginas ou páginas virtuais em inglês usa-se comumente peixes ou virtual peixes e as unidades correspondentes no espaço de endereçamento físico ou seja na hum são denominadas molduras de páginas ou páginas físicas em inglês comumente chamadas de peixe Friends How Physical peixes em ambas as páginas e molduras de página possui o mesmo tamanho que é definido pelo sistema operacional e são operacional mantém memória uma tabela de páginas para cada um dos processos ativos no sistema essa tabela vai relacionar as páginas do espaço de endereçamento virtual com as molduras de página no espaço de endereçamento físico e vamos entender um pouco melhor o funcionamento da técnica de paginação através de um exemplo É nesse exemplo Vamos considerar um sistema que possui endereços virtuais de 15 Beats portanto endereço os que variam entre 0 e 32k e Vamos considerar também que temos uma memória física bastante limitada de 16 canais e páginas de tamanho 4K e aqui vamos representar os dois espaços de endereçamento do lado esquerdo temos espaço de endereçamento virtual e no lado direito temos espaço de endereçamento físico e como Nossa memória física nesse exemplo tem apenas 16 cabines e o tamanho de página é de quatro cabais dividindo-se 16k por 4 canais temos então que o nosso espaço de endereçamento físico ter apenas 4 molduras de página que são numeradas aqui nesse exemplo de 0 até 3 e já no lado do espaço de endereçamento virtual como temos 15bimtz poderemos ter 32k endereços e como tamanho de página é de 4K vamos ter no total oito páginas virtuais representadas aqui de 0 até 7 é uma coisa importante você saber em Sistemas de memória virtual com paginação é que cada página Pode armazenar diversos dados a cada dado vai ser colocado em um endereço como as nossas páginas aqui nesse exemplo tem 4K fizemos que existem 4K endereços possíveis em cada uma dessas páginas tô pensando do lado do espaço de endereçamento virtual a página zero possui endereços que vão de 0 cá até 4K e já página do estou a um posso endereços que vão de 4K até 8k essa mesma lógica prossegue até que na última página virtual temos os últimos 4K endereços que vão de 28k até 32k e como tamanho de páginas e moldura de páginas é o mesmo a mesma lógica se aplica do lado do espaço de endereçamento físico Ou seja a moldura de página zero vai contém endereços físicos que vão de 0 a 4K a moldura de página um vai contém endereços físicos que vão de 4K ou 8k até aqui a última moldura de página identificado aqui pelo número três vai contém endereços que vão de 12k a 16k e com apenas 4 molduras de página temos que somente Quatro páginas podem estar uma piadas para memória física em um dado instante de tempo por isso na tabela de páginas é mantido um bit que indica se aquela página está presente ou ausente na memória física do computador e esse nosso exemplo estamos representando esse vídeo pela cor cinza portanto temos que apenas quatro páginas aqui marcadas em cinza estão uma piadas para molduras de página na memória física e as páginas aqui em branco não estão sendo utilizados no momento e não tem mapeamento para memória física e esse nosso exemplo a página virtual zero desse processo está uma piada na moldura de página um na memória física já a página virtual um está uma piada na moldura de página zero na memória física e a página virtual 4 está uma piada na moldura de página 2 e a página virtual 6 está uma piada na moldura de página 3 e quando então o programa gera um endereço virtual esse endereço vai ter que ser traduzido de alguma forma e o endereço físico para se acessar a memória física do computador portanto vai acontecer aqui uma tradução entre página e moldura de pasto se o nosso programa tentar acessar os endereços virtuais aqui mostrados zero e 4. 098 quais endereços físicos seriam correspondentes a esses vamos começar primeiro caso E se o nosso programa geral endereço virtual 0 e esse endereço virtual vai cair nessa primeira faixa aqui de 0 a 4K ou seja vai cair dentro da página virtual 0 nós sabemos aqui por esse desenho que a página virtual zero está uma piada na moldura de página 1 e portanto se quiséssemos acessar o endereço virtual zero seria o primeiro endereço possível dentro da página zero na prática esse endereço vai ser traduzido para o primeiro endereço válido da moldura de página 1 e logo e será 4. 096 e isso é obtido Por que o deslocamento que foi feito aqui a partir da página zero ou seja zero vai ser aplicado aqui na moldura de página um como moldura de página um começa no endereço 4K ou seja 4.
096 e não houve deslocamento portanto tomamos aqui com 10 o próprio endereço 4. 096 é o endereço correspondente da memória física há como considerar agora o segundo exemplo O que aconteceria se o processador gerasse o endereço virtual 4. 098 esse endereço virtual teria que ser traduzido para o endereço físico dentro do espaço de endereçamento físico novamente o primeiro vamos determinar Onde está o endereço virtual 4.
098 hora o endereço virtual 4. 098 está nessa faixa entre 4. 096 e 8k o 8191 e agora o endereço 4.
098 está nessa faixa de 4. 096 a 8191 ou seja 4K 8k e portanto ele cai na página virtual um como sabemos que a página gritou um está mapeada na moldura de página zero sabemos que o endereço físico vai estar dentro dessa moldura de Páscoa nós vamos aplicar a mesma regra do deslocamento e a página virtual um começa no endereço 4. 096 e como o endereço que estamos querendo acessar 4.
098 Estamos fazendo aqui um deslocamento de dois 4.