Вы находитесь на странице: 1из 24

CAPÍTULO 6: FERRAMENTAS DE SINCRONIZAÇÃO

1.Desativar as interrupções com frequência pode afetar o relógio do sistema. Explique


porque isso pode ocorrer e como esses efeitos podem ser minimizados.

Resposta:
O relógio do sistema é atualizado sempre que é interrompido. Se as interrupções
forem desabilitadas particularmente por um longo período de tempo , é possível que
o relógio do sistema possa perder a hora certa facilmente. O relógio do sistema
também é utilizado para fins de scheduling. Por exemplo, o quantum de tempo de
um processo é expresso por um número de tiques do relógio. A cada interrupção do
relógio, o scheduler determina se o quantum de tempo do processo em execução
corrente expirou. Se as interrupções do relógio forem desabilitadas, o scheduler não
poderá atribuir, com precisão, os quanta de tempo. Esse efeito pode ser minimizado
desabilitando as interrupções do relógio somente por períodos muito curtos.

2. Qual é o significado do termo espera ocupado? Que outros tipos de espera existem em
um sistema operacional? A espera ocupada pode ser evitada completamente? Explique
sua resposta.

Resposta: significa que um processo esta a espera que uma condição seja satisfeita
em um loop restrito, sem abandonar o processador. Existem outros exemplos de
espera ocupada em um sistema operacional: esperar até que a E/S esteja disponível,
esperar até que um semáforo seja liberado etc. Sim,a espera ocupada pode ser
evitada por meio de uma primitiva de sincronismo, como um mutex, semáforo ou
variável de condição.

3. Explique por que os spinlocks não são apropriados para sistemas com um único
processador, mas são frequentemente usados em sistemas com multiprocessadores.

Resposta: Em sistemas monoprocessados, os spinlocks são desperdícios de recursos


do processador, pois um processo exige o uso da única CPU enquanto espera por um
evento externo. Se o processo não abandonar a CPU outros processos não terama
oportunidade de se posicionar a condição de programa requerida ao primeiro
processo avançar. Em sistema multiprocessador os processos são executados
noutros processadores e ,portanto, modificam o estado do programa para liberar o
primeiro processo do spinlock.
4. Mostre que, se as operações do semáforo wait () e signal () não forem executadas

atomicamente, a exclusão mútua poderá ser violada.

Resposta: A operação wait decrementa atomicamente o valor associado a um


semáforo. Se duas operações wait forem executadas em um semáforo quando o seu
valor for 1, se as duas operações não forem executadas atomicamente, é possível que
ambas decrementem o valor do semáforo, violando assim a lei da exclusão mutua.

5. Ilustre como um semáforo binário pode ser usado para implementar exclusão mútua
entre n processos.

Resposta: Os n processos compartilham um semáforo,mutex inicializado com 1.


Cada processo é organizado como mostrado a seguir:

do {

wait(mutex);

/* seccao critica */

Signal(mutex);

/* secao restante */

}while(true);

CAPÍTULO 9: GESTÃO DA MEMÓRIA PRINCIPAL

33. Nomeie duas diferenças entre endereços lógicos e físicos.

Resposta: Um endereço lógico não se refere a um endereço existente real, mas se


refere a um endereço abstrato em um espaço de endereço lógico, endereço físico que
se refere a um endereço físico real na memória.

Um endereço lógico é gerado pela CPU, os endereços físicos são gerados pela MMU.

34. Por que os tamanhos de página são sempre potências de 2?

Resposta: Porque cada posição de bit representa uma potencia de base 2, e a divisão
do endereço em bits resulta em tamanho de paginas que é uma potencia de 2.
35. Considere um sistema no qual um programa pode ser separado em duas partes: código
e dados. A CPU sabe se quer uma instrução (busca de instruções) ou dados (busca de
dados ou armazenamento). Portanto, dois pares de registradores limite_base são
fornecidos: um para instruções e outro para dados. O par de registradores de limite_base
de instrução é automaticamente somente de leitura, portanto, os programas podem ser
compartilhados entre diferentes usuários. Discuta as vantagens e desvantagens deste
esquema.

Resposta: A principal vantagem desse esquema é que ele é um mecanismo efetivo de


compartilhamento de codigo e de dados, outra vantagem é a proteção do código
contra alterações erradas. A única desvantagem é que o código e os dados devem ser
separados, o que usualmente é anexado ao código gerado pelo compilador.\

36. Considere um espaço de endereçamento lógico de 64 páginas de 1.024 palavras cada,


mapeado em uma memória física de 32 quadros.

a) Quantos bits existem no endereço lógico?


b) Quantos bits existem no endereço físico?

Resposta:

a. Endereço lógico: 16 bits.


b. Endereço físico: 15 bits.

37. Qual é o efeito de permitir que duas entradas em uma tabela de páginas apontem para
o mesmo quadro de página na memória? Explique como esse efeito pode ser usado para
diminuir o tempo necessário para copiar uma grande quantidade de memória de um lugar
para outro. Qual efeito ao atualizar algum byte em uma página na outra página?

Resposta: Permitindo que duas entradas em uma tabela de página apontem para o
mesmo quadro de página na memória, os usuários podem compartilhar código e
dados. Se o código for reentrante, pode ser economizado muito espaço na memória
através do uso compartilhado de grandes programas, como editores de texto,
compiladores e sistemas de banco de dados. A “cópia” de grandes quantidades de
memória poderia ser efetuada por meio de diferentes tabelas de página apontando
para o mesmo local da memória. Porém, o compartilhamento de código reentrante
ou dados significa que qualquer usuário tendo acesso ao código poderá modificá-lo,
e essas modificações seriam refletidas na “cópia” do outro usuário.
38. Com base em seis partições de memória de 300 KB, 600 KB, 350 KB, 200 KB, 750
KB e 125 KB (em ordem), como os algoritmos de primeiro ajuste, melhor ajuste e pior
ajuste colocam processos de tamanho 115 KB, 500 KB, 358 KB, 200 KB e 375 KB (em
ordem)?

Resposta: Primeiro ajuste

115KB na partição 300KB

500KB na partição 600KB

358KB na partição 750KB

200KB na partição 392KB(nova partição de 750KB-358KB=392KB)

375KB precisa esperar

Melhor ajuste

115KB na partição 125KB

500KB na partição 600KB

200KB na partição 200KB

375KB na partição 750KB

358KB na partição 375KB (nova partição 750KB- 375KB=375KB )

43. Explique a diferença entre fragmentação interna e externa.

Resposta: A fragmentação interna é a área em uma região ou em uma página que


não é usada pela tarefa ocupando essa região ou página. Esse espaço está
indisponível para uso pelo sistema até que essa tarefa tenha terminado e a página ou
região seja liberada.

57. Considere um sistema de paginação com a tabela de páginas armazenada na memória.

a) Se uma referência de memória demora 50 nanossegundos, quanto tempo demora


uma referência de memória paginada?
b) Se adicionarmos TLBs e se 75% de todas as referências de tabela de páginas forem
encontradas nos TLBs, qual é o tempo efetivo de referência da memória?
(Suponha que encontrar uma entrada de tabela de páginas nos TLBs leve 2
nanossegundos, se a entrada estiver presente.)

Resposta: a. 100 nanossegundos; 50 nanossegundos para acessar a tabela de página


e 50 nanossegundos para acessar a palavra na memória.

b. Tempo de acesso efetivo = 0,75 × (50 nanossegundos) + 0,25 × (100 nanossegundos)


= 62,5 nanossegundos.

CAPÍTULO 10: GESTÃO DE MEMÓRIA VIRTUAL

60. Sob que circunstâncias ocorrem falhas de página? Descreva as ações tomadas pelo
sistema operacional quando ocorre uma falha de página.

Resposta: 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.

61. Suponha que você tenha uma string de referência de página para um processo com m
frames (inicialmente todos vazios). A cadeia de referência da página tem comprimento p
e n números de página distintos ocorrem nela. Responda estas perguntas para qualquer
algoritmo de substituição de página:

a) O que é um limite inferior no número de falhas de página?


b) O que é um limite superior no número de falhas de página?

Resposta:

a) n
b) p

62. Considere os seguintes algoritmos de substituição de página. Classifique esses


algoritmos em uma escala de cinco pontos de “ruim” a “perfeito” de acordo com sua taxa
de falha de página. Separe os algoritmos que sofrem com a anomalia de Belady daqueles
que não sofrem.

a) Substituição de LRU
b) Substituição FIFO
c) Substituição ideal
d) Substituição de segunda chance

Resposta:

Ordem algoritmo sofre anomalia de belady

1 Ideal Não

2 LRU Não

3 Segunda Chance Sim

4 FIFO Sim

63. Um sistema operacional suporta uma memória virtual paginada. O processador central
tem um tempo de ciclo de 1 microssegundo. Custa 1 microssegundo adicional para
acessar uma página diferente da atual. 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 seguintes medidas estatísticas foram obtidas do sistema:

 Um por cento de todas as instruções executadas acessaram a página diferente da


página atual.
 Das instruções que acessaram outra página, 80% acessaram uma página já na
memória.
 Quando uma nova página foi solicitada, a página substituída foi modificada
50 por cento do tempo.

Calcule o tempo efetivo de instrução neste sistema, supondo que o sistema esteja
executando apenas um processo e que o processador esteja inativo durante as
transferências de tambor.
Resposta:

tempo de acesso efetivo = 0,99 × (1 µsec + 0,008 × (2 µsec) + 0,002 × (10.000 µsec
+1.000 µsec) + 0,001 × (10.000 µsec + 1.000 µsec)

= (0,99 + 0,016 + 22,0 + 11,0) µsec

= 34,0 µsec

64. Considere a tabela de páginas de um sistema com endereços físicos e virtuais de 12


bits e páginas de 256 bytes.

A lista de quadros de páginas livres é D, E, F (isto é, D está no topo da lista, E é o segundo


e F é o último). Um traço para um quadro de página indica que a página não está na
memória.

Converta os seguintes endereços virtuais em seus endereços físicos equivalentes em


hexadecimal. Todos os números são dados em hexadecimal.

 9EF
 111
 700
 0FF

Resposta:

9EF-0EF

111-211

700-D00
0FF-EFF

65. Discuta as funções de hardware necessárias para suportar a paginação por demanda.

Resposta:

Para cada operacao de acesso a memoria,a tabelade pagina precisa ser consultada
para verificar se a pagina correspondente é residente o não, e se o programa te
previlegios de leitura ou gravacao para acessar a pagina.

Essa verificacoes tem de ser executadas em hardware.

Um TLB poderia servir como cache e melhorar o desempenho de operacao de


pesquisa

65. Considere o array bidimensional A:

int A[ ][ ] = new int[100][100];

onde A[0][0] é armazenado no local 200 de um sistema de memória paginada, com


páginas de tamanho 200. Um pequeno processo reside na página 0 (locais 0 a 199) para
manipular a matriz A; assim, cada busca de instrução será a partir da página 0.

Para três quadros de página, indique quantas falhas de página são geradas pelos loops de
inicialização de array a seguir. Use a substituição LRU e considere que o quadro de página
1 tem o processo nele e os outros dois estão inicialmente vazios:

a). for (int j = 0; j < 100; j++)

for (int i = 0; i < 100; i++)

A[i][j] = 0;

b). for (int i = 0; i < 100; i++)

for (int j = 0; j < 100; j++)

A[i][j] = 0;

Resposta:

a) 5.000
b) 50

67. Considere a seguinte string de referência da página:


1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6.

Quantas falhas de página ocorreriam nos seguintes algoritmos de substituição, assumindo


um, dois, três, quatro, cinco, seis e sete quadros? Lembre-se de que todos os quadros estão
inicialmente vazios, portanto, suas primeiras páginas únicas custarão uma falha cada.

 substituição de LRU
 substituição FIFO
 Substituição ideal

Resposta:

Numero de quadros 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

69. Suponha que você deseje usar um algoritmo de paginação que exija um bit de
referência (como substituição de segunda chance ou modelo de conjunto de trabalho),
mas o hardware não fornece um. Esboce como você pode simular um bit de referência,
mesmo que não seja fornecido pelo hardware, ou explique por que não é possível fazê-lo.
Se for possível, calcule qual seria o custo.

Resposta:

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.
70. Você criou um novo algoritmo de substituição de página que você acha que pode ser
ideal. Em alguns casos de teste contorcidos, a anomalia de Belady ocorre. O novo
algoritmo é ideal? Explique sua resposta.

Resposta:

Não. Um algoritmo ideal não sofrerá da anomalia de Belady porque, por definição,
um algoritmo 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.

71. A segmentação é semelhante à paginação, mas usa “páginas” de tamanho variável.

Define dois algoritmos de substituição de segmento, um baseado no esquema de


substituição de página FIFO e outro no esquema de substituição de página LRU. Lembre-
se de que, como os segmentos não são do mesmo tamanho, o segmento escolhido para
substituição pode ser muito pequeno para deixar localizações consecutivas para o
segmento necessário. Considere estratégias para sistemas nos quais segmentos não podem
ser realocados e estratégias para sistemas onde eles podem.

Resposta:

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 uma combinaçã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
suficientemente grandes para o segmento que entra fiquem contíguos na memoria.
Adicione qualquer espaço restante a lista de espaços livres em ambos os 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.
72. Considere um sistema de computador paginado por demanda, onde o grau de
multiprogramação está atualmente fixado em quatro. O sistema foi medido recentemente
para determinar a utilização da CPU e do disco de paginação. Três resultados alternativos
são mostrados abaixo. Para cada caso, o que está acontecendo? O grau de
multiprogramação pode ser aumentado para aumentar a utilização da CPU? A paginação
está ajudando?

a) Utilização de CPU 13 por cento; utilização de disco 97 por cento


b) Utilização de CPU 87 por cento; utilização de disco 3 por cento
c) Utilização de CPU 13 por cento; utilização de disco 3 por cento

Resposta:

a) Está ocorrendo o thrashing.


b) A utilização de CPU é suficientemente alta para deixar as coisas como estão,
um grau maior de multiprogramação.
c) Aumente o grau de multiprogramação.

73. Temos um sistema operacional para uma máquina que usa registros de base e limite,
mas modificamos a máquina para fornecer uma tabela de páginas. A tabela de páginas
pode ser configurada para simular registros de base e limite? Como pode ser, ou por que
não pode ser?

Resposta:

A tabela de página pode ser configurada para simular os registradores de base e


limite desde 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.

95. Um algoritmo de substituição de página deve minimizar o número de falhas de página.


Podemos conseguir essa minimização distribuindo páginas pesadamente usadas
uniformemente em toda a memória, em vez de fazê-las competir por um pequeno número
de quadros de página. Podemos associar a cada quadro de página um contador do número
de páginas associadas a esse quadro. Em seguida, para substituir uma página, podemos
procurar o quadro de página com o menor contador.
a) Defina um algoritmo de substituição de página usando essa ideia básica.
Especificamente, resolva estes problemas:
 Qual é o valor inicial dos compradores?
 Quando aumentam os custos?
 Quando os preços diminuem?
 Como os pixels são preenchidos?
b) Quantas falhas de página ocorrem para o seu algoritmo para a seguinte sequência
de referência com quatro quadros de página?

1, 2, 3, 4, 5, 3, 4, 1, 6, 7, 8, 7, 8, 9, 7, 8, 9, 5, 4, 5, 4, 2.

c) Qual é o número mínimo de falhas de página para uma estratégia de substituição


de página ideal para a cadeia de referência na parte b com quatro quadros de
página?

Resposta:

a) 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) 14 falhas de página.
c) 11 falhas de página.

96. Considere um sistema de paginação por demanda com um disco de paginação que
tenha um tempo médio de acesso e transferência de 20 milissegundos. Os endereços são
traduzidos através de uma tabela de páginas na memória principal, com um tempo de
acesso de 1 microssegundo por acesso à memória. Assim, cada referência de memória
através da tabela de páginas recebe 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 estejam na memória associativa e que, dos restantes, 10%
(ou 2% do total) causem falhas de página. Qual é o tempo efetivo de acesso à memória?

Resposta:

tempo efetivo de acesso = (0,8) × (1 µsec) + (0,1) × (2 µsec) + (0,1) × (5002 µsec)

= 501,2 µsec

= 0,5 milissegundos

CAPÍTULO 11: SISTEMAS DE ARMAZENAMENTO EM MASSA

105.O agendamento de disco, além do agendamento do FCFS, é útil em um ambiente de


usuário único? Explique sua resposta.

Resposta:

Em um ambiente monousuario, a fila de E/S usualmente esta vazia. As solicitações


geralmente chegam de um único processo para um bloco ou para uma sequencia de
blocos consecutivos. Nesses casos, FCFS é um método económico para o scheduling
de disco. Mas o LOOK é quase tao fácil de programar e oferecera um desempenho
muito melhor quando múltiplos processos estiverem executando E/S concorrente,
tal como quando um navegador web recupera os dados em background enquanto o
sistema operacional esta paginando e outra aplicação esta ativa em foreground.

106.Explicar porque o escalonamento do SSTF tende a favorecer os cilindros


intermediários sobre os cilindros mais internos e mais externos.

Resposta:

O centro do disco é o local que possui a menor distância média para todas as outras
trilhas. Assim, a cabeça do disco costuma se mover para fora das bordas do disco.
Aqui está outra maneira de pensar nisso. O local atual da cabeça divide os cilindros
em dois grupos. Se a cabeça não estiver no centro do disco e chegar uma nova
requisição, a nova requisição provavelmente estará no grupo que inclui o centro do
disco; assim, a cabeça provavelmente se moverá nessa direção.

107.Por que a latência rotacional geralmente não é considerada no agendamento de disco?


Como você modificaria o SSTF, o SCAN e o C-SCAN para incluir a otimização de
latência?

Resposta:

A maioria dos discos não exporta suas informações de posição rotacional para o host.
Mesmo que o fizessem, o tempo para essa informação chegar ao escalonador estaria
sujeito a imprecisão e o tempo consumido pelo escalonador é variável, de modo que
a informação de posição rotacional estaria incorreta. Além do mais, as requisições
de disco normalmente são dadas em termos de números de bloco lógicos, e o
mapeamento entre os blocos lógicos e os locais físicos é muito complexo.

108.Por que é importante equilibrar a E / S do sistema de arquivos entre os discos e


controladores de um sistema em um ambiente multitarefa?

Resposta:

Um sistema só pode trabalhar na velocidade do seu gargalo mais lento. Os discos ou


os controladores de disco constantemente são o gargalo nos sistemas modernos, pois
seu desempenho individual não pode acompanhar o desempenho da CPU e do
barramento do sistema. Balanceando a E/S entre discos e controladores, nem um
disco individual, nem um controlador é sobrecarregado, de modo que o gargalo é
evitado.

109.Quais são as compensações envolvidas na releitura de páginas de código do sistema


de arquivos versus o uso de espaço de troca para armazená-las?

Resposta:

Se as páginas de código forem armazenadas na área de swap, elas podem ser


transferidas mais rapidamente para a memória principal (pois a alocação da área
de swap é ajustada para desempenho mais rápido do que alocação geral do sistema
de arquivos). O uso da área de swap pode consumir tempo na inicialização se as
páginas foram copiadas para lá na chamada do processo, em vez de serem paginadas
para a área de swap por demanda. Além disso, mais espaço de swap deverá ser
alocado se ele for usado para páginas de código e de dados.

110.Existe alguma maneira de implementar um armazenamento verdadeiramente estável?

Explique sua resposta.


Resposta:

O armazenamento verdadeiramente estável nunca perde dados. A técnica


fundamental para o armazenamento estável é manter várias cópias dos dados, de
modo que, se uma cópia for destruída, alguma outra cópia ainda esteja disponível
para uso. Mas, para qualquer esquema, podemos imaginar um desastre grande o
suficiente, que destruirá todas as cópias.

111.Às vezes é dito que a fita é um meio de acesso sequencial, enquanto que um disco
rígido é um meio de acesso aleatório. Na verdade, a adequação de um dispositivo de
armazenamento para acesso aleatório depende do tamanho da transferência. O termo taxa
de transferência de fluxo indica a taxa de transferência de dados em andamento, excluindo
o efeito da latência de acesso. Em contraste, a taxa de transferência efetiva é a relação
entre o total de bytes e o total de segundos, incluindo o tempo de atraso, como a latência
de acesso.

Suponha que tenhamos um computador com as seguintes características: o cache de nível


2 tem uma latência de acesso de 8 nanossegundos e uma taxa de transferência de 800
megabytes por segundo, a memória principal tem uma latência de acesso de 60
nanossegundos e uma taxa de transferência de 80 megabytes por segundo, o disco rígido
tem uma latência de acesso de 15 milisegundos e uma taxa de transferência de fluxo de 5
megabytes por segundo, e uma unidade de fita tem uma latência de acesso de 60 segundos
e uma taxa de transferência de fluxo de 2 megabytes por segundo.

a. O acesso aleatório faz com que a taxa de transferência efetiva de um dispositivo


diminua, porque nenhum dado é transferido durante o tempo de acesso. Para o
disco descrito, qual é a taxa de transferência efetiva se acesso médio é seguido por
uma transferência de fluxo de (1) 512 bytes, (2) 8 kilobytes, (3) 1 megabyte e (4)
16 megabytes?
b. A utilização de um dispositivo é a relação entre a taxa de transferência efetiva e
a taxa de transferência de fluxo contínuo. Calcule a utilização da unidade de disco
para cada um dos quatro tamanhos de transferência fornecidos na parte a.
c. Suponha que uma utilização de 25% (ou mais) seja considerada aceitável. Usando
os dados de desempenho fornecidos, calcule o menor tamanho de transferência
para um disco que forneça uma utilização aceitável.
d. Complete a seguinte sentença: Um disco é um dispositivo de acesso aleatório
para transferências maiores que bytes e é um dispositivo de acesso sequencial
para transferências menores.
e. Calcule os tamanhos mínimos de transferência que fornecem uma utilização
aceitável para cache, memória e fita.
f. Quando é uma fita um dispositivo de acesso aleatório e quando é um dispositivo
de acesso sequencial?

Resposta:

a. Para 512 bytes, a taxa efetiva de transferência (TET) é calculada da forma a


seguir.
TET = volume de transferência/tempo de transferência.

Se X é o volume de transferência, então o tempo de transferência será de ((X / TDET


(taxa de escoamento da transferência) )+ latência).

O tempo de transferência é de 15ms + (512B/5MB por segundo) = 15,0097ms.

A taxa efetiva de transferência é, portanto,

512B/15,0097ms = 33,12 KB/s.

TET para 8 KB =0,47 MB/s.

TET para 1 MB = 4,65 MB/s.

TET para 16 MB = 4,98 MB/s.

a. Utilização do dispositivo para 512 B = 33,12 KB/s / 5 MB/s = 0,0064 = 0,64.

Para 8 KB = 9,4%.

Para 1 MB = 93%.

Para 16 MB = 99,6%.

b. Calcule 0,25 = TET/TDET, para o volume de transferência X.


TDET = 5MB; assim, 1,25MB/s = TET.

1,25MB/s * ((X/5) + 0,015) = X.

0,25X + 0,01875 = X.

X = 0,025MB.

c. Um disco é um dispositivo de acesso aleatório para transferências maiores do


que K bytes (em que K > tamanho do bloco do disco), e é um dispositivo de
acesso sequencial para transferências menores.

d. Calcule o volume de transferência mínimo para a utilização aceitável da


memória do cache.

TDET = 800 MB, TET = 200, latência = 8 * 10-9.

200 (XMB/800 + 8x10-9) = XMB.

0,25XMB +1600 * 10-9 = XMB.

X =2,24 bytes.

Calcule para a memória:

TET = 80 MB, TTE = 20, L = 60 * 10-9.

20 (XMB/80 + 60 * 10-9) = XMB.

0,25XMB + 1200 * 10-9 = XMB.

X = 1,68 bytes.

Calcule para fita:

TDET = 2 MB, TET = 0,5 L = 60s.

0,5 (XMB/2 + 60) = XMB.

0,25XMB + 30 = XMB.

X = 40MB.
e. Depende de como ela está sendo utilizada. Suponha que estamos utilizando a
fita para restaurar um backup. Nessa instância, uma fita atua como um
dispositivo de acesso sequencial em que estamos lendo sequencialmente o
conteúdo da fita. Como outro exemplo, suponha que estamos utilizando a fita
para acessar uma variedade de registros nela armazenados. Nessa instância,
o acesso à fita é arbitrário e, portanto, considerado aleatório.

112.Uma organização RAID nível 1 poderia obter melhor desempenho para solicitações
de leitura do que uma organização RAID nível 0 (com distribuição não redundante de
dados)? Se sim, como?

Resposta:

Sim, uma organização RAID nível 1 poderia obter um desempenho melhor para
solicitações de leitura. Quando uma operação de leitura é executada, um sistema
RAID nível 1 pode decidir qual das duas cópias do bloco deve ser acessada para
atender a solicitação. Essa opção poderia ser baseada na locação corrente do
cabeçote do disco e, portanto, resultar em otimizações no desempenho pela seleção
de um cabeçote mais próximo dos dados desejados.

CAPÍTULO 12: SISTEMA DE DISPOSETIVOS DE ENTRADA E SAÍDA

131.Indique três vantagens de colocar a funcionalidade em um controlador de dispositivo,


em vez de no kernel. Afirme três desvantagens.

Resposta:

Três vantagens:

a. Há menos probabilidade de os bugs causarem uma queda do sistema


operacional.
b. O desempenho pode ser aumentado pela utilização de hardware
dedicado e algoritmos incluídos no código fonte.
c. O kernel é simplificado pela movimentação dos algoritmos para fora
dele.
Três desvantagens:

d. Os bugs são mais difíceis de corrigir é necessária uma nova versão


firmware ou um novo hardware.
e. A melhoria dos algoritmos requer do mesmo modo uma atualização
do hardware, em vez de apenas uma atualização do kernel ou do
driver de dispositivo.
f. Algoritmos embutidos podem conflitar com o uso do dispositivo da
aplicação, causando degradação de desempenho.

132.O exemplo de handshaking usou dois bits: um bit ocupado e um bit pronto para o
comando. É possível implementar esse handshaking com apenas um bit? Se for, descreva
o protocolo. Se não for, explique por que um bit é insuficiente.

Resposta:

É possível, utilizando o algoritmo a seguir. Vamos supor que simplesmente


utilizemos o bit ocupado (ou o bit de comando pronto; essa resposta é a mesma, de
qualquer maneira). Quando o bit está desligado, o controlador está ocioso. O
hospedeiro grava dados de saída e posiciona o bit para indicar que uma operação
está pronta (o equivalente ao posicionamento do bit de comando pronto). Quando o
controlador tiver terminado, ele desliga o bit ocupado. O hospedeiro inicia, então, a
próxima operação. Essa solução requer que tanto o hospedeiro quanto o controlador
tenham acesso de leitura e gravação para o mesmo bit, o que pode complicar o
sistema de circuitos e aumentar o custo do controlador

133.Por que um sistema pode usar E / S acionadas por interrupções para gerenciar uma
única porta serial e fazer polling de E / S para gerenciar um processador front-end, como
um concentrador de terminal?

Resposta:

O I/O com inquirição pode ser mais eficiente do que o I/O dirigido por interrupções.
Esse é o caso, quando o I/O é frequente e de curta duração. Mesmo que uma única
porta serial execute I/O com relativa infrequência, podendo, assim, utilizar
interrupções, uma coleção de portas seriais, como as de um concentrador de
terminais, pode produzir muitas operações de I/O curtas, e a interrupção de cada
uma dessas operações poderia gerar uma carga pesada sobre o sistema. Um bem
cadenciado loop de inquirições poderia aliviar essa carga sem desperdiçar muitos
recursos por meio da execução do loop sem necessidade de I/O.

134.A busca por uma conclusão de E / S pode desperdiçar um grande número de ciclos
de CPU se o processador repetir um loop de espera ocupada muitas vezes antes da
conclusão da E / S. Mas se o dispositivo de E / S estiver pronto para o serviço, a pesquisa
pode ser muito mais eficiente do que capturar e despachar uma interrupção. Descrever
uma estratégia híbrida que combina polling, sleep e interrupções para o serviço de
dispositivo de E / S.

Para cada uma dessas três estratégias (pesquisa pura, interrupções puras,
híbridas),descreva um ambiente de computação no qual essa estratégia é mais eficiente
que qualquer uma das outras.

Resposta:

Uma abordagem híbrida pode comutar entre inquirição e interrupções, dependendo


do tamanho da espera da operação de I/O. Por exemplo, poderíamos inquirir e
executar o loop N vezes, e, se o dispositivo ainda estiver ocupado em N + 1,
poderíamos posicionar uma interrupção e dormir. Essa abordagem evitaria longos
ciclos de espera em ação. Esse método seria melhor para tempos de ocupação muito
longos ou muito curtos. O método seria ineficiente se o I/O se completar em N + T
(em que T é um número pequeno de ciclos) por causa do overhead da inquirição
mais o posicionamento e a captura das interrupções.

A inquirição pura é melhor com tempos de espera muito curtos. As interrupções são
melhores com longos tempos de espera conhecidos.

135.Como o DMA aumenta a simultaneidade do sistema? Como isso complica o design


de hardware?

Resposta:

O DMA aumenta a concorrência no sistema ao permitir que a CPU execute tarefas


enquanto o sistema DMA transfere dados por meio dos buses do sistema e da
memória. O projeto do hardware é complicado porque o controlador DMA deve ser
integrado ao sistema, e o sistema deve permitir que o controlador DMA seja um bus
mestre. O roubo de ciclos também pode ser necessário para permitir que a CPU e o
controlador DMA compartilhem o uso do bus da memória.

136.Por que é importante escalar as velocidades do barramento do sistema e do


dispositivo à medida que a velocidade da CPU aumenta?

Resposta

Considere um sistema que execute 50% de I/O e 50% de computação. A duplicação


do desempenho da CPU nesse sistema aumentaria o desempenho total do sistema
em apenas 50%. A duplicação de ambos os aspectos do sistema aumentaria o
desempenho em 100%. Geralmente, é importante remover o gargalo corrente no
sistema e aumentar o desempenho global do sistema, em vez de aumentar cegamente
o desempenho dos componentes individuais do sistema.

137.Distinga entre uma extremidade de driver e um módulo de fluxo em uma operação


STREAMS.

Resposta:

O driver do STREAMS controla um dispositivo físico que pode estar envolvido em


uma operação do STREAMS. O módulo do STREAMS modifica o fluxo de dados
entre a cabeça (a interface do usuário) e o driver.

140.Considere os seguintes cenários de E / S em um PC de usuário único:

a. Um mouse usado com uma interface gráfica do usuário


b. Uma unidade de fita em um sistema operacional multitarefa (sem a pré-
alocação de dispositivo disponível)
c. Uma unidade de disco contendo arquivos do usuário
d. Uma placa gráfica com conexão de barramento direto, acessível por E / S
mapeada por memória

Para cada um desses cenários, você projetaria o sistema operacional para usar buffer,
spool, armazenamento em cache ou uma combinação? Você usaria I / O com polling ou
I / O controlada por interrupção? Dê razões para suas escolhas.

Resposta:
a. Um mouse usado com uma interface gráfica do usuário – O buffering pode
ser necessário para registrar o movimento do mouse durante os momentos
em que estão ocorrendo operações de maior prioridade. O spooling e o
caching são impróprios. A E/S controlada por interrupção é mais
apropriada.
b. Uma unidade de fita em um sistema operacional multitarefa (considere que
nenhuma pré-alocação de dispositivo está disponível) – O buffering pode ser
necessário para gerenciar a diferença de throughput entre a unidade de fita
e a origem ou o destino da E/S. O caching pode ser usado para manter cópias
de dados que residem na fita, para um acesso mais rápido. O spooling poderia
ser usado para colocar dados no dispositivo quando vários usuários desejam
ler dele ou escrever nele. A E/S controlada por interrupção provavelmente
permitirá o melhor desempenho.
c. Uma unidade de disco contendo arquivos do usuário, O buffering pode ser
usado para manter dados enquanto estão em trânsito, do espaço do usuário
para o disco, e vice-versa. O caching pode ser usado para manter dados
residentes no disco para melhorar o desempenho. O spooling não é necessário
porque os discos são dispositivos de acesso compartilhado. A E/S controlada
por interrupção é melhor para dispositivos como discos que transferem
dados em baixas velocidades.
d. Uma placa gráfica com conexão direta do barramento, acessível através da
E/S mapeada na memória – O buffering pode ser necessário para controlar
o acesso múltiplo e por desempenho (o buffering duplo pode ser usado para
manter a próxima imagem da tela enquanto exige a atual). O caching e o
spooling não são necessários devido às naturezas de acesso veloz e
compartilhado do dispositivo. O spolling e as interrupções são úteis apenas
para entrada e para detecção de término de E/S, nenhum deles necessário
para um dispositivo mapeado na memória.

143.Descreva três circunstâncias sob as quais o bloqueio de E / S deve ser usado.


Descreva três circunstâncias em que a E / S não bloqueante deve ser usada. Por que não
apenas mplementar E / S não bloqueadora e ter processos ocupados - espera até que seus
dispositivos estejam prontos?

Resposta:
Geralmente, o bloqueio de E/S é apropriado quando o processo só estiver esperando
por um evento específico. Alguns exemplos incluem um disco, fita ou teclado lido
por uma aplicação. A E/S não-bloqueante é útil quando a E/S pode vir de mais de
uma origem e a ordem da chegada da E/S não é predeterminada. Alguns exemplos
incluem daemons de rede escutando mais de um socket de rede, gerenciadores de
janelas que aceitam movimento do mouse e entrada do teclado, e programas de
gerenciamento de E/S, como um comando copy que copia dados entre dispositivos
de E/S. No último caso, o programa poderia otimizar seu desempenho colocando a
entrada e a saída em buffer e usando a E/S não-bloqueante para manter os dois
dispositivos totalmente ocupados.

A E/S não-bloqueante é mais complicada para programadores, devido ao encontro


assíncrono que é necessário quando ocorre uma E/S. Além disso, a espera ocupada
é menos eficiente do que a E/S controlada por interrupção, de modo que o
desempenho geral do sistema diminuiria.

146.O UNIX coordena as atividades dos componentes de E / S do kernel, manipulando


estruturas de dados compartilhadas no kernel, enquanto o Windows usa a passagem de
mensagem orientada a objeto entre os componentes de E / S do kernel. Discuta três prós
e três contras de cada abordagem.

Resposta:

Três prós do método do UNIX:

 Muito eficiente, pouco custo adicional e pouca quantidade de movimento de


dados.
 Implementação rápida – nenhuma coordenação necessária com outros
componentes do kernel.
 Simples, de modo que há menos chances de perda de dados.

Três contras:

 Sem proteção dos dados e efeitos colaterais possíveis com as mudanças, de


modo que é mais difícil de depurar.
 Difícil de implementar novos métodos de E/S: novas estruturas de dados
necessárias, em vez de apenas novos objetos.
 Complicado subsistema de E/S do kernel, cheio de estruturas de dados,
rotinas de acesso e mecanismos de bloqueio.

147.Escreva (em pseudocódigo) uma implementação de relógios virtuais, incluindo o


enfileiramento e o gerenciamento de solicitações de timer para o kernel e os aplicativos.
Suponha que o hardware forneça três canais de timer.

Resposta:

Cada canal executaria o seguinte algoritmo:

/** definições de dados **/

// uma lista de interrupções armazenadas pela ordem do mais antigo


primeiro

List interruptList

// a lista que associa uma requisição a uma entrada em


interruptList

List requestList

// um temporizador baseado em interrupção

Timer timer

while (true) {

/** Apanha o próximo horário mais antigo na lista **/

timer.setTime = interruptList.next( );

/** Uma interrupção ocorrerá no momento timer.setTime **/

/** agora espera pela interrupção do temporizador

ou seja, pela expiração do temporizador **/

notify( requestList.next( ) );