Resposta Lista 2

4
Exercícios – Processos e Threads 1 – Na teoria, com três estados para o processo (pronto, executando e bloqueado), poderia haver seis transições, duas para cada estado. Contudo, apenas quatro transições são normalmente comentadas. Há alguma circunstância na qual uma dela ou ambas as transições não ilustradas podem ocorrer? Defina cada uma das quatro transições ilustradas. Resposta: Uma das transições que poderia haver, mas não é comentada e não tem como haver de um estado para outro é a do estado pronto para bloqueado, ela não acontece porque não tem como um processo em estado de pronto saber que precisa de uma entrada/saída. Outra transição que não é comentada é a de bloqueado para executando, isto porque não é viável o custo benefício desta transição. A transição 1 acontece quando o SO descobre que um processo não pode prosseguir, em alguns sistemas operacionais é necessário que o processo execute uma chamada de sistema, como pause para ficar no estado bloqueado, em outros sistemas, quando o processo faz uma leitura de um pipe ou um arquivo especial e não tem entrada disponível, automaticamente o processo é bloqueado. O escalonador de processos causa as transições 2 e 3 sem que o processo saiba disso. A transição 2 acontece quando o escalonador decide que o processo em execução já teve tempo suficiente da CPU é hora de outro processo ocupar o tempo da CPU. A transição 3 acontece quando todos os processos já compartilharam a CPU, de uma maneira igual, e esta na hora do primeiro processo utilizar a CPU. A transição 4 acontece quando o processo aguarda um evento externo, como a chegada de uma entrada. 2 – Assinale a alternativa correta em relação à multiprogramação: I) Na multiprogramação, os processos executam ao mesmo tempo. II) Para a implementação de multiprogramação, é necessário que o sistema seja multiprocessado. III) A multiprogramação não exige que os processos estejam carregados inteiramente na memória. IV) Não existe a necessidade de haver 4 contadores de programa para a execução de 4 processos na multiprogramação.

description

Atividade de Sistemas Operacionais. referente ao livro Tannenbaum.

Transcript of Resposta Lista 2

Page 1: Resposta Lista 2

Exercícios – Processos e Threads

1 – Na teoria, com três estados para o processo (pronto, executando e bloqueado), poderia haver seis transições, duas para cada estado. Contudo, apenas quatro transições são normalmente comentadas. Há alguma circunstância na qual uma dela ou ambas as transições não ilustradas podem ocorrer? Defina cada uma das quatro transições ilustradas. Resposta: Uma das transições que poderia haver, mas não é comentada e não tem como haver de um estado para outro é a do estado pronto para bloqueado, ela não acontece porque não tem como um processo em estado de pronto saber que precisa de uma entrada/saída. Outra transição que não é comentada é a de bloqueado para executando, isto porque não é viável o custo benefício desta transição. A transição 1 acontece quando o SO descobre que um processo não pode prosseguir, em alguns sistemas operacionais é necessário que o processo execute uma chamada de sistema, como pause para ficar no estado bloqueado, em outros sistemas, quando o processo faz uma leitura de um pipe ou um arquivo especial e não tem entrada disponível, automaticamente o processo é bloqueado. O escalonador de processos causa as transições 2 e 3 sem que o processo saiba disso. A transição 2 acontece quando o escalonador decide que o processo em execução já teve tempo suficiente da CPU é hora de outro processo ocupar o tempo da CPU. A transição 3 acontece quando todos os processos já compartilharam a CPU, de uma maneira igual, e esta na hora do primeiro processo utilizar a CPU. A transição 4 acontece quando o processo aguarda um evento externo, como a chegada de uma entrada.

2 – Assinale a alternativa correta em relação à multiprogramação: I) Na multiprogramação, os processos executam ao mesmo tempo. II) Para a implementação de multiprogramação, é necessário que o sistema seja multiprocessado. III) A multiprogramação não exige que os processos estejam carregados inteiramente na memória. IV) Não existe a necessidade de haver 4 contadores de programa para a execução de 4 processos na multiprogramação. a) I e II b) I e III c) I e IV d) II e III e) III e IV

3 – Assinale a alternativa correta em relação aos eventos que podem causar a criação e/ou terminação de processos. I) A inicialização do sistema operacional pode causar a terminação de um processo. II) A execução de uma chamada ao sistema pode causar a criação de um processo. III) Uma requisição de usuário pode causar a criação de um processo. IV) A execução de um comando pode causar terminação de um processo. V) Um erro de execução pode causar a criação de um processo. a) I, II e III b) I, II e IV c) II, III e IV d) II, III e V e) III, IV e V

4 – Assinale a alternativa correta em relação aos itens que podem ser alocados por thread em relação aos itens que são alocados por processo I) Um processo com várias threads não permite o compartilhamento de variáveis globais entre as threads. II) Cada thread em um único processo tem seu próprio conjunto de valores para os registradores. III) Cada thread em um único processo tem seu próprio espaço de endereçamento.

Page 2: Resposta Lista 2

IV) As threads compartilham os arquivos abertos pelo processo. V) Todas as threads em um mesmo processo estão em um mesmo estado. a) I, II e IV b) I e IV c) II e III d) II e IV e) III e V

5 – Defina:

a) Thread: Resposta: É um fluxo de execução, uma das maneiras utilizadas por um processo para dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente, em geral, em arquiteturas multiprocessadas.

b) Tabela de processos: Resposta: É um arranjo de estruturas que o sistema operacional mantém para implementar o modelo de processos, com uma entrada para cada processo. Essas entradas são chamadas por alguns autores de blocos de controle de processo (process control blocks). Essas entrada contem as informações sobre o estado do processo, seu contador de programa, o ponteiro da pilha, a alocação de memória, os estados de seus arquivos abertos, sua informação sobre a contabilidade e escalonamento e tudo o mais sobre o processo que deva ser salvo quando o processo passar do estado em execução para o estado pronto ou bloqueado, para que ele possa ser reiniciado depois, como se nunca tivesse sido bloqueado.

c) Pseudoparalelismo: Resposta: Termo empregado no contexto no qual uma CPU é compartilhada por diversas aplicações. É o chaveamento que a CPU faz de programa para programa, executando cada um deles por dezenas ou centenas de milissegundos. Contraste com o verdadeiro paralelismo de hardware dos sistemas multiprocessadores.

6- Enumere na ordem de 1 a 8 os passos que o nível mais baixo do SO faz quando ocorre uma interrupção.

(7) O procedimento em C retorna para o código em linguagem de montagem. (2) O hardware carrega o novo contador de programa a partir do vetor de interrupções. (8) O procedimento em linguagem de montagem inicia o novo processo atual. (1) O hardware empilha o contador de programa, etc. (5) O serviço de interrupção em C executa (em geral lê e armazena temporariamente a entrada). (3) O procedimento em linguagem de montagem salva os registradores. (6) O escalonador decide qual o processo é o próximo a executar. (4) O procedimento em linguagem de montagem configura uma nova pilha.

7- Diferencie threads e processos. Resposta: A diferença fundamental entre um processo e uma thread é que, as threads compartilham seu espaço de endereçamento com outras threads, mas tem fluxo de controle próprio, já os processos possui um espaço de endereçamento e fluxo de controle únicos e portanto, não compartilham recursos com outros processos. Os processos tem os programas completamente separados com suas próprias variáveis, pilha e alocação de memória, já as threads compartilhas o mesmo espaço de memoria e variáveis globais nas rotinas. As threads são criadas e terminadas mais rápidas do que os

Page 3: Resposta Lista 2

processos. A comunicação entre as threads são mais rápidas do que a comunicação dos processos.

8- Explique o que é thread de usuário e o que é thread de núcleo, fazendo comparações entre eles. Resposta: Thread de usuário é a inserção do pacote de threads totalmente dentro do espaço do usuário, o núcleo não é informado sobre eles. Um pacote de threads de usuário pode ser implementado em um sistema operacional que não suporte threads. Executam no topo de um sistema denominado sistema de tempo de execução (runtime), que é uma coleção de rotinas que gerenciam threads. Quando os threads são gerenciados no espaço do usuário, cada processo precisa de sua própria tabela de threads para manter o controle dos threads naquele processo. Esta tabela e gerenciada pelo runtime. A tabela de threads de usuário é semelhante a tabela de processos do núcleo, exceto por manter o controle apenas das propriedades do thread, como o contador de programa, o ponteiro de pilha, os registradores, o estado e assim por diante. A thread de núcleo faz o gerenciamento comum de processos monothread, não é necessário um runtime na thread de núcleo, não há também, nenhuma tabela de threads em cada processo, ao contrario disso, o núcleo tem uma tabela de threads que acompanha todos os threads no sistema. A tabela de threads no núcleo contem os registradores, o estado e outras informações de cada thread, as informações são as mesmas dos threads de usuário, mas estão no núcleo, e não no espaço do usuário (runtime).