Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistema Operativo Cap 1 Ate 6 Ok
Sistema Operativo Cap 1 Ate 6 Ok
OPERATIVOS
Sistemas Operativos
Eng.Agostinho Panzu- 2019
Bibliografia
Sistemas Operativos
Eng.Agostinho Panzu- 2019
SISTEMAS OPERATIVOS
Objectivo:
Introdução aos SO
Questões de Base
Para que servem os sistemas informáticos?
Um sistema informático tem por objectivo executar uma ou várias aplicações para os seus
utilizadores.
As aplicações são o que justifica o investimento que é efectuado no sistema através delas que quem
realiza o investimento espera ter o retorno na melhoria dos processos da empresa ou da organização.
um conjunto de recursos lógicos: programas, ficheiros, bases de dados, interfaces utilizador, etc. –
vulgarmente o software.
Sistemas Operativos
Eng.Agostinho Panzu- 2008
SISTEMAS OPERATIVOS
Introdução aos SO
u su ári os
p rog r ama do res p rog r ama s,
e a na li sta s si stem as e
ap li ca tivos
Usu ár ios
S
S
Sistema Operativo
iistema
stema Oper
Operaci
acional
onal
mem ór ia d iscos
Har dw ar e
fi tas
UCP
Objectivo dos SO
Um Gestor de recursos
Controla todos os recursos do computador e fornece a base sobre o qual os programas
aplicativos são escritos
Faz a gerência dos usuários para cada um dos recursos da máquina (ficheiros, memória principal
e periféricos)
Introdução aos SO
Diferentes visões de um SO
u su á r i o s
Visão do utilizador
Chamadas do sistema – forma usada pelo programa para
solicitar um serviço do SO semelhante a chamada de uma sub-
rotina Sistema
Sist e m a OOperativo
p e r a ci o n a l
H ardw a re
Visão do projectista do SO
Forma pela qual o sistema implementa os serviços: Interrupções, excepção,
Chamadas Sistema
SISTEMAS OPERATIVOS
História dos SO
Monitores de controlo
Permitem o arranque do sistema, carregar programas, usar rotinas de I/O, eventualmente têm
um interpretador (Década 1950)
Sistemas Batch
Permitem carregar automaticamente o “JOB” (programa) seguinte, tem um controlo elementar da
memória e dos processos
Sistemas Multiprogramados
Permitem vários processos concorrentes (Década 1960)
Sistemas Interactivos
Permitem diálogo homem-máquina durante a execução
Sistemas Distribuídos
Gerem várias máquinas (Década 1980)
SISTEMAS OPERATIVOS
Shell
É um interpretador de comandos UNIX (ex: command.com – MS-DOS)
Responsável pela interface, em modo de conversa, com o usuário
Kernel
É o núcleo do SO
Contém rotinas críticas frequentemente usadas
Responsável pela gerência do processador, tratamento de interrupções e
comunicação e sincronização de processos
System call
Conjunto de instruções fornecidas pelo SO que criam, apagam e usam diversos
objectos que estão sob gestão do SO
É através do System Call que os programas dos usuários solicitam os serviços do
SO
São “serviços” oferecidos pelo SO
SISTEMAS OPERATIVOS
Trap
Altera a máquina do modo Usuário para o modo Kernel (supervisor)
A maior parte dos processadores trabalham dois modos: usuário ( com limitações ao
acesso ao hardware) e Kernel (sem limitações de aceso)
Máquinas Virtuais
Cópias fiéis do hardware, incluindo os modos Kernel/Usuário, entrada/saída,
interrupções e tudo mais que a máquina real possui
Spool
Simultaneous Peripheral On Line
Permite ler e gravar dados em disco, enquanto programas são executados
concorrentemente (ex: gerência de impressão)
SISTEMAS OPERATIVOS
Os tipos de Sistemas Operativos e sua evolução estão relacionados directamente com a evolução
do hardware e das aplicações por ele suportada
Tipos de
Sistemas Operativos
Sistemas Operativos
Eng.Agostinho Panzu- 2008
SISTEMAS OPERATIVOS
Sistema Monoprogramáveis/Monotarefa
UCP
CPU programa/
tarefa
É caracterizado por permitir que o processador, a
memória e os periféricos permaneçam exclusivamente
dedicados à execução de um único programa Memória
MEMÓRIA Dispositivo
Dispositivos
Principal
PRINCIPAL dedeE/S
E/ S
Enquanto o programa aguarda por um evento, o processador fica ocioso, sem realizar qualquer tarefa
útil
Ex.: MS-DOS
SISTEMAS OPERATIVOS
Sistema Multiprogramáveis/Multitarefa
programa/ programa/
UCP
UCP
tarefa CPU tarefa
Enquanto um programa espera por um evento, programa/
tarefa
programa/
tarefa
SISTEMAS OPERATIVOS
Sistema Multiprogramáveis/Multitarefa
A partir do número de usuários que interagem com o sistema, podemos classificar os sistemas
multiprogramáveis como:
Monousuário – onde existe apenas um único usuário interagindo com o sistema. Ex.: computadores
pessoais
Sistema Multiprogramáveis/Multitarefa
Os sistemas multiprogramáveis ou multitarefa podem ser classificados pela forma como são geridas
as suas aplicações
Sistemas
Multiprogramáveis/
Multitarefas
Sistema Multiprogramáveis/Multitarefa
Sistemas Batch
Sistema Multiprogramáveis/Multitarefa
Permite a interacção dos usuários com o sistema, basicamente através de terminais de vídeo e
teclado (interacção on-line)
O sistema cria para cada usuário um ambiente de trabalho próprio, criando a ilusão de que o sistema
está dedicado, exclusivamente, a ele
SISTEMAS OPERATIVOS
Sistema Multiprogramáveis/Multitarefa
Um programa executa o tempo que for necessário, ou até que apareça outro programa prioritário
em função da sua importância no sistema
A importância ou prioridade de execução é controlada pela própria aplicação e não pelo SO
São usados em controlo de processos, como monitoramento de refinarias de petróleo, controlo de
tráfego aéreo
SISTEMAS OPERATIVOS
Tem a vantagem de permitir que vários programas sejam executados ao mesmo tempo, ou que um
mesmo programa seja subdividido em partes para serem executadas simultaneamente em mais de um
processador
Fortemente acoplados – existe apenas uma memória principal sendo compartilhada por todos os
processadores
Fracamente acoplados – cada sistema tem a sua própria memória
SISTEMAS OPERATIVOS
Memória
UCP Principal UCP
Dispositivos Dispositivos
de E/ S de E/ S
SISTEMAS OPERATIVOS
link de comunicação
UCP UCP
Hardware
Pr ocessador / UCP
Dispositivos
de E/ S
SISTEMAS OPERATIVOS
Hardware
Processador (UCP)
É o responsável pela gestão de todo o sistema computacional controlando as operações realizadas
por cada unidade funcional
Sistemas Operativos
Eng.Agostinho Panzu- 2008
SISTEMAS OPERATIVOS
Hardware
Memória principal 0
1
instrução ou dado
2
Local onde são armazenados instruções e
dados
endereços
Composta por unidades de acesso chamadas
células sendo cada célula composta por um
determinado número de bits
célula = 8 bits
SISTEMAS OPERATIVOS
Hardware
Memória Cache
Memória volátil de alta velocidade, porém com pequena capacidade de armazenamento
Permite minimizar a disparidade com que o processador executa as instruções e a velocidade com
que os dados são obtidos na memória principal
Hardware
Memória Secundária
Registradores
Memória Cache
Memória Secundária
SISTEMAS OPERATIVOS
Hardware
Dispositivos de entrada/saida
São utilizados para permitir a comunicação entre o sistema computacional e o mundo externo
Hardware
Barramento ou bus
É o meio físico de comunicação entre ente as unidades funcionais de um sistema computacional
■ Barramento de E/S : possuem maior extensão, são mais lentos e permitem a conexão de
diferentes dispositivos
■ Barramento de backplane : tem a função de integrar os dois barramentos por forma optimizar o
seu desempenho
SISTEMAS OPERATIVOS
Hardware
Memória
Principal
UCP
Barramento processador-memória
Adaptador Adaptador
Barramento de E/ S
Barramento de E/ S
SISTEMAS OPERATIVOS
Hardware
Barramento backplane
Memória
Principal
UCP
Barramento processador-memória
Adaptador
de backplane
Barramento
Adaptador Adaptador
Barramento de E/ S
Barramento de E/ S
SISTEMAS OPERATIVOS
Hardware
Pipelining
É a técnica mais utilizada para permite que um processador execute múltiplas instruções
paralelamente em estágios diferentes
P1 P2 P3 P4
tempo
SISTEMAS OPERATIVOS
Software
Para que o hardware tenha utilidade prática, deve existir um conjunto de programas, utilizados como
interface entre as necessidades dos usuários e as capacidades do hardware
SISTEMAS OPERATIVOS
Software
Tradutor
Compilador
SISTEMAS OPERATIVOS
Software
Interpretador
É um tradutor que não gera módulo-objecto
O interpretador traduz e executa imediatamente cada instrução de um programa-fonte escrito em
linguagem de alto-nível (BASIC, PERL)
É também responsável pela relocação, que determina a região de memória na qual o programa será
carregado para execução
SISTEMAS OPERATIVOS
Software
Loader ou carregador
Responsável por carregar na memória principal um programa para ser executado
Software
Depurador (debugger)
É um utilitário (software) que permite ao usuário acompanhar toda a execução de um programa a
fim de detectar erros na sua lógica
Software
Activação/Desactivação do sistema
A activação do sistema consiste em carregar o sistema operativo da memória secundária para a
memória principal (boot)
Área do
Sistema
Operacional
boot
Sistema
Operacional
Disco Memória
Principal
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
Concorrência
Introdução
Os SO podem ser vistos como um conjunto de rotinas que executam concorrentemente de fora
ordenada
A possibilidade de o processador executar instruções em paralelo com operações de E/S permite que
diversas tarefas sejam executadas concorrentemente
E/ S E/ S 1
tempo tempo
(a) Sistema Monoprogramável (b) Sistema Multiprogramável
SISTEMAS OPERATIVOS
Concorrência
Interrupções e Excepção
A ocorrência de eventos inesperados, durante a execução de um programa, ocasionando um desvio
forçado no seu fluxo de execução é denominado interrupção ou excepção.
As Excepções são eventos causados por erros (divisão por zero) ou por requisição específica de um
programa do usuário (aplicativo) para que determinado serviço do SO seja efectuado
SISTEMAS OPERATIVOS
Concorrência
Interrupções e Excepção
Rotina de Tratamento de Interrupções (RTI) é o tratamento que se dá quando um programa em
execução é interrompido e o controlo desviado para uma rotina responsável por tratar o evento ocorrido
Quando ocorre uma interrupção, a CPU transfere a execução para uma posição fixa que contém o
endereço a rotina que deverá tratar aquela interrupção, este endereço fica no vector de interrupção
Para que o programa possa posteriormente voltar a ser executado, um conjunto de informações deve ser
preservado (conteúdo dos registadores)
SISTEMAS OPERATIVOS
Concorrência
Interrupções e Excepção
Programa
Salva conteúdo
dos registadores
na pilha de controlo
Identifica a origem
do evento
Interrupção Rotina de
ou excepção tratamento
Obtém o endereço da
Rotina de tratamento
Restaura o conteúdo
dos registadores
Sistemas Operativos
Eng.Agostinho Panzu- 2008
SISTEMAS OPERATIVOS
Concorrência
Interrupções e Excepção
A tabela descreve os mecanismos de interrupção realizado tanto por hardware como por software
Concorrência
Operações de Entrada/saída
O controlo das operações de E/S evoluíram nos seguintes domínios:
▌ Conjunto de Instruções de E/S
▌ Controlador
▌ Canal de E/S
Concorrência
Operações de Entrada/saída
█ Controlador
■ Permite ao processador agir de forma independente dos dispositivo de E/S
■ Simplificou as instruções de E/S, por não ser mais necessário detalhes de operação dos periféricos,
tarefa esta realizada pelo Controlador
■ Existem duas formas básicas pelas quais o processador faz a gerência das operações de E/S:
▬ E/S controlada por programa
▬ E/S controlada por interrupção
SISTEMAS OPERATIVOS
Concorrência
Operações de Entrada/saída
█ Controlador
▬ E/S controlada por programa
► O processador sincroniza com os periféricos (início e fim) da transferência de dados
► Durante transferência, o sistema fica permanentemente a testar o estado do periférico para saber se
a operação chegou ao fim
► Mantém o processador ocupado até o término da operação de E/S
Concorrência
Operações de Entrada/saída
█ Controlador
Memória
Principal
UCP
Controlador
Dispositivos de E/ S
SISTEMAS OPERATIVOS
Concorrência
Operações de Entrada/saída
█ Canal de E/S
■ Surge com a extensão da técnica DMA, introduzido pela IBM
■ O canal é um processador com capacidade de executar programas de E/S, permitindo o controlo total
sobre operações de E/S
■ As instruções de E/S são armazenadas na memória principal pelo processador, porém o canal é
responsável pela sua execução
■ O processador realiza uma instruções de E/S, instruindo o canal para executar um programa localizado
na memória (programa de canal)
■ O canal de E/S pode controlar múltiplos dispositivos através de diversos controladores
Sistemas Operativos
Eng.Agostinho Panzu- 2008
SISTEMAS OPERATIVOS
Concorrência
Operações de Entrada/saída
█ Canal de E/S
Memór ia
Pr incipal
UCP
Canal de E/ S
Di spositivos de E/ S Di spositivos de E/ S
SISTEMAS OPERATIVOS
Concorrência
Buffering
Esta técnica consiste na utilização de uma área da memória principal, denominada buffer, para
transferência de dados entre os dispositivos de entrada e a memória
Concorrência
Buffering
A eficiência da técnica buffering possibilitou compatibilizar a diferença existente entre o tempo que o
processador executa instruções e o tempo que o dispositivo de E/S realiza as operações de
leitura/gravação
Memória
Principal
gravação gravação
UCP Controlador
Buffer
leitura leitura
SISTEMAS OPERATIVOS
Concorrência
Os dados podem ser lido ou gravados em disco, enquanto programas são executados concorrentemente
Sistema Operacional
Concorrência
Reentrância
É comum, em sistemas multiprogramáveis, vários usuários utilizem os mesmos aplicativos,
simultaneamente, como editores de texto e compiladores
Esta utilização em simultâneo de uma aplicação pode originar desperdício de memória, pois aparecem
várias cópias de um mesmo programa executável na memória
Reentrância é a capacidade de um código executável (código reentrante) ser compartilhado por diversos
usuários, exigindo que apenas uma cópia do programa esteja na memória
Permite que cada usuário possa estar em um ponto diferente do código reentrante, manipulando dados
próprios, exclusivos de cada usuário.
Concorrência
Reentrância
usuário A usuário C
código reentrante
usuário B usuário D
área de dados do usuário A
Memória Principal
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
Estrutura dos SO
Introdução
O SO é formado por um conjunto de rotinas que oferecem serviços aos usuários, às aplicações, e também
ao próprio sistema. Esse conjunto de rotinas é denominado núcleo do sistema ou Kernel
Não se deve confundir o núcleo do sistema com aplicações, utilitários ou interpretadores de comandos,
que acompanham o SO
As aplicações são utilizadas pelos usuários e escondem todos os detalhes da interacção com sistema
Estrutura dos SO
Introdução
Aplicativos
Utilitários
Núcleo do
Núcleo do
Sistema Operacional
Sistema Operativo
Hardware
SISTEMAS OPERATIVOS
Estrutura dos SO
Componentes de um SO
A funcionalidade de um SO divide-se:
█ Gerência de processos: Os SO multitarefa dão ao usuário a ilusão do paralelismo ou o
“pseudoparalelismo” por causa da forma como alocam o processador um pouco em cada processo
Estrutura dos SO
Estrutura dos SO
Para salvaguardar o SO, interacção entre os processos dos usuários e o SO é feita através de system
calls
System Call
Núcleo do
Núcleo do
Sistema Operacional
Sistema Operativo
Estrutura dos SO
Estrutura dos SO
Modos de acesso
Existem certas instruções que não podem ser colocadas directamente à disposição das aplicações, pois a
sua utilização indevida ocasionaria sérios problemas à integridade do sistema (actualização de um arquivo
em disco)
As instruções que têm poder de comprometer o sistema são conhecidas como instruções privilegiadas, e
as que não oferecem risco ao sistema são conhecidas como instruções não-privilegiadas
Para que uma instrução possa executar uma instrução privilegiada é necessário que no processador seja
implementado um mecanismo de protecção conhecido como modos de acesso
SISTEMAS OPERATIVOS
Estrutura dos SO
Modos de acesso
Existem dois modos de acesso implementados pelos processadores:
■ Modo usuário: uma aplicação só pode executar instruções não-privilegiadas, tendo acesso a um
número reduzido de instruções
■ Modo Kernel ou Supervisor: a aplicação tem acesso a todo conjunto de instruções do processador
Para melhor controlar o acesso às instruções privilegiadas é permitir que apenas o SO tenha acesso a
elas
Sempre que uma aplicação necessita executar uma instrução privilegiada, a solicitação deve ser realizada
através de uma system call, que altera o modo de acesso do processador do modo usuário para Kernel
SISTEMAS OPERATIVOS
Estrutura dos SO
Modos de acesso
Sistemas Operativos
Eng.Agostinho Panzu- 2008
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura Monolítica
Constituído por um núcleo monolítico, onde reside a maior parte da funcionalidade, designado por
Kernel
Um conjunto de bibliotecas de funções sistemas que são ligados com o código das aplicações e que
permitem chamar os serviços o sistema
A arquitectura monolítica pode ser comparada com uma aplicação formada por vários módulos
Estes módulos são compilados separadamente e depois ‘linkados’, formando um grande programa
executável, onde os módulos podem interagir livremente
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura Monolítica
apli cação apli cação
Modo usuári o
Modo ker nel
System call
Har dw ar e
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura Monolítica
Tem a desvantagem de tornar o seu desenvolvimento e sua manutenção bastante complexo
Devido a sua simplicidade e bom desempenho, esta estrutura foi adoptada no projecto do MS-DOS e
os primeiros sistemas Unix
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura de Camadas
Na arquitectura em camadas, o sistema é dividido em níveis sobrepostos, onde cada camada oferece
um conjunto de funções que podem ser utilizadas apenas pelas camadas superiores
Neste tipo de implementação, as camadas mais internas são mais privilegiadas eu as mais externas
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura de Camadas
Implementação de camadas no modelo OpenVMS
Sistemas Operativos
Eng.Agostinho Panzu- 2008
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura de Camadas
A vantagem da estruturação em camadas é de isolar as funções do SO, facilitando a sua manutenção e
depuração
Permite criar uma hierarquia de níveis de modos de acesso, protegendo as camadas mais internas
Uma desvantagem para o modelo em camadas é o desempenho, ou seja cada nova tarefa implica uma
mudança no modo de acesso
Actualmente, a maioria dos sistemas comerciais utiliza o modelo de duas camadas, onde
existem os modos de acesso Usuário (não-privilegiado) e Kernel (privilegiado)
SISTEMAS OPERATIVOS
Estrutura dos SO
Máquina Virtual
O modelo de máquina virtual, ou virtual machine (VM), cria um nível intermediário entre o hardware e o
SO, denominado gerência de máquinas virtuais
Este nível cria diversas máquinas virtuais independentes, onde cada uma oferece uma cópia virtual do
hardware, modos de acesso, interrupções, dispositivos de E/S
Cada máquina virtual é independente das demais, o que torna possível que cada VM tenha o seu
próprio SO, fazendo como se todo o computador estivesse dedicado a cada um deles
SISTEMAS OPERATIVOS
Estrutura dos SO
Máquina Virtual
n
VM
VM
VM
Ap 1 Ap2 Apn
Hardware
Sistemas Operativos
Eng.Agostinho Panzu- 2008
SISTEMAS OPERATIVOS
Estrutura dos SO
Máquina Virtual
Tem a vantagem de permitir a convivência de SO diferentes e criar um isolamento total entre cada VM,
garantindo a segurança de cada máquina
Permite suportar VM externas, onde as aplicações não precisam ser recompiladas para cada sistema
computacional, tornando-se independente do hardware e SO utilizado (JVM – Java Virtual Machine)
A desvantagem deste modelo é o seu menor desempenho se comparado a uma aplicação compilada e
executada directamente em uma arquitectura específica
SISTEMAS OPERATIVOS
Estrutura dos SO
Máquina Virtual
Aplicação
Sistema Operacional
Hardware
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura Microkernel
Uma tendência nos SOs moderno é tornar o núcleo do SO o menor e mais simples possível
Cada processo é responsável por oferecer um conjunto específico de funções, como gerência de
arquivos, gerência de processos, gerência de memória e escalonamento
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura Microkernel
Sempre que uma aplicação deseja algum serviço, é realizada uma solicitação ao processo responsável
A aplicação que solicita o serviço é chamada cliente (usuário/componente do SO), e o processo que
responde à solicitação é chamado de servidor
A principal função do núcleo é a realização da comunicação entre o cliente e o servidor, que é feita
através de troca de mensagens
Este modelo permite que os servidores executem em modo usuário, e apenas o núcleo executa em
modo kernel
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura Microkernel
em
ag
me
ns
me
ns
Modo usuário
ag
em
Modo kernel
Microkernel
Hardware
SISTEMAS OPERATIVOS
Estrutura dos SO
Arquitectura Microkernel
Vantagens:
Se ocorrer algum erro em um servidor, este pode parar, ma o sistema não ficará inteiramente
comprometido, aumentando sua disponibilidade
A criação de processos servidores dedicados a serviços específicos, tornam o núcleo menor, mais fácil
de depurar e mais confiáveis
Estrutura dos SO
Arquitectura Microkernel
Desvantagens:
Caracterizada pela difícil implementação
O núcleo do sistema, além de ser responsável pela comunicação cliente e servidor, passa a incorporar
outras funções, como escalonamento, tratamento de interrupções e gerência de dispositivos
Contexto de Contexto de
Software Hardware
Programa
Espaço de
Endereçamento
Contexto de Hardware
Sistema Operacional
Processo A Processo B
executando
Salva registradores do
Processo A
Carrega registradores do
Processo B
executando
Salva registradores do
Processo B
Carrega registradores do
Processo A
executando
Contexto de Software
• Identificação
• Quotas
• Privilégios
Espaço de Enderaçamento
• Estrutura de um processo
nome
PID registradores
gerais
owner (UID)
prioridade de
execução registrador PC
data/ hora
de criação Contexto de Contexto de
Software Hardware
tempo de registrador SP
processador
quotas
Programa registrador
privilégios de status
Espaço de
Endereçamento
endereços de memória
principal alocados
Bloco de Controle do Processo
• PCB
ponteiros
Estado do processo
Nome do processo
Prioridade do processo
Registradores
Limites de memória
Lista de arquivos abertos
..
..
..
..
Estados do Processo
• Execução (running)
• Pronto (ready)
• Espera (wait)
Estados do Processo
• Lista de PCBs
Lista de
processos
em estado
de pronto
.. ..
.. ..
.. ..
.. ..
PCB# 5 PCB# 1
Lista de
processos
em estado
de espera
.. .. ..
.. .. ..
.. .. ..
.. .. ..
b d
Processo B Processo C
Processo D Processo E
Processos Independentes,
Subprocessos e Threads
• Processo multithread
Espaço de
endereçamento
Processos Foreground e
Background
• Processos foreground e background
(a) Processo Foreground
entrada saída
terminal terminal
entrada saída
arquivo arquivo
de entrada de saída
Processo Foreground e
Background
• Pipe
saída do
Processo A
entrada do saída do
Processo A Processo B
entrada do
Processo B
Processo A Processo B
Processos do Sistema
• Auditoria e segurança
• Serviços de rede
• Contabilização do uso de recursos
• Contabilização de erros
• Gerência de impressão
• Gerência de jobs batch
• Temporização
• Comunicação de eventos
• Interface de comandos (shell)
Processos CPU e IO Bound
• Processos CPU x IO Bound
E/ S E/ S
UCP UCP
tempo tempo
(a) CPU-bound (b) I/ O-bound
Sinais
• Uso de sinais
interrupção sinal
Sistema Operacional
[ctrl-C]
Processo
Sinais
• Sinais, interrupções e exceções
Processo Processo
Sinais
Sistema Operacional
Interrupções
Exceções
Hardware
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Introdução
Os processos de uma aplicação concorrente compartilham,
naturalmente, os recursos do sistema (arquivos, dispositivos E/S, espaço
de memória)
Sincronização e
Comunicação entre Processos
Aplicações Concorrentes
Numa aplicação concorrente, muitas vezes é necessário que
processos se comuniquem entre si
Sincronização e
Comunicação entre Processos
Aplicações Concorrentes
Sincronização
gr
av a
aç r
Processo ão i tu Processo
gravador le leitor
dado
Buffer
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Aplicações Concorrentes
Exemplo:
• Dois processos concorrentes compartilham um buffer para trocar informações
através de operações de gravação e leitura
• Neste exemplo, um processo só pode guardar dados no buffer caso este não esteja
cheio
• Da mesma forma, um processo só poderá ler dados armazenados no buffer caso
exista algum dado para ser lido
• Em ambas situações, os processos deverão Sincronização
aguardar até que o buffer esteja pronto para
as operações (gravação/leitura) gr
av
aç ra
Processo ão i tu Processo
■ Os mecanismos que garantem a comunicação entre gravador le leitor
processos concorrentes e o acesso a recursos
compartilhados são chamadas mecanismos de
dado
sincronização
Buffer
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Especificação de Concorrência em Programas
Existem várias notações utilizadas para especificar concorrência em
programas, ou seja, as partes de um programa que devem ser
executadas concorrentemente
Sincronização e
Comunicação entre Processos
Especificação de Concorrência em Programas
O programa A começa a ser executado e, ao encontrar o
comando FORK, faz com que seja criado um outro processo
para execução do programa B, concorrentemente ao
programa A
Sincronização e
Comunicação entre Processos
Especificação de Concorrência em Programas
Uma das implementações mais simples de expressar concorrência em
um programa é a utilização dos comandos PARBEGIN e PAREND (1965)
PARBEGIN
Comando_1;
Comando_2;
.
.
Comando_n;
PAREND
Processo 1 Processo 2 Processo n
Processo
principal
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Especificação de Concorrência em Programas
Para exemplificar o funcionamento dos comandos PARBEGIN e
PAREND em uma aplicação concorrente, o programa Expressão realiza o
cálculo do valor da expressão aritmética descrita a seguir:
X := SQRT (1024) + (35.4 * 0.23) - (302 / 7)
PROGRAM Expressao;
VAR X, Temp1, Temp2, Temp3 : REAL;
BEGIN
PARBEGIN
Temp1 := SQRT (1024);
Temp2 := 35.4 * 0.23;
Temp3 := 302 / 7;
PAREND;
X := Temp1 + Temp2 - Temp3;
WRITELN ('x = ', X);
END.
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Problema de Partilha de Recursos
1º Problema: Partilha de um arquivo em disco
■ O problema é analisado a partir de um programa Conta_Corrente, que actualiza o saldo de um cliente
após um lançamento de débito ou crédito no arquivo de contas-correntes Arq_Contas
PROGRAM Conta_Corrente;
.
.
READ (Arq_Contas, Reg_Cliente);
READLN (Valor_Dep_Ret);
Reg_Cliente.Saldo := Reg_Cliente.Saldo + Valor_Dep_Ret;
WRITE (Arq_Contas, Reg_Cliente);
.
.
END.
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Problema de Partilha de Recursos
1º Problema: Partilha de um arquivo em disco
■ Considerando processos concorrentes pertencentes a dois funcionários do banco que utilizam o saldo
de um mesmo cliente simultaneamente, a situação de partilha do recurso pode ser analisada
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Problema de Partilha de Recursos
2º Problema: Uma variável na memória principal sendo compartilhada
por dois processos
■ Consiste na situação onde dois processos (A e B) executam um comando de atribuição
■ O processo A soma 1 à variável X e o processo B diminui 1 da mesma variável que está a ser
compartilhada, inicialmente, a variável X possui o valor 2
Processo A Processo B
Atribuição
X := X + 1; X := X – 1;
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Problema de Partilha de Recursos
2º Problema: Uma variável na memória principal sendo compartilhada
por dois processos
■ A aplicação concorrente dos dois processos, em execução, faz com que o valor final de X seja
inconsistente
INTERRUPÇÃO
INTERRUPÇÃO
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Problema de Partilha de Recursos
Sincronização e
Comunicação entre Processos
Exclusão Mútua
A solução mais simples para evitar os problemas de partilha de recursos
é impedir que dois ou mais processos acedam o mesmo recurso em
simultâneo
Sincronização e
Comunicação entre Processos
Exclusão Mútua
A parte do código do programa onde é feito o acesso ao recurso
compartilhado é denominada região crítica (critical region)
Se se conseguir evitar que dois processos entrem em simultâneo na região
crítica, os problemas decorrente da partilha de recursos serão evitados
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Exclusão Mútua
Os mecanismos que implementam a exclusão mútua utilizam protocolos
de acesso à região crítica
Toda vez que um processo deseja aceder ou sair da sua região crítica
deverá, obrigatoriamente executar (antes/depois) o protocolo de acesso (E/S)
BEGIN
.
.
Entra_Regiao_Critica;
Regiao_Critica;
Sai_Regiao_Critica;
.
.
END.
Sincronização e
Comunicação entre Processos
Exclusão Mútua
Para garantir a exclusão mútua duas situações indesejadas devem ser
evitadas:
Sincronização e
Comunicação entre Processos
Exclusão Mútua
Diversas soluções foram desenvolvidas para garantir a exclusão mútua de
processos concorrentes:
■ Solução Hardware (Inibição de Interrupções e Instrução test-and-set)
Sincronização e
Comunicação entre Processos
Solução Hardware
█ Inibição de Interrupções : consiste em desactivar todas as interrupções
antes de entrar em sua região crítica
Como a mudança de contexto de processos só pode ser realizada através
de interrupções, o processo que as desactivou terá acesso exclusivo
garantido
BEGIN
.
Desabilita_Interrupcoes;
Regiao_Critica;
Habilita_Interrupcoes;
.
END.
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Solução Hardware
█ Inibição de Interrupções
LIMITAÇÕES:
Sincronização e
Comunicação entre Processos
Solução Hardware
█ Instrução test-and-set : permite ler uma variável, armazenar o seu
conteúdo em uma outra área e atribuir um novo valor a esta variável
Podemos encontrar em muitos processadores e é caracterizada por ser
executada sem interrupções, desta forma é garantido que dois processos não
manipulem uma variável ao mesmo tempo
Sincronização e
Comunicação entre Processos
Mecanismos de Sincronização
Apesar das soluções de hardware e software implementarem exclusão
mútua, todas possuem uma deficiência conhecida como espera ocupada
Na espera ocupada toda a vez que um processo não consegui entrar na
região crítica (por estar ocupada), o processo permanece em looping,
testando uma condição, até que lhe seja permitido o acesso
Sincronização e
Comunicação entre Processos
Sincronização Condicional
Sincronização condicional é uma situação onde o acesso ao recurso
compartilhado exige a sincronização de processos vinculada a uma condição
de acesso (variável de condição)
Um recurso pode não se encontrar pronto para uso devido a uma condição
específica, neste caso, o processo que deseja ter acesso ao recurso deverá
permanecer bloqueado até que o recurso fique disponível
Sincronização e
Comunicação entre Processos
Sincronização Condicional
SISTEMAS OPERATIVOS
PROGRAM Produtor_Consumidor_1;
Sincronização Condicional CONST TamBuf = (* Tamanho qualquer *);
TYPE Tipo_Dado = (* Tipo qualquer *);
VAR Buffer:ARRAY[1..TamBuf] OF Tipo_Dado;
Dado : Tipo_Dado;
PROCEDURE Consumidor;
BEGIN
Apesar do algoritmo resolver a questão da REPEAT
sincronização condicional, o problema da espera WHILE (Cont = 0) DO (* Nao faz nada *);
(looping) ocupada persiste, sendo somente solucionado Le_Buffer (Dado);
pelos mecanismos de sincronização semáforos e Consome_Dado (Dado, Cont);
monitores Cont := Cont - 1;
UNTIL False;
END;
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Semáforos
O conceito de semáforo (Djikstra-1965) é um mecanismo de sincronização
que permite implementar, de forma simples, a exclusão mútua e a
sincronização condicional entre processos
Um semáforo é uma variável inteira (não negativa), que pode ser
manipulada por duas instruções indivisíveis : DOWN e UP (P e V por Dijkstra)
Sincronização e
Comunicação entre Processos
█ Exclusão Mútua Utilizando Semáforos
A exclusão mútua é implementado através de um semáforo binário,
associado a um recurso compartilhado, tem como principal vantagem a não
ocorrência da espera ocupada
As instruções DOWN e UP funcionam como protocolos de E/S na região
crítica, ou seja, quando o valor semáforo é igual a 1 indica que nenhum
processo está utilizando o recurso e a 0 que o recurso está em uso
Sempre que deseja entrar na região crítica, o processo executa uma
instrução DOWN: se semáforo = 1, decrementa e entra; se semáforo = 0, não
entra e fica no estado de espera
Sempre que deseja sair da região crítica, o processo executa uma
instrução UP, incrementando o valor do semáforo e liberando o acesso ao
recurso
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
█ Exclusão Mútua Utilizando Semáforos
Se um ou mais processos estiverem a espera pelo uso do recurso
(operações DOWN pendentes), o sistema seleccionará um processo na fila
de espera associado ao recurso e altera o seu estado para pronto
Processo deseja entrar
na região crítica
Semáforo = S
DO
0)
W
>
(S
N
N
(S
W
=
O
0)
D
Libera processo
da fila de espera
Processo acessa Fila de espera
a região crítica de processos
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
█ Exclusão Mútua Utilizando Semáforos
As instruções DOWN e UP, aplicadas a um semáforo S, em sintaxe Pascal
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
█ Sincronização Condicional Utilizando Semáforos
Um exemplo deste tipo de sincronização PROGRAM Semaforo 2;
ocorre quando um processo solicita uma VAR Evento : Semaforo:= 0;
operação de E/S PROCEDURE Solicita Leitura;
BEGIN
O pedido faz com que o processo execute DOWN (Evento);
END;
uma instrução DOWN no semáforo, e fique no PROCEDURE Le_Dados;
estado de espera, até que a operação seja BEGIN
completada UP (Evento);
END;
Quando a operação termina, a rotina de BEGIN
PARBEGIN
tratamento de interrupção executa um UP, Solicita_Leitura;
liberando o processo do estado de espera Le_Dados;
PAREND;
END.
SISTEMAS OPERATIVOS
█ Sincronização Condicional e
PROGRAM Produtor Consumidor 2;
CONST TamBuf = 2;
TYPE Tipo_Dado = (* Tipo qualquer *);
Sincronização e
Comunicação entre Processos
█ Sincronização Condicional
e Exclusão Mútua Utilizando Semáforos
PRODUTOR CONSUMIDOR VAZIO CHEIO MUTEX PENDENTES
* * 2 0 1 *
* DOWN (Cheio) 2 0 1 Consumidor
DOWN (Vazio) DOWN (Cheio) 1 0 1 Consumidor
DOWN (Mutex) DOWN (Cheio) 1 0 0 Consumidor
Grava DOWN (Cheio) 1 0 0 Consumidor
Buffer
UP (Mute x) DOWN (Cheio) 1 0 1 Consumidor
UP (Cheio) DOWN (Cheio) 1 1 1 *
UP (Cheio) DOWN (Cheio) 1 0 1 *
UP (Cheio) DOWN (Mutex) 1 0 0 *
UP (Cheio) Lê Dado 1 0 0 *
UP (Cheio) UP (Mutex) 1 0 1 *
UP (Cheio) UP (Vazio) 2 0 1 *
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
█ Problema dos Filósofos PROGRAM Filosofo 1;
VAR Garfos : ARRAY [0..4] of Semaforo := 1;
Há uma mesa com cinco pratos e I : INTEGER;
cinco garfos, onde os filósofos podem PROCEDURE Filosofo (I : INTEGER);
BEGIN
sentar, comer e pensar REPEAT
Pensando;
Toda vez que um filósofo pára de DOWN (Garfos[IJ);
pensar e deseja comer, é necessário DOWN (Garfos[(I+1) MOD 5]);
Comendo;
que ele utilize dois garfos, posicionados UP (Garfos[IJ);
a sua direita e a sua esquerda UP (Garfos[(I+1) MOD 5]);
UNTIL False;
END;
■ Este algoritmo apresenta uma solução
que não resolve o problema totalmente, BEGIN
PARBEGIN
pois se todos os filósofos segurarem FOR I := 0 TO 4 DO
apenas um garfo, nenhum filósofo Filosofo (I);
conseguirá comer (deadlock) PAREND;
END.
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
█ Problema dos Filósofos
Existem várias soluções que para resolverem o problema dos filósofos
sem a ocorrência do deadlock (interblocagem):
Sincronização e
Comunicação entre Processos
█ Problema do Barbeiro
Neste problema o barbeiro recebe clientes para cortar o cabelo
Na barbearia há uma cadeira de barbeiro e apenas cinco cadeiras
para os clientes aguardarem pela sua vez
No caso de o barbeiro não ter nenhum cliente para atender, ele senta
na cadeira e dorme até que um novo cliente apareça
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Monitores
São mecanismos de sincronização de alto nível que tornam mais simples
o desenvolvimento de aplicações concorrentes (Brinch Hansen em 1972)
Sincronização e
Comunicação entre Processos
Monitores
O monitor é formado por procedimentos e variáveis encapsuladas (módulo)
É caracterizado pela implementação automática de exclusão mútua entre
procedimentos declarados, ou seja, apenas um processo pode executar um
dos procedimentos do monitor em um determinado instante
Toda vez que um processo chama um dos procedimentos, o monitor
verifica se já existe outro processo executando o procedimento do monitor,
caso exista o processo aguarda em uma fila de entrada
Sincronização e
Comunicação entre Processos
Monitores MONITOR Exclusao Mutua;
(* Declaracao das variaveis do monitor *)
Um monitor é definido especificando um PROCEDURE Regiao_Critica_l;
BEGIN
nome, declarando-se variáveis locais, .
.
procedimentos e um código de inicialização
END;
PROCEDURE Regiao_Critica_2;
Declaração de
variáveis globais BEGIN
.
.
Procedimentos
END;
Proc. 1
PROCEDURE Regiao_Critica_3;
Monitor
Proc. 2 BEGIN
.
.
Fila de entrada
Proc. n END;
BEGIN
Inicialização (* Codigo de inicializacao *)
de variáveis END;
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
█ Exclusão Mútua Utilizando Monitores
A implementação da exclusão mútua utilizando monitores não é realizada
directamente pelo programador, como no caso do uso de semáforos
Sincronização e
Comunicação entre Processos
█ Sincronização Condicional Utilizando Monitores
Através de variáveis especiais de condição, é possível associar a
execução de um procedimento que faz parte do monitor a uma determinada
condição, garantindo a sincronização condicional
Sincronização e
Comunicação entre Processos
█ Sincronização Condicional Utilizando Monitores
É possível que vários processos estejam em estado de espera
organizados numa fila de espera associada às condições de sincronização
A execução da instrução SIGNAL libera apenas um único processo da fila de
espera da condição associada
Porém um processo pode executar um procedimento de um monitor,
mesmo quando um ou mais processos estão na fila de espera de condição
Declaraçãode
variáveisglobais
P
rocedimentos
CondiçãoC1
P
roc. 1
Monitor
P
roc. 2 CondiçãoC2
Filadeentrada
P
roc. n CondiçãoCn
Filasdeespera
Inicialização
devariáveis
SISTEMAS OPERATIVOS
Sempre que se deseja gravar um dado deve ser verificado o estado do buffer, caso o teste IF for verdadeiro
executa um WAIT (Cheio), aguardando na fila de espera associada a condição Cheio e só continua quando
for executado um SIGNAL (Cheio)
Sempre que se deseja ler um dado deve ser verificado o estado do buffer, caso o teste IF for verdadeiro
executa um WAIT (Vazio), aguardando na fila de espera associada a condição Vazio e só continua quando
for executado SIGNAL (Vazio)
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Troca de Mensagens
Troca de mensagens é um mecanismo de comunicação e sincronização
entre processos
O SO possui um subsistema de mensagem que suporta essa mecanismo
sem que haja necessidade do uso de variáveis compartilhadas
Para que haja a comunicação entre processos, deve existir um canal de
comunicação (buffer / link de uma rede de computadores)
Sincronização e
Comunicação entre Processos
▌Transmissão de Mensagem
Processo Processo
transmissor receptor
Canal de comunicação
SEND RECEIVE
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Troca de Mensagens
A troca de mensagens entre processos pode ser implementada de duas
formas distintas: comunicação directa e comunicação indirecta
A comunicação directa entre dois processos exige que, ao enviar ou
receber uma mensagem, o processo enderece explicitamente o nome do
processo receptor ou transmissor
Uma característica deste tipo de comunicação é de permitir somente a
troca de mensagem entre dois processos
Sincronização e
Comunicação entre Processos
▌Comunicação Directa
Processo A Processo B
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
▌Comunicação Indirecta
A comunicação indirecta utiliza uma área compartilhada, onde as
mensagens podem ser colocadas pelo transmissor e retiradas pelo receptor
Sincronização e
Comunicação entre Processos
▌Comunicação Indirecta
Processo A Processo B
Mailbox
ou Port
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Troca de Mensagens
Existem três diferentes esquemas de implementação de sincronização
entre os processos que trocam mensagens:
■ O primeiro, garante que um processo ao enviar uma mensagem,
permaneça a espera até que o processo receptor a leia (rendevous)
→ O problema desta implementação é que a execução dos processos fica limitada ao tempo de
processamento no tratamento das mensagens
Troca de Mensagens
Uma solução para o problema do produtor/consumidor é apresentada
utilizando a troca de mensagens
PROGRAM Produtor_Consumidor_4;
PROCEDURE Produtor;
VAR Msg : Tipo_Msg;
BEGIN
REPEAT
Produz_Mensagem (Msg);
SEND (Msg);
UNTIL False;
END;
PROCEDURE Consumidor;
VAR Msg : Tipo_Msg;
BEGIN
REPEAT
RECEIVE (Msg);
Consome_Mensagem (Msg);
UNTIL False;
END;
BEGIN
PARBEGIN
Produtor;
Consumidor;
PAREND;
END.
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Deadlock (Interblocagem)
Deadlock é a situação em que um processo aguarda por um recurso que
nunca estará disponível ou um evento que não ocorrerá
Deadlock (Interblocagem)
Espera circular Processo A
Processo A Recurso 1
■ Problema do deadlock entre o solicita o
Recurso 2
alocado ao
Processo A
Processo B
Como R2 está alocado a PB, e R1 está alocado a PA, ambos os processos ficarão aguardando que o
recurso seja liberado
■ Como cada processo esta a espera que o outro libere o recurso alocado, é
estabelecida uma condição conhecida por espera circular, caracterizando uma
situação de deadlock
SISTEMAS OPERATIVOS
Sincronização e
Comunicação entre Processos
Deadlock (Interblocagem)
Condições necessárias para que ocorra deadlock
Exclusão mútua : cada só pode estar alocado a um único processo em um determinado
instante
Espera por recurso : um processo, além dos recursos já alocados, pode estar
esperando por outros recursos
Não-preempção : um recurso não pode ser liberado de um processo só porque outros
processos desejam o mesmo recurso
Espera circular : um processo só pode ter de esperar por um recurso alocado a outro
processo e vice-versa
Mecanismos
Prevenção
Detecção
Correção
SISTEMAS OPERATIVOS
EXECUÇÃO
Suspender
PRONTO ESPERA Acordar SUSPENSO
Suspender
Acordar