Buscar

Atividade 3 - 29-01-21

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

SISTEMAS OPERACIONAIS 
Atividade 3 - 29/01/21 
Samuel de Castro Ribeiro 0032743 
 
1.2) ATIVIDADE: Faça os exercícios nº 1, 3, 4, 7, 39 do livro-texto do autor 
TANENBAUM (4ª ed., pág.s 120-122 do cap. 2). 
 
1. Na Figura 2.2, são mostrados três estados de processos. Na teoria, com três 
estados, poderia haver seis transições, duas para cada. No entanto, apenas quatro 
transições são mostradas. Existe alguma circunstância na qual uma delas ou ambas 
as transições perdidas possam ocorrer? 
 
As duas transições que faltam no diagrama de estados são “bloqueado para em execução” 
e de “pronto para bloqueado”. Na primeira opção, supondo que um processo de entrada e 
saída de um dispositivo esteja bloqueado e esse processo termina, caso a CPU esteja 
ociosa, esta transição poderia acontecer. Já a segunda opção não é possível de acontecer, 
já que somente os processos em execução podem ser bloqueados. 
 
3. Em todos os computadores atuais, pelo menos parte dos tratadores de 
interrupções é escrita em linguagem de montagem. Por quê? 
 
Isso ocorre, pois, algumas ações como salvar os registradores e configurar o ponteiro da 
pilha não podem ser expressas em linguagens de alto nível, ou seja, essas linguagens não 
permitem acesso ao hardware da CPU. Normalmente a linguagem de montagem é a 
mesma para todas as interrupções, pois a forma de salvar os registros é idêntica, não 
importando a causa da interrupção. 
 
4. Quando uma interrupção ou uma chamada de sistema transfere controle para o 
sistema operacional, geralmente uma área da pilha do núcleo separada da pilha do 
processo interrompido é usada. Por quê? 
 
Isso pode ser explicado pela separação de privilégios e seguranças exigidas. O intuito é 
proteger o sistema já que um usuário malicioso pode tentar acessar dados e informações 
de outros processos caso o kernel deixe dados da pilha em um espaço na memória de um 
programa de usuário. Além disso, ajuda a cuidar contra interferência e falhas entre os 
processos. 
 
7. Múltiplas tarefas podem ser executadas em paralelo e terminar mais rápido do 
que se forem executadas de modo sequencial. Suponha que duas tarefas, cada uma 
precisando de 20 minutos de tempo da CPU, iniciassem simultaneamente. Quanto 
tempo a última levará para completar se forem executadas sequencialmente? 
Quanto tempo se forem executadas em paralelo? Presuma uma espera de E/S de 
50%. 
 
Presumindo que o tempo de espera de E/S é de 50%, a última tarefa terminará aos 60 
minutos caso seja executada sequencialmente. Isso porque como cada tarefa corresponde 
a 50% de tempo da CPU (10 minutos x 2 tarefas = 20 minutos de espera para cada 
execução de tarefa), logo, se cada uma for executada sequencialmente seria 30 minutos 
para a o término da primeira tarefa, e somente após esse tempo decorrido a segunda tarefa 
seria inicializada, terminando sua execução com 60 minutos. 
Para o caso da execução em paralelo, o tempo gasto seria de 30 minutos, já que as duas 
tarefas são executadas simultaneamente em 30 minutos, onde 20 minutos desse tempo 
correspondem ao tempo da CPU e os outros 10 minutos correspondem ao tempo de espera 
de cada processo. 
 
39. Considere o fragmento de código C seguinte: 
void main( ) { 
fork( ); 
fork( ); 
exit( ); 
} 
Quantos processos filhos são criados com a execução desse programa? 
 
São criados quatro processos, pois existe uma bifurcação no primeiro fork(), entre uma 
cópia do processo pai e a criação de um processo filho, e logo depois cada um deles se 
bifurca novamente no fork() seguinte, onde mais dois processos são criados. 
 
2.2) ATIVIDADE: Faça os exercícios nº 3.1, 3.2, 3.3, 3.5, 3.9 do livro-texto do autor 
SILBERSCHATZ (9ª ed., pág. 149-152 do cap. 3). 
 
3.1 Usando o programa mostrado na Figura 3.30, explique qual será a saída na 
LINHA A. 
 
O valor na saída na Linha A será 5. O processo filho atualiza seu próprio valor, e quando 
retorna ao pai, o valor ainda permanecerá 5. 
 
3.2 Incluindo o processo-pai inicial, quantos processos são criados pelo programa 
mostrado na Figura 3.31? 
 
São criados 8 processos. 
 
3.3 As versões originais do sistema operacional móvel iOs da Apple não forneciam 
um meio para processamento concorrente. Discuta três grandes complicações que o 
processamento concorrente adiciona a um sistema operacional. 
 
Dentre as complicações que o processamento concorrente adiciona a um sistema 
operacional estão: 
1- Proteção dos processos e recursos do sistema, incluindo a proteção entre eles mesmos, 
onde qualquer processo deve ser limitado a quantidade de memória a ser utilizada, não 
deixando um processo ocupar a memória de outro; 
2- Criação de um método de compartilhamento de tempo entre os processos quando da 
necessidade de acesso do sistema, ou seja, o método deve permitir que vários processos 
tenham acesso ao sistema ao mesmo tempo; 
3- Evitar deadlocks entre os processos. Tem como objetivo fazer com que um ou mais 
processos não fiquem impedidos de continuar suas execuções por causa de outros 
processos. 
 
3.5 Quando um processo cria um novo processo usando a operação fork ( ), qual dos 
estados a seguir é compartilhado entre o processo-pai e o processo-filho? 
a. Pilha 
b. Heap 
c. Segmentos de memória compartilhada 
 
O processo-pai e o processo-filho compartilham somente os segmentos de memória 
compartilhada quando um novo processo é criado quando se usa uma operação fork(). Já 
para a pilha e heap, são criadas cópias delas para o processo criado. 
 
3.9 Descreva as ações executadas por um kernel para a mudança de contexto entre 
processos. 
 
A mudança de contexto se refere à alocação da CPU a outro processo, onde o processo 
corrente é salvo e acontece a restauração do estado de um processo diferente agendado 
para ser executado em seguida. Quando acontece a mudança de contexto, o kernel salva 
o contexto do processo antigo em seu PCB e carrega o contexto salvo do novo processo 
indicado no schedule para execução. Assim, todos os valores de registros da CPU e 
alocação de memória devem ser considerados quando o estado de um processo está sendo 
salvo.

Continue navegando