Você está na página 1de 5

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO

Bacharelado em Tecnologia da Informação e

Bacharelado em Ciência e Tecnologia

Professor: Helder Fernando de Araujo Oliveira

Disciplina: Sistemas Operacionais 2018.2

Alunos (as): Paulo Henrique de Souza Rêgo;


Francisco Vinícius Lopes Costa.

Lista de exercícios – Unidade 1

1) De acordo com o diagrama de estados de processos. Mencione de que


maneira a transição 2 pode ocorrer. (0,5 pontos)

Resposta: A transição 2 representa o programa sair do modo de


execução para o modo pronto. Isso ocorre quando a fatia de tempo
determinada pelo escalonador chega ao fim, neste ponto o processo
deixa de usar a CPU (estado em execução) e vai para a fila dos
processos prontos.

2) Diferencie processos limitados pela CPU (CPU-bound) de processos


limitados pela E/S (I/O-bound). Cite pelo menos um exemplo de cada um
deles. (0,5 pontos).

Resposta: Processos CPU-bound apresentam em seu diagrama de


utilização, um maior tempo delegado ao uso da CPU, por outro lado
processos I/O-bound passam mais tempo esperando operações de
entrada e saída E/S do que utilizando a CPU.
3) Diferencie algoritmos de escalonamento preemptivos de algoritmos de
escalonamento não-preemptivos. Cite pelo menos um exemplo de cada
um. (0,5 pontos)

Resposta: A preempção diz respeito à capacidade de um S.O


interromper um processo em execução e substitui-lo por outro. Como o
nome sugere, o escalonamento de preemptivo permite o S.O interromper
a execução do processo e dedicar a CPU para outro processo. Já o não-
preemptivo deixa o processo executar até o mesmo ser concluído ou
então o mesmo liberar a CPU espontaneamente. Exemplo de não-
preemptivo: Escalonamento FIFO; Exemplo preemptivo: escalonamento
Round-Robin;

4) Explique o funcionamento do algoritmo de escalonamento por


chaveamento circular (também conhecido como round-robin). Neste
algoritmo é possível ocorrer starvation (também conhecido como
inanição)? Explique por quê. (0,5 pontos)

Resposta: O escalonamento por chaveamento circular round-robin


pressupõe que todos os processos são igualmente importantes, e a cada
processo é atribuído um quantum (intervalo de tempo). Assim CPU
sofrerá preempção e será dada a outro processo ao final de cada
quantum, se o processo foi bloqueado ou terminou antes do quantum, a
CPU é chaveada para outro processo. E não ocorre inanição, pois todos
os processos são tratados igualmente, dada a mesma importância.

5) Explique como funciona o algoritmo de escalonamento por prioridade.


Como o problema de starvation pode ser resolvido neste tipo de
algoritmo. (0,5 pontos)

Resposta: No escalonamento por prioridade cada processo tem uma


prioridade, onde, quanto maior a prioridade do processo o mesmo é
dado tempo de processamento para execução do processo. Para que
não ocorra inanição decorrente de processos de prioridades baixas não
cheguem nunca a serem executados é necessário reduzir a prioridade
dos processos com maior prioridade a cada interrupção de ciclo de
clock, assim garante que os de baixa prioridade executem.

6) Defina thread e descreva duas vantagens de processos multithreaded


sobre processos single-thread. (0,5 pontos)

Resposta: Thread nada mais é que um fluxo de controle que age dentro
de um processo. Multithread ocorre quando há dois ou mais fluxos de
controle. O processo Multithread tem vantagem em executar processos
ao mesmo tempo, ou seja, simultaneamente. Exemplificando podemos
editar textos e o corretor já corrigir ou prever a palavra simultaneamente.
7) Explique os dois modos de implementação de um pacote de threads (no
espaço do usuário e no núcleo). (0,5 pontos)

Resposta: No espaço de usuário: O núcleo do S.O não sabe da


existência de threads, ele gerencia os processos normalmente, o mesmo
se aplica à retirada da CPU ela retira aquele processo da CPU sem se
importar se o thread terminou ou não.

No espaço do núcleo: O núcleo do S.O sabe da existência


dos theads. Assim o núcleo gerencia o escalonamento dos processos e
dos threads também.

8) Dada a figura a seguir, que representa a implementação de um pacote


de threads NO ESPAÇO DO USUÁRIO, explique o que aconteceria se o
thread T1 realizasse uma chamada ao sistema que o colocasse em
estado de espera (chamada bloqueante), como, por exemplo, uma
operação de entrada/saída ao disco. (1,0 pontos)

Resposta: Supondo uma chamada do Thread T1 uma operação de E/S


do disco o processo inteiro seria bloqueado, pois iria bloquear um thread
e consequentemente os outros.

9) Suponha um sistema em que os threads de usuário são mapeados nos


threads de núcleo, de maneira um para um, e que o S.O. utiliza um
algoritmo de escalonamento round robin. Suponha que um thread em
execução esteja executando um loop infinito. Esse thread irá impedir a
execução de threads de outro processo? Explique por que. (0,5 pontos)
Resposta: Não ira impedir a execução de threads de outro processo,
pois, o thread esta mapeado nos threads do núcleo. Assim a CPU
reconhece o thread. E como o caso é um algoritmo de escalonamento
round-robin ele dividirá o tempo de CPU para cada thread.

10) Explique a função da tabela de threads. (0,5 pontos)

Resposta: A tabela de threads organiza e aloca cada thread. A mesma


possui o contador de programa, um ponteiro para pilha e registradores.

11) Descreva o problema de condição de corrida. Como ele pode ser


resolvido? (0,5 pontos)

Resposta: A condição de corrida ocorre quando vários processos


acessam e manipulam recursos de forma concorrente, onde o resultado
dependerá do ultimo processo a terminar podendo ocasionar
inconsistência na informação. A solução para este problema é garantir
que apenas um processo manipule o recurso compartilhado por vez. E
essa região do código do processo é chamada de região crítica.

12) Defina exclusão mútua e região crítica. (0,5 pontos)

Resposta: exclusão mútua é a propriedade de um programa que


garante que apenas um processo tem acesso à determinada variável
compartilhada em cada momento. Região crítica é a parte de um código
onde é feito o acesso ao recurso compartilhado.

13) Descreva como a desabilitação de interrupções pode garantir exclusão


mútua para um processador single core. Por que essa solução não
funciona para processadores multicore? (0,5 pontos)

Resposta: Desabilitar interrupções garante a exclusão mútua pois ao


entrar na região crítica a CPU não ira aceitar nenhuma interrupção do
processo. Para processadores multicore não é eficaz utilizar-se de tal,
pois, esses processadores utilizam mais de uma CPU assim a
interrupção estaria desabilitada em uma dessas CPU enquanto as
outras estariam livres para acessar a região crítica e consequentemente
os dados compartilhados causando assim inconsistência.

14) Diga como o uso da instrução TLS pode ser utilizada para resolver o
problema de condição de corrida. Soluções baseadas no uso desta
instrução funcionam para computadores multicore? Explique por que.
(1,0 ponto)

Resposta: A instrução TLS testa e atualiza a variável de trava, fazendo


com o que a mesma leia o conteúdo da memória e registre um valor
diferente de zero fazendo a trava ficar em estado de LOCK. O uso dessa
instrução resolve os problemas nos processadores multicore pois a
instrução TSL impede que outras CPU’s acessem o barramento de
memória até que saia do estado LOCK.

15) Diga por que a solução de Peterson e a solução que utiliza puramente
instrução TSL são consideradas soluções de exclusão mútua com
espera ociosa. Em contraste, de que maneira semáforos resolvem o
problema da espera ociosa? (1,0 ponto)

Resposta: São consideradas soluções de exclusão mútua com espera


ociosa, pois os processos entram em loop, onde processos tentam
acessar, porém encontram o caminho bloqueado até que seja
desbloqueado para tal. Os semáforos surgem para resolver este
problema, nunca um processo entrará em looping infinito esperneado
por um processo de prioridade menor que já esta na região crítica. Ele
só permite acesso a ele quando a operação seja bloqueada ou
terminada, e nunca em looping.

Você também pode gostar