Aula baseada no material do Professor Carlos Maziero
introdução
introdução
Em um sistema computacional é comum a necessidade da execução de várias tarefas ao mesmo tempo.
Mais tarefas do que processadores
Solução
Ter o mesmo número de processadores e tarefas (Inviável)
Multiplexar o processador
objetivos da aula
Os principais conceitos abordados nesta aula:
Como as tarefas são definidas;
Quais os estados possíveis de uma tarefa;
Como e quando o processador muda de uma tarefa para outra;
a gerÊncia de tarefa
Em um computador, o processador tem de executar todas as tarefas submetidas pelos usuários.
Essas tarefas geralmente têm comportamento, duração e importância distintas.
Cabe ao sistema operacional organizar as tarefas para executá-las e decidir em que ordem fazê-lo
o conceito de tarefa
Uma tarefa é execução de fluxo sequencial de instruções:
compilar um código,
editar uma imagem,
efetuar um cálculo complexo.
Assim, a execução de uma sequência de instruções em linguagem de máquina, normalmente gerada pela compilação de um programa escrito em uma linguagem qualquer, é denominada
“tarefa” ou “atividade”.
o conceito de tarefa
Tarefa!= Programa
PROGRAMA TAREFA
o conceito de tarefa
A GERÊNCIA DE TAREFAS - MONO-TAREFAS
a gerência de tarefas - mono-tarefas
Os primeiros computadores, anos 40, eram mono-tarefas
Os dados e a tarefas eram carregados na mesma memória e depois de processados eram descarregados no disco.
A transferência de código e dado entre memória e disco era gerenciado por um ser humano.
a gerência de tarefas - mono-tarefas
carga do código na memória
carga dos dados na memória
processamento, consumindo dados e produzindo resultados
ao término da execução, a descarga dos resultados no disco.
a gerÊncia de tarefas - mono-tarefas
A gerência de tarefas - sistemas monotarefas
Com a evolução dos periféricos a carga e descarga se torno crítica.
Para resolver essa perda de tempo que acontecia na carga e descarga foi
desenvolvido o programa monitor
O programa monitor era carregado na memória no início da operação e
fica responsável por gerenciar a execução dos
programas.
A GERÊNCIA DE TAREFAS - MONO-TAREFAS
O monitor executa de forma contínua as seguintes tarefas:
carregar um programa do disco para a memória;
carregar os dados de entrada do disco para a memória;
transferir a execução para o programa recém-carregado;
aguardar o término da execução do programa;
escrever os resultados gerados pelo programa no disco.
a gerÊncia de tarefas - multi-tarefas
Processador mais rápido que os dispositivos de entrada e saída
Processador ocioso
Solução: suspender tarefa que estava esperando....
Assim o processador pode executar uma outra tarefa e quando a tarefa suspensa tiver a resposta à sua solicitação ela pode voltar de onde parou e continuar a ser processada.
a gerência de tarefas - multi-tarefas
Necessidade:
mais memória
uma estrutura para salvar o contexto da tarefa suspensa
procedimento para suspender a tarefa e depois carrega-la novamente.
Preempção: ato de retirar um recurso de uma tarefa, no caso o processador, sistemas que realizam essa operação são denominados Sistemas preemptivos
a gerência de tarefas - multi-tarefas
A adoção dessa política tornou o uso dos recursos mais eficientes, além de se ter mais tarefas em andamento simultaneamente: ativas, em espera.....
a gerÊncia de tarefas
sistemas de tempo compartilhado
O problema da ociosidade foi resolvido com os sistemas multi-tarefas, mas imaginem o cenário onde uma das tarefas que está de posse do processador tenha um loop infinito
a gerÊncia de tarefas
sistemas de tempo compartilhado
a gerÊncia de tarefas
sistemas de tempo compartilhado
CICLO DE VIDA DAS TAREFAS
implementação de tarefas
Estado interno : registradores
Contador de programa - PC
Apontador d epilha - SP
Bloco descritor de processo - PCB
Estrutura de dados que representa cada tarefa no núcleo do sistema operacional.
sched.h : que possui a definição de uma estrutura que representa o TCB para esse kernel do Linux
trocas de contexto
Para que o processador possar suspender uma tarefa e depois retomá-la é necessário que sejam definidas operações para realizar a troca de contexto das tarefas
Mecanismos X políticas
dispachante
armazenamento e recuperação de contexto
escalonador
qual tarefa vai ser ecolhida
trocas de contexto
A parte do dispachante é relativamente rápida
O que demanda mais tempo são as ações do escalonador
por esse motivo alguns sistemas operacionais executam o escalonador periodicamente
o dispachante pega a primeira tarefa pronta que está na fila
trocas de contexto
trocas de contexto
Motivos da troca de contexto
término do quantum
evento ocorrido em algum periférico
execução de uma chamada de sistema
erro de execução
processos
Uma tarefa precisa do seu código e de que sejam alocados recurso de máquina para ela.
O conjunto dos recursos alocados a uma tarefa : PROCESSO
Historicamente processo e tarefa tinha definições diferentes
alguns livros mantem essa definição
Isso se deve ao fato de que os SO da década de 80 permitirem somente uma tarefa por processo.
Os sistemas atuais suportam mais de uma tarefa por processo
Windows XP
Linux
processos
processos
Por padrão a uma tarefa está associado um processo
Caso se deseje associar mais tarefas ao mesmo contexto isso deverá ser definido pelo programador
Processo: contêiner de recursos
PROCESSOS
PCB: descritor do processo
TCB: descritor da tarefa
Pode-se associar os TCB ao PCB, assim a troca de contexto entre tarefas do mesmo processo se tornam mais rápidas do que tarefas em processos distintos.
PROCESSOS
Hierarquia de processos
pstree
Comunicação
tarefas associadas ao mesmo processo podem trocar mensagem pois compartilham a mesma área de memória
o que não pode ser feito se as tarefas tiverem associadas a processos distintos
solução: IPC
processos - criação de processos
fork
execv
processos i/o bound
processos cpu-bound
threads
Cada fluxo de execução associado a um processo ou ao núcleo do sistema operacional é uma thread
Threads executando dentro do processo são denominadas threads de usuário
Cada thread do usuário é uma tarefa
Tarefas executadas pelo núcleo são denominadas threads de núcleo