Processos e Threads (partes I e II) - PDF Free Download
Download "Processos e Threads (partes I e II)"
Agustina Quintão de Paiva
1 Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa em execução acompanhado de contador de processos, registradores e variáveis. Thread é uma seqüência de programa. Em outras palavras, é um programa independente ou o próprio programa. 2) Processos são realmente executados em paralelo numa mesma CPU? Sim. Um único processador pode ser compartilhado entre os vários processos com algum algoritmo de escalonamento usado para determinar quando parar o trabalho sobre um processo e servir um outro. 3) O que pode causar o encerramento de um processo? Quais saídas são voluntárias e quais involuntárias? Comente. Saída normal (voluntário) - Saída normal e, por exemplo, quando o utilizador sai do programa como deve ser. (A cruz da janela, por exemplo). Saída com erro (voluntário) - Quando o processo descobre um erro fatal. O processo emite uma chamada de saída ao sistema Erro fatal (involuntário) - Quando o erro e causado pelo processo, muitas vezes um erro de programa. Exemplos: quando encontra uma divisão por zero, instrução ilegal, etc. Morto por outro processo (involuntário) - Quando um processo executa uma chamada ao sistema dizendo para cancelar algum outro processo. Em linux: kill 4) O que são e para que serve uma hierarquia de processos? Um processo pode criar outros processos e que podem, por sua vez, criarem também outros processos de maneira hierárquica. Este tipo de recurso evita que o usuário tenha que esperar que um processo termine para que sua requisição seja processada melhorando o desempenho do sistema. 5) Quais os possíveis estados de um processo e em que situações ele pode mudar de um estado para outro? Execução, Pronto, Espera. Pronto para Execução - Após a criação de um processo, o sistema o coloca em uma lista de processos no estado pronto, onde aguarda por uma oportunidade para ser executado. Execução para Espera - Um processo passa do estado de execução para o estado de espera em função de eventos gerados por ele mesmo ou por eventos externos. Espera para Pronto - Um processo passa do estado de espera para o estado de pronto quando a operação solicitada é atendida ou o recurso esperado é concedido. Execução para Pronto - Um processo em execução passa para o estado de pronto por eventos gerados pelo sistema, como o término da fatia de tempo que o processo possui para execução.
2 6) O que é tabela de processos e para que serve? É o armazenamento de toda informação do estado do processo em que foi finalizado. É sempre utilizado quando for necessário a recuperação de informações de um processo interrompido. 7) Como o sistema operacional troca a execução de um processo para outro? A troca de um processo por outro no processador, comandada pelo sistema operacional, é denominada mudança de contexto; A mudança de contexto consiste em salvar o conteúdo dos registradores do processo que está deixando a UCP e carregá-los com os valores referentes ao do novo processo que será executado 8) O que são threads? Qual a diferença entre processos e threads? Threads - Um fluxo de controle seqüencial isolado dentro de um programa. Processos - É qualquer aplicação executado no processador / são conjuntos de recursos agrupados para melhor gerenciamento; Threads - permitem que um programa simples possa executar várias tarefas diferentes ao mesmo tempo, independentemente umas das outras. Programas multithreaded são programas que contém vários threads, executando tarefas distintas, ao mesmo tempo. 9) Qual a diferença entre implementar threads no espaço do usuário de implementar no espaço de kernel? No espaço do usuário, o kernel não sabe nada sobre threads. Do ponto de vista do kernel, ele manipula processos com uma só thread. Se o kernel sabe da existência das threads, não é necessário run-time nos processos. Não é preciso tabelas de threads por processo; o kernel mantém uma única para todas as threads do sistema. 10) Que cuidados devem ser tomados quando implementamos programas multi-threads? Evitar condições de concorrência e outros comportamentos inesperados, as linhas de execução freqüentemente precisarão ser sincronizadas, para que os dados sejam processados na ordem correta. 11) Cite 3 exemplos práticos de programas que podem ser desenvolvidos utilizando multithreads. O que esses programas ganhariam utilizando vários threads simultâneos? JAVA, C e C++. Possui um melhor desempenho que um sistema de computadores com múltiplas CPUs e com múltiplos núcleos. 12) O que é Condição de Disputa? Dê 2 exemplos onde essa condição pode surgir. Quando existe compartilhamento entre processos de uma memória, na qual cada um pode escrever ou ler, podem ocorrer as chamadas condições de disputa. Ex.Spooler de impressora
3 13) Explique com suas palavras o que são Regiões Críticas e Exclusão Mútua. Como esses dois conceitos estão relacionados? A exclusão mútua indica que as condições de disputas podem ser evitadas proibindo que mais de um processo leia e escreva simultaneamente em uma área de dados compartilhados. Regiões críticas São os trechos dos programas em que os processos estão executando computação sobre dados compartilhados com outros processos. 14) Explique como funciona e analise cada solução abaixo para o problema da região crítica: Desativando as Interrupções - A solução mais simples é fazer cada processo desativar todas as interrupções imediatamente depois de ele entrar em sua região crítica e reativá-las imediatamente depois de ele sair dela. Com as interrupções desativadas, nenhuma interrupção de relógio pode ocorrer. A CPU só alterna de um processo para outro como resultado de interrupções de relógio ou de outras interrupções, no final das contas, com as interrupções desligadas a CPU não alternará de um processo para outro. Variáveis de Bloqueio - Consiste numa solução de software, considerando uma variável de bloqueio inicialmente com valor 0. Quando um processo quer entrar em sua região crítica, primeiro testa o bloqueio, caso este seja 0, define como 1 e entra na região crítica, caso seja 1, o processo apenas espera até ele retornar a ser 0, o status 0 significa que significa que nenhum processo está em sua região crítica e 1 que algum processo está em sua região crítica. Alternância Estrita Consiste na utilização de turnos entre processos para acesso a sua região crítica. A Solução de Peterson Antes de utilizar as variáveis compartilhadas (entrar em sua região crítica), cada processo chama um comando com seu próprio PID e 0 ou 1 como parâmetro. Essa chamada causará espera até que seja seguro entrar. Outro processo só poderá acessar a sua região crítica se o primeiro processo já tiver saído da sua. Instrução TSL - Consiste numa instrução de testar e configurar bloqueio, funciona da seguinte forma, lê o conteúdo da palavra de memória em um registrador e, então, armazena um valor diferente de zero nesse endereço de memória. Nenhum outro processador pode acessar a palavra de memória até que a instrução tenha acabado. A CPU que executa a instrução TSL bloqueia o barramento de memória, proibindo outras CPUs de acessar a memória até que ela tenha terminado. 15) Qual a diferença entre programação paralela e programação concorrente? Os processos paralelos são processos que estão a ser executados simultaneamente no mesmo computador. Basicamente o computador tem vários processadores que se encarregam dos vários processos em paralelo..concorrência quer dizer compartilhar recursos em um mesmo espaço de tempo. Assim podem-se exemplificar situações concorrentes como sendo processos de um SO compartilhando a mesma CPU, ou compartilhando a mesma área de memória ou ainda compartilhando dispositivos de entrada e saída como uma impressora ou disco. 16) Explique rapidamente quais são as três partes que compõem um processo? Contexto de Hardware, Contexto de Software e Espaço de endereçamento. 17) Quais são os 3 estados em que um processo pode se encontrar?
4 Execução, Pronto e Espera. 18) Qual a diferença existente entre uma thread e um processo? Processos - É qualquer aplicação executado no processador / são conjuntos de recursos agrupados para melhor gerenciamento; Threads - Um fluxo de controle seqüencial isolado dentro de um programa. Threads permitem que um programa simples possa executar várias tarefas diferentes ao mesmo tempo, independentemente umas das outras. Programas multithreaded são programas que contém vários threads, executando tarefas distintas, ao mesmo tempo. 19) Defina o que é concorrência em computação? (apostila 1 transp 13) A Concorrência ocorre quando existem dois processos executados em simultâneo. 20) Quais são os quatros princípios para que processos/threads possam cooperar de forma correta e eficiente. Nenhum dos dois processos pode estar simultaneamente dentro de suas regiões críticas. Nenhuma suposição pode ser feita sobre as velocidades ou sobre o número de CPU s. Nenhum processo que executa fora de sua região crítica pode bloquear outro processo. Nenhum processo deve ter de esperar eternamente para entrar em sua região crítica. 21) O que é escalonamento de processos? O escalonamento de processos (ou agendador de tarefas) computacionais é uma atividade organizacional feita pelo escalonador (scheduler) da CPU ou de um Sistema Distribuído, possibilitando executar os processos mais viáveis e concorrentes, priorizando determinados tipos de processos, como os de I/O Bound e os computacionalmente intensivos. 22) Explique os algoritmos de escalonamento: Round Robin, Por prioridade, Filas Múltiplas, Menor Serviço Primeiro. Round Robin - Especialmente útil para sistemas de tempo compartilhado. Cada processo ganha um tempo limite para sua execução. Após esse tempo ele é interrompido e colocado no fim da fila de prontos. Por prioridade - A cada processo é associada uma prioridade e a CPU é alocada para o processo com a mais alta prioridade. Filas Múltiplas - Implementa diversas filas de processos no estado de pronto, uma para cada prioridade. Os processos devem ser classificados previamente em função do tipo de escalonamento para poderem ser corretamente alocados. Menor Serviço Primeiro - Algoritmo projetado especialmente para jobs em lote, onde o tempo de execução é conhecido previamente, funciona, por exemplo, quando processos de mesma importância estão na fila para serem iniciados pela CPU, o agendador utiliza primeiro o processo menor, tendo um tempo de resposta mais rápido. 23) Explique Threads do Usuário, Threads do Núcleo. Threads do Usuário a troca de threads é gerenciada com alarmes e a biblioteca thread gerencia todas as funções não segura as threads com travamento.
5 Threads do Núcleo o núcleo do sistema conhece as threads e os gerencia e tendo assim as tabelas de threads e processos. 24) O que você entende por comunicação entre processos. Por que este tipo de comunicação é mais complicado que a comunicação entre threads? É o ato em que os processos troquem informações entre si. Porque esse tipo de comunicação é totalmente hierárquico em que a grosso modo pode se dizer uma comunicação entre cliente/servidor, havendo ai uma sincronização dos processos. 25) Defina o que é uma comunicação Síncrona, de exemplos. Processos usam versão bloqueantes das primitivas. PASCAL 26) Defina o que é uma comunicação Assíncrona, de exemplos. Processos usam versão não-bloqueantes das primitivas. JAVA