UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Documentos relacionados
Válido Rótulo Bloco bits 8 bits 8 bits 8 bits

Lista de Exercícios Escalonamento de CPU. 1. Considere o seguinte conjunto de processos, com o tamanho do tempo de burst de CPU dado em milissegundos:

Questões de Provas de Períodos Anteriores

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos

Escalonamento da CPU

Escalonamento da CPU

Sistemas Operacionais: Escalonamento de processos

Algoritmos de escalonamento

Davidson Rodrigo Boccardo

Sistemas Operacionais. Escalonamento de processos

Aula 10: Escalonamento da CPU

Notas da Aula 10 - Fundamentos de Sistemas Operacionais

Sistemas de Computação. Processos e escalonamento

LabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...

Cadeira de Sistemas Operativos. Frequência 1º Semestre. 8 de Fevereiro de 2006

Sistemas Operacionais Gerenciamento de Processos

Processos. Aula Passada. Aula Passada (2) Ciclos de CPU e de I/O (1)

Gerência de Memória. Endereçamento Virtual (1) Paginação. Endereçamento Virtual (2) Endereçamento Virtual (3)

Gerência de Memória. Paginação

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Sistemas Operativos. Sumário. Escalonador da CPU. Por Prioridades Round Robin. ! Algoritmos de escalonamento

Fundamentos de Sistemas Operacionais

Sistemas Operacionais. Prof. André Y. Kusumoto

Gerência do Processador. Adão de Melo Neto

6. Mostre os principais modelos de organização interna de um sistema operacional.

Arquitetura de Computadores. Hierarquia de Memória. Prof. Msc. Eduardo Luzeiro Feitosa

Processos. Escalonamento de Processos

EA075 Memória virtual

Grupo I [7 Val] 1. Considere os seguintes 3 algoritmos de escalonamento num sistema operativo de tempo virtual:

Sistemas Operacionais Aula 07: Scheduling da CPU. Ezequiel R. Zorzal

( ) Sistemas de Computação - Unifacs Professor : Marco Antônio C. Câmara - Lista de Exercícios II - Dia 18/10/2009

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 12: MEMÓRIA CACHE: FUNÇÃO DE MAPEAMENTO (PARTE 1)

Unidade III Gerência de Processos

Processos. Escalonamento de Processos

Escalonamento de Processos Uniprocessador

Expoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Processador. Processador

Retrospectiva da aula passada... Escalonamento. Na aula passada... Comunicação entre processos (-- O jantar dos filósofos --)

Processos. Escalonamento de Processos

Processos. Objetivos do Escalonamento. Políticas de Escalonamento. Algoritmos de Escalonamento. Maximizar a taxa de utilização da UCP.

Definição. ? Algoritmo de Escalonamento de CPU. ? Algoritmo do S.O. que determina qual o próximo processo a ocupar a CPU

Lista de Exercícios de INF1019

LEIC/LERC 2010/11 1º Teste de Sistemas Operativos

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Primária. 29/04/2014 Prof. Valeria M. Bastos

Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores Arquitectura de Computadores. 2º sem.

Sistemas Operacionais. Gerência de Processador

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

Gerência de Recursos. Gerência do Processador

Questões de Múltipla escolha

Organização e Arquitetura de Computadores. Ivan Saraiva Silva

Sistemas Operacionais

Escalonamento de Processos

1 Porque o estado de um processo deve ser salvo quando ele deixa a CPU?

SISTEMAS OPERACIONAIS. 1ª. Lista de Exercícios

SSC0611 Arquitetura de Computadores

Memória virtual. Sistemas de Computação

Níveis de memória. Diferentes velocidades de acesso. Memória Cache. Memórias Auxiliar e Auxiliar-Backup

Memória Cache. Memória Cache. Localidade Espacial. Conceito de Localidade. Diferença de velocidade entre Processador/MP

Organização e Arquitetura de Computadores I

É um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.

Gerenciamento de Memória

Sistemas Operacionais

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

Sistemas Operacionais

Processos. Conceitos Básicos

SSC0112 Organização de Computadores Digitais I

1) Enumere e dê exemplo dos tipos de conflitos que podem ocorrer em um pipeline de instruções de um processador.

Sistemas Operacionais Aula 7

TE244 - Sistemas Operacionais Lista Exercícios 1

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

Prof. Silvana Rossetto 9 de julho de DCC/IM/UFRJ

Sistemas de Computação. Gerenciamento de memória

X Y Z A B C D

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Sistemas de Informação. Sistemas Operacionais

Semáforos. Gerenciamento de Recursos I

Arquitetura e Organização de Computadores

/17. Arquitetura de Computadores Subsistemas de Memória Prof. Fred Sauer

Organização de computadores. Prof. Moisés Souto

Sistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução

Fundamentos de Sistemas Operacionais

ENADE 2011 SISTEMAS OPERACIONAIS

Escalonamento do CPU

Memória cache (cont.) Sistemas de Computação

LEIC/LERC 2008/09 Primeiro Teste de Sistemas Operativos

Ar qu it e t u r a a de e Sist e m a s Ope r a cion a is Fa bia n o o Ut iy a m a Ca pít u lo o 8 Ge r ê n cia a do o Pr oce ssa dor

CURSO TÉCNICO EM INFORMÁTICA SISTEMAS OPERACIONAIS II MEMÓRIA VIRTUAL

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS C SISTEMAS OPERATIVOS

SSC510 Arquitetura de Computadores 1ª AULA

Organização e Arquitetura de Computadores I

Sistemas Operacionais II. Linux 2: Threads, Escalonamento, Gerenciamento de Memória e Sistemas de Arquivos

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

Capítulo 8: Memória Principal. Operating System Concepts 8 th Edition

Hierarquia de Memória

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

I. Considere os seguintes processadores A e B, ambos com arquitectura em pipeline, conforme ilustrado

Transcrição:

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação Profa: Simone Martins Gabarito - Lista 2 1 Considere um protótipo de uma máquina, utilizado em um laboratório de ensino de arquitetura de computadores, que possa endereçar 2048 células de memória, sendo que cada célula de memória possui 1 byte Para poder se utilizar uma memória cache, organizou-se a memória principal em blocos de 8 células A memória cache possui 16 linhas, sendo que cada linha pode armazenar um bloco a) Mostre o formato da memória cache, indicando os campos necessários (válido, tag, bloco) e o número de bits para cada campo, e o formato de um endereço da memória principal, indicando os bits que referenciam os campos da cache para os seguintes mapeamentos: 1 Mapeamento direto 2 Mapeamento totalmente associativo 3 Mapeamento associativo por conjunto, onde cada conjunto possui 2 linhas, cada uma de um bloco Considerações gerais: Como a máquina pode endereçar 2048 células de memória e cada endereço acessa uma célula, necessita-se de 11 bits para o endereço Como cada bloco que é transferido entre a memória principal e a cache possui 8 células, temos que os 3 bits menos significativos do endereço serão utilizados para identificar o byte que se quer dentro de um bloco, em qualquer dos mapeamentos Mapeamento direto Neste caso, temos uma linha por conjunto, logo teremos 16 conjuntos Em relação aos bits do endereço, precisamos de 3 bits para indicar o byte dentro do bloco, 4 bits para indicar o conjunto dentro da cache e 4 bits para indicar o rótulo (tag) Endereço 10 0 Rótulo Conjunto Desl 4 4 3 Memória cache: 2 4 conjuntos Válido Rótulo Bloco 0 1 2 3 4 5 6 7 1 bit 4 bits 1 bit 4 bits 1 bit 4 bits 1 bit 4 bits

Mapeamento totalmente associativo Neste caso, temos um único conjunto Logo, em relação aos bits do endereço, precisamos de 3 bits para indicar o byte dentro do bloco e 8 bits para indicar o rótulo (tag) Endereço 10 0 Rótulo Desl 1 conjunto Memória : Válido Rótulo Bloco 0 1 2 3 4 5 6 7 1 bit 8 bits 1 bit 8 bits 1 bit 8 bits 1 bit 8 bits 8 3 Mapeamento associativo por conjunto com 2 linhas por conjunto Neste caso, temos 2 linhas por conjunto, então teremos 16/2=8 conjuntos Logo, em relação aos bits do endereço, precisamos de 3 bits para indicar o byte dentro do bloco, 3 bits para indicar o conjunto dentro da cache e 5 bits para indicar o rótulo (tag) Endereço 10 0 Rótulo Conjunto Desl 5 3 3 Válido Rótulo Bloco 0 1 2 3 4 5 6 7 2 3 conjuntos 1 bit 5 bits 1 bit 5 bits 1 bit 5 bits 1 bit 5 bits b) A máquina foi ligada e a seguinte seqüência de acesso a endereços foi realizada (endereços em decimal): 0,1,6,7,8,9,992,993,994,96,97,0,1,2,8,224,225,1793,1794,98,99 Indique, para cada mapeamento, se o acesso ao endereço causará uma falta (F) ou acerto (A) na memória cache Utilize o algoritmo de substituição de páginas LRU, caso seja necessário

Endereço Mapeamento direto 0 Falta (conteúdo não está na cache) 1 Acerto (veio no bloco quando end 0 foi acessado) 6 Acerto (veio no bloco quando end 0 foi acessado) 7 Acerto (veio no bloco quando end 0 foi acessado) 8 Falta (conteúdo não está na cache) 9 Acerto (veio no bloco quando end 8 foi acessado) 992 Falta (conteúdo não está na cache) 993 Acerto (veio no bloco quando end 992 foi acessado) 994 Acerto (veio no bloco quando end 992 foi acessado) 96 Falta (conteúdo não está na cache e entra na linha que estava o conteúdo dos endereços 992,993,994, 995, 996, 997,998,999) 97 Acerto (veio no bloco quando end 96 foi acessado) 0 Acerto (veio no bloco quando end 0 foi acessado) 1 Acerto (veio no bloco quando end 0 foi acessado) 2 Acerto (veio no bloco quando end 0 foi acessado) 8 Acerto (veio no bloco quando end 8 foi acessado) 224 Falta (conteúdo não está na cache e entra na linha que estava o conteúdo dos endereços 96,97,98, 99, 100, 101,102,103) 225 Acerto (veio no bloco quando end 224 foi acessado) 1793 Falta (conteúdo não está na cache e entra na linha que estava o conteúdo dos endereços 0,1,2,3,4,5,6,7) 1794 Acerto (veio no bloco quando end 1793 foi acessado) 98 Falta (conteúdo não está na cache e entra na linha que estava o conteúdo dos endereços 224,225,226,227,228,229,230,231) 99 Acerto (veio no bloco quando end 98 foi acessado) Endereço Mapeamento associativo por conjunto 0 Falta (conteúdo não está na cache) 1 Acerto (veio no bloco quando end 0 foi acessado) 6 Acerto (veio no bloco quando end 0 foi acessado) 7 Acerto (veio no bloco quando end 0 foi acessado) 8 Falta (conteúdo não está na cache) 9 Acerto (veio no bloco quando end 8 foi acessado) 992 Falta (conteúdo não está na cache) 993 Acerto (veio no bloco quando end 992 foi acessado) 994 Acerto (veio no bloco quando end 992 foi acessado) 96 Falta (conteúdo não está na cache) 97 Acerto (veio no bloco quando end 96 foi acessado) 0 Acerto (veio no bloco quando end 0 foi acessado) 1 Acerto (veio no bloco quando end 0 foi acessado) 2 Acerto (veio no bloco quando end 0 foi acessado) 8 Acerto (veio no bloco quando end 8 foi acessado) 224 Falta (conteúdo não está na cache e entra na linha que estava o conteúdo dos endereços 992,993,994, 995, 996, 997,998,999 pelo algoritmo LRU) 225 Acerto (veio no bloco quando end 224 foi acessado) 1793 Falta (conteúdo não está na cache) 1794 Acerto (veio no bloco quando end 1793 foi acessado) 98 Acerto (veio no bloco quando end 96 foi acessado) 99 Acerto (veio no bloco quando end 96 foi acessado)

Endereço Mapeamento totalmente associativo 0 Falta (conteúdo não está na cache) 1 Acerto (veio no bloco quando end 0 foi acessado) 6 Acerto (veio no bloco quando end 0 foi acessado) 7 Acerto (veio no bloco quando end 0 foi acessado) 8 Falta (conteúdo não está na cache) 9 Acerto (veio no bloco quando end 8 foi acessado) 992 Falta (conteúdo não está na cache) 993 Acerto (veio no bloco quando end 992 foi acessado) 994 Acerto (veio no bloco quando end 992 foi acessado) 96 Falta (conteúdo não está na cache) 97 Acerto (veio no bloco quando end 96 foi acessado) 0 Acerto (veio no bloco quando end 0 foi acessado) 1 Acerto (veio no bloco quando end 0 foi acessado) 2 Acerto (veio no bloco quando end 0 foi acessado) 8 Acerto (veio no bloco quando end 8 foi acessado) 224 Falta (conteúdo não está na cache) 225 Acerto (veio no bloco quando end 224 foi acessado) 1793 Falta (conteúdo não está na cache) 1794 Acerto (veio no bloco quando end 1793 foi acessado) 98 Acerto (veio no bloco quando end 96 foi acessado) 99 Acerto (veio no bloco quando end 96 foi acessado) 2 Considere um processador com um relógio de 1 GHZ e com dois níveis de cache na sua hierarquia de memória As instruções que armazenam dados na memória e as que lêem dados da memória primeiro verificam se a palavra desejada se encontra na memória cache de nível 1 Se a palavra não for encontrada, então procura-se a palavra em uma memória maior denominada de nível 2 Caso a palavra não seja encontrada nesta memória, procura-se a palavra na memória principal Abaixo encontra-se uma tabela com as características das caches: Identificação da memória Taxa de acerto Tempo de acesso quando ocorre acerto Cache nível 1 85 % 2 ns Cache nível 2 90 % 20 ns Memória principal 100 % 200 ns a) Calcule o tempo médio de acesso à memória Taxa de acerto em L1 Tempo de acesso à L1+ Taxa de falta em L1 ((Taxa de acerto em L2 (Tempo de acesso à L1 + Tempo de acesso à L2)) + (Taxa de falta em L2 (Tempo de acesso à L1 + Tempo de acesso à L2 + Tempo de acesso à MP)))=0,85 2 + 0,15 ((0,9 22)+(0,1 222))=1,7 + 0,15 (19,8 + 22,2) = 1,7 + 6,3=8 ns b) Considere a execução de um programa em que 15 % das instruções executadas são de leitura da memória, 10 % para armazenamento na memória e que o número médio de ciclos por instrução para as outras instruções executadas é igual a 2Calcule o número médio de ciclos por segundo (CPI) quando este processador executa este programa Neste caso considere que o tempo gasto para executar instruções de acesso à memória é composto somente pelos tempos de acesso à memória Como o relógio é de 1 GHZ, temos que cada ciclo tem a duração de 1 ns Logo, para as instruções de acesso à memória são utilizados 8 ciclos CPI= 0,25 8 + 0,75 2= 2,0 + 1,5 = 3,5

c) Calcule a aceleração que esta configuração possui em relação a um sistema que não possua a cache de nível 2 Caso não existisse a memória de nível 2, o tempo de acesso médio seria igual a: Taxa de acerto em L1 Tempo de acesso à L1+ Taxa de falta em L1 (Tempo de acesso à L1 + Tempo de acesso à MP) = 0,85 2 + 0,15 202 = 1,7 + 30,3 = 32 ns Logo neste caso serão utilizados 32 ciclos para as instruções que realizam acesso à memória O valor de CPI é igual a 0,25 32 + 0,75 2 = 8 + 1,5 = 9,5 Desempenho com L2/Desempenho sem L2=Tempo de execução sem L2/Tempo de execução com L2= (9,5 Número de instruções Ciclo de relógio)/ (3,5 Número de instruções Ciclo de relógio)= 2,71 Logo a máquina com L2 é 2,72 vezes mais rápida que sem L2 3 Considere a tabela abaixo contendo os tempos de burst de CPU dos processos A, B, C, D e E, o tempo de chegada de cada um e a prioridade a eles associada Processo Tempo de burst de CPU Tempo de chegada Prioridade A 10 0 3 B 1 1 1 C 2 3 3 D 1 5 4 E 5 9 2 a) Desenhe o diagrama de Gantt para mostrar a execução destes processos considerando cada uma das seis políticas de escalonamento: FCFS, SJF sem preempção, SJF com preempção, prioridade sem preempção (valor menor de Prioridade indica maior prioridade), prioridade com preempção e RR com quantum igual 1 A B C D E FCFS 10 11 13 14 19 A B D C E 10 11 12 14 19 SJF sem preemp A B A C D A A E 1 2 3 5 6 9 14 19 SJF com preemp A B E C D 10 11 16 18 19 A B A E A C D 1 2 9 14 16 18 19 Prior sem preemp Prior com preemp A B A C A C D A A E A E A E A E A E A RR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

b) Calcule o tempo de turnaround de cada processo para cada uma das políticas de escalonamento do item a Processo FCFS SJF s/ preemp SJF c/ preemp Prior s/ preemp Prior c/ preemp RR A 10 10 14 10 16 19 B 10 10 1 10 1 1 C 10 11 2 15 15 3 D 9 7 1 14 14 2 E 10 10 10 7 5 9 c) Calcule o tempo de espera de cada processo para cada uma das políticas de escalonamento do item a Processo FCFS SJF s/ preemp SJF c/ preemp Prior s/ preemp Prior c/ preemp RR A 0 0 4 0 6 9 B 9 9 0 9 0 0 C 8 9 0 13 13 1 D 8 6 0 13 13 1 E 5 5 5 2 0 4 d) Mostre qual das estratégias do item a fornece o menor tempo de espera médio FCFS=(0+9+8+8+5)/5=6 SJF sem preempção=(0+9+9+6+5)/5=5,8 SJF com preempção=(4+0+0+0+5)/5=1,8 Prior sem preempção=(0+9+13+13+2)/5=7,4 Prior com preempção=(6+0+13+13+0)/5=6,4 RR=(9+0+1+1+4)/5=3 Logo SJF com preempção fornece o menor tempo de espera médio 4 Considere que 3 processos chegaram no tempo 0 no sistema na seguinte ordem:1,2 e 3 O processo 1 e 2 são constituídos de um único burst de CPU com duração de 30 e 20 unidades de tempo, respectivamente O processo 3 possui 5 bursts de CPU de 2 unidades de tempo cada um e 5 bursts de I/O de 1 unidade de tempo cada um, sendo que os bursts de CPU e I/O são intercalados, ou seja, no tempo 0 o processo 3 necessita de um burst de CPU, depois ele precisa de um burst de I/O, depois de CPU, em seguida de I/O e assim por diante Mostre o diagrama de Gantt e calcule os tempos de espera e de turn-around para cada processo e tempos médios para os seguintes escalonamentos: a RR com quantum=1 b Sistema de duas filas (F1 e F2) com realimentação com as seguintes características: O escalonamento da fila F1 é RR com quantum=2 O escalonamento da fila F2 é RR com quantum =4 O escalonamento entre filas é preemptivo com prioridade sendo que os processos da fila F1 têm maior prioridade que os processos da fila F2 Os processos entram no sistema na fila de maior prioridade Quando a fatia de tempo de um processo expira e ele está na fila F1, ele passa para a fila F2 Quando a fatia de tempo de um processo expira e ele está na fila F2, ele volta para a fila F2 Quando a fatia de tempo dada a um processo não é utilizada totalmente, o processo tem sua prioridade aumentada de 1 nível

Observação: Considere que, se em um mesmo determinado instante de tempo, dois processos vão para a fila de prontos, sendo que um vem de uma operação de I/O e outro vem da CPU porque a fatia de tempo expirou, o processo que veio da operação de I/O fica na frente do processo que veio da CPU a Round-Robin com q=1 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 0 30 50 1 1 1 1 1 1 1 1 1 1 Processo 50 60 Tempo de Turnaround Tempo de espera 1 60 30 2 50 30 3 31 16 Tempo de turn-around médio=(60+50+31)/3=47 Tempo de espera médio = (30+30+16)/3=25,3 b Sistemas de duas filas 1 2 3 1 3 2 3 1 3 2 3 1 2 1 2 1 2 1 2 0 2 4 6 7 9 10 12 13 15 16 18 22 26 30 34 38 42 46 50 1 50 60 Processo Tempo de Tempo de espera Turnaround 1 60 30 2 50 30 3 19 4 Tempo de turn-around médio=(60+50+19)/3=43 Tempo de espera médio = (30+30+4)/3=21,3 5 Considere o problema da barbearia com o seguinte cenário Existe uma sala de espera com 5 cadeiras e um barbeiro para atender os clientes Se um cliente entra na barbearia e não existe cadeira vazia, ele vai embora Se o barbeiro está ocupado, mas existe cadeira vazia, o cliente fica esperando para ser atendido O barbeiro fica atendendo os clientes e se não tiver clientes para atender, ele fica parado esperando O seguinte código utilizando semáforos foi gerado para resolver este problema:

const cadeiras 5 int esperando init 0 semaphore clientes init 0 semaphore barbeiro init 0 semaphore mutex init 1 1 barbproc: process 2 while true do 3 WAIT(clientes); 4 WAIT(mutex); 5 esperando := esperando-1; 6 SIGNAL(barbeiro); 7 SIGNAL(mutex); 8 {corta o cabelo}; 9 endwhile; 10 endprocess; 11 clproc: process 12 WAIT(mutex); 13 if (esperando < cadeiras) then 14 esperando := esperando+1; 15 SIGNAL(clientes); 16 SIGNAL(mutex); 17 WAIT(barbeiro); 18 {cabelo é cortado} 19 else 20 SIGNAL(mutex); 21 endif; 22 endprocess; a) Caso somente as linhas 3 e 4 do código acima sejam trocadas uma pela outra, haverá alguma mudança na execução do programa? Se existir alguma mudança, descreva um cenário específico que mostre esta mudança de forma evidente Neste caso poderá ocorrer deadlock Considere o seguinte cenário O processo barbproc executa wait(mutex) Como mutex é inicializado com 1, este processo o colocará em 0 e executará a linha seguinte wait(clientes) Como o semáforo clientes é inicializado com 0, o processo barbproc ficará aguardando por este semáforo O processo clproc ao entrar em execução, irá executar wait(mutex) Mas o valor do semáforo mutex é 0, então este processo (e quaisquer outros processos clproc) ficará aguardando este semáforo Como o processo barbproc está esperando pelo semáforo clientes que só pode ser liberado por um processo clproc que está aguardando pela liberação do semáforo mutex que só pode ser liberado pelo processo barbproc, teremos um deadlock b) Se as linhas 6 e 7 forem trocadas uma pela outra, haverá mudança na execução do programa? Em caso positivo, mostre uma situação para a qual esta mudança seja evidente Não haverá mudança na execução do programa, porque as operações de signal não bloqueiam a execução do processo barbproc e como as duas operações signal serão executadas pelo processo barbproc (só que em ordem diferente) algum processo clproc será desbloqueado e não haverá deadlock

6 Considere um sistema de memória virtual com as seguintes propriedades: Podem-se endereçar 256 T bytes de memória virtual, sendo que cada endereço endereça 1 byte Páginas de 16Mbytes Pode-se endereçar 4G bytes de memória virtual, sendo que cada endereço endereça 1 byte a) Qual o tamanho total da tabela de páginas de cada processo para esta máquina, assumindo-se que utilizam-se 4 bits (válido, proteção, dirty, uso) para controle de cada página e que todas as páginas virtuais podem ser utilizadas pelo processo? Como podemos endereçar 256 T bytes = 2 48 o endereço virtual contém 48 bits Como as páginas têm 2 24 bytes, teremos 2 48 /2 24 =2 24 páginas lógicas e, portanto 2 24 entradas na tabela de páginas Cada entrada na tabela de páginas precisa de 4 bits adicionados do número de bits para indicar o início do frame Como são utilizados 32 bits para o endereço físico (log 2 2 32 ) e o tamanho do frame é o mesmo que o tamanho da página 2 24,utilizam-se 8 bits para indicar o endereço inicial do frame Logo para cada entrada da tabela de páginas serão necessários 12 bits e o tamanho da tabela de páginas será 2 24 12= 192 Mbits Uma representação gráfica é mostrada abaixo: Endereço Virtual 24 Número da página 24 = 48 bits Deslocamento Tabela de páginas 2 24 entradas VPDU EF 4 bits 8 bits Endereço Físico da Página Deslocamento 12 bits Endereço Físico 8 24 = 32 bits Para Memória b) Assuma que o sistema de memória virtual descrito no enunciado seja implementado com uma TLB associativa por conjunto com 4 linhas por conjunto totalizando 512 conjuntos Mostre como é realizado o mapeamento do endereço lógico para físico neste esquema Com páginas de 16MB, os 24 bits menos significativos do endereço virtual são utilizados para especificar o deslocamento Com uma TLB associativa por conjuntos de 4 linhas com 512 conjuntos, teremos 512 índices de conjuntos Então, os próximos 9 bits de cada endereço virtual são utilizados para indexar a TLB Como cada endereço virtual tem 48 bits, 48-24-9=15 bits são utilizados para o

rótulo Cada entrada associada a um rótulo provê os 8 bits do endereço físico do início da página, como discutido anteriormente Uma representação gráfica é dada a seguir: 15 9 24 = 48 bits Endereço Virtual Conjunto[0] Rótulo Índice Deslocamento Conjunto[1] Conjunto[2] Conjunto[511] VPDU Rótulo EF 4 bits 15 bits 8 bits VPDU Rótulo EF 4 bits 15 bits 8 bits VPDU Rótulo EF 4 bits 15 bits 8 bits VPDU Rótulo EF 4 bits 15 bits 8 bits = = = = MUX Endereço Físico da Página Deslocamento 8 24 = 32 bits Endereço Físico Para Memória