[Música] Olá sejam bem-vindos à aula de número 19 onde a gente vai tratar do assunto de paginação bom eh a gente viu as técnicas de memória virtual a gente falou sobre segmentação as tabelas de páginas né ah como é que a a ocorre a conversão de um endereço virtual para endereço físico e hoje nessa aula a gente vai tratar especificamente tá do assunto aí de da técnica de paginação tá que é uma técnica largamente utilizado nos sistemas operacionais como Windows Linux né e e o sistema e o sistema Unix em geral Então a gente vai
falar sobre eh sobre o assunto aí de paginação nessa aula bom inicialmente né existe um problema crônico aqui que eu citei na aula passada o problema que existe na paginação seria o quê seria a tabela de páginas tabela de páginas é extenso é grande tabela de página corresponde para todos os processos e sendo assim portanto ela T de o quê Ela tem de crescer como ela cresce e essa essa tabela necessita em contraste da memória principal ela começa a ocupar uma área significativa da memória principal Então esse é um grande problema que existe em quê
existe na parte do gerenciamento de memória né E para contornar né para equacionar esse problema da tabela de páginas grandes que devem encontrar-se na memória O que que a gente faz a gente quebra ele em vários né e vários níveis né que é a primeira vamos dizer assim primeira estrutura da tabela de página que a gente vai ver aqui tá então que que a gente faz para resolver né esse problema aí da tabela de páginas grande né primeira coisa que a gente faz seria quebrar ele em vários pedaços diferentes de mod de modo que ele
mesmo vai ser o quê Ele mesmo vai ser paginado então o as tabelas de páginas de um determinado eh de um determinado processo ela é quebrada em duas partes em partes mais internas e na parte mais interna mais externa tá então tem a parte aqui mais interna e a parte mais externa que corresponde à mesma tabela de páginas Só que essa tabela de páginas ela é quebrada para que as partes essenciais Então as partes mais utilizadas elas venham o quê venham a a ser carregados na memória principal uma vez que toda ela a gente não
tem como carregar ela na memória eh principal né então a gente mantém o quê Quebra esse espaço de endereço lógico em múltiplas tabelas de páginas né uma técnica simples como eu falei para vocês é quebrar ela em dois níveis e manter apenas a parte que me interessa tá e ocupa menos espaço até pro próprio sistema operacional né próprio sistema operacional uma vez que a parte da da tabela de pinas ela diz respeito ao quê diz respeito ao próprio sistema operacional ela é um overhead do sistema operacional e não dos processos né então para que a
gente ocupe menos eh espaço né pro sistema operacional a ideia seria então quebrar essa tabela de páginas em eh tabelas multiníveis e vale a pena salientar que esse mecanismo é então utilizado pelo próprio eh sistema operacional Linux Windows Assim como ela é implementada né isso em hardware tá no mmu e de processadores aí X6 né que seriam os processadores aí da Intel tá bom além desse eh do que eu falei agora né Então vale a pena salientar que a gente tem o quê que a gente tem dois eh duas três partes agora né tem o
o pt1 que seria o apont 1 pt2 e o offset o offset seria o deslocamento como eu tinha citado aí para vocês né então esse a a primeira parte aqui é o número de de páginas pt1 de 10 10 bits que indica o quê que indica o índice da tabela mais o quê mais externa o número da página pt2 né seria o quê seria o deslocamento da do quê da tabela aí mais externa né então a gente pode eh e dividir né só para citar aqui a gente divide aí essa esse endereçamento né no eh
no número de páginas de 20 bits que seria a soma aqui mais 12 bits aí que seria o deslocamento que acredito que vocês já saiam né então como é que funciona mais ou menos isso aqui né a gente tem aqui o número de páginas pt1 que seria o quê que seria aí o índice tá da tabela aí mais externa tá esse P aqui né P1 aqui serviria o quê Ela vem daqui então ela serve como índice e acessa essa vamos dizer assim essa entrada aqui e a essa entrada aqui informa o início da tabela aqui
eh do segundo nível pega-se Então o quê o P2 para servir de quê De o índice aqui dessa segunda tabela e finalmente esse índice da tabela aqui ela vai prover o quê ela vai prover um segundo tá e último né e espaço de endereçamento aqui que seria da própria memória principal E aí ela vai fazer o quê Ela vai pegar o deslocamento proveniente aqui do offset e utilizar esse D aqui para e para pegar o endereço né esse terceiro aqui endereço né como a gente viu aí na aqui nesse slide né então o d seria
do segundo endereço aqui e o o p né seria esse pt1 seria do primeiro nível e pt2 aqui seria do segundo nível tá então dessa forma aqui Eu Tô organizando essa tabela de páginas de forma o quê de forma que essa tabela de páginas possa ser dividida e armazenar apenas a parte que é essencial né parte mais usada por exemplo tá na memória principal e assim economizo o o espaço alocado para essa tabela de páginas bom uma segunda forma de gerenciar essa tabela de página nota que a gente tá falando de três técnicas A primeira
é de multinível a segunda aqui seria da tabela de páginas em hash e a terceira da página invertida tá então a segunda forma eh utilizada na tabela de páginas para resolver o problema da tabela de página seria utilizar a função hash como é que funciona a função hash né a função hash dado um determinado número ela te retorna O quê Ela te retorna O outro número que não é uma o qu não é uma repetição né não há um Crash né com outra com outro valor proveniente de uma de um valor que foi dado pra
função hash tá então passo aqui um determinado P pra função hash e existe o quê existe uma saída aqui ela essa função hash vai me gerar um outro valor tá que seria o quê que seria esse endereço aqui tá esse índice aqui esse obviamente que a função rest normalmente né normalmente ela não vai me trazer vamos diz assim conflitos né com com valores mas se ocorrer conflitos o que que eu faço eu armazeno aqui o quê eu armazeno aqui um conjunto de páginas que ocasionou esse conflito e esse conjunto de páginas vai possuir o o
qu vai possuir esses três itens aqui né vai possuir o número da página virtual tá vai possuir o número da moldura do frame aqui né então o q e o s aqui tá E também vai possuir o quê um ponteiro Para quê Para um próximo item aqui tá então se tiver vai possuir pro próximo item senão ela vai me ocasionar o quê Ela vai armazenar aqui um New para indicar que não existe nenhum outro outra ocorrência eh nesse endereço aqui que foi gerado pela função hash tá então essa seria o quê essa seria a segunda
forma né da função hash a o segundo mecanismo para resolver o problema né da tabela de páginas extensa né então a gente tem essa tabela de página que se faz o mapeamento entre um endereço ou melhor dizendo uma página virtual para uma página real Então quem faz esse mapea seria o quê seria a tabela de páginas Só que essa tabela de págin ela tende o qu ela tende a crescer então a gente precisa eh resolver esse problema do espaço de várias maneiras uma seria através de eh páginas multinível e a outra seria utilizando a tabela
de páginas em em função hash bom assim como qualquer coisa ela tem o qu tem vantagem e desvantagem né então a desvantagem que ela eh que ela tem é que ela funciona uma vantagem né que ela funciona bem com 32 bits mas com 64 bits não funciona em virtude o quê em virtude do tamanho grande dessa tabela de página ela se torna bastante extensa tá chega a até a 30 PB né E então há necessidade do quê há necessidade de solucionar esse problema do própria da própria tabela de páginas que cresceu bastante então com isso
a gente tem um o qu tem uma solução aqui da tabela de página invertida que seria o assunto aí eh e o terceiro mecanismo que a gente vai ver para resolver essa questão da tabela de páginas né então como é que funciona essa eh essa tabela de página invertida Como o próprio nome tá dizendo a tabela de página invertida ela é invertida né Então em vez de mapar pela memória virtual o que que a gente faz ela é invertida então a gente mapeia ela a tabela de de páginas utilizando o quê utilizando a memória principal
por isso que o nome dela é invertido né então eh a tabela de páginas agora ela tá de acordo com o quê De acordo com a memória física apenas as páginas físicas são o quê são colocadas são informadas aqui né apenas a ocorrência né de páginas físicas encontra onde encontra na tabela de páginas bom além disso né além dessa inversão que eu citei agora para vocês essa tabela de páginas ela vai possuir além do número de páginas seu correspondente o que que ela vai possuir ela vai possuir também o número de processo Então tem um
tem um problema aqui ela tem que fazer o quê que tá escrito aqui um search né tem que fazer um search nessa tabela de páginas e assim que encontrar a ocorrência do processo tá a ocorrência do processo mais o p informado aqui né que que eu faço ela vai trazer esse índice aqui esse índice Então vai ser informado no endereço físico aí desse o quê eh desse o endereço físico que está sendo eh requisitado tá então repetindo aqui ela possui uma entrada por moldura na memória física né em vez de uma entrada por página no
espaço virtual com falei ela é invertida né a entrada inclui o processo ou seja para cada processo existe o quê existe as páginas processo um ou processo A então procuro todas as páginas do processo a que estão carregadas o que tiver carregada se tiver carregado se tiver um um rit list o que que eu faço eu pego esse índice aqui esse deslocamento e informa aqui no i do endereço físico o d é super simples né o d eu pego o offset aqui eu pego daqui da do endereço virtual e informo aqui no endereço físico e
a partir daí eu acesso o quê acesso a memória física então Primeiro ela é invertida segundo existe um processo aqui o terceiro que eu tenho que fazer o quê eu tenho que então fazer todo esse acesso né na tabela de páginas para eh procurar por essa ocorrência então poupa muito espaço obviamente quando a memória física tá é bem menor do que a memória virtual Ora se a física é bem menor ela vai ser o quê Ela vai poupar menos vai poupar mais espaço uma vez que esse tamanho uma vez que ela tá mapeada através da
memória física se ela é menor ess essa tabela aqui obviamente ela vai ser menor e com isso eu obtenho o quê obtenho o meu objetivo que é diminuir o tamanho dessa tabela de páginas mas existem problemas né fazer leitura de cada tabela cada acesso de memória aumenta o quê aumenta o tempo aí para fazer o quê para fazer a leitura assim como é escrita então o que que a gente pode fazer ora a gente pode usar a tlb que que é essa tlb a tlb seria o quê seria memória cach associada né à tabela de
página então a tlb memória cach possui as ocorrências das páginas mais utilizadas recentemente tá então a solução seria armazenar nessa tlb Então caso a página buscada não esteja na tlb então devemos procurar na na na tabela de página invertida tá bom existem vários eh mecanismos de alocação a o mecanismo de alocação aí fixa né nesse mecanismo de alocação fixa é assim como é que eu aloco as páginas eu aloco uma página de um número fixo para cada processo tá ou aloco a página eh em termos de de e em termos dinâmicos né ou seja cada
página ela vai possuir um número que vai ser alocado dinamicamente à medida que ela vai ser executada né então ela tem duas formas né A primeira seria fixa a fixa é simp a grande vantag seria o quê a simplicidade porém tem um problema né o número muito pequena de página pode causar muita paginação para alguns processos né uma vez que é fixa então fixo por um determinado valor pode servir para um mas pode não servir para outro ela também pode causar o qu grande eh grande desperdício né então grande grande número de páginas pode causar
desperdício de memória principal se um determinado processo não precise daquele número de páginas que foi alocado fixamente para esse eh pra sua execução tá o dinâmico né Número máximo de páginas alocados varia durante a sua execução então um processo com taxa de paginação alta tá podem ter o seu limite de e de páginas reais ampliado ou seja como ela é dinâmica ela se torna o quê tem uma abordagem aí flexível que pode beneficiar tanto os processos com alta paginação tanto os que possuem o quê baixa paginação tá E assim eu tenho o quê eu posso
posso agradar aí os de alta paginação né elevada paginação assim como de baixa paginação desvantagem eu preciso monitorar constantemente os processos tá para saber e a taxa de paginação que ele vai as páginas que eles vão ser necessárias né bom então existe a paginação fixa a paginação dinâmica existe a paginação simples ou seja todas as páginas são carregadas de uma vez só pro e na memória principal assim como por Demanda que seria o quê que seria eu carrego uma primeira página uma segunda se houver necessidade e assim por diante a medida que for sendo requisitada
eu vou carregando na memória principal tá enquanto que na simples eu carrego todo o qu Todo o espaço de endereçamento virtual para onde elas são carregadas PR memória principal pode haver desperdício na demanda pode não haver eh eh desperdício porém ocorre o quê dependendo de como for vai ocorrer muita falta de páginas e vai incomodar bastante aí o sistema operacional tá eh causando aí uma falta de páginas tá bom para política de substituição a política de substituição ela pode ser tanto local como Global como é que funciona isso na local nota o seguinte esse Eh
esses são os quê Esses são os os processos processo a aqui né Esses são as páginas do processo a essa aqui são as páginas do processo b e essa aqui são as páginas do processo C bom se você for ver eh a partir se for ver pela política local que considera apenas o processo corrente apenas o próprio processo essa página aqui tá vai ser a página o quê mais antiga Lembrando que quanto maior ela foi recentemente o quê recentemente eh inserida aí no no espaço de endereçamento Então se ocorrer uma uma falta de páginas pro
A6 ela vai substituir a página A5 tá essa seria a local e a Global a Global considera todos eles então se você for olhar essa dois aqui essa B3 né é a página mais antiga se considerar globalmente E aí coloca o quê coloco a página 6 no lugar da página B3 uma vez que ele é o quê que ele é o mais antigo de todos tá então Existem duas políticas de substituição aí e de páginas bom aí além dessas que eu falei para vocês né existem o quê existe uma infinidade aí de algoritmo de substituição
de página que seria o qu que seria uma política para saber qual a página eu devo tirar no momento o quê no momento em que eu a memória principal já tiver toda o quê toda cheia no momento que a memória principal tiver toda cheia qual é o a página que eu vou tirar da memória principal tá então essas políticas aqui são as políticas que eh a gente vai estudar para verificar quais são tá quais são a os mecanismos existentes para para selecionar uma página vítima uma página que vai ser retirada da memória principal assunto da
próxima aula tá não faltem bom então a gente abordou nessa aula a a paginação a gente aprofundou esse assunto da paginação e na próxima aula então a gente vai ver esses algoritmos aí de substituição de páginas tá a bibliografia continua sendo a mesma quarto capítulo pessoal desse livro um livro que foi editado no ano passado livro moderno tá E vocês vão aprender bastante aí com lendo o o material aqui didático e bibliografia básica que eu passei para vocês gente então queria agradecer a atenção de vocês e a gente fica aqui nessa aula de paginação [Música]
obrigado [Música] [Música] [Música] k [Música] e