3.1 Prof. Natalia Castro Fernandes Adaptado dos slides do livro Operating System Concepts – 8 th...
Transcript of 3.1 Prof. Natalia Castro Fernandes Adaptado dos slides do livro Operating System Concepts – 8 th...
3.1 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
Interrupção por exceção (hardware ou software) Síncrona Erros de execução
Proteção, underflow, overflow (hardware) Indicados pelo software
Quando se fala em interrupção, em geral, se
refere apenas à interrupção assíncrona
Alguns autores não citam o termo interrupção
A maioria dos autores não classifica como interrupção
3.2 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Interrupções
Chaveamento de modos: Interrupção por software
modo usuário →modo protegido Instrução de retorno
modo protegido →modo usuário
Processo do usuário
Sistema operacional
Modo usuário
Modo protegido
oumodo kernel
Interrupção por software
(Trap)
Instrução de retorno
OBS: O trap é uma instrução.
3.3 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Exceção
Exemplos em python:
try-catch.py a try-catchv4.py
3.4 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Exercícios
Capítulo 1 8,10,22,24,25,26,27
Capítulo 2 1,7,9,13,18,21,23
Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Capítulo 3: Processos
3.6 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Capítulo 3: Processos
Conceito de processos Escalonamento de processos Comunicação interprocessos Exemplos de sistemas IPC Comunicação em sistemas cliente-servidor
3.7 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.8 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Conceito de processo
Alguém saberia definir o que é um processo?
3.9 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Conceito de processo
Um sistema operacional executa uma variedade de programas: Sistemas em lote
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
job ~ processo
3.10 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
O processo
Contém múltiplas partes
Código, também chamado de seção de texto
Atividade atual, incluindo o contador de programa e os registradores de processo
Mem
óri
a
Pilha com dados temporários• Parâmetros de funções,
endereço de retorno, variáveis locais
Seção de dadosContém variáveis globais
Heap • Memória alocada dinamicamente
?
3.11 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
O processo
Programa x processo Programa é passivo Processo é ativo
O programa se torna um processo quando é carregado na memória
Sistema Operacional
Execute A
A
Busca programa no disco
Carrega programa na memória
Processo é criado!Disco
Memória
Usuário
A
3.12 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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.
3.13 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Estado do processo
Um processo tem estado Modificado enquanto o processo executa
Novo
Processo que está sendo criado
• Alocação de recursos
3.14 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Estado do processo
Um processo tem estado Modificado enquanto o processo executa
NovoProcesso que está
esperando para ser atribuído ao processador
Pronto
Sistema operacional admite um novo processo
• Fila de processos que querem usar a CPU
• Apenas um processo por vez na CPU
3.15 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Estado do processo
Um processo tem estado Modificado enquanto o processo executa
Novo
Instruções do processo sendo executadas na CPU
Pronto Em execução
Interrupção de clock definindo o fim do período de uso de CPU do processo
Escalonador do sistema operacional define que o
processo pode utilizar a CPU
3.16 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Estado do processo
Um processo tem estado Modificado enquanto o processo executa
Novo
Processo esperando a ocorrência de algum evento (fim de operação
de I/O ou recebimento de sinal)
Pronto
Em espera
Processo espera por um evento e libera a CPU
Conclusão de evento
Em execução
3.17 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Estado do processo
Um processo tem estado Modificado enquanto o processo executa
Novo
Processo que terminou a sua execução
Pronto
Em espera
Encerrado
Em execução
• Liberação de recursos
Processo é finalizado e sai da memória
3.18 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Recursos do processo
Estado novo Alocação de recursos
Quais recursos?
memória + bloco de controle de processo
???
3.19 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Bloco de controle de processo (Process Control Block - PCB)
Informação associada a cada processo Estado do processo Novo, pronto, em
execução, em espera ou terminado
3.20 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Bloco de controle de processo (Process Control Block - PCB)
Informação associada a cada processo Estado do processo Contador de programa Número que indica a
próxima instrução a ser executada
3.21 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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ções usadas
durante a execução do processo
3.22 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
Dados para escolher o próximo processo a ser
executado
3.23 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.24 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.25 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Process Control Block (PCB)
3.26 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Troca de contexto
Processo P0 Sistema Operacional Processo P1
Interrupção ou chamada de sistema
Salva estado em PCB0
Salva estado em PCB1
Interrupção ou chamada de sistema
Recarrega estado de PCB1
Recarrega estado de PCB0
Em execução
Em execução
Em execução
Em espera
Em espera
Em espera
......
3.27 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Escalonamento de processos
Objetivos Maximar o uso de CPU Trocar rapidamente os processos na CPU para fazer
compartilhamento de tempo
3.28 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.29 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Fila de prontos e filas de dispositivos
3.30 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Representação do escalonamento de processos
CPUFila de prontos
Pedido de I/OFila de I/OI/O
Fim da fatia de tempo
Cria processo filho
Espera por interrupção
Filho executa
Interrupção ocorre
3.31 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
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
Define o grau de multiprogramação
3.32 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.33 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.34 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.35 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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 compartilham parte dos recursos do pai 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
3.36 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.37 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Criação de processos
3.38 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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;
}
Exemplos em Python:
teste_fork3.py até teste_fork7.py
Atenção!!!!!O fork só funciona em Linux para Python
3.39 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Árvore de processos no Solaris
3.40 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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 filho excedeu os recursos alocados Tarefa 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
3.41 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.42 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Comunicação interprocessos
Cooperação entre processos depende da interprocess communication (IPC)
Dois modelos de IPC Memória compartilhada Troca de mensagens
3.43 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Modelos de comunicação
Envio de mensagens Memória compartilhada
3.44 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.45 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Solução com buffer limitado e memória compartilhada
Dados compartilhados
#define BUFFER_SIZE 10
typedef struct {
. . .
} 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
Solução em C
3.46 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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;
}
3.47 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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;
}
3.48 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Entendendo o problema e a solução
Quadro!
3.49 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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)
3.50 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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?
3.51 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.52 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.53 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.54 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Buffering
Fila de mensagens associadas a um enlace Implementações
1. Capacidade 0 Emissor espera pelo receptor
2. Capacidade limitada Capacidade finita de n mensagens Emissor precisa esperar apenas se o enlace está cheio
3. Capacidade não limitada Enlace com capacidade infinita
– Emissor nunca espera
3.59 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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 – API para processos cooperativos– Queue() – Cria fila compartilhada
» put(), get()– Process(codigo do novo processo, argumentos)
» start(), is_alive() Compartilhamento de variáveis
shared_memv4.py
3.60 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.61 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Comunicação em sistemas cliente-servidor
Sockets
Remote Procedure Calls
Pipes
3.62 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.63 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Comunicação por socket
3.64 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.65 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Execução do RPC
3.66 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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?
3.67 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.69 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
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
3.70 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Exemplos em Python
Pipe Ex-pipe.py
Socket Socket-client.py e socket-server.py
3.71 Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Exercícios
Livro: Capítulo 3
6,7,9,10,11,12,13
Prof. Natalia Castro FernandesAdaptado dos slides do livro Operating System Concepts – 8th Edition
Fim do capítulo 3