pontifícia universidade católica do paraná

Propaganda
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ
MESTRADO EM INFORMÁTICA APLICADA
SISTEMAS OPERACIONAIS DISTRIBUÍDOS
20 QUESTÕES DOS CAPÍTULOS 1 A 12 DO
LIVRO DE SISTEMAS OPERACIONAIS
DE ABRAHAM SILBERSCHATZ
ALUNOS : SILVIO BORTOLETO
HUGO SIMIÃO
JUNHO 2001
CAPÍTULO 3
3.1 ) Quais são as cinco principais atividades de um sistema operacional em
relação ao gerenciamento de processos?
1 – Criação e remoção de processos, tanto do sistema quanto dos usuários;
2 – Suspensão e reativação de processos;
3 – Sincronização de processos;
4 – Comunicação entre processos; e
5 – Tratamento de impasses entre processos, os deadlocks.
3.5 ) Qual é o propósito do interpretador de comandos? Por que ele é
normalmente separado do núcleo?
O interpretador de comandos faz a interface entre o usuário e o sistema operacional.
Tem o propósito de executar tarefas. As tarefas são especificadas por comandos ; a
especificação dos comandos podem tratar da criação e gerenciamento de processos,
tratamento de E/S, gerenciamento de memória secundária, gerenciamento da
memória principal, acesso ao sistema de arquivos, proteção e conexão a rede. As
interfaces disponíveis em ambiente gráfico, como as janelas dos sistemas
operacionais Windows, facilitam, e abstraem o uso de comandos pelo usuário,
criando uma representação gráfica de tarefas ou um conjunto de tarefas.
Alguns sistemas operacionais preferem incluir o interpretador de comandos no seu
núcleo. Porém, fora do núcleo o sistema operacional é mais confiável. É mais
confiável por que em caso de problemas o núcleo ainda pode continuar trabalhando
e possivelmente finalizando algumas operações importantes para o sistema. Em
contrapartida, o sistema pode ser comprometido e travar totalmente.
CAPÍTULO 4
4.2 ) Descreva as diferenças entre as funções do escalonador de processos,
escalonador intermediário e escalonador de CPU.
Escalonador de Processos:
Escolhe dentre os processos, anteriormente armazenados em disco, e os carrega para
a memória de execução/fila de prontos.
Escalonador de CPU:
Seleciona dentre os processos que estão na fila de prontos para serem executados e
aloca a CPU para este processo.
A diferença entre Escalonador de Processos e Escalonador de CPU é a freqüência de
utilização. É comum o Escalonador de CPU ser executado pelo menos uma vez a
cada 100 milesegundos. Enquanto com o Escalonador de Processos, podem-se
passar alguns minutos entre a criação de um novo processo e outro.
Escalonador Intermediário:
Alguns sistemas de tempo compartilhado dispensam o Escalonador de Processos,
simplesmente colocando cada novo processo na memória, para o Escalonador da
CPU. Podendo então introduzir o Escalonador Intermediário, onde a idéia principal,
é a de que pode ser vantajoso remover processos da memória de uma disputa pela
CPU, reduzindo o grau de multiprogramação. Algum tempo depois, o processo pode
ser recarregado, e a execução continuar de onde foi interrompida, esquema chamado
de “swapping”.
4.6 ) Descreva as ações realizadas pelo núcleo de um sistema operacional para
uma mudança de contexto
a) Entre fluxos de execução.
Mudança de contexto entre fluxos de execução, ainda que exija uma alteração
no conjunto de registradores, não exige nenhum trabalho adicional ao
gerenciamento de memória.
Alguns sistemas implementam fluxos para usuários, em bibliotecas, em vez de
chamadas ao sistema, de modo que a mudança de contexto em fluxos de
execução não precisem causar interrupções , desviando o controle da execução
para o núcleo do sistema operacional. A mudança de contexto pode ser feita
independentemente do sistema operacional, de modo, muito mais rápido. Assim
o servidor pode lidar com muitos recursos de maneira eficiente, graças ao
bloqueio de fluxos de execução e à transferência de controles para outros fluxos.
b) Entre processos.
Para transferir o controle da Cpu de um processo para outro, é necessário
armazenar o estado do processo antigo e carregar o estado do novo,
anteriormente carregado. O tempo gasto em uma mudança de contexto é relativo
ao trabalho adicional requerido pelo próprio sistema, varia de máquina para
máquina, dependendo da velocidade de memória, do número de registradores
que devem ser copiados e da existência de instruções especiais ( como uma
instrução única para carregar ou para armazenar todos os registradores ).
Uma mudança de contexto consiste simplesmente em mudar o apontador para o
conjunto de registradores do processo a ser executado. Quanto mais complexo o
sistema mais trabalho na mudança do contexto.
Se houver mais processos ativos que registradores, o sistema transfere dados dos
registradores para memória e vice-versa, como antes.
CAPÍTULO 5
5.3)
Considere os seguintes conjuntos de processos, com a duração da
fase de uso da CPU dada em milissegundos :
Processo
P1
P2
P3
P4
P5
Duração da fase de uso da CPU
10
1
2
1
5
Prioridade
3
1
3
4
2
Supõe-se que os processos entrem na fila de processos prontos na ordem
P1,P2,P3,P4 e P5, todos no mesmo tempo 0.
a) Desenhe o diagrama de Gantt ilustrando a execução desses processos
usando os algoritmos de alocação PCPS, MP, por prioridade de forma
não-preemptiva ( um número de prioridade menor indica uma
prioridade mais alta), e AC ( quantum = 1).
PCPS (FIFO)
a)
0 P1
0
P2
10
P3
11
P4
13
P5
14
19
b) Tempo de Processamento: P1=10, P2=11, P3=13, P4=14, P5=19
c) Tempo de Espera: P1=0, P2=10, P3=11, P4=13, P5=14
d) Tempo Médio: 9.6
PCPS (MP)
a)
0
P2
0
P4
1
P3
2
P5
P1
4
9
19
b)Tempo de Processamento: P2=1, P4=2, P3=4, P5=9, P1=19
c) Tempo de Espera: P2=0, P4=1, P3=2, P5=4, P1=9
d )Tempo Médio: Menor 3.2
ALOCAÇÃO DE PRIORIDADE
a)
0
P2
0
P5
P1
1
6
P3
P4
16
18
19
b) Tempo de Processamento: P2=1, P5=6, P1=16, P3=18, P4=19
c ) Tempo de Espera: P2=0, P5=1, P1=6, P3=16, P4=18
d ) Tempo Médio: 8.2
ALOCAÇÃO CIRCULAR
a)
0
0
P1
P2 P3 P4 P5 P1 P3 P5 P1 P5 P1 P5 P1 P5 P1 P1 P1 P1
1
2
3
4
5
6
7
8
9
10
11
12 13 14 15
b) Tempo de Processamento: P1=19, P2=2, P3=7, P4=4, P5=14
c) Tempo de Espera: P2=1, P4=3, P1=9, P3=6, P5=9
d) Tempo Médio: 5.4
P1
16 17 18 19
5.4 ) Suponha que os processos seguintes fiquem prontos para execução
nos tempos indicados. Cada processo será executado pela CPU pelo
tempo indicado. Na resposta às questões a seguir, use alocação nãopreemptiva e tome todas as decisões com base na informação disponível
no instante em que a decisão deve ser feita.
Processo
P1
P2
P3
Tempo de Chegada
0,0
0,4
1,0
Duração da fase de uso da CPU
8
4
1
a) Qual o tempo de processamento médio para esses processos
com o algorítmo de alocação PCPS ?
PCPS (FIFO)
0
P1
0
P2
8
P3
12
13
Tempo de Processamento:
8.66
b) Qual o tempo de processamento médio para esses processos
com o algorítmo de alocação MP?
MP
0
0
P3
P2
1
P1
5
Tempo de Processamento:
13
6.33
c) O algoritmo MP deveria apresentar um bom desempenho,
mas note que escolhemos executar o processo P1 no tempo 0
porque não sabíamos que dois processos menores chegariam
a seguir. Calcule qual será o tempo de processamento médio
se a CPU ficar ociosa durante a primeira unidade de tempo e
então o algoritmo MP for usado. Lembre-se de que os
processos P1 e P2 estão esperando durante esse tempo ocioso
seus tempos de espera podem aumentar . Esse algoritmo
poderia ser conhecido como alocação por conhecimento
futuro.
OCIOSO
0
0
P3
P2
1,4
P1
5,4
13,4
Tempo de Processamento: 6.73
CAPÍTULO 6
6.5 )Na seção 6.3 mencionamos que o funcionamento do relógio do sistema
poderia ser afetado se as interrupções fossem frequentemente
desabilitadas. Explique porque e como esses efeitos poderiam ser
minimizados.
O problema da região crítica poderia ser resolvido, em um ambiente com um
processador, se existisse um mecanismo para evitar interrupções enquanto um
valor está sendo atribuído a uma variável compartilhada. Dessa maneira
evitaríamos uma interrupção no meio de uma sequência de instruções, que
executariam em ordem, sem a possibilidade de modificações inesperadas
contida em uma variável compartilhada.
Para vários processadores é inviável, pois a inibição de interrupções pode
gastar tempo quando a mensagem precisa ser enviada a todos os processadores.
Esse tempo gasto atrasa a entrada e saída na região crítica, diminuindo a
eficiência do sistema.
Por causa disso muitos processadores incluem instruções de máquina
especiais, que permitem testar e modificar o valor armazenado em uma
determinada posição da memória ou trocar valores armazenados em duas
posições da memória de forma atômica , ou seja, como uma única instrução,
sem possibilidades de interrupção entre os componentes da instrução. Essas
instruções especiais podem ser usadas para resolver o problema das regiões
críticas, relativamente simples.
Instrução Test-and-set, executa atomicamente, ou seja, duas instruções em duas
Cpu’s diferentes, que modificam a mesma posição de memória, são utilizadas
sequencialmente, em alguma ordem arbitrária.
Instrução Swap, modifica valores armazenados em duas variáveis: variável
global lock e para cada processo uma variável local key, e a exclusão mútua
pode ser obtida.
Algorítmo que satisfaz todos os requisitos para um protocolo a ser usado em
um mecanismos de regiões críticas. Inicialmente false é armazenado em lock,
para todos os demais waiting. O primeiro processo atribuirá false à key, todos
os outros terão que esperar. O valor armazenado em waiting só pode se tonar
igual a false se um outro processo sair da região crítica. O valor false é
armazenado em apenas uma das posições de arranjo waiting, satisfazendo o
requisito de exclusão mútua .
O requisito de espera limitada é satisfeito , um processo deixa a região crítica e
percorre o arranjo waiting na ordem circular (i+1, i+2,...i-1), e, o processo nesta
lista cuja execução no código de entrada na região crítica é próximo a outras
em sua região.
6.21) Mostre que o protocolo de duas fases garante execução equivalente a
alguma execução sequencial de transações.
O chamado two phase commit, é a execução sequencial de transações dando
sincronismo no processo. Por exemplo, há uma atualização em ambiente
distribuído onde a primeira fase é de alocação dos recursos necessários à
atualização e a segunda é a disposição para a efetivação do commit, ou seja ,
de um lado há a confirmação de estar preparado e do outro também, após é
efetivada em ambos os lados. ( caso clássico do IMS –Ibm que controla
perfeitamente as transações em ambientes distribuídos)
CAPÍTULO 7
7.4)
Considere o impasse que ocorreu no trânsito, representado na
figura 7.8 da página 256.
a) mostre que as quatro condições necessárias para ocorrência de impasse
são de fato satisfeitas nesse exemplo.
A exclusão mútua - apenas uma via ( veículo ) pode passar ou trafegar.
Uso-e-espera - passam veículos de uma via e depois da outra .
Inexistência de preempção – a via é liberada após passagem de um veículo,
alternadamente entre as vias.
Espera circular - há vários processos (veículos) esperando pelo recurso
(via)
b) Cite uma regra simples para evitar impasses nesse sistema
Semáforos ou mecanismos equivalentes.
7.8 ) Considere um sistema que consiste em quatro recursos da mesma
classe, compartilhados por três processos, cada um dos quais precisa
usar no máximo dois recursos. Mostre que não ocorre impasse.
RECURSO 1
PROCESSO 1
RECURSO 2
RECURSO 3
PROCESSO 2
RECURSO 4
PROCESSO 3
Primeiro não há referência circular , e para cada recurso liberado outro processo captura a alocação
do recurso não causando impasse.
CAPÍTULO 8
8.13) Descreva um mecanismo no qual um segmento poderia pertencer
ao espaço de endereçamento de dois processos diferentes.
Outra vantagem do mecanismo de segmentação envolve o compartilhamento
de código e dados. Uma tabela de segmentação é associada a cada processo e
usada pelo escalonador da CPU para definir a tabela de segmentos do hardware
enquanto a CPU é alocada a esse processo. Segmentos são compartilhados
quando encontrados na tabela de segmento de dois processos diferentes
apontam para a mesma posição de memória física .
O compartilhamento ocorre para um determinado segmento. Portanto, qualquer
informação pode ser compartilhada de maneira que um programa formado por
diversos segmentos pode ser compartilhado.
Exemplo, o uso de um editor de texto em um sistema de tempo
compartilhado. Um editor completo pode ser um programa bastante grande,
composto por vários segmentos. Esses segmentos podem ser compartilhados
por vários usuários, diminuindo o uso da memória física necessária para as
tarefas de edição de texto.
É possível também compartilhar apenas partes de determinados programas.
Segmentos com acesso apenas para leitura, que não contenham endereços
físicos, podem ser compartilhados, assim com segmentos de código que não
contenham referências diretas a si próprios ( referências indiretas podem
ocorrer).
8.14) Explique por que é mais fácil compartilhar um código reentrante
usando segmentação do que no caso em que o mecanismo de paginação
puro é usado.
Outra vantagem do mecanismo de paginação é a possibilidade de
compartilhamento de código. Considere um sistema de 40 usuários, cada um
usando um editor de textos. Se o tamanho do programa editor for 150k e usar
um espaço de dados de 50k, necessitamos de 8000k . Se o código for reentrante
ele poderá ser compartilhado.
Um código é reentrante (também chamado de código puro) se não modifica
a si próprio . Ele nunca é modificado durante a execução. Assim dois ou mais
processos podem executar o mesmo código simultaneamente. Cada processo
tem suas próprias cópias dos registradores e da memória, que armazenam os
dados usados durante a execução do processo. Os dados de dois processos
distintos são diferentes.
Uma única cópia o editor de textos precisa ser armazenada na memória
física. A tabela de páginas do processo corresponde a cada usuário que usa a
mesma cópia do editor de páginas de dados, que usam blocos diferentes da
memória. Portanto para 40 usuários precisamos de uma única cópia do editor,
mais 40 cópias de 50k de dados, num total de 2150k, economia considerável.
Outros programas também podem ser compartilhados, compiladores, sistemas
de banco de dados e outros, basta ser reentrante.
CAPÍTULO 9
9.13) Projetamos um novo algoritmo de substituição que supomos ser
ótimo. Em alguns casos de teste particulares, ocorre a anomalia de
Belady. Esse algoritmo é ótimo ? Explique a resposta.
A anomalia de Belady não ocorre quando o algoritmo ótimo ou algoritmo
MRU é usado . Para um algoritmo que não apresenta anomalia o conjunto de
páginas armazenado em uma memória com n blocos é sempre um
subconjunto daquele que estaria armazenado em uma memória com n+1
blocos. Ou seja, para MRU se o número de blocos aumenta , essas páginas
continuam sendo as n últimas usadas e portanto continuam na memória . A
estratégia do algoritmo ótimo é simples : substitui a página que não será
usada pelo período de tempo mais longo, ou seja, garante o menor número
possível de ocorrências de interrupções da página ausente, para um
determinado número de blocos.
9.20) Qual a causa da paginação excessiva? Como o sistema pode
detectar a ocorrência de paginação excessiva? Quando o sistema detecta
a ocorrência de paginação excessiva , o que ele pode fazer para eliminar
esse problema ?
Quando a utilização de CPU é muito baixa, o sistema operacional aumenta o
grau de multiprocessamento introduzindo novos processos aos sistema.
Vamos supor que um processo entre numa fase de execução e necessite mais
blocos ( algoritmo de paginação utiliza a substituição global, possibilitando a
substituição de qualquer página, independente do processo a qual está
alocada). Então , o processo começa a provocar interrupções de páginas
ausentes e tirar da memória páginas de outros processos, mas este necessitam
das páginas e também provocam interrupções de páginas ausentes. Estes
processos precisam de um dispositivo de memória secundária para trocar
suas páginas entre a secundária e a principal. A medida que eles entram na
fila à espera deste dispositivo a fila de processos prontos para execução
esvazia-se. Enquanto os processos esperam pelo dispositivo de paginação, a
utilização da CPU diminui. O escalonador de processos percebe a
diminuição e aumenta a multiprogramação, onde começa o ciclo de
paginação excessiva e provoca queda abrupta de produtividade do sistema. O
tempo médio torna-se maior, nenhum processamento é feito e os processos
consomem todo o tempo paginando.
Precisamos diminuir o grau de multiprogramação. Os efeitos da paginação
excessiva pode ser limitados pela utilização do algoritmo de substituição
local (prioridade) .
Devemos alocar a um processo o número de blocos que ele precisa. Usa-se a
estratégia do conjunto-de-trabalho, baseia-se no modelo de localidade, que é
considerada uma coleção de páginas usadas ativamente pelo processo .
Quando uma sub-rotina é chamada ela pode definir uma nova localidade,
definida pela estruturas de códigos e dados. Ele carregará para sua localidade
todas as páginas necessárias e não causará mais interrupções até que mude
de localidade.
CAPÍTULO 10
10.6 ) É possível simular uma estrutura de diretórios com vários níveis com
um diretório com apenas um nível no qual os nomes arbitrariamente
longos podem ser usados ? Se sua resposta for sim, explique como isso pode
ser feito e compare o esquema que você propôs com o de um diretório com
vários níveis. Se sua resposta for não , explique o que impede essa
simulação. Como sua resposta seria alterada se os nomes de arquivos
fossem restritos a apenas sete caractreres?
Não. Se nomes longos pudessem ser usados, então isto possibilitaria simular
estruturas de diretórios complexas. Isto pode ser feito, por exemplo, usando o
caracter “.” para indicar o fim do sub-diretório. Assim por exemplo, o nome
PAPA.pascal. F1 especifica que é um arquivo no sub-diretório pascal que por
sua vez está no diretório raiz PAPA . Se os nomes dos arquivos forem limitados
em sete caracteres então a regra não pode ser utilizado.
10.8) Alguns sistemas abrem automaticamente um arquivo quando ele é usado
pela primeira vez, e o fecham quando o processo que o criou é concluído .
Discuta as vantagens e as desvantagens desse esquema em comparação com o
esquema mais tradicional, no qual o usuário precisa abrir e fechar o arquivo
explicitamente.
Abertura e fechamento automático de arquivos ajuda o usuário nas invocações
destas funções, e assim pode ser mais conveniente para o usuário, contudo, ele
requer mais sobrecarga que o caso onde a abertura e fechamento explicito é
requerido. Alguns sistemas têm na estrutura do arquivo um espaço reservado para
indicar o programa que gerou o arquivo. Outros como o UNIX não têm isso, mas
podem utilizar as extensões dos arquivos como dicas para os programas que os
utilizam ou para o entendimento do conteúdo por parte do usuário.
CAPÍTULO 11
11.3) Que problemas poderiam ocorrer se um sistema de arquivos pudesse ser
montado simultaneamente em mais de uma localização em uma estrutura de
diretórios?
Poderiam existir múltiplos caminhos para o mesmo arquivo, que poderia confundir
usuários ou aumentar as chances de erros para as referências quanto aos processos a
serem processados e as manutenções específicas a serem feitas (excluindo um
arquivo com um caminho irá excluir o arquivo em todos os outros caminhos.)
11.9) Como as memórias cache ajudam a melhorar o desempenho ? Por que os
sistemas não usam mais memória cache, ou memórias cache maiores, se elas
são tão úteis?
Memórias cache permitem a componentes de diferentes velocidades se comunicar
de uma maneira mais eficientemente, por armazenar dados de um dispositivo lento,
temporariamente, em um dispositivo mais rápido (o cache) . Cache são quase que
por definição, mais caros que o dispositivo de quem está fazendo o armazenamento,
assim, incrementando o número ou tamanho das memórias cache aumentará o custo
do sistema.
CAPÍTULO 12
12.8) Como os acesso diretos à memória aumentam a concorrência em um
sistema ? Como o uso do DMA complica o projeto de hardware ?
DMA aumenta a concorrência no sistema ao permitir à CPU realizar tarefas
enquanto que o sistema DMA transfere dados através dos barramentos de sistema e
memória. O projeto de hardware torna-se complicado devido ao controlador de
DMA ser integrado ao sistema, e o sistema deve permitir que o controlador de DMA
seja um barramento principal (master).
12.10) Por que é importante aumentar as velocidades de transmissão de sinais
no barramento do sistema e de processamento das operações de E/S nos
dispositivos, à medida que a velocidade da CPU aumenta ?
Usar de forma equilibrada a CPU, subsistema de memória, barramento e
dispositivos de E/S, uma vez que uma sobrecarga em qualquer um deste elementos
causará ociosidade nos outros, por isso do balanceamento equitativo .
Conclusão
É de fundamental importância o conhecimento sobre os ambientes onde atuaremos
não apenas superficialmente mas com entendimento mínimo para direcionar
projetos, aplicar regras e tomar decisões quanto a tendências, capacidade, tipos de
hardware, banco de dados, e, seleção de acordo com os critérios de conectividade
definidos pelas escolhas anteriores.
Download