Buscar

SOII_Aula005_11122012

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 1 
 
RESUMO AULA PASSADA 
 
1) Segmentação 
 
 Tipicamente 1 área de processo = 1 segmento 
 Linguagem de máquina utiliza endereços bidimensionais 
 Numero do segmento, deslocamento 
 Tabela de segmentos por processo: inicio do segmento, tamanho, executável, alterável, proteção 
de memória. 
 
2) Paginação 
 
 Memória ilusória lógica 
 Memória verdade física 
 Ambas compostas por páginas de tamanho igual 
 Diferenças : 
 Páginas estão em outra ordem 
 Páginas lógicas sem conteúdo não existem na memória física 
 Problema de fragmentação interna. 
 
AULA DE HOJE 
 
O processo vai usar o endereço da memória lógica, pois ele acha que a memória lógica é a memória 
verdadeira. Conforme mostra a Figura 1. Por exemplo, alterar o conteúdo do endereço 8200 o valor está 
no registrador que já tenha um dado calculado. 
 
Instrução do processo 1  Mov [8200] AH 
 
O endereço 8200 é um endereço lógico. Então, devemos fazer a conversão do Endereço Lógico no 
Endereço Físico. Ao fazer isto vamos alterar tudo o que o processo está vendo. 
 
 
Figura 1 
 
 
 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 2 
 
Conversão do endereço lógico em endereço físico. 
 
Como a conversão é feita? A primeira coisa é: 
 
1) “Quebra” de endereço lógico em duas partes: número da página lógica e deslocamento na 
página 
 
 Num_pag_logica = Int (EndLogico / Tam_pagina) 
 Deslocamento = EndLogico % Tam_pagina 
 
Onde % é o resto da divisão inteira 
 
Uma coisa mais intuitiva é olhar na memória. A página da memória Intel é de 4 kb. Então a primeira 
página que é a página lógica zero começa em 0 e vai até 4095. A partir de 4096 começa o endereço da 
segunda página lógica. A página lógica 1 começa no endereço 4096 e vai até 8191. A página lógica 2 
começa no endereço 8192 e vai até 12288. Então o endereço 8200 está obviamente na página lógica 2. E 
o deslocamento que a distancia do início da página é 8. 
 
Encontramos os mesmos valores fazendo a conta: 
 
 Num_pag_logica = Int(8200/4096) = 2 
 Deslocamento = 8200%(4096*2) = 8 
 
 
A segunda coisa a ser feita é a conversão do Número da página lógica para o Número da página Física: 
 
2) Conversão Num_pag_logica  Num_pag_fisica 
 
Olhando a Figura 1 fica fácil de descobrir esta correspondência, mas o computador não tem a Figura 1. 
Como ele sabe esta correspondência? Através da Tabela de Páginas do Processo 1. Conforme mostra a 
Figura 2. Cada processo tem a sua tabela de páginas. A tabela é preenchida pelo Sistema Operacional. 
 
Quais são os campos da tabela de páginas? O mais importante que é o número da página física. 
 
O que é o index da tabela de páginas? É o número da página lógica. Que não é um campo, mas sim o 
index. É onde se guarda o valor do número da página física. 
 
A Figura 2 representa a Tabela de Páginas do Processo 1 mostrado na Figura 1. 
 
Como são informadas as páginas lógicas que possuem conteúdo e as que não possuem conteúdo? Tem 
outro campo na Tabela de Páginas de um bit que informa se a página existe ou não. O nome desse 
campo é Válido. Se o valor dele for 0 informa que a página lógica está vazia, logo não existe na página 
física. Se o valor for 1 informa que a página lógica tem conteúdo, logo existe na página física. Conforme 
mostra a Figura 2. 
 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 3 
 
 
Figura 2 
 
 
A tabela de páginas do processo é preenchida pelo Sistema Operacional quando o processo é iniciado. 
Fica na memória do Sistema Operacional. E o HW MMU vai consultar esta tabela para fazer a 
conversão do endereço da página lógica para o endereço da página física. 
 
Então nesse caso específico, o endereço da página lógica é o 2. O HW MMU vai na tabela de páginas do 
processo 1. Verifica se a página 2 é válida. Que de fato é. E vê que o número da página física é 0. 
 
Num_pag_logica  Num_pag_fisica 
 2  0 
 
O terceiro passo é a união do Número da página Física com o Deslocamento 
 
3) EndFisico = (Num_pag_fisica* Tam_pagina) + Deslocamento 
 
Logo, EndFisico = (0*4096) + 8 = 8 
 
Conclusão: Nesse exemplo, quando o processo tenta usar o endereço lógico 8200 o endereço físico na 
memória que vai ser executada de fato é 8. O processo sempre vai utilizar o endereço lógico, o endereço 
que ele acha ser verdadeiro. E o HW MMU faz a conversão do endereço lógico no endereço físico. 
 
OBSERVAÇÃO 
 
O computador trabalha com contas binárias. Estas contas são diferentes da apresentada acima. O 
tamanho da página é sempre potencia de 2, por exemplo, 4096 = 2
12
.
 
 
537 onde 5 é a divisão por 100 e 37 é o resto da divisão. Conforme mostra a Figura 3. 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 4 
 
 
Figura 3 
 
100 é 10
2 
, então ando duas casas para esquerda e faço um corte conforme mostra a Figura 3 o lado 
esquerdo do corte tem a Divisão por 100 e o lado direito do corte tem o Resto da divisão. Na base 10 é 
muito fácil dividir por 100, por 1000, por 10000 etc.. 
 
Int(537/100) = 5 (Esquerda) 
 
537%100 = 37 (Direita) 
 
537 = 5*10
2
 + 3*10
1
 + 7*10
0 
 
Agora estou na base 2 e quero dividir 8200 por 4096 que é 2 
12
.
 
 
 
8200  
 
= 1*2
13
 + 1*2
3 
= 8192 + 8 = 8200 
 
Onde a 1ª Parte é a divisão por 2 
12
 e pode ser alterada. E a 2ª Parte é o resto da divisão por 2 
12
 que não 
pode ser alterada, ou seja, se mantem. 
 
Como faço a divisão? Faço o corte na 12ª casa, pois 4096 é igual 2 
12 
. O número de casas que deve 
ficar no lado direito do corte tem que ser igual ao número da potência, ou seja, igual ao expoente do 
número que estou dividindo. Neste caso é o 12. 
 
O Num_pag_fisica muda, ou seja, a 1ª Parte do corte da divisão. Mas, o Deslocamento não muda, ou 
seja, a 2ª Parte do corte da divisão. 
 
Então precisamos converter a 1ª Parte para zero. Logo, o endereço físico é igual a: 
EndFisico = 
 
O Deslocamento é igual à quantidade de bits que o endereço tem. 
 
Este exemplo é um caso que a conversão dá certo. Mas existem casos que a conversão na dá certo. Por 
exemplo, MOV [22000], BH . Onde 22000 é o endereço lógico. 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 5 
 
 
Num_pag_logica = Int(EndLogico/ Tam_pagina) = Int(22000/4096) = 5 
 
Caso 1 
Ao tentar converter o Num_pag_logica para Num_pag_fisica o HW MMU verifica que na Tabela de 
páginas do processo 1 o bit válido da página lógica 5 é 0. Então o HW MMU gera uma interrupção, pois 
não corresponde a uma página verdadeira (não existe esta página). Uma rotina do SO vai tratar esta 
interrupção. 
 
Cada interrupção tem um número que é o index de um vetor no SO. Neste index existe um ponteiro para 
o endereço onde está o código que tratará a interrupção. 
 
A Tabela de Páginas do Processo é preenchida pelo SO no momento que o processo é criado. Ela fica 
dentro do PCB do processo. O HW MMU consulta para esta tabela para fazer a conversão do endereço 
lógico no endereço físico. 
 
O SO vê no arquivo executado do processo o tamanho do código, o tamanho inicial de dados, o tamanho 
inicial da pilha e vai escolher paginas físicas livres para guardar esse conteúdo em qualquer lugar da 
memória física e colocará a correspondência no campo Num_pag_fisica da Tabela de Páginas do 
Processo. 
 
Caso 2 
Como coloco o valor de um ponteiro em um registrador? Digamos que endereço do ponteiro é 9000. 
Então, 1) MOV EAX, [9000]  Copia para o reg EAX o valor do ponteiro. 
2) MOV EBX, [EAX]  Copia para o reg EBX o valor do ponteiro EAX. 
 
A 2 instrução é mais fácil de gerar erro se o valor, pois basta o valor do ponteiro estar errado que gera 
interrupção. 
 
Da mesma forma que a Segmentaçãocontrola o tipo de uso que o processo faz no seu segmento, a 
Paginação também controla o tipo de uso que o processo faz das suas páginas. A Tabela de páginas ela 
tem campos que vão controlar se aquilo que o processo quer fazer naquela página está correto ou errado. 
Os campos são os mesmos que a Segmentação: bit Executável e Alterável. Estes campos também são 
preenchidos pelo SO de acordo com o tipo de área. Conforme mostra a Figura 4. 
 
Então se a área é uma área de código. É uma área que tem suas páginas com um conteúdo executável e 
não alterável. Se for uma área que contem variáveis, então é uma área que o conteúdo não pode ser 
executado, mas pode ser alterado. Isto em uma área típica. 
 
O SO preenche dessa forma a tabela de páginas e o HW vai utilizar também para fazer validação. Então, 
por exemplo, MOV [4300], BH. Onde 4300 é o endereço lógico. Tem que fazer a conversão para o 
endereço físico. Mas, primeiro encontrar a Num_pag_logica. 
 
Num_pag_logica = Int (EndLogico/Tam_pag) = Int(4300/4096) = 1 
 
O que a instrução MOV [4300], BH tem que fazer? Pegar o valor contido no BH e copiar para o 
endereço 4300. 
 
Logo, estou querendo alterar o valor contido no endereço 4300 que é uma página lógica válida. Só que 
tem o seguinte na página lógica 1 não permite a alteração do conteúdo. Conforme mostra a Figura 4. 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 6 
 
 
Por que? Porque o SO preencheu o bit alterável igual a 0 porque na página contém código. Código não é 
para ser alterado na execução do processo. Então dá erro. O HW MMU gera interrupção, pois a 
instrução está tentando alterar o conteúdo da pagina lógica 1, mas na tabela de página do processo a 
página lógica 1 tem o bit alterável igual a 0. 
 
 
Figura 4 
 
A mesma coisa aconteceria se tentar executar uma instrução com o endereço que está nas páginas 
lógicas 2 e 3, não vai dá certo, vai gerar interrupção, pois o conteúdo que está nestas páginas lógicas não 
são executáveis. 
 
Então, nestes dois casos que acabamos de vê tipicamente a rotina do SO que trata este tipo de 
interrupção aborta o processo. 
 
Atualmente todas as CPU’s usam paginação. 
 
Dificuldades para implementar a paginação 
 
1ª) O acesso a tabela de páginas 
 
Isto introduz uma coisa que a máquina sem paginação não tem. A máquina sem paginação que não tem 
endereço lógico tem endereço físico. Quando o processo vai para memória vai para a memória e pronto. 
Não tem que passar pelo processo de conversão de endereço lógico em endereço físico. 
 
Porém, na paginação tem. Esta primeira conversão do endereço lógico no endereço físico gasta um 
tempo. E este tempo na paginação em principio é bem elevado porque para fazer a conversão precisa 
consultar a tabela de paginas que está na memória. Que não é a coisa mais rápida do mundo. 
 
Por que a tabela de paginas esta na memoria? Não podia estar em um registrador físico? Isto não 
funciona, porque embora neste caso a tabela de páginas não seja grande ela tenha apenas 13 elementos. 
Na vida real não é assim. Na vida real a tabela de páginas tem milhões de registros. Então não dá para 
usar registrador para guardar esse conteúdo. 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 7 
 
Como cada processo tem a sua Tabela de Páginas do Processo. A Figura 5 mostra a Tabela de Páginas 
do Processo 2. 
 
Figura 5 
 
Tem um registrador que aponta para o endereço da Tabela de Páginas do Processo em execução que o 
HW MMU tem que usar. Então o registrador aponta para tabela da Figura 5. Ai para o HW fazer a 
conversão vai pegar o registrador vai vê onde está a tabela e vai utilizar os dados para fazer a conversão 
do endereço lógico para o endereço físico. 
 
Quando o Processo 2 é bloqueado e o SO escalona outro processo. Então o SO também tem que mudar 
o valor contido neste registrador. Ele faz com que o registrador aponte para a tabela de paginas do 
processo que está em execução. Então nesse momento o HW passa a utilizar esta tabela. 
 
A Tabela do Processo fica na memória durante a vida do processo só apaga quando ele morre. Se o 
processo for bloqueado, mas depois ele vai voltar a executar. A tabela fica na memória. 
 
Digamos que numa certa máquina que tem este tipo de memória o Tempo de Acesso a Memória Física 
= 100 ns = 100*10
-9
 s = 10
-7
 s 
 
Então quando uma máquina sem paginação faz acesso à memória o tempo gasto é de 100 ns. 
 
Quando tenho uma máquina com paginação e que tem uma instrução de acesso a memória, por exemplo, 
Mov [8200], AH. O endereço 8200 é um endereço lógico. Temos que fazer primeiro a conversão de 
endereço lógico para endereço físico. 
 
Então o Tempo de Acesso a Memória Lógica (Memória Fictícia) = Tempo de Conversão de Endereço 
Lógico em Endereço Físico + Tempo de Acesso a Memória Física 
 
Então pela conta percebe-se que uma máquina com paginação vai ser sempre mais lenta do que um 
máquina sem paginação, pois a máquina com paginação tem o tempo de conversão que a maquina sem 
paginação não tem. 
 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 8 
 
O problema é que a conversão do endereço da página lógica para o endereço da página física não é 
rápida. 
 
No exemplo atual a conversão EndLogico em EndFisico acessa a tabela de páginas que está na memória 
física. Sendo assim, temos: 
 
Mov[8200], AH 
 
EndLogico  EndFisico 
 8200  8 
 
Tempo de conversão = Tempo de Acesso a Memória Física (Acesso a Tabela de Página) 
 
Qual é o problema? O problema é que o tempo de acesso a memória lógica é: 
 
Tempo de acesso a Memória Lógica = 100 ns + 100 ns = 200 ns 
 Tempo de Conversão Tempo para acessar o conteúdo propriamente dito 
 
Se fosse assim qualquer acesso à memória na paginação vai ser duas vezes mais lento ao que seria o 
acesso em uma máquina sem paginação. Porque o tempo de conversão é o mesmo tempo gasto para 
fazer o acesso. Mas, na verdade não é assim que funciona. Tem uma solução para este problema. 
 
Solução para o problema do desempenho na máquina com paginação 
 
A solução é ter um componente de HW que acelera a conversão. Torna a conversão mais rápida. O ideal 
é a Tabela de Páginas ficar no registrador, mas ela não fica porque é muito grande. Seria mais rápido se 
fosse no registrador. 
 
Como esse componente funciona? O componente se chama TLB. Ele guarda um resumo da Tabela de 
Páginas. Não guarda a Tabela de Páginas toda porque é muito grande. Que resumo é esse? A TLB 
guarda alguns registros da Tabela de Páginas do Processo. Por exemplo, a Tabela de Páginas da Figura 5 
tem 13 registros a TLB vai guardar 3 registros. 
 
A ideia é se você estiver usando uma página cuja conversão esteja na TLB vai ser mais rápido do que na 
Tabela de Página do Processo. 
 
A TLB tem basicamente os mesmos campos da Tabela de Páginas do Processo, mas o campo 
Num_pag_logica é um campo que não existe na Tabela de Página do Processo. Conforme mostra a 
Figura 6 a seguir: 
 
 
Figura 6 
 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 9 
 
Bits de controle Executável e Alterável. A TLB é um resumo da Tabela de Páginas do Processo. Como é 
um resumo e tem só alguns registros da Tabela de Páginas do Processo (TPP). Eu tenho que saber que 
registro da TPP está na TLB. Então tem um campo a mais na TLB que é o Num_pag_logica. Este 
campo na TPP é um índice e não um campo. 
 
Exemplo: 
 
1) Acabou de começar um processo e a primeira instrução é: MOV [8200], AH 
O que acontece? O endereço é quebrado em duas partes e descobre que o número da página lógica é 
igual a 2. Para que serve o Num_pag_logica na TLB? Ele tenta verificar se existe uma página lógica 2 
na tabela de resumo que é a TLB. Como o processo começou a executar agora a TLB estávazia. Então 
não tem registro da página lógica 2. Nesse momento o HW vai ter que consultar a TPP que está na 
memória e é mais lenta. Logo, o HW descobre que a Num_pag_logica = 2  corresponde a 
Num_pag_fisica = 0. Ao mesmo tempo em que o HW faz esta consulta a TPP ele pega os dados da TPP 
referentes a página lógica de consulta e coloca na Tabela Resumo. 
 
Depois tem outra instrução, por exemplo, CALL 500. Olhando a TPP sabemos que neste caso o 
Num_pag_logica = 0  Corresponde a Num_pag_fisica = 2. Primeiro o HW chama a TLB. A TLB tem 
os dados referentes a página lógica 0? Não. Só tem referente a página lógica 2. Então o HW vai consulta 
a TPP da página lógica 0 e ao mesmo tempo preenche a TLB com os dados desta página. 
 
Assim quando tiver outra instrução que por sorte use uma destas duas páginas lógicas cuja conversão 
estão na TLB será mais rápido. 
 
Digamos que agora temos a instrução: MOV BH, [10000]. Nesse caso temos que o Num_pag_logica = 2 
 Já tem na TLB. O HW consulta a TLB. Ela tem o número da página lógica que é igual a 2. Então o 
HW consegue fazer a conversão sem precisar consultar a TPP. Como a TLB é tipo um registrador é 
muito mais rápido fazer a conversão. 
 
Nesse caso descobre que a página lógica 2 corresponde a página física 0 muito mais rapidamente, ou 
seja, consegue fazer isso utilizando a TLB de cada processo que é rápida porque é como se fosse um 
registrador. 
 
A TLB existe para que? Para aumentar a velocidade de conversão do número da página lógica em 
número da página física. Então fica mais rápido executar um processo, pois, se for utilizar somente a 
TPP fica muito lento. Tem casos que vai acontecer de abortar o processo. Por exemplo, se o processo for 
utilizar a página lógica 5 ou 4 que são página inválidas ele será abortado. Então nesse caso que vai ser 
abortado não precisa ir para TLB, pois não faz diferença abortar mais rápido ou mais devagar. 
 
Portanto, páginas lógicas que não são válidas não vão para TLB, pois não tem muita vantagem fazer 
isso. Conforme mostra a Figura 6 o campo bit válido não tem na TLB. Só vão para TLB as páginas 
válidas. A TLB contém as últimas conversões feitas. E em linguagens convencionais tem a tendência de 
reutilizar os endereços que estavam sendo utilizados. Logo, quando a página lógica é colocada na TLB é 
muito provável que esta página será utilizada novamente. Os registros mais antigos são retirados da 
TLB. 
 
Qualquer HW que tenha paginação tem TLB porque sem TLB é muito lento. Inclusive a TLB é uma 
parte que complica muito a paginação. 
 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 10 
 
Digamos que quero fazer um novo acesso ao endereço que está na página lógica 10. Na TPP isso é 
muito trivial porque ela é indexada pelo número da página lógica. Então para fazer a conversão basta 
acessar um único local na TPP, ou seja, faz um único acesso a TPP. A TLB não é assim, logo para 
descobrir qual o endereço da pagina lógica 10 tem que fazer uma procura até encontrar ou não. Portanto, 
isso não é trivial de implementar, mas tem que ser feito para paginação funcionar bem. 
 
Avaliação de perda desempenho TPP x TLB 
 
Uma máquina com paginação tem perda desempenho que uma maquina sem paginação não tem. 
 
Digamos que o Tempo de conversão via TLB = 10 ns. 
 
Temos 2 casos para o tempo de conversão. 
 Via TLB = 10 ns 
 Via tabela de páginas = 10 ns + 100 ns = 110 ns 
Tempo de conversão via TLB 
 
O tempo de conversão via TPP é mais complicado, pois para saber, por exemplo, a pagina física da 
página lógica 11 do processo o HW verifica primeiro se está página na TLB. Ele gasta tempo para fazer 
esta verificação. Sabemos que esta página não está na TLB, mas gasta-se 10 ns. Em seguida o HW vai 
na TPP. Sabemos que o tempo gasto para ir na memória é de 100 ns. 
 
Supondo que 90% dos casos a conversão seja feita via TLB 
 
Tempo Médio de Conversão = P*(Tempo de conversão via TLB) + (1-P)*(Tempo de conversão via 
Tabela de Páginas) 
 
Tempo Médio de Conversão = 0,9*100 ns + (1-0,9)*110ns = 20 ns 
 
Tempo Médio de Acesso a Memória Lógica = Tempo Médio de Conversão + Tempo de Acesso a 
Memória Física 
 
Tempo Médio de Acesso a Memória Lógica = 20 + 100 = 120 ns 
 
Comparando com o tempo de acesso de uma máquina sem paginação (Tempo de acesso a Memória 
Física = 100 ns). A máquina com paginação tem um tempo 20% maior. O pior caso é se o P for menor 
que 90%. Então é muito importante a TLB conseguir fazer a maior parte das conversões porque só assim 
que não vai ter perda de desempenho. 
 
Temos mais de um processo na memoria. Cada processo tem sua TPP. Quando o processo está em 
execução. O registrador aponta para TPP do processo que está em execução. O processo 1 começou a 
executar o SO aponta para TPP do P1, o HW vai consultar esta tabela mais aos poucos preenche a TLB. 
Depois de certo tempo o HW consegue fazer muitas conversões usando somente a TLB. 
 
Uma hora o processo fica bloqueado e para de executar. E o SO escalona o processo 2. Como o SO faz 
para escalonar outro processo? Ele faz o registrador apontar para a TPP do outro processo dentre as 
outras coisas realizadas. 
 
A TLB guarda as informações do processo atual em execução. Então não faz sentido continuar os dados 
do P1 na TLB. O SO tem que limpar este conteúdo. Isto é feito através do campo Registro em uso. 
SISTEMA OPERACIONAL II – AULA 5 - 11/12/2012 
 
Elaborado por Luciana SA Amancio Página 11 
 
Na hora que é preciso esvaziar a TLB o SO altera o campo Registro em uso para 0 (zero). Conforme 
mostra a Figura 7. Então no momento que o processo entra em execução o SO zera este campo para 
dizer que as informações da linha não são validas. A primeira instrução a ser executada do processo P1 
vai para TLB e o campo Registro em uso é modificado para 1. Conforme mostra a Figura 7. 
 
 
Figura 7 
 
Nesse tipo de TLB toda vez que o processo entra em execução ou reinicia sua execução ele é um pouco 
mais lento porque as conversões que o HW tem que fazer é todas vias TPP. Pois, a TLB desse processo 
está vazia. A consequência de fazer desta forma é que os tempos de execução fica mais lento por causa 
da TLB que fica vazia. 
 
Existe outro componente de HW que tem TLB “Alternativa”. Esta TLB tem o campo Num_Processo. 
Por exemplo, a TLB estava com os dados do Processo 1 conforme mostra a Figura 8. Mas ele foi 
bloqueado e o SO escolonou o processo 2. Nesse caso não precisa limpar a TLB nem invalidar o 
conteúdo dos campos da TLB porque tem o campo Num_Processo que diz de que tabela que veio o 
dado que está na TLB. Quando o P2 inicia ele de fato pega uma TLB vazia. O processo 2 foi bloqueado 
e o SO volta a executar o P1. Caso isso ocorra é vantajoso para o P1, pois ele não pegou a TLB vazia. O 
P1 não volta a executar tão devagar, pois já tem dados dele na TLB. 
 
 
Figura 8 
 
Esse tipo de TLB é vantajoso quando tem dados do processo quando ele retorna de um bloqueio. 
 
Na Intel temos 1 milhão de páginas lógicas isto não corresponde a página física sendo utilizadas pelo 
processo, pois temos milhares de páginas lógicas sem uso na memória lógica. Isso não gasta chip de 
memória, porém cria o problema da TPP. Porque se tem 1 milhão de registros na memória lógica tem 
que ter o mesmo valor na TPP. Assim a TPP gasta uma memória razoável não uma mais somando todas 
as TPP de todos os processos, pois temos uma TP por processo. Temos 3 mecanismo para evitar que a 
TP seja muito grande.

Outros materiais