Sistemas Operacionais
Processos e Threads
Thiago Leite
Processos e Threads
• Processo
• Programa em execução
• Todo processo é um programa?
• Mais: o programa é apenas parte do estado.
• Menos: programas podem gerar vários
Processos e Threads
• Abstração de processo
• permite execução de múltiplas tarefas
(multiprogramação)
Processos e Threads
• Cada processo possui um espaço de
endereçamento
• recursos de auxílio ao processo
• O processo e seu respectivo espaço de
Processos e Threads
• Espaço de endereçamento • Programa executável • Dados do programa • Registradores • Arquivos abertos • Alarmes pendentesProcessos e Threads
• Segmentos de um processo Unix • Pilha
• conjunto de instruções de uma sub-rotina • Heap
• extensão da memória
• BSS (Block Memory Starting with Symbol) • variáveis não inicializadas
• Data
• variáveis inicializadas • Texto
Processo Unix
Processos e Threads
• Multiprogramação
• vários processos em memória
• vários fluxos de execução
• processos desconhecem o momento que serão
executados
Multiprogramação
Processos e Threads
• Sistema operacional lida com a Tabela de
Processos
Processos e Threads
• Árvore de Processos
• Pode criar um ou mais processos filhos
• Processos filhos também podem criar processos
Árvore de Processos
Processos e Threads
• Hierarquias de processos
• Em Unix todos os processos compõe uma árvore com a raíz o INIT
Processos e Threads
• Chamadas de sistema de gestão de processos
• criação e término de processos
• requisitar mais memória ou esperar o término de
Processos e Threads
• Momentos em que os processos geralmente são
criados
• Início do sistema
• Execução de uma chamada de sistema de
criação
• Requisição do usuário
Processos e Threads
• Processos podem ser criados em
• Foreground
Processos e Threads
• Processos em Foreground
• processos sujeitos a interação do usuário
• usualmente processos do terminal de comandos
Processos e Threads
• Processos em Background
• daemons em Unix
• Disk And Execution MONitor
Processos e Threads
• Fluxo de dados para processos em Unix
• entrada padrão
• saída normal
• saída com erro
Processo entrada
Processos e Threads
• Término de processo
• Saída normal (voluntário)
• Saída por erro (voluntário)
• Erro fatal (involuntário)
Processos e Threads
• Comunicação entre processos
• processo envia saída para entrada de outro
processo
• dois processos solicitando o mesmo recurso
• um processo depende de outro para realizar
Pipe Unix
Processos e Threads
• Processos em Unix
• PID (Process IDentifier)
• identificação de um processo
• número utilizado para manipular os processos
Processos e Threads
• Processos em Unix
• Possui um UID (User IDentifier) associado
• Vários UIDs podem pertencer a um GID
(Group IDentification)
• Sistemas baseados em Unix possuem um UID
Processos e Threads
• Outros elementos de processos em Unix
• Ambiente de execução (Ex: PATH)
• Diretório de trabalho
• Instruções do programa
• Registradores e Pilha de instruções
• Heap (alocação de memória dinâmica)
• Descritores de arquivos
• Ações de sinais
• Bibliotecas compartilhadas
• Sistema de comunicação entre processos (filas de mensagens, pipes ou memória
Informações sobre Processos
Processos e Threads
• A Tabela de Processos em sistemas Unix-like
usualmente é representada por /proc
• Em Linux procfs é um sistema de arquivos virtual
Tabela de Processos
Processos e Threads
• Significado de alguns elementos de /proc
• cmdline - comando e opções associados ao processo
• cwd - diretório de trabalho do processo.
• environ - variáveis de ambiente criadas pelo processo
• exe - executável do processo
• fd - descritores de arquivos utilizados
Ciclo de vida de um processo
Processos e Threads
• Estados principais de um processo
•
Em execução (realmente usando a CPU)•
Pronto (executável; esperando seu momento)Ciclo de vida de um processo
Processos e Threads
• O momento das interrupções depende do tipo de
sistema a adotar
• Preemptivo (processos podem ser interrompidos
sem consentimento)
• Não-preemptivo (processos que decidem o
Processos e Threads
• Sistema preemptivo
• Escalonador (invisível ao processo)
• Interrupções
• Inicialização
Processos e Threads
• Escalonador
• Utiliza a Tabela de Processos
• Manipulador de processos (process handler)
• Salvar registradores
• Alterar ponteiro da pilha
Processos e Threads
• Escalonamento
1. Hardware guarda contador de programa atual 2. Hardware carrega o novo contador de programa 3. Rotinas Assembly salvam os registradores
4. Rotinas Assembly carregam novos registradores 5. Serviço de interrupção em C carrega os buffers
6. Escalonador decide quem será o próximo a executar
Processos e Threads
• Principais métodos de escalonamento
• FIFO (First-In-First-Out) ou FCFS (First-Come-First-Served) • primeiro a chegar em pronto é o primeiro a ser executado
• SJF (Shortest Jog First), SPN (Shortest Process Next) e SRT (Shortest Remaning
Time)
• menor tarefa será executada primeiro • Por prioridade
• processos são associados a prioridades. Processos com prioridades iguais
obedecem ao FIFO.
• Round-Robin ou circular
9.2 / SCHEDULING ALGORITHMS 415 First-come-first served (FCFS) 0 5 10 15 20 0 5 10 15 20 A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E Round-robin (RR), q ! 1 Round-robin (RR), q ! 4 Shortest process next (SPN) Shortest remaining time (SRT) Highest response ratio next (HRRN) Feedback q ! 1 Feedback q ! 2i
Figure 9.5 A Comparison of Scheduling Policies
The normalized turnaround time for process Y is way out of line compared to the other processes: the total time that it is in the system is 100 times the required process-ing time. This will happen whenever a short process arrives just after a long process. On the other hand, even in this extreme example, long processes do not fare poorly. Process Z has a turnaround time that is almost double that of Y, but its normalized residence time is under 2.0.
Algoritmo de tarefa mais curta (SJF)
9.2 / SCHEDULING ALGORITHMS 415 First-come-first served (FCFS) 0 5 10 15 20 0 5 10 15 20 A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E Round-robin (RR), q ! 1 Round-robin (RR), q ! 4 Shortest process next (SPN) Shortest remaining time (SRT) Highest response ratio next (HRRN) Feedback q ! 1 Feedback q ! 2i
Figure 9.5 A Comparison of Scheduling Policies
The normalized turnaround time for process Y is way out of line compared to the other processes: the total time that it is in the system is 100 times the required process-ing time. This will happen whenever a short process arrives just after a long process. On the other hand, even in this extreme example, long processes do not fare poorly. Process Z has a turnaround time that is almost double that of Y, but its normalized residence time is under 2.0.
M09_STAL6329_06_SE_C09.QXD 2/21/08 9:32 PM Page 415
Algoritmo por Prioridade
Exemplo de Escalonamento por
Prioridade
Processos de menor prioridade apenas serão escalonados se não houver outros processos de maior prioridade
Processo B possui maior prioridade de execução
Algoritmo Round-Robin ou Circular
9.2 / SCHEDULING ALGORITHMS 415 First-come-first served (FCFS) 0 5 10 15 20 0 5 10 15 20 A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E Round-robin (RR), q ! 1 Round-robin (RR), q ! 4 Shortest process next (SPN) Shortest remaining time (SRT) Highest response ratio next (HRRN) Feedback q ! 1 Feedback q ! 2i
Figure 9.5 A Comparison of Scheduling Policies
The normalized turnaround time for process Y is way out of line compared to the other processes: the total time that it is in the system is 100 times the required process-ing time. This will happen whenever a short process arrives just after a long process. On the other hand, even in this extreme example, long processes do not fare poorly. Process Z has a turnaround time that is almost double that of Y, but its normalized residence time is under 2.0.
M09_STAL6329_06_SE_C09.QXD 2/21/08 9:32 PM Page 415
Escalonamento Round-Robin
com diferentes tempos de preempção
Processos e Threads
• Métodos compostos de escalonamento
• Fila Múltipla (Multilevel Queue)
• divide a fila de prontos em várias filas separadas, com
base em alguma propriedade do processo. Cada fila possui seu próprio algoritmo de escalonamento
• Fila Múltipla com Realimentação (Multilevel Feedback
Queue)
• identifica dinamicamente o comportamento de cada
Algoritmo Fila Múltipla
Escalonador com Fila Múltipla
Processos e Threads
• Tipos de processos • CPU Bound
• Uso intensivo da CPU
• Poucas operações de Entrada/Saída
• Pode monopolizar a CPU dependendo do tipo de algoritmo de
escalonamento utilizado
• I/O Bound
• Orientado a Entrada/Saída
Cenários de uso da CPU
Processos e Threads
• Threads
• “Miniprocessos”
• Múltiplas atividades simultâneas
• Compartilhamento do espaço de endereçamento
Vida e Morte
Processos e Threads
• Exemplo do uso de Threads
• Editor WYSIWYG (What You See Is What You Get)
• Edição e resultado simultâneo
• O Microsoft Word e BrOffice.org são exemplos
Editor de texto com três Threads
Servidor Web Multithread
Processos e Threads
• Condições de corrida
• processos que compartilham dados
• ex: spool de impressão
• dois processos acessam a mesma região e
ocasionalmente entrem em conflito
• ex: dois processos acham o mesmo espaço
Condição de corrida
Processos e Threads
• Exclusão mútua
• apenas um processo poderá acessar
determinado recurso por vez
• o código de um processo que faz uso de recurso
Processos e Threads
• Condições para acesso a dados compartilhados
• dois processos nunca podem estar
simultaneamente em suas regiões críticas
• nenhum processo fora de sua região crítica
poderá bloquear outro processo
• nenhum processo deverá esperar eternamente
Condição de corrida
Processos e Threads
• Espera ociosa
• espera para que um processo deixe sua região
crítica e possa realizar o mesmo
Processos e Threads
• Semáforos
• proposto por Edsger Dijkstra em 1965
• utilizada em sistemas multiprogramados
Processos e Threads
• Operações sobre semáforos são atômicas
• inicialização
• operação wait
Processos e Threads
• Inicialização de semáforo
• recebe valor inteiro indicando quantos
Processos e Threads
• Operação wait em semáforos
• decrementa o valor do semáforo
• se esse possuir valor 0, esse é colocado em
Processos e Threads
• Operação signal em semáforos
• se houver um processo em espera ociosa, esse
é acordado
• se não houver processo em espera ociosa, o
Processos e Threads
Processos e Threads
• Mutex
• tipo mais simples de semáforo
• semáforo binário, onde o recurso está disponível
Condição de corrida
Revisão
• Processo • Concorrência • Multiprogramação • Espaço de endereçamento • Tabela de processos • Imagem do núcleo • Árvore de processos • Subprocessos• Chamadas de sistema (system calls) • Criação de processos • Foreground • Background • PID • Processos em Unix • UID • GID • ps • kill • Término de processo • Shell Unix • Hierarquias de processos
• Comunicação entre processos
• Estados de um processo • Diagrama de estados de processo • Estados de um processo em Unix • Escalonador • Manipulador de processos • Algoritmos de Escalonamento
• Otimização do uso da CPU
Laboratório
• Comandos Bash Shell
• ls - listar o conteúdo de um diretório ou
informações sobre um arquivo $ ls
• cd - navegar entre diretórios
Laboratório
• Comandos Bash Shell
• cat - exibe e concatena arquivos
$ cat arquivo1 arquivo2
• grep - filtra uma entrada por uma string
Laboratório
• Comandos Bash Shell
• echo - imprime uma mensagem
$ echo “Ola Mundo”
• rm - remove arquivos do sistema
Laboratório
• Comandos Bash Shell
• sudo - solicitar execução em modo Super
Usuário
$ sudo comando
• su - autenticar-se como Super Usuário
Laboratório
• Uso do pipe ( | ) em Bash Shell
Laboratório
• Comandos Bash Shell
• ; - finalização de um comando
comando1 ; comando2
• \ - continuação de um mesmo comando em
várias linhas comando \
Laboratório
• Redirecionamento de entradas e saídas em Bash Shell
• < - entrada padrão comando < arquivo_com_argumentos • > ou >> - saída padrão comando > arquivo_saida • 2> ou 2>> - saída de erro comando 2>> arquivo_erro_apendice
• 2>&1 - saída padrão e de erros
Laboratório
• Comandos em Bash Shell
• & - execução de um comando em segundo plano (background)
comando &
• jobs - apresenta comandos em background
[1]+ Running comando &
• fg - traz processo novamente para o foreground
fg 1
• bg - leva um processo para background
Laboratório
• Comandos em Bash Shell
• ps - obtém informações sobre os processos do
sistema ps aux
• kill - envia um sinal para um determinado PID