Please enable JavaScript.
Coggle requires JavaScript to display documents.
Cap 5: Implementação de Tarefas - Coggle Diagram
Cap 5: Implementação de Tarefas
Contextos
Estado de uma tarefa em um determinado instante
Estado do processador ; PC e SP (stack pointer)
Posição do código, valores das variáveis
TCB (Task Control Block): estrutura de dados
Identificador da Tarefa (ID)
Estado da tarefa (nova, pronta, etc)
Contexto do processador (valores de registradores)
Lista das áreas de memória usadas pela tarefa
Lista de arquivos abertos, conexões de rede e outros recursos
Informações de gerência e contabilização
Descritores organizados em listas de TCBs
Trocas de Contexto
Operações para salvar o contexto de uma tarefa no TCB e depois restaurá-lo
Manipula flags e registradores específicos de cada processador ; implementadas em linguagem de máquina
Ato de suspender uma tarefa e iniciar outra
Eficiência influenciada pelo quantum de tempo e pelo tempo de troca de contexto
Despachante: implementa os mecanismos de gerência das tarefas ; Armazenamento, recuperação e atualização de contextos nos TCBs
Muitas tarefas ativas implicam em um tempo maior gasto pelo escalonador
Escalonador: implementa as políticas ; Escolha da próxima tarefa a receber o processador
Aplicações que executam muita entrada/saída diminuem o quantum
Muitos sistemas operacionais não executam o escalonador a cada troca de contexto, mas apenas periodicamente
Processos
O conceito de processo
Contêiner de recursos utilizados por uma ou mais tarefas para sua execução
Isolados entre si por mecanismos de proteção do hardware
Um processo pode conter várias tarefas que compartilham recursos
PCBs (Process Control Blocks)
PID
Usuário; prioridade ; data de início ; caminho do arquivo ; áreas de memória ; arquivos abertos ; etc
Permite simplificar o TCB
Gestão de Processos
Chamadas de sistema para criar, destruir e obter informações sobre processos
UNIX
Fork: um processo cria uma réplica de si mesmo ; pai e filho acessam os mesmo recursos do núcleo embora executem em áreas de memória distintas
Execve: o processo filho carrega um novo código binário em sua memória provido de um arquivo passado como parâmetro
Exit: Informa ao núcleo do SO que o processo não é mais necessário e pode ser destruído
IPC (Inter-process comunication): tarefas de um mesmo processo podem se comunicar, o IPC garante que tarefas de processos distintos possam também
Hierarquia de Processos
Árvore de processos: pode ser usada para gerenciar de forma coletiva os processos ligados a uma mesma aplicação ou sessão de trabalho de um usuário
Quando um processo pai morre, os filhos podem decidir se continuam a existir ou não
Threads
Definição de Threads
Fluxo de execução independente ; um processo pode contem uma ou mais threads
Pequeno contexto local, Thread Local Storage (TLS), composto pelos registradores do processador e uma área de pilha em memória, para que a thread possa armazenar variáveis locais e efetuar chamadas de funções
Kernel threads x User threads
Modelos de Threads
N : 1
N threads dentro de um processo são mapeadas em uma única thread no núcleo
Vantagens: Leve e de fácil implementação; Carga de gerência imposta ao núcleo é pequena ; Útil na construção de aplicações que exijam muitas threads
Desvantagens: operações de entrada/saída são realizadas pelo núcleo, o núcleo do sistema divide o tempo de processamento entre as threads de núcleo, threads do mesmo processo não podem executar em paralelo
1 : 1
Para cada thread de usuário é associada uma thread correspondente dentro do núcleo
Vantagens: caso uma thread de usuário solicite uma
operação bloqueante, somente sua thread de núcleo correspondente será suspensa, distribuição de processamento mais justa e várias threads podem executar ao mesmo tempo
Desvantagens: Pouco escalável, muitas threads impõe uma carga elevada ao núcleo
N : M
Uma biblioteca gerencia um conjunto de N threads de usuário mapeadas em M < N threads no núcleo ; Thread Pool
Junta as vantagens dos modelos 1 : 1 e N : 1
Desvantagens: complexidade de implementação e maior custo de gerência das threads do núcleo
POSIX
Processos Vs Threads
Usando um processo para cada tarefa
Robustez: erros restritos, permissões distintas, mais segurança
Necessita de mecanismos especiais para comunicação
Usando uma thread para cada tarefa
Interação entre as tarefas mais simples, compartilham recursos, execução mais ágil, mais rápido criar thread do que processo
Um erro em uma thread pode se alastrar para as demais
Uso conjunto de processos e threads
Vários processos, cada um com várias threads