Sistemas
Operacionais
Processos e Threads
Eng. SERGIO VILLARREAL
Objetivos
Entender o
conceito de processo
, suaimportância e como é implementado pelo SO.
Identificar os
estados
possíveis de um processo esuas transições.
Estabelecer como se decide que processo ocupará o
processador e por quanto tempo
Entender os desafios que a
concorrência
impõePrograma
Sequencias de instruções compiladas em
linguagem de máquina
Conceito estático
Processo ou tarefa
Programa em execução.
Conceito dinâmico
Possui um estado interno bem definido e interage
com outras entidades
Processo - Definições
Instância de um programa em execução
Ambiente de execução de um programa
Container que armazena todas as informações
necessárias para executar ou continuar a execução de um programa
PCB - Process Control Block
Estrutura de dados
utilizada pelo
sistema operacional para
representar
e
implementar os processos
Descritor mantido pelo núcleo do sistema
operacional, para armazenar as informações referentes aos processos ativos
Estrutura de um processo
Contexto de hardware
– Conteúdo dos registradores
Contexto de software
– Nome, identificador, dono e outras informações
Estrutura de um processo
Espaço de memória
Pilha
Código Dados
Contexto
Estado interno
de um
processo
em
um momento determinado
Vai mudando conforme a tarefa vai sendo
executada
Inclui informações sobre o estado interno do
processador e sobre os recursos utilizados pela tarefa
Troca de Contexto
Operações realizadas para retirar um
processo da CPU e colocar outro em
execução
Consiste em salvar a informação de contexto do
Estados de um processo
Novo: já foi criado, tem PCB porém ainda não foi encaminhado para a fila de prontos
Pronto: esperando a CPU Execução: utilizando a CPU
Espera: esperando um evento ou que seja completada uma operação de E/S
Encerrado: Completou sua tarefa, não utilizará mais a CPU, porém ainda tem PCB
Tempo Total de Execução
–
Tempo de
processamento
(Tempo de CPU)
–
Tempo de espera de
operações de E/S
–
Tempo de espera na
fila de prontos
(Escalonamento)
Classificação de Processos
Pela Hierarquia
–
Independentes
Classificação de Processos
Pela Interação
–
Foreground:
Primeiro Plano
–
Underground:
Segundo Plano
Classificação de Processos
Pelo uso de recursos
–
CPU Bound:
Orientado a processamento
ATIVIDADES
Pesquise sobre a evolução do conceito de tarefas e processo
ao longo da história dos sistemas operacionais
Enumere todas as atividades que devem ser realizadas em
uma troca de contexto e qual a parte do sistemas operacional que deve executa-la
Que tipo de decisões deve tomar o despachante?
Escolha um exemplo de processo e descreva seu ciclo de
vida (Estados e transições)
Escalonamento de
Processos
Escalonamento
Decisão
sobre
qual será o próximo
processo
da fila de prontos a ocupar a CPU
e por
quanto tempo
Escalonamento
Orientado por
políticas
Difícil de implementar porque nenhum
algoritmo é perfeito
Existem
diversos critérios e algoritmos
que são estudados separadamente mas que
são utilizados em forma conjunta nos
Critérios
Eficiência:
Maior
taxa de utilização
da CPU
Throughput:
Maior quantidade de
processos
finalizados
por unidade de tempo
Waiting Time:
Menor
tempo de espera
Turnaround:
Menor
tempo de execução.
Tempo
transcorrido desde a criação do processo até a
finalização do seu processamento
Algoritmos de Escalonamento
Colaborativos
– Processo decide quando liberar o processador
Preemptivos
Algoritmos de Escalonamento
Colaborativos
– FCFS: Fisrt Come First Served
– SJF: Shortest Job First
Preemptivos
– RR: Round Robin
– SRTF: Shortest Remaining Time Fisrt
FCFS:
First Come, First Served (FIFO)
Escalona os processos na ordem de
chegada à fila de prontos
• Não utiliza quantum (Colaborativo) e não leva em conta as características nem prioridades das tarefas
• É a forma mais elementar e sua principal vantagem é a simplicidade
SJF:
Shortest Job First
Escalona primeiro os processos mais
curtos
• Proporciona o menor tempo médio de espera e de execução
• Maior dificuldade: estimar a priori o tempo de duração de cada tarefa
• Pode provocar starvation das tarefas mais longas o que se resolve com mecanismos de envelhecimento das tarefas
RR:
Round Robin
(Por Revezamento)
• Versão preemptiva do FCFS (Quantum)
• Menos eficiente que o FCFS para tarefas em lote
• Menor tempo de resposta para aplicações
interativas por distribuir melhor a CPU ao longo do tempo
SRTF:
Shortest Remaining Time Fisrt
– Versão preemptiva do SJF (Quantum)
– Menor tempo restante primeiro
– Facilita a estimação do tempo que será utilizado no próximo quantum com base no histórico das últimas ativações do processo
– Favorece às aplicações com muitas operações E/S que não utilizam totalmente seu quantum
Escalonamento por prioridades
Modelo genérico que permite implementar diversos
algoritmos inclusive os já vistos
A cada tarefa é associada uma prioridade
Os critérios podem ser fatores internos ou externos
da tarefa aplicados de forma combinada
Pode ser aplicado em forma preemptiva ou
colaborativa
Combinado com envelhecimento de tarefas para
Escalonamento por prioridades
Fatores externos
– Informadas pelo usuário ou pelo administrador
– Ex: Classe do usuário, valor pago, importância
Fatores internos
– Obtidos ou estimados pelo escalonador
– Ex: idade da tarefa, tempo estimado de execução, interatividade, uso de recursos
Comunicação e
Sincronização de
Processos
Comunicação entre Processos
Tarefas cooperantes precisam trocar informações entre si Se existe memória compartilhada a comunicação é feita
utilizando variáveis globais
Se não existe memória compartilhada ou as tarefas
residem em computadores diferentes a comunicação deve ser feita através do núcleo do sistema operacional mediante chamadas ao sistema
Os mecanismos de comunicação oferecidos pelo SO são
conhecidos como IPC (Inter Process Communication)
Mecanismos de IPC
Síncronos
– O envio e a recepção da mensagem bloqueia as tarefas envolvidas até a finalização da comunicação
Assíncronos
– Não bloqueante
Sincronização de Processos
Processos Concorrentes
compartilham
recursos como registros, arquivos,
dispositivos de E/S ou memória.
Podem gerar conflitos e inconsistências
Sincronização de Processos
Condição de Disputa
ou
Race Conditions
:
Quando dois processos desejam utilizar o mesmo recurso ao mesmo tempo
Não são erros do código e somente se manifestam
na execução se acontecem determinadas condições
Exclusão Mútua
Enquanto um processo acessa os
recursos os outros devem esperar
Dois programas não podem executar sua região
crítica simultaneamente
Existem soluções de hardware e de software para
implementar a exclusão mútua.
Todas exigem que o programador delimite as
regiões críticas
Exclusão Mútua
Região Crítica
: Parte do programa
que acessa os recursos compartilhados
Protocolo de Entrada
:
Soluções de Hardware
Desativação das Interrupções
– O programa desativa as interrupções antes de entrar na região crítica e as ativa ao sair.
– Mecanismo perigoso porque pode dar muito poder para um programa ineficiente ou malicioso
Instrução Test and Set
– Suportada pelo processador
– Instrução em código de máquina capaz de testar e setear uma variável de forma atômica
– Mecanismo rápido porém inconveniente para programas de usuário por utilizar espera ocupada
Soluções de Software
Semáforos
– Variável do SO associada a uma região crítica. Contem a fila de processos que desejam entrar a região critica
– Operação para entrar na fila. Bloqueia o processo se o recurso não está livre.
– Operação para liberar o recurso. Não é bloqueante
Monitores
Impasse ou Deadlock
Situação em que um processo para de responder
porque está esperando um evento que nunca acontecerá
Acontece em sistemas que utilizam exclusão mútua,
com recursos não preemptivos, que permite pose e espera, e onde pode acontecer espera circular.
Tratamento
– Ignorar: Evitar o custo da prevenção
– Prevenção: Mecanismos para evitar uma das quatro condições
– Detecção e Correção: Para evitar que o sistema todo pare, o processo que causou o impasse é reiniciado
ATIVIDADES
Quais dos mecanismos de exclusão mútua apresentados
utilizam espera ocupada e qual é sua desvantagem?
Pesquise sobre os problemas clássicos de sincronização:
– Produtor consumidor
– Leitor escritor
– Jantar dos filósofos
Pesquise sobre os mecanismos de sincronização oferecidos
pelas linguagem de programação que você utiliza
Threads
Eng. SERGIO VILLARREAL
Threads - Motivação
Primeiros sistemas
operacionais suportavam apenasuma tarefa por processo
Na medida em que as aplicações se tornaram mais complexas
esta limitação se tornou inconveniente, evidenciando a necessidade de suportar mais de uma tarefa no mesmo contexto
Exemplos:
Threads - Definições
Recurso que permite que um processo se
divida a si mesmo
em várias
tarefas
que são executadas
simultaneamente
Processos dentro de um processo
Linhas de execução independentes de um
processo
Threads - Características
Threads de um mesmo processo
compartilham
o contexto de software e o espaço de endereçamento e tem seupróprio
contexto de hardware Podem ser implementadas pela aplicação ou
contar com suporte do sistema operacional e do hardware
Threads são representadas no núcleo do SO
Threads - Operação
Threads compartilham processador da
mesma forma que os processos
Passam pelos mesmos estados Devem ser escalonados
Nas trocas de contexto somente deve ser
guardado o contexto de hardware
Se comunicam através da memoria
compartilhada sem intervenção do SO
Threads - Vantagens
São mais fáceis de criar e terminar (até 100 vezes
mais rápido)
Trocas de contexto rápidas
Facilitam o compartilhamento de recursos entre
tarefas (Mesmo contexto)
Permitem o processamento paralelo em
Ambiente Multithreads
Não existem processos associados a programas, apenas
threads
O processo tem pelo menos um thread
O programador divide o programa em sub-rotinas
assíncronas (podem ser executadas concorrentemente) e associa cada uma a um thread
Inicialmente é executado o thread 0 que é o programa principal
Quando o programa chama as sub-rotinas são criados os
threads
Tipos de Threads
Threads de usuários:
– Thread executando dentro de um processo
– Corresponde a cada tarefa do processo
Threads de núcleo
– Fluxos de execução reconhecidos e gerenciados pelo sistema operacional
– Correspondem a tarefas que o núcleo deve realizar
Implementação de Threads
Modelo N:1
– Thread implementados no nível do usuário
Modelo 1:1
– Thread implementados no nível do núcleo
Modelo N:M
– Thread híbridos que combinam as características dos dois anteriores
Threads Modelo N:1
ULT –User Level Threads – Escalonados pelo programador
Suportados por bibliotecas da linguagem de programação
O núcleo não sabe da existência dos threads, percebe um único fluxo de execução
N threads do processo são mapeados em apenas um thread
de núcleo N:1
Threads Modelo N:1
Threads Modelo 1:1
KLT –Kernel Level Threads – Escalonados pelo núcleo
Suportados pelo núcleo do sistema operacional
O núcleo sabe da existência dos threads, e gerencia o fluxo de execução de cada um
Cada thread no processo é mapeado em um thread do
núcleo 1:1
Favorece às aplicações com muitas operações E/S já que apenas o thread é bloqueado na espera continuando a execução do processo e permite a execução paralela em sistemas multicore
Threads Modelo 1:1
Threads Modelo N:M
Modelo híbrido
N threads do processo são mapeados em um número
menor de threads de núcleo N:M
Combina as vantagens dos dois modelos
Favorese às aplicações interativas sem perder a
escalabilidade
ATIVIDADES
Pesquise sobre tecnologias de hardware que dão suporte à
implementação de threads e determine que relação guardam com o sistema operacional
Pesquise sobre o suporte ao uso de threads oferecidos pelas
linguagem de programação que você utiliza
Faça considerações sobre como a utilização de threads
permite criar programas mais eficientes
Elabore uma tabela comparando as características dos
modelos de implementação dos threads
Determine de que forma afeta ao programador a forma de
implementação dos threads