Interrupções


Interrupção por hardware ou interrupção assíncrona

Ocorrência de evento externo

Não existe troca de parâmetros ou retorno com programa interrompido

Ex.: interrupção de relógio, término de E/S
Interrupções síncronas ou traps

Interrupção por software

Execução de instrução específica
–

Chamada de sistema
Quando se fala em
interrupção, em geral, se
refere apenas à
interrupção assíncrona
Alguns autores não citam o
termo interrupção
Interrupção por exceção (hardware ou software)

Síncrona

Erros de execução

Proteção, underflow, overflow (hardware)

Indicados pelo software
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.1
A maioria dos autores não
classifica como interrupção
Prof. Natalia Castro Fernandes
Interrupções

Processo do
usuário
Chaveamento de modos:

Interrupção por software


modo usuário →modo protegido
Instrução de
retorno
Instrução de retorno

Modo
usuário
modo protegido →modo usuário
Interrupção por
software
(Trap)
Sistema
operacional
OBS: O trap é uma instrução.
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.2
Modo
protegido
ou
modo kernel
Prof. Natalia Castro Fernandes
Exceção
 Exemplos em python:

try-catch.py a try-catchv4.py
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.3
Prof. Natalia Castro Fernandes
Exercícios

Capítulo 1


8,10,22,24,25,26,27
Capítulo 2

1,7,9,13,18,21,23
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.4
Prof. Natalia Castro Fernandes
Capítulo 3: Processos
Adaptado dos slides do livro Operating System Concepts – 8th Edition
Prof. Natalia Castro Fernandes
Capítulo 3: Processos
 Conceito de processos
 Escalonamento de processos
 Comunicação interprocessos
 Exemplos de sistemas IPC
 Comunicação em sistemas cliente-servidor
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.6
Prof. Natalia Castro Fernandes
Objetivos
 Introduzir a noção de processo
 Descrever as várias características de um processo,
incluindo escalonamento, criação, término e comunicação
 Descrever a comunicação em sistemas cliente-servidor
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.7
Prof. Natalia Castro Fernandes
Conceito de processo
 Alguém saberia definir o que é um processo?
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.8
Prof. Natalia Castro Fernandes
Conceito de processo
 Um sistema operacional executa uma variedade de programas:

Sistemas em lote
job ~ processo
 Jobs

Sistemas de tempo compartilhado
 Tarefas
ou programas de usuário
 Processo

Programa em execução
 Execução

sequencial
Inclui:
 Contador
de programa
 Pilha
 Seção
de dados
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.9
Prof. Natalia Castro Fernandes
O processo
Atividade atual, incluindo o
contador de programa e os
registradores de processo
Memória
 Contém múltiplas partes
?
Pilha com dados temporários
• Parâmetros de funções,
endereço de retorno,
variáveis locais
Heap
• Memória alocada dinamicamente
Seção de dados
Contém variáveis globais
Código, também chamado
de seção de texto
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.10
Prof. Natalia Castro Fernandes
O processo
 Programa x processo

Programa é passivo

Processo é ativo
O
programa se torna um processo quando é carregado na
memória
Usuário
Sistema
Operacional
Busca programa
no disco
Execute A
Processo é
criado!
Disco
A
Carrega programa
na memória
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.11
Memória
Prof. Natalia Castro Fernandes
O processo
 Execução de um programa

Iniciada por clicks de mouse na interface gráfica (GUI), pela linha de
comando etc.
 Um programa pode ser vários processos

Exemplo: Múltiplos usuários executando o mesmo programa.
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.12
Prof. Natalia Castro Fernandes
Estado do processo
 Um processo tem estado

Modificado enquanto o processo executa
Processo que está
sendo criado
Novo
•Alocação de recursos
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.13
Prof. Natalia Castro Fernandes
Estado do processo
 Um processo tem estado

Modificado enquanto o processo executa
Novo
Sistema
operacional admite
um novo processo
Processo que está
esperando para ser
atribuído ao processador
Pronto
•Fila de processos que
querem usar a CPU
•Apenas um processo
por vez na CPU
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.14
Prof. Natalia Castro Fernandes
Estado do processo
 Um processo tem estado

Modificado enquanto o processo executa
Novo
Interrupção de clock
definindo o fim do período
de uso de CPU do processo
Em
execução
Pronto
Instruções do processo
sendo executadas na CPU
Escalonador do sistema
operacional define que o
processo pode utilizar a CPU
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.15
Prof. Natalia Castro Fernandes
Estado do processo
 Um processo tem estado

Modificado enquanto o processo executa
Novo
Em
execução
Pronto
Conclusão de evento
Em
espera
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.16
Processo espera por um
evento e libera a CPU
Processo esperando a ocorrência
de algum evento (fim de operação
de I/O ou recebimento de sinal)
Prof. Natalia Castro Fernandes
Estado do processo
 Um processo tem estado

Modificado enquanto o processo executa
Processo que terminou a
sua execução
Processo é finalizado e sai
da memória
Novo
Encerrado
•Liberação de recursos
Em
execução
Pronto
Em
espera
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.17
Prof. Natalia Castro Fernandes
Recursos do processo

Estado novo

Alocação de recursos
Quais recursos?
memória + bloco de controle de processo
???
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.18
Prof. Natalia Castro Fernandes
Bloco de controle de processo
(Process Control Block - PCB)
 Informação associada a cada processo

Novo, pronto, em
execução, em espera ou
terminado
Estado do processo
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.19
Prof. Natalia Castro Fernandes
Bloco de controle de processo
(Process Control Block - PCB)
 Informação associada a cada processo

Estado do processo

Contador de programa
Adaptado dos slides do livro Operating System Concepts – 8th Edition
Número que indica a
próxima instrução a ser
executada
3.20
Prof. Natalia Castro Fernandes
Bloco de controle de processo
(Process Control Block - PCB)
 Informação associada a cada processo

Estado do processo

Contador de programa

Registradores de CPU
Adaptado dos slides do livro Operating System Concepts – 8th Edition
Informações usadas
durante a execução do
processo
3.21
Prof. Natalia Castro Fernandes
Bloco de controle de processo
(Process Control Block - PCB)
 Informação associada a cada processo

Estado do processo
Dados para escolher o
próximo processo a ser
executado

Contador de programa

Registradores de CPU

Informação de escalonamento de CPU
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.22
Prof. Natalia Castro Fernandes
Bloco de controle de processo
(Process Control Block - PCB)
 Informação associada a cada processo

Estado do processo

Contador de programa

Registradores de CPU

Informação de escalonamento de CPU

Informação de gerenciamento de memória
Controle da memória
alocada ao processo
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.23
Prof. Natalia Castro Fernandes
Bloco de controle de processo
(Process Control Block - PCB)
 Informação associada a cada processo

Estado do processo

Contador de programa

Registradores de CPU

Informação de escalonamento de CPU

Informação de gerenciamento de memória

Informação de uso (contabilização)

Informação de estado de I/O
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.24
Prof. Natalia Castro Fernandes
Process Control Block (PCB)
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.25
Prof. Natalia Castro Fernandes
Troca de contexto
Processo P0
Em
execução
Sistema Operacional
Processo P1
Interrupção ou
chamada de sistema
Salva estado em PCB0
Em
espera
...
Recarrega estado de PCB1
Em
espera
Em
execução
Interrupção ou
chamada de sistema
Salva estado em PCB1
...
Recarrega estado de PCB0
Em
espera
Em
execução
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.26
Prof. Natalia Castro Fernandes
Escalonamento de processos
 Objetivos

Maximar o uso de CPU

Trocar rapidamente os processos na CPU para fazer
compartilhamento de tempo
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.27
Prof. Natalia Castro Fernandes
Escalonamento de processos
 Escalonador de processos

Escolher entre os processos qual será o próximo a ser
executado pela CPU
 Manutenção
de filas de escalonamento
–
Fila de jobs – conjunto de todos os processos no
sistema
–
Fila de prontos – conjunto de todos os processos
que estão prontos para serem executados e
esperando o acesso à CPU
–
Filas de dispositivos – conjunto de processos
esperando pelo dispositivo de I/O
 Processos
são movidos entre as diversas filas
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.28
Prof. Natalia Castro Fernandes
Fila de prontos e filas de dispositivos
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.29
Prof. Natalia Castro Fernandes
Representação do escalonamento de
processos
CPU
Fila de prontos
I/O
Pedido de I/O
Fila de I/O
Fim da fatia de
tempo
Filho
executa
Cria processo
filho
Interrupção
ocorre
Espera por
interrupção
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.30
Prof. Natalia Castro Fernandes
Escalonadores
 Escalonador de longo prazo (ou escalonador de jobs)

Seleciona quais processos devem ser trazidos a fila de
prontos

Não é chamado com grande frequência
 Pode
ser lento
Define o grau de
multiprogramação
 Escalonador de curto prazo (ou escalonador de CPU)

Seleciona qual o próximo processo a ser executado e aloca
a CPU

Muitas vezes, é o único escalonador no sistema

Chamado com alta frequência (ms)
 Precisa
ser rápido
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.31
Prof. Natalia Castro Fernandes
Escalonadores
 Processos podem ser descritos como:

Processos limitados por I/O
 Gastam
mais tempo com I/O do que com uso de CPU
 Diversas

rajadas de uso de CPU curtas
Processos limitados por CPU
 Gastam
mais tempo com uso de CPU
 Poucas
rajadas longas de uso de CPU
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.32
Prof. Natalia Castro Fernandes
Troca de Contexto
 Processo de troca de processos na CPU

Salva o estado atual do processo em execução

Carrega estado de novo processo
 O contexto de um processo é representado pelo seu PCB
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.33
Prof. Natalia Castro Fernandes
Troca de Contexto
 Tempo de troca de contexto é sobrecarga

Tempo de troca de processos não é considerado tempo útil do
sistema

Quanto mais complexo o sistema operacional e o PCB, maior
o tempo de troca

Tempo de troca depende de suporte de hardware
 Alguns
hardwares provêem múltiplos conjuntos de
registradores por CPU
–
Possibilidade de fazer várias carregamentos de
contexto simultaneamente
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.34
Prof. Natalia Castro Fernandes
Criação de processos
 Processo pai cria processos filhos, os quais, por sua vez, podem
criar outros processos, criando uma árvore de processos

Cada processo é identificado por um identificador de processo
(pid)
 Compartilhamento de recursos

Possibilidades
 Pai
e filhos compartilham todos os recursos
 Filhos
 Pai
compartilham parte dos recursos do pai
e filhos não compartilham recursos
 Execução

Possibilidades
 Pai
e filhos executam concorrentemente
 Pai
espera até o fim da execução dos filhos
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.35
Prof. Natalia Castro Fernandes
Criação de processos
 Espaço de endereçamento

Possibilidades
 Filhos
são cópias do pai
 Filhos
tem um programa diferente carregado na sua área de
código
 Exemplos no UNIX

Chamada de sistema fork cria novos processos

A chamada de sistema exec é chamada após o fork para
sobrescrever o espaço de memória com um novo programa
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.36
Prof. Natalia Castro Fernandes
Criação de processos
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.37
Prof. Natalia Castro Fernandes
Criando processos com o fork
#include <sys/types.h>
#include <studio.h>
#include <unistd.h>
int main()
{
pid_t pid;
/* fork another process */
pid = fork();
if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");
return 1;
}
else if (pid == 0) { /* child process */
execlp("/bin/ls", "ls", NULL);
}
else { /* parent process */
/* parent will wait for the child */
wait (NULL);
printf ("Child Complete");
}
return 0;
Adaptado dos
} slides do livro Operating System Concepts – 8th Edition
Exemplos em Python:
teste_fork3.py até teste_fork7.py
Atenção!!!!!
O fork só funciona em Linux para
Python
3.38
Prof. Natalia Castro Fernandes
Árvore de processos no Solaris
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.39
Prof. Natalia Castro Fernandes
Finalização de processos
 Processo executa a sua última linha e pede ao sistema
operacional para deletá-lo (exit)

Recursos do processos são desalocados pelo sistema
operacional
 Processo pai pode terminar a execução de um processo filho
(abort)

Exemplos de motivação
 Processo
 Tarefa
filho excedeu os recursos alocados
passada ao filho não é mais necessária
 Processo
pai está sendo finalizado, e alguns sistemas
operacionais não permitem que o filho continue executando
após o pai ter sido finalizado
–
Finalização em cascata
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.40
Prof. Natalia Castro Fernandes
Comunicação interprocessos
 Processos em um sistema podem ser independentes ou
cooperativos

Processos cooperativos podem afetar ou serem afetados por
outros processos

Processos independentes não podem afetar ou serem
afetados pela execução de outro processo
 Razões para cooperação interprocessos

Compartilhamento de dados

Aumento da velocidade de computação

Modularidade

Conveniência
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.41
Prof. Natalia Castro Fernandes
Comunicação interprocessos
 Cooperação entre processos depende da interprocess
communication (IPC)
 Dois modelos de IPC

Memória compartilhada

Troca de mensagens
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.42
Prof. Natalia Castro Fernandes
Modelos de comunicação
Memória compartilhada
Envio de mensagens
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.43
Prof. Natalia Castro Fernandes
Problema do produtor-consumidor
 Paradigma para processos cooperativos

O processo produtor produz informação que é
consumida pelo processo consumidor
 Variações

Buffer não limitado

Buffer limitado
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.44
Prof. Natalia Castro Fernandes
Solução com buffer limitado e memória
compartilhada

Dados compartilhados
#define BUFFER_SIZE 10
typedef struct {
Solução em C
...
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;

Solução a seguir é correta, mas permite apenas que se use
BUFFER_SIZE-1 elementos
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.45
Prof. Natalia Castro Fernandes
Produtor com buffer limitado
while (true) {
/* Produce an item */
while (((in = (in + 1) % BUFFER SIZE count) == out)
; /* do nothing -- no free buffers */
buffer[in] = item;
in = (in + 1) % BUFFER SIZE;
}
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.46
Prof. Natalia Castro Fernandes
Consumidor com buffer limitado
while (true) {
while (in == out)
; // do nothing -- nothing to consume
// remove an item from the buffer
item = buffer[out];
out = (out + 1) % BUFFER SIZE;
return item;
}
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.47
Prof. Natalia Castro Fernandes
Entendendo o problema e a solução
 Quadro!
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.48
Prof. Natalia Castro Fernandes
Comunicação interprocessos – troca de mensagens
 Mecanismo para processos se comunicarem e sincronizarem suas
ações

Não usa memória compartilhada
 Operações básicas:

send(mensagem)

receive(mensagem)
 Se P e Q desejam se comunicar, eles precisam:

Estabelecer um enlace de comunicação entre eles

Trocar mensagens via send e receive
 Implementação do enlace de comunicação

físico (ex., memória compartilhada, barramento de hardware)

lógico (ex., propriedades lógicas)
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.49
Prof. Natalia Castro Fernandes
Questões de implementação
 Como os enlaces são estabelecidos?
 Um mesmo enlace pode ser associado com mais de 2 processos?
 Quantos enlaces podem existir entre cada par de processos
comunicantes?
 Qual a capacidade de um enlace?
 O tamanho da mensagem deve ser fixo ou variável?
 O enlace deve ser uni ou bidirecional?
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.50
Prof. Natalia Castro Fernandes
Comunicação direta
 Processos precisam nomear uns aos outros explicitamente:

send (P, mensagem) – enviar a mensagem para o processo P

receive(Q, mensagem) – receber a mensagem do processo Q
 Propriedades do enlace de comunicação

Enlaces são estabelecidos automaticamente

Um enlace é associado com exatamente um par de processos
comunicantes

Entre cada par existe exatamente um enlace

O enlace pode ser unidirecional, mas usualmente é bidirecional
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.51
Prof. Natalia Castro Fernandes
Comunicação indireta
 Mensagens são direcionadas e recebidas por meio de mailboxes
(mais comumente chamadas de portas)

Cada porta tem um identificador único

Processos podem se comunicar apenas se eles compartilham
uma mailbox
 Propriedades de um enlace de comunicação

Enlace estabelecido apenas se processos compartilham uma
mailbox comum

Um enlace pode ser associado a diversos processos

Cada par de processos pode compartilhar diversos enlaces de
comunicação

Enlaces podem ser uni ou bidirecionais
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.52
Prof. Natalia Castro Fernandes
Sincronização
 Envio de mensagens pode ser tanto blocante quanto não-
blocante
 Operação blocante é considerada síncrona

O send blocante bloqueia o emissor até que a mensagem
seja recebida

O receive blocante bloqueia o receptor até que a mensagem
esteja disponível
 Operação não-blocante é considerada assíncrona

O emissor envia a mensagem e continua

O receptor recebe uma mensagem válida ou nulo
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.53
Prof. Natalia Castro Fernandes
Buffering
 Fila de mensagens associadas a um enlace

Implementações
1.
Capacidade 0
 Emissor
2.
espera pelo receptor
Capacidade limitada
 Capacidade
 Emissor
3.
finita de n mensagens
precisa esperar apenas se o enlace está cheio
Capacidade não limitada
 Enlace
–
com capacidade infinita
Emissor nunca espera
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.54
Prof. Natalia Castro Fernandes
Exemplos em Python
 Compartilhamento de variáveis

shared_mem.py a shared_memv3.py

OBS:
 Lista
–
– Estrutura de dados de python
Funciona como um vetor
 Multiprocessing
–
Queue() – Cria fila compartilhada
»
–
– API para processos cooperativos
put(), get()
Process(codigo do novo processo, argumentos)
»
start(), is_alive()
 Compartilhamento de variáveis

shared_memv4.py
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.59
Prof. Natalia Castro Fernandes
Exemplos em Python
 Compartilhamento de variáveis

shared_memv4.py
 Multiprocessing
–
Value(tipo, valor) --- compartilhando um número
–
Array(tipo,lista)
–
Join() – Bloqueia o pai até o filho terminar
»
Shared_memv4b.py
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.60
Prof. Natalia Castro Fernandes
Comunicação em sistemas cliente-servidor
 Sockets
 Remote Procedure Calls
 Pipes
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.61
Prof. Natalia Castro Fernandes
Sockets
 Um socket é definido como um ponto de extremidade para a
comunicação
 Concatenação de IP e porta

Exemplo:
O
socket 161.25.19.8:1625 se refere a porta 1625 no
host 161.25.19.8
 A comunicação consiste de um par de sockets
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.62
Prof. Natalia Castro Fernandes
Comunicação por socket
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.63
Prof. Natalia Castro Fernandes
Remote Procedure Calls
 Remote procedure call (RPC) abstraem chamadas de
procedimento entre processos em sistemas em rede
 Stubs – Proxy no lado do cliente/servidor

O stub do lado cliente localiza o servidor e encaminha os
parâmetros

O stub no lado servidor recebe essa mensagem, desempacota
os parâmetros recebidos e desempenha o procedimento no
servidor
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.64
Prof. Natalia Castro Fernandes
Execução do RPC
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.65
Prof. Natalia Castro Fernandes
Pipes
 Atua como um condutor permitindo que dois processos se
comuniquem
 Questões

A comunicação é uni ou bidirecional?

No caso da comunicação bidirecional, ela é half ou full-duplex?

É necessário existir uma relação (pai-filho) entre os processos
comunicantes?

O pipe pode funcionar através da rede?
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.66
Prof. Natalia Castro Fernandes
Pipes comuns
 Pipes comuns permitem a comunicação em um estilo produtor-
consumidor padrão
 Funcionamento

O produtor escreve em uma ponta do pipe

O consumidor lê a saída na outra ponta
 Portanto,

pipes comuns são unidirecionais
Requerem relação de pai-filho entre processos comunicantes
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.67
Prof. Natalia Castro Fernandes
Pipes nomeados
 Pipes nomeados são mais potentes que pipes comuns

Comunicação bidirecional

Não há necessidade de relação pai-filho

Pode ser usado por diversos processos

Disponível tanto em UNIX quanto em Windows
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.69
Prof. Natalia Castro Fernandes
Exemplos em Python
 Pipe

Ex-pipe.py
 Socket

Socket-client.py e socket-server.py
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.70
Prof. Natalia Castro Fernandes
Exercícios
 Livro:

Capítulo 3
 6,7,9,10,11,12,13
Adaptado dos slides do livro Operating System Concepts – 8th Edition
3.71
Prof. Natalia Castro Fernandes
Fim do capítulo 3
Adaptado dos slides do livro Operating System Concepts – 8th Edition
Prof. Natalia Castro Fernandes
Download

Processos