Beruflich Dokumente
Kultur Dokumente
FACECA
Fevereiro / 2005
SUMÁRIO
Página
2. Processos ........................................................................................... 24
2.1. Introdução ................................................................................. 24
2.2. Modelo de Processo .................................................................... 24
2.2.1. Contexto de Hardware ........................................................ 25
2.2.2. Contexto de Software ......................................................... 25
2.2.3. Espaço de Endereçamento .................................................. 26
2.3. Estados do Processo ................................................................... 26
2.4. Mudanças de Estado do Processo .................................................. 27
2.5. Subprocesso e Thread ................................................................. 28
2.6. Processos do Sistema .................................................................. 28
2.7. Tipos de Processos ...................................................................... 29
1. Sistemas Operacionais
1
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
Usuário
Sistema Operacional
Hardware
Aplicativos
Utilitários
Sistema Operacional
Linguagem de Máquina
Microprogramação Hardware
Dispositivos Físicos
2
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
1.3. Histórico
A evolução dos SO está relacionada ao desenvolvimento dos equipamentos.
Processamento
Fita de Entrada Fita de Saída
Processamento
Fita de Saída Relatórios
3
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
4
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
Dispositivos de
Registradores Entrada e Saída
Memória Principal
1.4.1.2. Clock
O clock é um dispositivo, localizado na UCP, que gera pulsos elétricos
síncronos em um determinado intervalo de tempo (sinal de clock).
1.4.1.3. Registradores
Os registradores são dispositivos de alta velocidade, localizados na UCP,
para armazenamento temporário de dados. Alguns registradores de uso específico:
5
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
Registradores
Memória Secundária
1.4.1.8. Barramento
A UCP, a memória principal e os dispositivos de E/S são interligados através
de linhas de comunicação denominadas barramentos, barras ou vias. Um
barramento (bus) é um conjunto de fios paralelos (linhas de transmissão), onde
trafegam informações, como dados, endereços ou sinais de controle.
6
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
1.4.1.9. Pipelining
O conceito de processamento pipeline se assemelha muito a uma linha de
montagem, onde uma tarefa é dividida em subtarefas, executadas em diferentes
estágios dentro da linha de produção.
Da mesma forma que em uma linha de montagem, a execução de uma
instrução pode ser dividida em subtarefas, como as fases de busca da instrução e
dos operandos, execução e armazenamento dos resultados. O processador, através
de suas várias unidades funcionais pipeline, funciona de forma a permitir que,
enquanto uma instrução se encontra na fase de execução, uma outra instrução
possa estar na fase de busca simultaneamente.
7
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
1.4.2.1. Tradutor
Nos sistemas operacionais antigos, o ato de programar era bastante
complicado, já que os programas eram desenvolvidos em linguagem de máquina e
carregados diretamente na memória principal para execução.
Com o surgimento das primeiras linguagens de montagem (assembly
languages) e das linguagens de alto nível, o programador deixou de se preocupar
com muitos aspectos pertinentes ao hardware, como em qual região da memória o
programa deveria ser carregado ou quais endereços de memória seriam reservados
para as variáveis.
Apesar das inúmeras vantagens proporcionadas pelas linguagens de
montagem e alto nível, os programas escritos nessas linguagens (programas –
fonte) não estão prontos para serem diretamente executados pela UCP. Para isso,
eles têm de passar por uma etapa de conversão, onde toda representação
simbólica dos programas é traduzida para código de máquina. Esta conversão é
realizada por um software denominado tradutor.
O tradutor, pelo tipo de linguagem de programação utilizada, pode ser
chamado de montador ou compilador.
• O montador (assembler) é o utilitário responsável por gerar, a partir de um
programa escrito em linguagem de montagem, um programa em linguagem
de máquina não executável (módulo-objeto).
A linguagem de montagem está diretamente ligada às características da
arquitetura do processador. Em função disto, este tipo de linguagem é
diferente para cada computador, pois a linguagem de máquina e,
conseqüentemente, a linguagem de montagem são características
específicas do processador.
• O compilador é o utilitário responsável por gerar, a partir de um programa
escrito em uma linguagem de alto nível, um programa em linguagem de
máquina não executável (módulo-objeto).
As linguagens de alto nível, como Pascal, Fortran, Cobol, não têm nenhuma
relação direta com a máquina, ficando essa preocupação exclusivamente
com o compilador. Assim, os programas-fonte podem ser transportados
entre computadores de diversos fabricantes, desde que existam regras de
definição para a linguagem. Isso permite o desenvolvimento de aplicações
independentes do equipamento.
1.4.2.2. Interpretador
O interpretador é considerado um tradutor que não gera código-objeto. A
partir de um programa-fonte, escrito em linguagem de alto nível, o interpretador,
no momento da execução do programa, traduz cada instrução e a executa em
seguida.
8
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
1.4.2.3. Linker
Módulo
Objeto
Programa
Linker
Executável
Módulo
Objeto
1.4.2.4. Loader
O loader (carregador) é o utilitário responsável por colocar fisicamente na
memória um programa para execução.
1.4.2.5. Depurador
O depurador (debugger) é o utilitário que permite ao usuário controlar toda
a execução de um programa a fim de detectar erros na sua estrutura.
1.4.2.8. Microprogramação
9
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
10
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
11
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
12
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
ª Barramento
Na organização de barramento, os sistemas são conectados a uma única
linha de comunicação e todos compartilham o mesmo meio, tanto para receber
como para enviar mensagens. Esse tipo de organização é utilizado geralmente em
redes locais. Neste tipo de topologia, caso haja algum problema com o meio de
transmissão, todos os nós da rede ficarão incomunicáveis.
13
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
ª Organização Distribuída
Na organização distribuída existem linhas de comunicação ponto-a-ponto
que ligam os sistemas e caminhos alternativos entre os diversos nós da rede. Caso
uma linha de comunicação apresente problema, linhas alternativas permitirão que a
rede continue em funcionamento. Este tipo de organização é utilizado geralmente
em redes distribuídas.
14
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
Exemplo:
15
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
Exemplo:
Programa
Salva os
registradores Rotina de Tratamento
da Interrupção
Identifica a origem
da interrupção
Interrupção
Obtém o endereço da
rotina de tratamento
Restaura os
registradores
16
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
1.6.3. Buffering
A técnica de buffering consiste na utilização de uma área de memória para a
transferência de dados entre os periféricos e a memória principal denominada
buffer. O buffering veio permitir que, quando um dado fosse transferido para o
buffer após uma operação de leitura, o dispositivo de entrada pudesse iniciar uma
nova leitura. Neste caso, enquanto a UCP manipula o dado localizado no buffer, o
dispositivo realiza outra operação de leitura no mesmo instante. O mesmo
raciocínio pode ser aplicado para operações de gravação, onde a UCP coloca o dado
no buffer para um dispositivo de saída manipular.
Memória
Gravação Principal Gravação Controlador
UCP de E/S
Buffer
Leitura Leitura
17
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
1.6.4. Spooling
A técnica de spooling (simultaneous peripherical operation on-line) foi
introduzida no final dos anos 50 para aumentar a produtividade e a eficiência dos
sistemas operacionais.
O spooling, basicamente, utiliza o disco como um grande buffer, permitindo
que dados sejam lidos e gravados em disco, enquanto outras tarefas são
processadas.
Um exemplo dessa técnica está presente quando impressoras são utilizadas.
No momento em que um comando de impressão é executado por um programa, as
informações que serão impressas são gravadas em um arquivo em disco (arquivo
de spool), para ser impresso posteriormente pelo sistema.
Arquivo Sistema
Programa Impressão
De Spool Operacional
1.6.5. Reentrância
É comum, em sistemas multiprogramáveis, vários usuários executarem os
mesmos utilitários do sistema operacional simultaneamente, como, por exemplo,
um editor de texto. Se cada usuário que utilizasse o editor de texto trouxesse o
código do utilitário para a memória, haveria diversas cópias de um mesmo
programa na memória principal, o que ocasionaria um desperdício de espaço.
Reentrância é a capacidade de um código de programa (código reentrante)
poder ser compartilhado por diversos usuários, exigindo que apenas uma cópia do
programa esteja na memória.
A reentrância permite que cada usuário possa entrar em um ponto diferente
do código reentrante, manipulando dados próprios, exclusivos de cada usuário.
18
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
System Núcleo
Aplicação (kernel) Hardware
Call
19
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
Gerência de Memória
Alocação e desalocação de memória.
Gerência de Entrada/Saída
Operações de entrada/saída;
Manipulação de arquivos e diretórios.
Programa
Usuário A
Programas dos Usuários
Programa Executam no modo usuário
Memória System Call Usuário B
Principal
Sistema Operacional
Rotina do
Executa no modo kernel
Sistema
20
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
Aplicação Aplicação
Modo Usuário
Modo Kernel
System Calls
Hardware
21
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
5 Operador
4 Programas de usuário
3 Entrada/Saída
2 Comunicação
1 Gerência de memória
0 Multiprogramação
Servidor
Cliente Servidor de
de Rede
Memória
Servidor Servidor
de de
Arquivo Processo
Modo Usuário
Modo Kernel
Núcleo (Kernel)
Hardware
22
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
23
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
2. Processo
2.1. Introdução
O processo pode ser entendido com um programa em execução, só que seu
conceito é mais abrangente. Este conceito torna-se mais claro quando pensamos na
forma em que os sistemas multiprogramáveis (multitarefa) atendem a diversos
usuários (tarefas) e mantém informações a respeito dos vários programas que
estão sendo executados concorrentemente.
Como sabemos, um sistema multiprogramável simula um ambiente de
monoprogramação para cada usuário, isto é, cada usuário do sistema tem a
impressão de possuir o processador exclusivamente para ele. Nesses sistemas, o
processador executa a tarefa de usuário durante um intervalo de tempo (time-slice)
e, no instante seguinte, está processando outra tarefa. A cada troca, é necessário
que o sistema preserve todas as informações da tarefa que foi interrompida, para
quando voltar a ser executada não lhe faltar nenhuma informação para a
continuação do processamento. A estrutura responsável pela manutenção de todas
as informações necessárias à execução de um programa, como conteúdo de
registradores e espaço de memória, chama-se processo.
Ponteiros
Estado do Processo
Nome do Processo
Prioridade do Processo Bloco de
Controle do
Registradores Processo (PCB)
Limites de memória
Lista de Arquivos Abertos
:
:
:
24
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
executando
Salva Registradores do Processo A
25
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
ª Quotas: São os limites de cada recurso do sistema que o processo pode alocar.
Caso uma cota seja insuficiente, o processo poderá ser executado lentamente
ou mesmo não ser executado. Alguns exemplos de quotas que aparecem na
maioria dos sistemas operacionais são:
• Número máximo de arquivos abertos simultaneamente;
• Tamanho máximo de memória que o processo pode alocar;
• Número máximo de operações de E/S pendentes;
• Tamanho máximo do buffer para operações de E/S;
• Número máximo de processos e subprocessos que podem ser criados.
26
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
PCB #5 PCB #1
Lista de
processos
em estado
de pronto : :
: :
Execução
d
b
a
Espera Pronto
c
27
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
28
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
29
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
3.1. Introdução
É comum processos que trabalham juntos (concorrentes) compartilhem
recursos do sistema, como arquivos, registros, dispositivos e áreas de memória. Na
verdade, não importa quais recursos são compartilhados, pois problemas
decorrentes dessa interação serão os mesmos. De maneira geral, o
compartilhamento de recursos entre processos pode gerar situações indesejáveis,
capazes até de comprometer o sistema.
Vejamos um exemplo onde dois processos trocam informações através de
operações de gravação e leitura em um buffer. Um processo só poderá gravar
dados no buffer caso ele não esteja cheio. Da mesma forma, um processo só
poderá ler dados armazenados do buffer se existir algum dado a ser lido. Em
ambos os casos, os processos deverão aguardar até que o buffer esteja pronto para
as operações de gravação ou de leitura.
30
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
program A; program B;
. .
. .
Fork B; .
. end.
.
Join B;
.
end.
Processo
Principal
Processo
Principal
31
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
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.
Os comandos de atribuição situados entre PARBEGIN e PAREND são
executados concorrentemente entre si. O cálculo final de X só poderá ser realizado
quando todas as variáveis dentro da estrutura tiverem sido calculadas.
32
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
begin
(...)
Entra_regiao_critica; (* protocolo de entrada *)
Regiao_critica;
Sai_regiao_critica; (* protocolo de saída *)
(...)
end
3.5.2. Starvation
Um outro problema, também decorrente da sincronização entre processos, é
denominado starvation. Starvation é a situação onde um processo nunca consegue
executar sua região crítica e, conseqüentemente, acessar o seu recurso
compartilhado. Isto pode acontecer, por exemplo, quando um processo tem baixa
prioridade em relação aos outros, que concorram pelo mesmo recurso. Uma solução
bastante simples para esse problema é a criação de filas de pedidos de alocação
para cada recurso compartilhado. O esquema de o primeiro a chegar ser o primeiro
a ser atendido (FIFO) elimina o problema do starvation.
33
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
program programa_test_and_set;
var bloqueio: boolean;
procedure processo_A;
var pode_a : boolean;
begin
repeat
pode_a := true;
while (pode_a) do
test_and_set (pode_a, bloqueio);
regiao_critica_A;
bloqueio := false;
until false;
end;
procedure processo_B;
var pode_b : boolean;
begin
34
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
repeat
pode_b := true;
while (pode_b) do
test_and_set (pode_b, bloqueio);
regiao_critica_B;
bloqueio := false;
until false;
end;
begin
bloqueio := false;
PARBEGIN
processo_A;
processo_B;
PAREND;
end.
3.7.1. Semáforos
O conceito de semáforo foi proposto como uma solução mais geral e
simples, para os problemas de sincronização entre processos concorrentes.
Um semáforo é uma estrutura composta de uma FILA e uma variável inteira,
não negativa, que só pode ser manipulada por duas instruções: DOWN e UP. Estas
instruções funcionam como protocolo de entrada e saída no caso de exclusão
mútua.
Sempre que deseja entrar na sua região crítica, um processo executa uma
instrução DOWN. Se o semáforo for maior que 0, este é decrementado de 1, e o
processo que solicitou a operação pode executar sua região crítica. Entretanto, se
uma instrução DOWN é executada em um semáforo cujo valor seja igual a 0, o
processo que solicitou a operação ficará no estado de espera, em uma fila
associada ao semáforo.
35
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
36
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
procedure processo_B;
begin
repeat
DOWN(s);
regiao_critica_B;
UP(s);
until false;
end;
begin
s.valor := 1;
PARBEGIN
processo_A;
processo_B;
PAREND;
end.
3.7.2. Monitores
O uso de semáforos exige do programador muito cuidado, pois qualquer
engano pode levar a problemas de sincronização imprevisíveis. Monitores são
mecanismos de sincronização de alto nível, que tentam tornar mais fácil o
desenvolvimento e a correção de programas concorrentes.
Vejamos um exemplo bem simples, onde dois processos somam e
diminuem, concorrentemente, o valor da variável compartilhada X.
program exemplo;
monitor regiao_critica;
var x : integer;
procedure soma;
begin
x:= x + 1;
end;
procedure diminui;
begin
x := x –1 ;
end;
begin
x := 0;
end;
begin
PARBEGIN
regiao_critica.soma;
regiao_critica.diminui;
PAREND;
end;
A inicialização da variável compartilhada X com o valor zero só acontece
uma vez, no momento da primeira ativação do monitor regiao_critica. Neste
exemplo, pode-se garantir que o valor de X ao final da execução concorrente dos
procedimentos de soma e diminuição será igual a zero. Isso porque, como os
procedimentos estão definidos dentro do monitor, estará garantida a execução
mutuamente exclusiva entre eles.
37
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
3.8. Deadlock
Um processo é dito em deadlock quando está esperando por um evento que
nunca ocorrerá. Esta situação é consequência, na maioria das vezes, do
compartilhamento de recursos do sistema entre vários processos, sendo que cada
processo deve ter acesso ao recurso de forma exclusiva (exclusão mutua).
38
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
4. Gerência do Processador
4.1. Introdução
O conceito básico que gerou a implementação dos sistemas
multiprogramáveis foi a possibilidade de a UCP ser compartilhada entre diversos
processos. Por isso, o procedimento para o escalonamento de processos (seleção
de processos entre os vários que estão na fila de pronto para utilização do
processador), é uma das principais funções executadas pelo sistema operacional
multiprogramável.
Execução Processo
(UCP)
Escalonamento
Processo
Pronto
Espera
Processo
Processo
Processo
39
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
40
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
41
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
42
FACECA – Faculdade Cenecista de Varginha Sistemas de Informação
SOP – Sistemas Operacionais Prof. José Eduardo S. Gomes
Bibliografia
Livros:
Endereços Eletrônicos:
http://www.ccuec.unicamp.br/treinamento_int2004/linux_basico/index.html
http://
43