Threads Flashcards
definir o conceito, as características, a hierarquia e os estados dos processos e threads; analisar as características sobre a comunicação, como condições de disputa, regiões críticas e exclusão mútua com espera ociosa; explicar como é realizado o escalonamento entre processos e threads, distinguir os tipos de escalonamento e seus principais algoritmos
Um processo pode ser definido como:
Um processo pode ser definido como um programa em execução incluindo os valores do contador de programa atual, registradores e variáveis.
Podemos considerar também que um processo é uma atividade que contém um programa, uma entrada, uma saída e um estado.
O que é o pseudoparalelismo?
É a falsa impressão de que todos os programas estão executando ao mesmo tempo, mas na verdade o que acontece é que um processo em execução é suspenso temporariamente para dar lugar ao processamento de outro processo e assim sucessivamente.
Nos computadores atuais, o processador funciona como uma linha de produção executando vários programas ao mesmo tempo de forma sequencial, como ler um livro on-line, baixar um arquivo e navegar na internet. A CPU é responsável por alternar os programas, executando-os por dezenas ou centenas de milissegundos, para que cada um tenha acesso ao processamento, dando a ilusão ao usuário de paralelismo ou pseudoparalelismo (TANENBAUM, 2003).
Defina multiprogramação
CPU alterna de um processo para outro a cada momento, essa alternância é conhecida como multiprogramação.
Os serviços que os sistemas operacionais podem implementar através de processos são (MACHADO; MAIA, 2007):
- auditoria e segurança do sistema.
- a contabilização do uso de recursos.
- a contabilização de erros.
- gerência de impressão.
- comunicação de eventos.
- serviços de redes.
- interface de comandos (Shell), entre outros.
Use a analogia de fazer um bolo para exemplificar a diferença entre processo e programa.
Para fazer um bolo, é necessário todos os ingredientes e a receita. A receita pode ser considerada como o programa, os ingredientes são os dados de entrada e a pessoa que prepara o bolo é o processador.
Os processos são as atividades que a pessoa faz durante a preparação do bolo: ler a receita, buscar os ingredientes, misturar a massa e colocar o bolo para assar, que é o processo final desse programa “receita de bolo”.
Segundo Tanenbaum (2003), existem quatro eventos que fazem com que um processo seja criado:
1) início do sistema: quando o sistema operacional é inicializado, são criados vários processos. Existem os de primeiro plano, que interagem com os usuários e suas aplicações, e os de segundo plano, que possuem uma função específica, como um processo para atualizar e-mails quando alguma mensagem é recebida na caixa de entrada.
Para visualizar os processos em execução no Windows, pressione as teclas CTRL+ALT+DEL e no Linux utilize o comando ps.
2) execução de uma chamada ao sistema de criação por um processo em execução: por exemplo, quando um processo está fazendo download, ele aciona um outro processo para ajudá-lo. Enquanto um faz o download, o outro está armazenando os dados em disco.
3) uma requisição do usuário para criar um novo processo: quando o usuário digita um comando ou solicita a abertura de um ícone para a abertura de um aplicativo.
4) início de um job em lote: esses processos são criados em computadores de grande porte, os mainframes.
Existem os processos de primeiro plano, que são processos dos usuários e interagem com suas aplicações, e os de segundo plano, que possuem função específica. Os processos de segundo plano, ao executarem uma função específica, são chamados de
daemons
Após a criação, os processos podem ser finalizados em quais condições?
- saída normal (voluntária): acontece quando o processo acaba de executar por ter concluído seu trabalho.
- saída por erro (voluntária):acontece quando o processo tenta acessar um arquivo que não existe e é emitida uma chamada de saída do sistema. Em alguns casos, uma caixa de diálogo é aberta perguntando ao usuário se ele quer tentar novamente.
- erro fatal (involuntário): acontece quando ocorre um erro de programa, por exemplo, a execução ilegal de uma instrução ou a divisão de um número por zero. Neste caso, existe um processo com prioridade máxima que supervisiona os demais processos e impede a continuação do processo em situação ilegal.
- cancelamento por um outro processo:acontece quando um processo que possui permissão emite uma chamada ao sistema para cancelar outro processo.
O que é e como funciona a hierarquia de processos no sistema UNIX?
Segundo Tanenbaum (2003), em alguns sistemas, quando um processo cria outro, o processo-pai e o processo-filho ficam associados. O filho pode gerar outros processos, criando, assim, uma hierarquia de processos.
No Unix, um processo-pai, seus filhos e descendentes formam um grupo de processos. Por exemplo, quando um usuário envia um sinal do teclado (como CTRL + ALT + DEL), este sinal é entregue para todos os processos que compõem o grupo de processos do teclado. Quando um processo-pai é “morto”, todos os filhos vinculados a ele são “mortos” também.
O Windows possui uma hierarquia de processos?
Não. Cada um possui um identificador próprio e quando um processo cria outro, existe uma ligação entre eles, mas ela é quebrada quando o processo- pai passa seu identificador para outro processo. Quando um processo-pai é “morto”, os processos vinculados a ele não são mortos.
Os processos podem passar por diferentes estados ao longo do processamento. Um processo ativo pode estar em quantos estados?
Um processo pode estar em 3 estados. (MACHADO; MAIA, 2007):
- em execução: um processo está em execução quando está sendo processado pela CPU. Os processos são alternados para a utilização do processador.
- pronto: um processo está no estado de pronto quando possui todas as condições necessárias para executar e está aguardando. O sistema operacional é quem define a ordem e os critérios para execução dos processos.
- espera ou Bloqueado: um processo está no estado de espera quando aguarda por um evento externo (um comando do usuário, por exemplo) ou por um recurso (uma informação de um dispositivo de entrada/saída, por exemplo) para executar.