Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exercícios Práticos 1 Sob que circunstâncias ocorrem erros de página? Descreva as ações realizadas pelo sistema operacional quando ocorre um erro de página. Uma falha de página ocorre quando acontece um acesso a uma página que não foi trazida para a memória principal. O sistema operacional verifica o acesso à memória, abortando o programa se o acesso for inválido. Se for válido, um quadro livre é localizado e a E/S é requisitada para ler a página necessária para o quadro livre. Ao terminar a E/S, a tabela de processos e a tabela de página são atualizadas e a instrução é reiniciada. 2 Suponha que você tenha uma sequência de referências de página para um processo com m quadros (todos inicialmente vazios). A sequência de referências de página tem tamanho p, e nela ocorrem n números de página distintos. Responda a essas perguntas para qualquer algoritmo de substituição de páginas: a.O que é um limite inferior em relação ao número de erros de página? n b. O que é um limite superior em relação ao número de erros de página? p 3 Considere a tabela de páginas mostrada na Figura 9.30 para um sistema com endereços virtuais e físicos de 12 bits e páginas de 256 bytes. A lista de quadros de páginas livres é D, E e F (isto é, D é a cabeça da lista, E é o segundo quadro e F é o último). Converta os endereços virtuais, a seguir, nos endereços físicos equivalentes em hexadecimais. Todos os números são dados em hexadecimal. (Um travessão para um quadro de página indica que a página não está em memória.) • 9EF = 0EF • 111 = 211 • 700 = -00 porém acontece algo q eu não sei, acho q meche com os espaços livres • 0FF= -FF porém acontece algo q eu não sei, acho q meche com os espaços livres 4 Considere os algoritmos de substituição de páginas a seguir. Classifique esses algoritmos em uma escala de cinco pontos que vai de “ruim” a “perfeito” de acordo com sua taxa de erros de página. Separe os algoritmos que sofrem da anomalia de Belady dos que não são afetados por ela. a.Substituição LRU b. Substituição FIFO c. Substituição ótima d. Substituição da segunda chance Ordem Algoritmo Sobre da anomalia de Belady 1 Ótimo não 2 LRU não 3 Segunda chance sim 4 FIFO sim 5 Discuta o suporte de hardware requerido para suportar a paginação por demanda. O suporte de hardware distingue entre as páginas que estão na memória e as páginas que estão no disco. Utiliza o esquema de bit válido/ inválido Bit válido: a página associada está na memória. Bit inválido: a página não é válida ou pode ser válida, mas não estar no disco. 6 Um sistema operacional dá suporte a uma memória virtual paginada. O processador central tem um tempo de ciclo de 1 microssegundo. O acesso a uma página que não seja a página corrente tem o custo de 1 microssegundo adicional. As páginas têm 1.000 palavras, e o dispositivo de paginação é um tambor que gira a 3.000 rotações por minuto e transfere 1 milhão de palavras por segundo. As medidas estatísticas a seguir foram obtidas do sistema: ● 1% de todas as instruções executadas acessava uma página diferente da página corrente. ● Das instruções que acessavam outra página, 80% acessavam uma página que já estava na memória. ● Quando uma nova página era requerida, a página substituída tinha sido modificada 50% das vezes. Calcule o tempo efetivo de instrução nesse sistema, supondo que o sistema esteja executando apenas um processo e que o processador fique ocioso durante as transferências executadas pelo tambor. 7 Considere o array bidimensional A : int A[][] = new int[100][100]; em que A[0][0] está na locação 200 em um sistema de memória paginada com páginas de tamanho 200. Um processo pequeno que manipula a matriz reside na página 0 (locações 0 a 199). Portanto,cada busca de instrução ocorrerá a partir da página 0. Para três quadros de páginas, quantos erros de página são gerados pelos seguintes loops de inicialização do array? Use a substituição LRU e suponha que o quadro de página 1 contenha o processo, e os outros dois estejam inicialmente vazios. a.for (int j = 0; j < 100; j++) for (int i = 0; i < 100; i++) A[i][j] = 0; 50 b. for (int i = 0; i < 100; i++) for (int j = 0; j < 100; j++) A[i][j] = 0; 5000 8 Considere a sequência de referências de página a seguir: 1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6. Quantos erros de página ocorreriam para os algoritmos de substituição abaixo, supondo a existência de um, dois, três, quatro, cinco, seis e sete quadros? Lembre-se de que todos os quadros estão inicialmente vazios e, portanto, as primeiras páginas apresentarão um erro cada. • Substituição LRU • Substituição FIFO • Substituição ótima Número de frames LRU FIFO Ideal 1 20 20 20 2 18 18 15 3 15 16 11 4 10 14 8 5 8 10 7 6 7 10 7 7 7 7 7 9 Suponha que você queira usar um algoritmo de paginação que exija um bit de referência (como a substituição da segunda chance ou o modelo do conjunto de trabalho), mas o hardware não forneça um. Esquematize como você poderia simular um bit de referência, mesmo se um não fosse fornecido pelo hardware, ou explique por que não é possível fazer isso. Se for possível, calcule qual seria o custo. Você pode usar o bit válido/inválido no hardware para simular o bit de referência. Inicialmente, defina o bit como inválido. Na primeira referência, é gerada um trap para o sistema operacional. O sistema operacional definirá o bit de software como 1 e reiniciará o bit de válido/inválido como válido. 10 Você inventou um novo algoritmo de substituição de páginas que você acha que pode ser ótimo. Em alguns casos de teste distorcidos, ocorre a anomalia de Belady. O novo algoritmo é ótimo? Explique sua resposta. Não. Um algoritmo ideal não sofrerá da anomalia de Belady porque, por definição, um al- goritmo ideal substitui a página que não será usada por mais tempo. A anomalia de Belady ocorre quando um algoritmo de substituição de página despeja uma página que será necessária no futuro imediato. Um algoritmo ideal não teria selecionado tal página. 11 A segmentação é semelhante à paginação, mas usa “páginas” de tamanho variável. Defina dois algoritmos de substituição de segmentos, um baseado no esquema de substituição de páginas. ● FIFO e o outro no esquema de substituição de páginas LRU. Lembre-se de que, como os segmentos não têm o mesmo tamanho, o segmento que for selecionado para ser substituído pode ser muito pequeno para deixar locações consecutivas suficientes para o segmento requerido. Considere estratégias para sistemas em que os segmentos não possam ser relocados e estratégias para sistemas onde isso possa ocorrer. ● FIFO. Encontre o primeiro segmento grande o suficiente para acomodar o segmento que chega. Se a relocação não for possível e nenhum segmento for grande o bastante, selecione umacombinação de segmentos cujas memórias são contíguas, que são “mais próximas do primeiro da lista” e que podem acomodar o novo segmento. Se a relocação for possível, reorganize a memória de modo que os primeiros N segmentos, grandes o suficiente para o segmento que chega, sejam contíguos na memória. Acrescente qualquer espaço restante à lista de espaço livre nos dois casos. LRU. Selecione o segmento que não foi usado pelo maior período de tempo e que seja grande o suficiente, acrescentando qualquer espaço restante à lista de espaço livre. Se nenhum segmento for grande o suficiente, selecione uma combinação dos segmentos “mais antigos” que estejam contíguos na memória (se a relocação não estiver disponível) e que sejam grandes o suficiente. Se a relocação estiver disponível, reorganize os N segmentos mais antigos para serem contíguos na memória e substitua-os pelo novo segmento. 12 Considere um sistema de computação paginado por demanda em que o grau de multiprogramação esteja correntemente fixado em quatro. O sistema foi recentemente medido para determinar a utilização da CPU e do disco de paginação. Três resultados alternativos são mostrados abaixo. O que está ocorrendo em cada caso? O grau de multiprogramação pode ser aumentado para aumentar a utilização da CPU? A paginação está ajudando? a.13% de utilização da CPU; 97% de utilização do disco. Está ocorrendo o thrashing.abaixa a multiprogramaçao b. 87% de utilização da CPU; 3% de utilização do disco. A utilização de CPU é suficientemente alta para deixar as coisas como estão, um grau maior de multiprogramação. c. 13% de utilização da CPU; 3% de utilização do disco. Aumente o grau de multiprogramação. 13 Temos um sistema operacional para um sistema de computação que usa registradores base e limite, mas modificamos a máquina para fornecer uma tabela de páginas. As tabelas de páginas podem ser definidas para simular registradores base e limite? Como elas podem ser definidas ou por que não podem sê-lo? A tabela de página pode ser configurada para simular os registradores de base e limite des- de que a memória seja alocada em segmentos de tamanho fixo. Desse modo, a base de um segmento pode ser entrada na tabela de página e o bit de válido/inválido usado para indicar essa parte do segmento como residente na memória. Haverá algum problema com a fragmentação interna. Exercícios 14 Suponha que um programa tenha acabado de referenciar um endereço na memória virtual. Descrevaum cenário em que cada uma das situações abaixo possa ocorrer. (Se esse cenário não puder ocorrer, explique por quê.) • Omissão do TLB sem erro de página - A omissão de TLB com nenhuma página falhada foi trazida para a memória, mas foi removido do TLB • Omissão de TLB com erro de página - falta de página e TLB ocorreu. • Sucesso do TLB sem erro de página - está na memória e no TLB. A maioria provavelmente uma referência recente. • Sucesso do TLB com erro de página - O sucesso do TLB e oerro na página não podem ocorrer. O TLB é um cache da página mesa. Se uma entrada não estiver na tabela de páginas, ela não estará no TLB. 15 Uma visão simplificada de estados dos threads é Pronto, Em Execução e Bloqueado, em que um thread está pronto e esperando para ser incluído no schedule, está sendo executado no processador, ou está bloqueado (por exemplo, está esperando por I/O). Isso é ilustrado na Figura 9.31. Supondo que um thread esteja no estado Em Execução, responda às perguntas a seguir e explique sua resposta: a. O thread mudará de estado se incorrer em um erro de página? Se mudar, para que estado passará? Em um erro de página, o estado da thread é configurado para bloqueado como uma operação de E/S que é necessário para levar a nova página à memória. b. O thread mudará de estado se gerar uma omissão do TLB que seja resolvida na tabela de páginas? Se mudar, para que estado passará? Na omissão do TLB, o segmento continua em execução se o endereço for resolvido na tabela de páginas. c.O thread mudará de estado se uma referência de endereço for resolvida na tabela de páginas? Se mudar, para que estado passará? A thread continuará a ser executado se o endereço for resolvido no tabela de páginas. 16 Considere um sistema que use a paginação por demanda pura. a.Quando um processo inicia a sua execução pela primeira vez, como você caracterizaria a taxa de erros de página? Inicialmente bastante alto, pois as páginas necessárias ainda não foram carregadas na memória. b. Uma vez que o conjunto de trabalho de um processo seja carregado na memória, como você caracterizaria a taxa de erros de página? Deve ser bastante baixo, pois todas as páginas necessárias são carregadas em memória. c. Suponha que um processo altere sua localidade, e o tamanho do novo conjunto de trabalho seja grande demais para ser armazenado na memória livre disponível. Identifique algumas opções que os projetistas de sistemas poderiam selecionar para manipular essa situação. (1) Ignore isso; (2) obter mais memória física; (3) recuperar páginas mais agressivamente devido à alta taxa de erro da página. 17 O que é o recurso de cópia após gravação, e sob que circunstâncias seu uso é benéfico? Que suporte de hardware é requerido para sua implementação? Quando dois processos acessam o mesmo conjunto de valores de programa (por exemplo, o segmento de código do binário de origem), então é útil mapear as páginas correspondentes para os espaços de endereço virtual de dois programas de forma protegida contra escrita. Quando uma escrita realmente acontecer, então uma cópia deve ser feita para permitir que os dois programas acesse individualmente as diferentes cópias sem interferir com cada de outros. O suporte de hardware necessário para implementar é simplesmente o seguinte: em cada acesso à memória, a tabela de páginas precisa ser consultada Para verificar se a página está protegida contra gravação. Se é realmente escrever protegido, uma armadilha ocorreria e o sistema operacional poderia resolver o problema. 18 Determinado computador fornece a seus usuários um espaço de memória virtual de 2^32 bytes. O computador tem 2^18 bytes de memória física. A memória virtual é implementada por paginação, e o tamanho da página é de 4.096 bytes. Um processo de usuário gera o endereço virtual 11123456. Explique como o sistema estabelece a locação física correspondente. Diferencie operações de software e de hardware. O endereço virtual em formato binário é 0001 0001 0001 0010 0011 0100 0101 0110 Uma vez que o tamanho da página é 2^12, o tamanho da tabela da página é 2^20. Portanto, a ordem baixa 12 bits "0100 0101 0110" são usados como deslocamento para a página, enquanto os 20 bits restantes "0001 0001 0001 0010 0011" são usados como deslocamento na tabela de páginas. 19 Suponha que tenhamos uma memória paginada por demanda. A tabela de páginas é mantida em registradores. São necessários 8 milissegundos para manipular um erro de página, se um quadro vazio está disponível ou se a página substituída não foi modificada, e20 milissegundos, se a página substituída foi modificada. O tempo de acesso à memória é de 100 nanossegundos. Suponha que a página a ser substituída seja modificada 70% das vezes. Qual é a taxa de erros de página máxima aceitável para um tempo efetivo de acesso de não mais do que 200 nanossegundos? 0.2 sec = (1 − P) × 0.1 _sec + (0.3P) × 8 millisec + (0.7P) × 20 millisec 0.1 = −0.1P + 2400 P + 14000 P 0.1 = 16,400 P P = 0.000006 20 Quando ocorre um erro de página, o processo que está solicitando a página deve ser bloqueado enquanto espera que a página seja trazida do disco para a memória física. Suponha que exista um processo com cinco threads de nível de usuário e que o mapeamento de threads de usuário para threads do kernel seja um paraum. Se um thread de usuário incorre em um erro de página ao acessar sua pilha, os outros threads de usuário pertencentes ao mesmo processo também seriam afetados pelo erro de página — isto é, eles também precisariam esperar que a página que gerou o erro seja trazida para a memória? Explique. Sim, porque há apenas um thread de kernel para todas as threads do usuário, que blocos de segmento do kernel enquanto espera que a erro de página seja resolvida. Uma vez que não há outros threads do kernel para os threads de usuário disponíveis, todos os outras threads de usuário no processo são afetados pelo erro de página. 21 Considere a sequência de referências de página a seguir: 7, 2, 3, 1, 2, 5, 3, 4, 6, 7, 7, 1, 0, 5, 4, 6, 2, 3, 0, 1. Supondo uma paginação por demanda com três quadros, quantos erros de página ocorreriam para os algoritmos de substituição a seguir? ● Substituição LRU 18 ● Substituição FIFO 17 ● Substituição ótima 13 Eu, iranildo, aprendi isto: 21 e a 22. 22 A tabela de páginas mostrada na Figura 9.32 é para um sistema com endereços virtuais e físicos de 16 bits e páginas de 4.096 bytes. O bit de referência é posicionado em 1 quando a página é referenciada. Periodicamente, um thread zera todos os valores do bit de referência. Um travessão para um quadro de página indica que a página não está em memória. O algoritmo de substituição de páginas é o LRU localizado, e todos os números são fornecidos em decimais. a.Converta os endereços virtuais a seguir (em hexadecimais) para os endereços físicos equivalentes. Você pode fornecer respostas em hexadecimal ou decimal. Posicione também o bit de referência da entrada apropriada na tabela de páginas. Auxilio, to pondo aqui, mas na prova não tem não: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 A B C D E F G H • 0xE12C = converte o E de hexadecimal para decimal q dá 14-> olha na página o q tem no 14-> daí tem 3, então converte em hexadecimal, q dá 3 = 0x312C • 0x3A9D = converte o 3 de hexadecimal para decimal q dá 3-> olha na página o q tem no 3-> daí tem 10, então converte em hexadecimal, q dá A = 0xAA9D • 0xA9D9= converte o A de hexadecimal para decimal q dá 10-> olha na página o q tem no 10-> daí tem 5, então converte em hexadecimal, q dá 5 = 0x59D9 • 0x7001= converte o 7 de hexadecimal para decimal q dá 7-> olha na página o q tem no 7-> daí tem 15, então converte em hexadecimal, q dá F = 0xF001 • 0xACA1 = converte o A de hexadecimal para decimal q dá 10-> olha na página o q tem no 10-> daí tem 5, então converte em hexadecimal, q dá 5 =0x5CA1 b.Usando os endereços acima como ponto de partida, forneça um exemplo de endereço lógico (em hexadecimal) que resulte em erro de página. As únicas opções são as páginas 4, 8, 12 e 13. Assim, os endereços de exemplo incluem qualquer coisa que comece com a seqüência hexadecimal 0x4..., 0x8..., 0xC..., and 0xD.... c. Em que conjunto de quadros de página o algoritmo de substituição LRU fará uma seleção para resolver um erro de página? Quaisquer entradas de tabela de página que tenham um bit de referência de zero. Isso inclui os seguintes quadros {9, 1, 14, 13, 8, 0, 4} 23 Suponha que você esteja monitorando a taxa segundo a qual o ponteiro do algoritmo do relógio se move. (O ponteiro indica a página candidata à substituição.) O que você pode dizer sobre o sistema se observar o comportamento a seguir: a.O ponteiro está se movendo rapidamente. Se o ponteiro estiver se movendo rapidamente, o programa acessará um grande número de páginas simultaneamente. É muito provável que durante o período entre o ponto em que o bit correspondente a uma página é desmarcado e é verificado novamente, a página é acessada novamente e, portanto, não pode ser substituído. Isso resulta em mais digitalização das páginas antes de uma vítima página é encontrada. b. O ponteiro está se movendo lentamente. Se o ponteiro estiver em movimento lento, o sistema de memória virtual está encontrando páginas candidatas para substituição extremamente eficiente, indicando que muitas das páginas residentes não estão sendo acessadas. 24 Discuta situações em que o algoritmo de substituição de páginas menos frequentemente utilizadas (LFU) gere menos erros de página do que o algoritmo de substituição de páginas menos recentemente utilizadas (LRU). Discuta também sob que circunstâncias o oposto acontece. Considere a seguinte seqüência de acessos de memória em um sistema que pode armazenar quatro páginas na memória: 1 1 2 3 4 5 1. Quando a página 5 é acessada, o algoritmo de substituição de página com menos uso freqüente substituiria uma página diferente de 1 e, portanto, não ocorreria uma falha na página quando a página 1 é acessado novamente. Por outro lado, para a sequência "1 2 3 4 5 2," o algoritmo mais usado recentemente funciona melhor. 25 Discuta situações em que o algoritmo de substituição de páginas mais frequentemente utilizadas (MFU) gere menos erros de página do que o algoritmo de substituição de páginas menos recentementeutilizadas (LRU). Discuta também sob que circunstâncias o oposto acontece. Considere a seqüência em um sistema que contém quatro páginas na memória: 1 2 3 4 4 4 5 1. Os algoritmos de substituição de página mais utilizados com freqüência página 4 enquanto buscava a página 5, enquanto o algoritmo LRU destrói a página 1. Isso é improvável que aconteça muito na prática. Para a sequência "1 2 3 4 4 4 5 1, "o algoritmo LRU toma a decisão certa. 26 O sistema VAX/VMS usa um algoritmo de substituição FIFO para páginas residentes e um pool de quadros livres de páginas recentemente utilizadas. Suponha que o pool de quadros livres seja gerenciado com o uso da política de substituição LRU. Responda as perguntas a seguir: a.Se um erro de página ocorrer e a página não existir no pool de quadros livres, como é gerado espaço livre para a página recém solicitada? Quando ocorre uma erro de página e se a página não existir no pool de quadro livre, então uma das páginas no pool de quadros livres é despejado em disco, criando espaço para que uma das páginas residentes seja mudou-se para o pool de quadros livres. A página acessada é então movida para o conjunto de residentes. b. Se um erro de página ocorrere a página existir no pool de quadros livres, como o conjunto de páginas residentes e o pool de quadros livres são gerenciados de modo a criar espaço para a página solicitada? Quando ocorre uma falha na página e se a página existe no quadro livre pool, então é movido para o conjunto de páginas residentes, enquanto um das páginas residentes são movidas para o pool de quadros livres. c. Para que estado o sistema degenerará se o número de páginas residentes for estabelecido em um? Quando o número de páginas residentes é definido como um, então o sistema degenera o algoritmo de substituição da página usado no Pool de quadro livre, que normalmente é gerenciado de forma LRU. d. Para que estado o sistema degenerará se o número de páginas no pool de quadros livres for zero? Quando o número de páginas no pool de quadros livres é zero, então o sistema degenera em um algoritmo de substituição de página FIFO. 27 Considere um sistema de paginação por demanda com as seguintes medidas de tempo de utilização: Utilização da CPU 20% Disco de paginação 97,7% Outros dispositivos de I/O 5% Para cada uma das situações a seguir, diga se ela irá (ou poderá vir a) melhorar a utilização da CPU.Explique suas respostas. a.Instalação de uma CPU mais rápida. b. Instalação de um disco de paginação maior. c.Aumento do grau de multiprogramação.d. Diminuição do grau de multiprogramação. e. Instalação de mais memória principal. f. Instalação de um disco rígido mais rápido ou de múltiplos controladores com múltiplos discos rígidos. g. Adição da pré-paginação aos algoritmos de busca de páginas. h. Aumento do tamanho da página. O sistema obviamente está gastando a maior parte do seu tempo paginando, indicando a sobrealocação de memória. Se o nível de multiprogramação for reduzido, processos residentes causariam falha de página com menos freqüência e a utilização da CPU melhoraria. Outra maneira de melhorar o desempenho seria obter mais memória física ou um tambor de paginação mais rápido. a. Instalar uma CPU mais rápida – Não. b. Instalar um disco de paginação maior – Não. c. Aumentar o grau de multiprogramação – Não. d. Diminuir o grau de multiprogramação – Sim. e. Instalar mais memória principal – Provavelmente melhora a utilização de CPU porque mais páginas podem permanecer residentes e não exigir paginação de ou para os discos. f. Instalar um disco rígido mais rápido ou múltiplos controladores com múltiplos discos rígidos. Também é uma melhoria, pois à medida que o gargalo do disco é removido pela resposta mais rápida e maior throughput para os discos, a CPU receberá mais dados mais rapidamente. g. Acrescentar a pré-paginação aos algoritmos de busca de página – Novamente, a CPU receberá mais dados mais rapidamente, de modo que será mais utilizada. Isso só acontece se a ação de paginação for favorável à pré-paginação (ou seja, se o acesso for seqüencial). h. Aumentar o tamanho da página – Aumentar o tamanho da página resultará em menos falhas de página se os dados estiverem sendo acessados seqüencialmente. Se o acesso aos dados for mais ou menos aleatório, pode haver mais ação de paginação, pois menos páginas podem ser mantidas na memória e mais dados são transferidos por falha de página. Assim, essa mudança tanto pode diminuir a utilização quanto aumentá-la. 28 Suponha que um computador forneça instruções que possam acessar locações de memória usando o esquema de endereçamento indireto de um nível. Que sequência de erros de página ocorre quando todas as páginas de um programa estão correntemente não residentes e a primeira instrução do programa seja uma operação de carga de memória indireta? O que acontece quando o sistema operacional está usando uma técnica de alocação de quadros por processo e somente duas páginas sejam alocadas a esse processo? Os erros de página a seguir ocorrem: erro na página para acessar as instruções,um erro na página para acessar a localização da memória que contém um ponteiro para a localização da memória alvo e uma falha na página quando a memória alvo localizada é acessada. O sistema operacional gerará três páginas erradas com a terceira página que substitui a página que contém as instruções. Se a instrução precisa ser recuperada novamente para repetir a captura instruções, a sequência de falhas da página continuará indefinidamente. Se a instrução for armazenada em cache em um registro, ele poderá executar completamente após a falha da terceira página. 29 Suponha que sua política de substituição (em um sistema paginado) seja examinar cada página regularmente e descartar a página se ela não tiver sido usada desde a última verificação. O que você ganharia e o que perderia usando essa política em vez da substituição LRU ou da segunda chance? Esse algoritmo poderia ser implementado com o uso de um bit de referência. Após cada exame, o bit é definido como zero; Regressar a um se a página for referenciada. O algoritmo selecionaria uma página arbitrária para substituição do conjunto de páginas não utilizadas desde o último exame. A vantagem desse algoritmo é a sua simplicidade - é preciso manter um outro tipo de bit de referência. A desvantagem deste algoritmo que ele ignora a localidade, usando apenas um curto período de tempo para determinar se deve descartar uma página ou não. Por exemplo, uma página pode ser parte do conjunto de trabalho de um processo, mas pode ser despejada porque não foi referenciada desde o último exame (ou seja, nem todas as páginas no conjunto de trabalho podem ser referenciadas entre os exames). 30 Um algoritmo de substituição de páginas deve minimizar o número de erros de página. Podemos obter essa minimização distribuindo páginas muito usadas de modo uniforme por toda a memória, em vez de fazê-las competir por um pequeno número de quadros de páginas. Podemos associar a cada quadro de página um contador do número de páginas associadas a esse quadro. Assim, para substituir uma página, podemos procurar o quadro de página com a menor contagem. a.Defina um algoritmo de substituição de páginas usando essa ideia básica. Resolva especificamente esses problemas: i. Qual é o valor inicial dos contadores? ii. Quando os contadores são incrementados? iii. Quando os contadores são decrementados? iv. Como a página a ser substituída é selecionada? Defina um algoritmo de substituição de página resolvendo os problemas de: i. Valor inicial dos contadores – 0. ii. Os contadores são aumentados – sempre que uma nova página é associada a esse quadro. iii. Quando os contadores são diminuídos – sempre que uma das páginas associadas a esse quadro não é mais exigida. iv. Como é selecionada a página a ser substituída – encontre um quadro com o menor contador. Use FIFO para desempatar. b. Quantos erros de página ocorrem em seu algoritmo para a sequência de referência, a seguir, com quatro quadros de páginas? 1, 2, 3, 4, 5, 3, 4, 1, 6, 7, 8, 7, 8, 9, 7, 8, 9, 5, 4, 5, 4, 2. 14 falhas de página. c.Qual é o número mínimo de erros de página de uma estratégia ótima de substituição de páginas, para a sequência de referênciada parte b com quatro quadros de páginas? 11 falhas de página. 31 Considere um sistema de paginação por demanda com um disco de paginação que tenha um tempo médio de acesso e de transferência de 20 milissegundos. Os endereços são traduzidos por meio de uma tabela de páginas na memória principal, com tempo de acesso de 1 microssegundo por acesso à memória. Portanto, cada referência feita à memória através da tabela de páginas exige dois acessos. Para melhorar esse tempo, adicionamos uma memória associativa que reduz o tempo de acesso a uma referência de memória se a entrada da tabela de páginas estiver na memória associativa. Suponha que 80% dos acessos sejam feitos na memória associativa e que, do restante, 10% (ou 2% do total) provoquem erros de página. Qual é o tempo de acesso efetivo à memória? tempo efetivo de acesso = (0,8) × (1 µsec) + (0,1) × (2 µsec) + (0,1) × (5002 µsec) = 501,2 µsec = 0,5 milissegundos 32 Qual é a causa da atividade improdutiva (Thrashing)? Como o sistema a detecta? Uma vez que ela seja detectada, o que o sistema pode fazer para eliminar esse problema? O thrashing é causado pela falta de alocação do número mínimo de páginas exigidas por um processo, forçando-o a gerar falha de página continuamente. O sistema pode detectar o thrashing avaliando o nível de utilização de CPU comparado com o nível de multiprogramação. Ele pode ser eliminado reduzindo-se o nível de multiprogramação. 33 É possível que um processo tenha dois conjuntos de trabalho, um representando dados e outro representando código? Explique. Sim, de fato, muitos processadores fornecem dois TLB por esse mesmo motivo. Por exemplo, o código que está sendo acessado por um processo pode reter o mesmo conjunto de trabalho por um longo período de tempo. No entanto, os dados que o código acessa podem mudar, refletindo assim uma alteração no conjunto de trabalho para acessos de dados. 34 Considere o parâmetro Δ usado para definir a janela do conjunto de trabalho no modelo do conjunto de trabalho. Quando Δ é definido com um valor pequeno, qual é o efeito sobre a frequência de erros de página e o número de processos ativos (não suspensos) em execução corrente no sistema? Qual é o efeito quando Δ é definido com um valor muito alto? Quando Δ está configurado para um valor pequeno, o conjunto de páginas residentes para um processo pode ser subestimado, permitindo que um processo seja agendado mesmo que todas as suas páginas necessárias não sejam residentes. Isso pode resultar em uma grande quantidade de falhas na página. Quando Δ está configurado para um valor grande, o conjunto residente de um processo é superestimado e isso pode impedir que muitos processos sejam agendados, mesmo que as páginas necessárias sejam Residente.No entanto, uma vez que um processo está agendado, é improvável que gerar falhas na página, uma vez que o seu conjunto de residentes foi superestimado. 35 Em um segmento de 1.024 KB, a memória é alocada com o uso do sistema de pares. Usando a Figura 9.359.26 como guia, desenhe uma árvore ilustrando como as solicitações de memória a seguir são alocadas: • Solicitação de 6 K • Solicitação de 250 bytes • Solicitação de 900 bytes • Solicitação de 1.500 bytes • Solicitação de 7 KB Em seguida, modifique a árvore de acordo com as liberações de memória a seguir. Execute a fusão sempre que possível: • Liberação de 250 bytes • Liberação de 900 bytes • Liberação de 1.500 bytes A alocação a seguir é feita pelo sistema Buddy: a solicitação de 240 bytes é atribuída a um segmento de 256 bytes. A solicitação de 120 bytes é atribuída a um segmento de 128 bytes, a solicitação de 60 bytes é atribuída a um segmento de 64 bytes e a solicitação de 130 bytes é atribuída a um segmento de 256 bytes. Após a atribuição, os seguintes tamanhos de segmento estão disponíveis: 64 bytes, 256 bytes, 1K, 2K, 4K, 8K, 16K, 32K, 64K, 128K, 256K e 512K. Após os lançamentos da memória, o único segmento em uso seria um segmento de 256 bytes contendo 130 bytes de dados. Os seguintes segmentos serão gratuitos: 256 bytes, 512 bytes, 1K, 2K, 4K, 8K, 16K, 32K, 64K, 128K, 256K e 512K. 36 Um sistema suporta threads de nível de usuário e de nível de kernel. O mapeamento nesse sistema é do tipo um para um (há um thread do kernel correspondente a cada thread de usuário). Um processo multithreaded é composto por (a) um conjunto de trabalho para o processo inteiro ou (b) um conjunto de trabalho para cada thread? Explique. Um conjunto de trabalho para cada segmento. Isso ocorre porque cada thread do kernel tem sua própria seqüência de execução, gerando assim sua seqüência de endereços única. 37 O algoritmo de alocação de slabs usa um cache separado para cada tipo de objeto diferente. Supondo que haja um cache por tipo de objeto, explique por que esse esquema não escala bem com múltiplas CPUs. O que poderia ser feito para resolver esse problema de escalabilidade? Isso tem sido um problema com o alocador slab - escalabilidade fraca com várias CPUs. O problema vem de salvar o cache global quando ele está sendo acessado. Isso tem o efeito de serializar acessos de cache em sistemas multiprocessador. O Solaris abordou isso introduzindo um cache por CPU, em vez de uma única dor global. 38 Considere um sistema que aloque páginas de diferentes tamanhos a seus processos. Quais são as vantagens de um esquema de paginação desse tipo? Que modificações no sistema de memória virtual fornecem essa funcionalidade? O programa pode ter um grande segmento de código ou usar matrizes de grande porte como dados. Essas partes do programa podem ser alocadas para páginas maiores, diminuindo as despesas gerais de memória associadas a uma tabela de páginas. O sistema de memória virtual teria que manter várias listas de páginas gratuitas para os diferentes tamanhos e também precisa ter um código mais complexo para a tradução de endereços para levar em consideração diferentes tamanhos de página.
Compartilhar