Buscar

Prova | Sistemas Operacionais

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 6 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

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 6, do total de 6 páginas

Prévia do material em texto

Prova de sistemas operacionais 
Lorena G. M. 
 
1. Qual a relação entre programa e processo? 
O programa está diretamente ligado ao processo, na verdade o programa é uma sequência de 
funções dadas ao processador para que ele o execute. 
 
Em computação, um processo é uma instância de um programa de computador que está sendo 
executada. Ele contém o código do programa e sua atividade atual. Dependendo do sistema 
operacional (SO), um processo pode ser feito de várias linhas de execução que executam 
instruções concorrentemente. Um programa de computador é uma coleção passiva de 
instruções, enquanto que um processo é a execução real dessas instruções. Vários processos 
podem ser associados com o mesmo programa. Por exemplo, abrir várias instâncias do 
mesmo programa geralmente significa que mais de um processo está sendo executado. 
 
2. O que são processos, e quais estados eles podem assumir? 
Os processos são programas em execução na memória. Eles representam tarefas em 
execução, mas nem todas têm relação direta com algum aplicativo. Muitas delas são 
executadas em plano de fundo e mantêm o sistema trabalhando - gerenciando redes, memória, 
disco, checagem antivírus, etc. Logo, podemos definir processos como softwares que 
executam alguma ação e que podem ser controlados de alguma maneira, seja pelo usuário, 
pelo aplicativo correspondente ou pelo sistema operacional. Os estados de processos são os 
seguintes: 
 
Não Submetido: É o processo que ainda não está submetido à ​CPU​, está nas mãos do 
usuário. 
 
Suspenso: É o processo que já foi submetido, porém permanece suspenso até que o horário ou 
evento programado ao usuário venha acontecer. Processo suspenso é aquele que esta no 
aguarde de uma entrada de dados de forma contínua. 
 
Pronto: O processo já foi submetido e está pronto para receber a CPU, porém ainda aguarda o 
escalonador de processos para ter controle da CPU. 
 
Executando: A execução propriamente dita. O ​código​ está sendo processado. 
 
Espera: É o processo que foi colocado na fila de espera de E/S devido ao processador de E/S 
ser mais lento que a CPU principal. 
 
Completo: Neste estado temos a finalização do processo. 
 
3. O que são threads? Em que diferem de processos convencionais? 
Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele 
tem uma única linha de execução, ou thread. Esta linha de execução determina qual a 
sequência de instruções executadas pelo processo. No entanto, um processo pode requisitar 
ao SO a criação de outras threads. Ao requisitar a criação de uma nova thread, o processo 
informa qual rotina será executada pela thread. Assim, uma thread pertence a um processo, 
enquanto um processo pode ter mais de uma thread. 
 
Quando uma nova thread é criada, o SO não precisa criar uma duplicata do espaço de 
endereçamento do processo. Ao invés disso, a nova thread utiliza o mesmo espaço de 
endereçamento original. Ao contrário do que acontece com processos diferentes, para os 
quais um grande número de informações sobre o estado do processo atual precisam ser 
salvas, no chaveamento entre threads de um mesmo processo apenas alguns poucos 
registradores precisam ser guardados. Por estas características, as threads são chamadas às 
vezes de processos leves. 
 
4. Qual a diferença entre threads em nível de usuário e em nível de Sistema 
Operacional? 
Thread em nível de SO é implementada em uma biblioteca pelo Sistema Operacional por 
exemplo threads no Linux. Utilizar threads em nível de SO são como processos 
independentes para o escalonador, também se o sistema tiver mais de um processador elas 
podem ser executadas uma em cada processador. As threads em nível de usuário são uma 
implementação da aplicação em que voluntariamente um thread se retira do processamento e 
cede espaço a outra thread. Para o sistema operacional é apenas um processo. 
 
5. Conceitue starvation e deadlock. Demonstre com exemplos uma situação onde essas 
condições acontecem. 
Starvation: Ocorre quando um processo depende de um recurso e seu acesso é negado 
perpetuamente. Sem este recurso o processo não pode terminar sua tarefa. 
 
Deadlock: Ocorre quando, um processo (ou mais) está em posse de um recurso não 
compartilhado e esperando por outro recurso em posse de outro processo que também 
aguarda um recurso. Essa espera pode ser do processo anterior ou outro processo de forma 
que feche um ciclo. E conseqüentemente estes processos não sofrem preempção 
 
6. O que é o problema da Região Crítica? Mostre um exemplo onde não tratá-lo poderia 
levar a um erro. 
Região crítica é um segmento de código que enquanto está em execução não é permitido a 
nenhum outro processo sua execução ao mesmo tempo. Pode ser a operação em tabelas, 
arquivos e assim por diante. 
 
7. Sobre regiões críticas, explique com detalhes as soluções estudadas em sala-de-aula, 
explicando os seus benefícios e limitações. 
 
8. Como funciona a comunicação entre processos em Sistemas Operacionais 
Distribuídos? 
A comunicação entre processos distribuídos é feita pela troca de mensagens, a forma mais 
simples de comunicação entre processos de um sistema distribuído. As mensagens são 
armazenadas em pacotes chamados datagramas. As mensagens são trocadas entre processos 
localizados em máquinas distintas. Os protocolos garantem que processos consigam 
estabelecer a comunicação mesmo em plataformas diferentes ou tecnologias diferentes. A 
troca de mensagens entre dois processos é feita através de duas operações de comunicação: 
send e receive. Assim, para que um processo se comunique com o outro, o processo origem 
envia (send) uma mensagem para um destino, onde um outro processo recebe a mensagem 
(receive). Esta atividade envolve a comunicação entre o processo origem e o processo destino 
e implica na sincronização dos dois processos. 
 
9. O que é o "snapshot" de um processo? 
A palavra snapshot significa “foto instantânea”, na tecnologia é uma cópia de dados que 
possuem comportamento semelhante a um backup. As funções Snapshot fornecem cópias 
instantâneas de dados que se parecem e se comportam como backups completos sem 
consumir o espaço em disco equivalente. As imagens instantâneas (snapshots) são ideais para 
várias aplicações, incluindo testes de backup, ou de desenvolvimento, análise da informação 
e mineração de dados. 
 
10. Explique as funções dos escalonadores de curto, médio e longo prazo. 
O escalonador de longo prazo (ou escalonador de jobs) seleciona e carrega novos processos 
na memória. Ele é responsável pelo grau de multiprogramação (quantidade de processos na 
memória). Possui esta denominação pois não é invocado com muita frequência. 
 
O escalonador de curto prazo seleciona qual processo na fila de prontos será executado na 
CPU. Este escalonador é o que mais trabalha em um SO's, por isso, o nome curto prazo. Ou 
seja, ele é requisitado com alta frequência. 
 
Por fim, em alguns sistemas operacionais, existe um escalonador de médio prazo. Este 
escalonador é responsável pelo swapping. Ele remove o processo da memóriae coloca no 
disco. Ou seja, o escalonador de médio prazo é responsável por diminuir o grau de 
multiprogramação. 
 
 
11. Defina turnaround time, waiting time e throughput 
Turnaround time: indica o tempo total de vida de um processo, desde sua criação até o 
momento que é encerrado. No cálculo deste tempo estão os tempos gastos com alocação de 
memória, espera na fila de pronto, interrupções de entrada e saída. As políticas de 
escalonamento procuram reduzir ao máximo este tempo. 
 
Waiting time: quantidade de tempo que um processo aguardou na fila de pronto. 
 
Throughput: indica o número de processos executados por unidade de tempo. Logo, 
throughput representa a produção do sistema e deve ser maximizado. Para longos processos, 
o valor de throughput será baixo. Para curtos, o valor de throughput será alto. As políticas de 
escalonamento procuram maximizar o throughput. 
 
12. Quais dos seguintes algoritmos de escalonamento podem levar a "starvation" e por 
que? 
a) First Come First Served: 
Pode ocorrer inanição (starvation), se o primeiro processo (que chega primeiro) da fila for 
longo. Então o tempo de espera médio de todos os outros processos será muito grande. 
 
b) SJF: 
É o algoritmo ótimo (do ponto de vista computacional) no tempo de espera. O maior tempo 
de espera será o processo com maior pico de CPU. 
 
c) Round-Robin: 
Depende exclusivamente do tamanho do quantum da CPU. Se for muito grande, será 
equivalente a FCFS, mas se for pequeno será a sensação de dividir a CPU pelo número de 
processos. 
 
d) Prioridades: 
Um processo que esteja pronto para executar, mas não tenha a posse da CPU pode ser 
considerado bloqueado. Um algoritmo por prioridades pode deixar alguns processos de baixa 
prioridade esperando indefinidamente pela CPU. 
 
 
13. O que significa um processo sofrer preempção? 
O processo que está em execução sofre uma interrupção pelo escalonador para dar lugar a 
outro. 
 
14. ​A maioria dos escalonadores round-robin (escalonamento circular) usa um quantum 
de tamanho fixo. Dê um argumento em favor de um quantum pequeno. Agora pense em 
um argumento que justifique um quantum grande. Discuta o efeito de cada um dos 
seguintes métodos de atribuição de quantum q no escalonamento circular 
(round-robin). 
O quantum pequeno serve para liberar mais rápido o processador, são frequentemente usados 
em situações em o SO não dá a visão de quanto de quantum o aplicativo precisa, ou seja 
assim que ele chega para a primeira vez na fila de prontas. Já o quantum grande vai demorar 
mais para esse liberamento, usando mais recursos do SO. 
 
15. Como funciona o exemplo escalonamento por múltiplas filas com realimentação? 
Qual a relação entre o quantum e o nível de prioridade de cada fila nesse esquema? 
O sistema identifica dinamicamente o comportamento de cada processo, ajustando assim suas 
prioridades de execução e mecanismos de escalonamento. Os processos não são previamente 
associados às filas de pronto, e sim direcionados pelo sistema entre as diversas filas com base 
em seu comportamento. 
 
A execução ocorre do seguinte modo: 
O processo criado entra no final da fila de mais alta prioridade. Cada fila implementa o 
mecanismo de FIFO para escalonamento. Quando o processo em execução deixa a CPU por 
preempção por prioridade ou por solicitação a um recurso do sistema ele é reescalonado para 
dentro da mesma fila. Caso o processo esgote seu quantum de tempo, ele é redirecionado para 
um a fila de menor prioridade (preempção por tempo), e assim por diante. A fila de mais 
baixa prioridade implementa o mecanismo de escalonamento circular. O quantum em cada 
fila varia em função da sua prioridade. Quanto maior a prioridade, menor seu quantum de 
tempo. 
 
16. ​Dois objetivos comuns das políticas de escalonamento são minimizar tempos de 
resposta e maximizar utilização de recursos. 
 
a) Indique como esses objetivos se contrapõem um ao outro. 
Estes objetivos são contraditórios, pois dado que a quantidade de tempo disponível de 
processamento (tempo do processador) é finita, assim como os demais recursos 
computacionais, para que um processo seja favorecido outro deve ser prejudicado. O maior 
problema existente no projeto de algoritmos de escalonamento está associado à natureza 
imprevisível dos processos, pois não é possível prevermos se um dado processo utilizará 
intensamente o processador, ou se precisará grandes quantidades de memória ou se 
necessitará numerosos acessos aos dispositivos e E/S. 
 
b) Analise as políticas de escalonamento circular (round robin) e múltiplas filas com 
retorno/realimentação (multiple queues with feedback) com base nessas duas 
perspectivas. 
Com base na perspectiva citada, uma das vantagens do round robin é que ele é ​totalmente 
imune a problemas de starvation que são tarefas que nunca são executadas em função de ter 
prioridade inferior às demais​, maximizando assim a utilização dos recursos. Desse modo é 
um processo justo, pois todos tem um pedaço igual. 
 
Já as múltiplas filas são usadas filas de processos., visando assim minimizar o tempo de 
resposta para usuários. 
 
17. Descreva as ações tomadas pelo kernel para realizar a troca de contexto entre 
processos. 
A troca de contexto exige que o estado do processo antigo (a sair do processamento) seja 
salvo e que o estado do processo novo (a entrar no processamento) seja carregado. O contexto 
é representado no PCB que inclui o valor dos registradores. 
 
 
18. Em algumas implementações do UNIX, o kernel é não-preemptivo. O que isto 
significa? Quais as vantagens e desvantagens desta abordagem? 
Permite que o processo seja executado do início ao fim sem ser interrompido até ser 
finalizado. Quando um processo está em execução, nenhum evento externo pode ocasionar a 
perda do uso do processador. O processo somente sai do estado de execução, caso termine 
seu processamento ou execute instruções do próprio código que ocasione uma mudança para 
o estado de espera.

Continue navegando