Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sistemas Operacionais
NDICE
1.
a.
b.
c.
d.
2. VISO GERAL................................................................................................................................... 13
a. Introduo ........................................................................................................................ 13
b. Funes bsicas ................................................................................................................. 13
c. Mquina de nveis ............................................................................................................. 14
d. Tipos de Sistemas Operacionais ......................................................................................... 16
3. CONCEITOS DE HARDWARE............................................................................................................ 25
a. Introduo .......................................................................................................................... 25
b. Processador ........................................................................................................................ 25
c. Memria ............................................................................................................................. 25
d. Memria Cache .................................................................................................................. 26
e. Memria Principal e Secundaria ........................................................................................ 26
f. Dispositivos e Entrada/Sada .............................................................................................. 27
g. Barramentos ou Bus ........................................................................................................... 27
h. Pipeline ............................................................................................................................... 29
4. CONCORRNCIA .............................................................................................................................. 30
a. Introduo .......................................................................................................................... 30
b. Interrupo e Exceo ........................................................................................................ 32
c. Operaes de Entrada/Sada .............................................................................................. 34
d. Buffering ............................................................................................................................. 36
e. Spooling .............................................................................................................................. 36
f. Reentrncia ........................................................................................................................ 37
5. ESTRUTURA DO SISTEMA OPERACIONAL ...............................................................................38
a. Principais Funes ............................................................................................................. 39
b. Arquitetura Monoltica ..................................................................................................... 42
c. Arquitetura de Camadas ................................................................................................... 43
d. Mquina Virtual ................................................................................................................ 44
e. Arquitetura Microkernel .................................................................................................. 46
6. PROCESSO ....................................................................................................................................... 49
a. Estrutura do Processo ........................................................................................................ 49
b. Estados do Processo ........................................................................................................... 54
c. Mudanas de Estado de Processo .................................................................................... 55
d. Criao e Eliminao de Processos..................................................................................... 57
7. THREAD ........................................................................................................................................... 59
a. Ambiente Monothread .................................................................................................... 59
b. Ambiente Multithread ..................................................................................................... 61
8. SINCRONIZAO E COMUNICAO ENTRE PROCESSOS .............................................................. 66
a. Aplicaes Concorrentes ................................................................................................. 66
b. Starvation ........................................................................................................................... 71
c. Semforos ......................................................................................................................... 73
d. Monitores ........................................................................................................................... 74
e. Deadlock ............................................................................................................................. 77
Captulo 0
A EVOLUO DOS SISTEMAS OPERACIONAIS
Os sistemas operacionais tm sido historicamente amarrados
arquitetura dos computadores nos quais iriam rodar. Por isso, veremos como eles
evoluiram nas sucessivas geraes de computadores. Esse mapeamento entre geraes
de computadores e geraes de sistemas operacionais admissivelmente imaturo, mas
tem algum sentido.
O primeiro computador digital verdadeiro foi projetado pelo matemtico
ingls Charles Babbage (1792-1871). Embora Babbage tenha dispendido muito de sua
vida e de sua fortuna tentando construir sua "mquina analtica", ele jamais conseguiu
por o seu projeto em funcionamento porque era simplesmente um modelo matemtico e
a tecnologia da poca no era capaz de produzir rodas, engrenagens, dentes e outras
partes mecnicas para a alta preciso que necessitava. Desnecessrio se dizer que a
mquina analtica no teve um sistema operacional.
0.1 - A Primeira Gerao (1945-1955): Vlvulas e Painis com Plugs
Aps os esforos sem sucesso de Babbage, pouco progresso se teve na
construo de computadores digitais at a Segunda Guerra Mundial. Em torno de 1940,
Howard Aiken em Harvard, John Von Neumann no Instituto para Estudos Avanados em
Princeton, John Presper Eckert e William Mauchley na Universidade de Pennsylvania e
Konrad Zuse na Alemanha, entre outros, tiveram sucesso na construo de mquinas
calculadoras usando vlvulas. Essas mquinas eram enormes, ocupando salas
completas, com dezenas de milhares de vlvulas, porm eram muito mais lentas do que
os mais simples computadores pessoais de hoje.
Naqueles dias primitivos, um pequeno grupo de pessoas construiu,
programou, operou e deu manuteno a cada mquina. Toda a programao era feita
em linguagem de mquina, sempre se conectando fios com plugs em painis para
controlar as funes bsicas da mquina. As linguagens de programao no eram
conhecidas (nem a linguagem Assembly). Nem se ouvia falar em sistemas operacionais.
O modo usual de operao consistia no programador elaborar o programa numa folha e
ento ir sala da mquina, inserir os plugs nos painis do computador e gastar as
prximas horas apelando que nenhuma das 20.000 ou mais vlvulas no se queimasse
durante a execuo do programa. Na verdade, todos os problemas eram inerentemente
sobre clculos numricos tais como geraes de tabelas de senos e cossenos.
Por volta dos anos 50, essa rotina teve uma pequena evoluo com a
introduo de cartes perfurados. Era possvel, a partir de ento, se escrever programas
em cartes e l-los, em vez do uso de plugs em painis; no mais, o procedimento era o
mesmo.
Entrada
da Fita
Sistema
Sada
de Fitas
de Fita
Leitora de
Impressora
cartes
1401
(a)
7094
(b)
(c)
(d)
Figura 0.1 - Um sistema batch antigo.
1401
(e)
(f)
5
$END
Dados para o Programa
$RUN
$LOAD
Programa Fortran
$FORTRAN
$JOB, 10, 429754, TANENBAUM
ocupada quase que em 100% do tempo. Ter mltiplos jobs na memria, por sua vez,
requer hardware especial para proteger cada job contra danos e entrelaamento entre
eles, e o 360 e outros sistemas da terceira gerao eram equipados com esse hardware.
Job 3
Job 2
Parties da Memria
Job 1
Sistema
Operacional
10
11
12
Captulo 1
VISO GERAL
1.1 Introduo:
Sistema Operacional nada mais do que um conjunto de instrues executadas
pelo processador. Sua funo controlar o funcionamento de um computador,
gerenciando a utilizao e o compartilhamento dos seus diversos recursos, como
processadores, memrias e dispositivos de entrada e sada.
Sem SO, usurio deveria conhecer profundamente o computador para poder
interagir com ele. Implicaria em trabalho lento e com possibilidade de erros.
A diferena entre um SO e aplicaes convencionais a maneira como as rotinas
so executadas em funo do tempo. O SO no tem incio, meio e fim como as
aplicaes. Dependem de eventos assncronos. Tambm pode ser chamado de Programa
monitor, Executivo, supervisor ou Controlador.
1.2 Funes bsicas:
- Facilidade de acesso aos recursos do sistema: Usurio no precisa se
preocupar como feita a comunicao com monitores, discos, impressoras, etc. O SO
uma interface entre o usurio e os recursos do sistema. Este conceito de ambiente
simulado pelo SO tambm chamado de Mquina Virtual (figura 1.1)
Compiladores, linkers, bibliotecas, depuradores e outras ferramentas so
utilitrios que facilitam a interao do usurio com o computador.
- Compartilhamento de recursos de forma organizada e protegida: Em
sistemas onde diversos usurios compartilham recursos, necessrio controlar o uso
concorrente destes recursos. Ex: Impressora, a impresso de um usurio no deve
interferir na do outro. O SO controla estes acessos concorrentes. O compartilhamento
tambm permite reduo de custos, quando diversos usurios podem compartilhar
perifricos como impressoras, discos, etc.
Dependendo do SO, podemos executar diversas tarefas ao mesmo tempo, como
imprimir um documento e baixar um arquivo da Internet. E o SO que controla estas
atividades concorrentes.
13
programadores
e analistas
usurios
programas,
sistemas e
aplicativos
Usurios
Sistema
Sistema Operacional
memria
discos
Hardware
fitas
UCP
impressoras
monitores
14
usurios
Sistema Operacional
Hardware
Aplicativos
Utilitrios
Sistema Operacional
Linguagem de Mquina
Microprogramao
Circuitos Eletrnicos
15
Sistemas
Monoprogramveis/
Monotarefa
Sistemas
Multiprogramveis/
Multitarefa
Sistemas
com Mltiplos
Processadores
16
UCP
Memria
Principal
programa/
tarefa
Dispositivos
de E/ S
17
programa/
tarefa
programa/
tarefa
UCP
Memria
Principal
Dispositivos
de E/ S
programa/
tarefa
programa/
tarefa
programa/
tarefa
Monoprogramao / Monotarefa
Multiprogramao / Multitarefa
Um usurio
Monousurio
Monousurio
18
Sistemas
Batch
Sistemas de
Tempo Compartilhado
Sistemas de
Tempo Real
19
20
interligar
diversos
Sistemas
Com Mltiplos
Processadores
Sistemas
Fortemente
Acoplados
Sistemas
Fracamente
Acoplados
21
Memria
Principal
UCP
Dispositivos
de E/ S
UCP
Dispositivos
de E/ S
22
link de comunicao
UCP
Memria
Principal
UCP
Dispositivos
de E/ S
Memria
Principal
Dispositivos
de E/ S
23
partes e cada parte pode ser executada por hosts diferentes da rede de computadores.
Para os usurios e suas aplicaes, como se no existisse a rede de computadores, e
sim um nico sistema centralizado.
Outro exemplo de sistema distribudo so os clusters. Em um cluster existem dois
ou mais servidores ligados, atravs de uma conexo de alto desempenho. O usurio no
conhece os nomes dos membros do cluster e no sabe quantos so. Basta solicitar um
servio ao cluster para obt-lo. Este tipo de sistema usado atualmente em sistemas de
banco de dados e Web, garantindo alta disponibilidade, escalabilidade e balanceamento
de carga soluo.
24
Captulo 2
CONCEITOS DE HARDWARE E SOFTWARE
2.1 Introduo:
Neste captulo sero apresentados brevemente, conceitos bsicos de hardware e
software, para compreenso dos captulos seguintes.
2.2 Hardware:
Um sistema computacional um conjunto de circuitos eletrnicos interligados,
formado por Processador ou unidade central de processamento, memria principal e
dispositivos de entrada/sada.
Processador / UCP
Unidade Lgica
e Aritmtica
Unidade de
Controle
Memria
Principal
Registradores
Dispositivos
de E/ S
2.2.1 Processador:
Um processador composto por unidade de controle, unidade lgica e aritmtica,
e registradores. A unidade de controle (UC) responsvel por gerenciar as atividades de
todos os componentes do computador, como a gravao de dados em discos ou a busca
de instrues na memria. A unidade lgica e aritmtica (ULA), como o nome indica,
responsvel pela realizao de operaes lgicas (testes e comparaes) e aritmticas
(somas e subtraes).
2.2.2 Memria:
A memria composta por unidades de acesso chamadas clulas, sendo cada
clula composta por um determinado nmero de bits. Atualmente, a grande maioria dos
computadores utiliza o byte (8 bits) como tamanho de clula.
Adaptada por: Prof. Me. Jefferson Silva - IFPI - CTZS
25
instruo ou dado
endereos
16
2 -1
clula = 8 bits
26
Registradores
Memria Cache
maior
capacidade de
armazenamento
Memria Principal
maior custo e
velocidade
de acesso
Memria Secundria
27
Memria
Principal
UCP
Barramento processador-memria
Barramento de E/ S
Adaptador
Barramento de E/ S
Adaptador
Memria
Principal
UCP
Barramento processador-memria
Barramento
de backplane
Adaptador
Adaptador
Barramento de E/ S
Barramento de E/ S
Adaptador
28
2.2.7 Pipeline:
uma tcnica que permite ao processador executar mltiplas instrues
paralelamente em estgios diferentes.
P1
P2
P3
P4
Unidade de
busca da
instruo
Analisador
da
instruo
Unidade de
busca dos
dados
Unidade de
execuo da
instruo
P1
P2
P3
P4
29
Captulo 3
CONCORRNCIA
3.1 Introduo:
Os sistemas operacionais podem ser vistos como um conjunto de rotinas que
executam concorrentemente de forma ordenada. A possibilidade de o processador
executar instrues em paralelo com operaes de E/S permite que diversas tarefas
sejam executadas concorrentemente. Concorrncia o princpio bsico para projeto e
implementao dos sistemas operacionais multiprogramveis.
Os SOs monoprogramveis eram limitados por seus recursos no serem utilizados
de forma eficiente, limitando seu desempenho. Muitos recursos (alguns de alto custo),
permaneciam ociosos por longos perodos de tempo.
O disperdcio dos SOs monoprogramveis pode ser representado na Figura 3.1a,
pois enquanto uma leitura em disco realizada, o processador permanece ocioso. O
tempo de espera relativamente longo, pois as operaes de E/S so lentas comparadas
s operaes dos processadores.
E/ S
UCP
E/ S
UCP
livre
tempo
(a) Sistema Monoprogramvel
tempo
(b) Sistema Multiprogramvel
30
Prog1
Alta
Poucas
5 min
50 Kb
No
No
No
Prog2
Baixa
Muitas
15 min
100 Kb
No
Sim
No
Prog3
Baixa
Muitas
10 min
80 Kb
Sim
No
Sim
Monoprogramao
17 %
30 %
33%
33 %
30 min.
6 progr. / hora
Multiprogramao
33 %
67 %
67 %
67%
15 min.
12 progr. / hora
31
32
A tabela 3.4 descreve o mecanismo de interrupo, que pode ser realizado por
hardware ou software.
Para cada tipo de interrupo existe uma rotina de tratamento associada. A
identificao do tipo de interrupo fundamental para determinar o endereo da rotina
de tratamento.
Existem dois mtodos utilizados no tratamento das interrupes. O primeiro utiliza
uma estrutura de dados chamada de vetor de interrupo, que contem o endereo inicial
de todas as rotinas de tratamento existentes, associadas a cada evento. Um segundo
mtodo utiliza um registrador de status que armazena o tipo do evento ocorrido. Neste
mtodo, s existe uma nica rotina de tratamento, que no seu inicio testa o registrador
para identificar o tipo de interrupo e trat-la de maneira adequada.
Via Hardware
Via Software
33
Memria
Principal
UCP
Controlador
Dispositivos de E/ S
34
35
nestas horas, realizar tarefas que no dependa, do barramento, como por exemplo,
acesso memria cache.
3.4 Buffering:
A tcnica de buffering consiste na utilizao de uma rea na memria principal,
denominada buffer, para a transferncia de dados entre os dispositivos de E/S e a
memria. Esta tcnica permite que em uma operao de leitura, o dado seja
primeiramente transferido para o buffer, liberando imediatamente o dispositivo para uma
nova leitura. Assim, enquanto o processador processa o dado localizado no buffer, o
perifrico realiza outra operao de leitura, simultaneamente. O mesmo mecanismo
pode ser aplicado s gravaes (Figura 3.4)
Memria
Principal
gravao
UCP
gravao
Controlador
Buffer
leitura
leitura
36
3.5 Spooling:
A tcnica de spooling (simultaneous peripheral operation on-line), introduzida no
final dos anos 50, visa aumentar o grau de concorrncia e a eficincia dos SOs.
Semelhante tcnica de buffering, a tcnica de spooling utiliza uma rea em
disco como se fosse um grande buffer. Neste caso, os dados podem ser lidos ou
gravados em disco, enquanto programas so executados concorrentemente.
Esta tcnica esta presente na maioria dos SOs, utilizada no gerenciamento de
impresso. No momento em que um comando de impresso executado, as
informaes a serem impressas so gravadas antes em um arquivo em disco, conhecido
como arquivo de spool, liberando o programa para outras atividades. Posteriormente, o
SO se encarrega de direcionar o contedo do arquivo de spool para a impressora (Figura
3.5).
Sistema Operacional
Programa
Arquivo
de Spool
Impressora
37
Captulo 4
ESTRUTURA DO SISTEMA OPERACIONAL
4.1 Introduo:
O Sistema Operacional formado por um conjunto de rotinas que oferecem
servios aos usurios, s suas aplicaes, e ao prprio sistema. Este conjunto de rotinas
denominado ncleo do sistema ou kernel.
No confundir o ncleo do sistema com aplicaes, utilitrios ou interpretadores
de comando, que acompanham o SO. (Figura 4.1). As aplicaes so utilizadas pelos
usurios e no mostram os detalhes da interao com o sistema. Os utilitrios, como
compiladores e editores de texto, e os interpretadores de comando, permitem aos
usurios, administradores e desenvolvedores, uma interao amigvel com o sistema.
Aplicativos
Utilitrios
Ncleo do
Sistema Operacional
Hardware
38
39
Ncleo do
Sistema Operacional
System Call
Aplicao
Biblioteca
Hardware
40
41
42
aplicao
aplicao
Modo usurio
Modo kernel
System call
Hardware
43
44
VM 1
VM 2
VM n
Ap 1
Ap2
Apn
SO1
SO2
SOn
HV1
HV2
HVn
Hardware
Temos outro exemplo desta arquitetura, na linguagem Java, criada pela Sun
Microsystems. Para executar um programa em Java, necessrio uma mquina virtual
Java (ou Java Virtual Machine JVM). Qualquer SO pode suportar uma aplicao Java,
desde que exista uma JVM desenvolvida para ele. Assim, a aplicao no precisa ser
compilada para cada sistema, tornando-se independente do hardware e SO utilizado
(Figura 4.7).
45
Aplicao
Sistema Operacional
Hardware
46
Modo kernel
em
ag
ns
me
Modo usurio
me
ns
ag
em
Microkernel
Hardware
47
48
Captulo 5
PROCESSO
5.1 Introduo:
O processo a base para implantao de um SO multiprogramvel. O
processador executa instrues, sem distinguir qual programa se encontra em execuo.
A gerncia de um ambiente multiprogramvel uma funo exclusiva do SO, que deve
controlar a execuo dos diversos programas e o uso concorrente do processador.
Assim, um programa deve estar associado a um processo.
O termo processo surgiu aps os SOs multiprogramveis, sendo utilizado no lugar
de tarefa ou job, por grande parte da literatura tcnica.
O SO deve controlar os processos. Atravs dos processos, um programa pode
alocar recursos, compartilhar dados, trocar informaes e sincronizar sua execuo. Nos
SOs
multiprogramveis,
os
processos
so
executados
concorrentemente,
compartilhando, entre outros recursos, o uso do processador, da memria e dos
dispositivos de E/S. Em sistemas multiprocessados, alm da concorrncia de processos
pelo uso do processador, existe tambm a execuo simultnea de processos nos
diferentes processadores.
Aqui abordaremos os principais conceitos relacionados aos processos.
5.2 Estrutura do Processo:
Inicialmente, pode-se entender um processo, como um programa em execuo,
porm, com um conceito mais abrangente. Imaginemos como os SOs multiprogramveis
atendem os diversos usurios e ainda mantm informaes a respeito dos vrios
programas executados ao mesmo tempo.
Em um sistema multiusurio, cada usurio associado a um processo. Ao
executar um programa, o usurio tem a impresso de possuir o processador e demais
recursos exclusivamente para si. Na verdade, o processador executa o programa de um
usurio durante um intervalo de tempo, e no instante seguinte poder estar executando
um outro programa de outro usurio.
Para que esta troca ocorra sem traumas, necessrio que as informaes do
programa interrompido sejam guardadas, para que no seu retorno, nada seja perdido.
Todas informaes importantes e necessrias execuo de um programa fazem parte
de um processo.
Um processo tambm pode ser definido como o ambiente em que o programa
executado. Este ambiente possui informaes sobre a execuo, de quanto de recursos
do sistema cada programa pode utilizar, como espao de memria, tempo do
processador e rea em disco.
Adaptada por: Prof. Me. Jefferson Silva - IFPI - CTZS
49
Contexto de
Software
Contexto de
Hardware
Programa
Espao de
Endereamento
50
processo so
Neste arquivo,
processo pode
so geradas
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
51
Identificao
Cada processo criado pelo sistema recebe uma identificao nica
(chamada de PID Process IDentification), representada por um nmero e
em alguns casos tambm atravs de um nome. atravs do PID que o SO
e outros processos podem fazer referncia a qualquer processo existente,
consultando e at alterando suas caractersticas.
O processo possui tambm a identificao do usurio ou do processo que o
criou (owner). Cada usurio possui uma identificao tambm nica no
sistema (representada pelo UID User Identification), que atribuda ao
processo no momento de sua criao. A UID permite implementar modelos
de segurana, onde apenas os objetos (processos, arquivos, reas de
memria, etc) que possuam um UID autorizado, podem ser acessados.
Quotas
As quotas so os limites de cada recurso do sistema que um processo pode
alocar. Caso uma quota seja insuficiente, o processo poder ser executado
lentamente, interrompido ou mesmo no ser executado. Alguns exemplos
de quotas presentes nos SOs modernos:
- nmero mximo de arquivos abertos simultaneamente;
- tamanho mximo de memria principal e secundaria que o processo pode
alocar;
- nmero mximo de operaes de E/S pendentes;
- tamanho mximo do buffer para operaes de E/S;
- numero mximo de processos, subprocessos e threads que podem ser
criados.
Privilgios
Os privilgios ou direitos definem as aes que um processo pode fazer em
ralao a ele mesmo, aos demais processos e ao SO.
Privilgios que afetam o prprio processo permitem que suas
caractersticas possam ser alteradas, como prioridade de execuo, limites
alocados na memria principal e secundaria, etc. J os privilgios que
afetam os demais processos permitem, alem da alterao de suas prprias
caractersticas, alterar as de outros processos.
Privilgios que afetam o sistema so mais amplos e poderosos, pois esto
relacionados gerncia do ambiente, como a desativao do sistema,
alterao de regras de segurana, criao de outros processos
privilegiados, modificao de parmetros de configurao do sistema, entre
52
outros. A maioria dos SOs possui uma conta de acesso com todos
privilgios disponveis, afim de o administrador gerenciar o SO. Nos
sistemas Unix, existe a conta root, no Windows 2000 a conta
administrador e no Open VMS a conta system.
5.2.3 Espao de endereamento:
O espao de endereamento a rea de memria pertencente ao processo onde
as instrues e dados do programa so armazenados para execuo. Cada processo
possui seu prprio espao de endereamento, que deve ser devidamente protegido do
acesso dos demais processos. A Figura 5.3 ilustra as caractersticas da estrutura de um
processo.
nome
registradores
gerais
PID
owner (UID)
prioridade de
execuo
data/hora
de criao
registrador PC
Contexto de
Software
Contexto de
Hardware
registrador SP
tempo de
processador
quotas
Programa
privilgios
registrador
de status
Espao de
Endereamento
endereos de memria
principal alocados
53
ponteiros
Estado do processo
Nome do processo
Prioridade do processo
Registradores
Limites de memria
Lista de arquivos abertos
..
..
..
..
54
Lista de
processos
em estado
de pronto
.
..
..
..
.
PCB#5
.
..
..
..
.
PCB#1
Lista de
processos
em estado
de espera
.
..
..
..
.
.
..
..
..
.
.
..
..
..
.
PCB#9
PCB#2
PCB#4
55
Estado de Execuo
b
a
Estado de Espera
Estado de Pronto
56
Estado de Execuo
Estado de Espera
Estado de Pronto
Estado de Espera
Estado de Pronto
residente
no residente
57
Estado de Execuo
Estado de Espera
Estado de Trmino
Estado de Pronto
Estado de Criao
58
Captulo 6
THREAD
6.1 Introduo:
At o final dos anos 70, os SOs suportavam processos com apenas um thread
(monothread), ou seja, um processo com apenas um programa fazendo parte de seu
contexto. Em 1979, introduziu-se o conceito de processos ligthweight (peso leve),
onde o espao de endereamento de um processo era compartilhado por vrios
programas. Porm, esta idia no foi utilizada comercialmente, e apenas na metade da
dcada de 80, com o SO Mach, ficou clara a separao entre os conceitos de processo e
thread.
Com o conceito de mltiplos threads (multithread), pode-se projetar aplicaes
concorrentes de forma eficiente, pois um processo pode ter diferentes partes de seu
cdigo sendo executadas em paralelo. Como os threads de um mesmo processo
compartilham o mesmo espao de endereamento, a comunicao entre threads no
envolve mecanismos lentos de intercomunicao entre processos, aumentando assim o
desempenho da comunicao.
O desenvolvimento de programas que exploram os benefcios da programao
multithread no simples. A presena do paralelismo introduz um novo conjunto de
problemas, como a comunicao e sincronizao de threads. Existem diferentes modelos
para a implementao de threads em um SO, onde desempenho, flexibilidade e custos
devem ser avaliados.
Atualmente, o conceito de multithread pode ser encontrado em sistemas como
Sun Solaris e Windows 2000. A utilizao comercial de sistemas multithreads tem
crescido devido ao aumento de popularidade de sistemas com multiprocessadores, do
modelo cliente-servidor w dos sistemas distribudos.
6.2 Ambiente Monothread:
Um programa uma seqncia de instrues, compostas de desvios, repeties e
chamadas a procedimentos e funes. Em um ambiente monothread, um processo
suporta apenas um programa em seu espao de endereamento. Neste ambiente,
aplicaes concorrentes so implementadas apenas com o uso de mltiplos processos
independentes ou subprocessos.
O uso de processos independentes e subprocessos permite dividir uma aplicao
em partes que podem trabalhar de forma concorrente. Por exemplo, um usurio pode
estar lendo seus e-mails antigos, ao mesmo tempo em que estaria enviando e
recebendo e-mails atuais. Co o uso de mltiplos processos, cada funcionalidade do
software implicaria na criao de um novo processo para atend-lo, aumentando o
desempenho da aplicao (Figura 6.1).
Adaptada por: Prof. Me. Jefferson Silva - IFPI - CTZS
59
Subprocessos
Processos Independentes
Thread
Thread
Thread
60
Contexto
de hardware
Contexto
de hardware
Thread 1
Thread 2
Thread 3
Contexto de
software
Contexto
de hardware
Espao de
endereamento
61
Processo
Variveis
Programa Principal
Thread_1
PC
SP
Contexto de
Hardware
...
Espao de
endereamento
Call Sub_1
Thread_2
Sub_1
Ret
PC
SP
Thread_3
Sub_2
PC
SP
Contexto de
Hardware
Fim
Contexto de
Hardware
Call Sub_2
...
Ret
62
Tempo de sincronizao
(s)
Processo
1700
200
Processo Lightweight
350
390
Thread
52
66
Tabela 6.1 Latncia de Processos e Threads
63
Thread de
entrada
Buffer
Thread de
exibio
Thread de
gravao
64
Processo servidor
Solicitaes
Thread
Thread
Thread
Processo cliente
Processo cliente
Processo cliente
65
Captulo 7
Sincronizao e Comunicao entre processos
7.1 Introduo:
Com o surgimento dos SOs multiprogramveis, tornou-se possvel estruturar
aplicaes de maneira que partes diferentes do cdigo do programa pudessem ser
executadas concorrentemente. Este tipo de aplicao foi denominada de aplicao
concorrente.
Em sistemas com um nico processador, os processos alternam sua execuo
segundo escalonamento estabelecido pelo SO e mesmo assim aplicaes concorrentes
obtm melhoras em seu desempenho. Em sistemas com mltiplos processadores,
estendem-se estas vantagens com a possibilidade do paralelismo na execuo de
instrues.
Os processos de uma aplicao concorrente podem compartilhar recursos, como
arquivos registros, dispositivos de E/S e reas de memria. Este compartilhamento pode
gerar situaes indesejveis, capazes de comprometer a execuo das aplicaes. Para
evitar este tipo de problema, os processos devem ter suas aes sincronizadas, atravs
de mecanismos oferecidos pelo SO.
7.2 Aplicaes Concorrentes:
Em aplicaes concorrentes, pode ser necessrio que os processos comuniquemse entre si. Esta comunicao pode ser implementada atravs de variveis
compartilhadas na memria principal ou trocas de mensagens. Mais uma vez,
necessrio que haja sincronizao entre a execuo dos processos concorrentes.
A figura 7.1 apresenta um exemplo onde dois processos concorrentes
compartilham um buffer para troca de informaes. Aqui, um processo s poder gravar
dados no buffer se ele estiver vazio, e s poder ler um dado do buffer caso haja um
dado a ser lido. Em ambos os casos, os processos devero esperar at que o buffer
esteja pronto para as operaes de gravao e leitura.
Sincronizao
gr
Processo
gravador
av
a
o
i tu
le
ra
Processo
leitor
dado
Buffer
66
PROGRAMA B;
.
.
.
.
.
END.
67
Processo
principal
PARBEGIN
Comando_1;
Comando_2;
.
.
Comando_n;
PAREND
Processo 1
Processo 2
Processo n
Processo
principal
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;
Adaptada por: Prof. Me. Jefferson Silva - IFPI - CTZS
68
Caixa
1
1
1
2
2
2
1
2
Comando
READ
READLN
:=
READ
READLN
:=
WRITE
WRITE
Saldo Arquivo
1.000
1.000
1.000
1.000
1.000
1.000
800
1.300
Valor Dep/Ret
*
-200
-200
*
+300
+300
-200
+300
Saldo Memria
1.000
1.000
800
1.000
1.000
1.300
800
1.300
69
Processo B
X: = X 1;
Seria razovel pensar que no final das operaes a varivel continuasse valendo
2, porem nem sempre isso ser verdade. Decompondo em operaes mais elementares,
usando uma linguagem de alto nvel, temos:
Processo A
Load x, Ra
Add 1,Ra
Store Ra,x
Processo B
Load x, Rb
Sub 1,Rb
Store Rb,x
Comando
Load X,Ra
Add 1,Ra
Load X,Rb
Sub 1,Rb
Store Ra,X
Store Rb,X
X
2
2
2
2
3
1
Ra
2
3
*
*
3
*
Rb
*
*
2
1
*
1
70
A excluso mtua dever agir apenas sobre os processos que esto concorrendo
em um determinado recurso. Quando desenvolvemos um programa, que faa
tratamento de excluso mtua, este dever ter uma seo chamada REGIO CRTICA
(Critical Region). Nesta regio existe uma srie de procedimentos e protocolos que o
programa dever fazer para que o sistema operacional libere o recurso para o mesmo.
Toda vez que um processo desejar executar instrues de sua regio crtica,
obrigatoriamente devera executar antes um protocolo de entrada nessa regio. Da
mesma forma, ao sair da regio crtica um protocolo de sada dever ser executado. A
regio critica deve ser sempre usada quando seu programa for fazer uso de recursos
que so passiveis de compartilhamento com algum outro suposto programa na memria.
nela tambm que os processos encontram-se em um momento mais critico, pois
qualquer erro ocorrido ali dentro pode fazer com que dois ou mais processos colidam
gerando falhas e derrubando o sistema.
Assim, para garantir a implementao da excluso mtua, os processos
envolvidos devem fazer acesso aos recursos de forma sincronizada. Diversas solues
foram criadas com este propsito; porm, ainda existem duas situaes que devem ser
evitadas.
7.5.A Starvation:
A primeira situao indesejada conhecida como starvation (ou espera
indefinida).
Quem determina as prioridades dos processos o sistema operacional. Neste
caso existem duas formas do sistema operacional determinar qual ser a vez de quem.
Ou por escolha aleatria ou por prioridades. Quando a escolha aleatria, existir a
probabilidade de um processo nunca ser escolhido. Quando for uma escolha por
prioridades, um processo de menor prioridade nunca receber o acesso ao recurso, e ai
este processo nunca executar sua rotina.
Uma soluo bastante simples a criao de filas de pedidos de alocao para
cada recurso, utilizando o esquema FIFO (First In First Out). Sempre que um processo
solicita um recurso, o pedido colocado no final da fila associada ao recurso. Quando o
recurso liberado, o sistema seleciona o primeiro processo da fila.
7.5.B
Sincronizao condicional:
71
tem como caracterstica ser executada sem interrupo, ou seja, trata-se de uma
instruo invisvel. Assim garante-se que dois processos no manipulem uma varivel
compartilhada ao mesmo tempo, possibilitando a implementao da excluso mtua.
O uso desta instruo especial oferece vantagens, como a simplicidade de
implementao da excluso mtua em mltiplas regies crticas e o uso da soluo em
arquiteturas com mltiplos processadores. A principal desvantagem a possibilidade do
starvation, pois a seleo do processo para o acesso ao recurso arbitrria.
72
73
semforo til para evitar que um processo na regio crtica sem que haja recursos
disponveis no sistema.
O uso de semforos exige do programador muito cuidado, pois qualquer engano
pode gerar bugs em seu programa que o levem a falhas de sincronizao ocasionando
quedas e travamento geral do sistema.
0)
D
O
=
(S
W
N
N
W
(S
>
DO
0)
Fila de espera
de processos
74
Monitor
Proc. 1
Proc. 2
Fila de entrada
Proc. n
Inicializao
de variveis
75
Processo A
Processo B
Processo B
Mailbox
ou Port
76
7.9 Deadlock:
O Deadlock existe em qualquer sistema multiprogramvel. Dizemos que um
processo est em Deadlock quando este para de responder porque est esperando por
um evento que nunca ocorrer. Esta situao conseqncia do problema da excluso
mtua. Existem as condies onde o Deadlock ir ocorrer:
- Cada recurso s pode estar alocado a um nico processo em um determinado instante.
(Excluso mtua)
- Um processo alm dos recursos j alocados, pode estar esperando por outros recursos.
- Um recurso no pode ser liberado de um processo porque outros processos desejam o
mesmo recurso (No-preempo)
- Um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa
(Espera circular).
Processo A
Processo A
solicita o
Recurso 2
Recurso 1
alocado ao
Processo A
Recurso 2
Recurso 1
Processo B
Recurso 2
alocado ao
Processo B
Processo B
solicita o
Recurso 1
77
78
79
Captulo 8
Gerncia de Memria / Memria Virtual
8.1
Introduo:
Funes:
80
X
registrador
rea para
programas
Sistema
Operacional
Programa do
Usurio
8.4
Segmentao de Programas:
81
Memria Principal
Sistema
2 KB
Operacional
3 KB
4 KB
Cadastramento
Mdulo Principal
4 KB
rea de
Overlay
Impresso
2 KB
1 KB
rea livre
2 KB
Tcnica de Overlay
82
Sistema
Operacional
Partio 1
2 KB
Partio 2
5 KB
Partio 3
8 KB
relocvel.
Tanto nos sistemas de alocao absoluta como nos de alocao relocvel, os
programas, normalmente, no ocupam totalmente as parties onde so alocados,
deixando algum espao livre dentro das parties. Este tipo de problema, decorrente do
esquema de alocao fixa de parties, chamado fragmentao interna.
A figura a seguir mostra um grfico representando o particionamento esttico de
uma memria e sua fragmentao interna.
83
Memria Principal
Sistema
Operacional
Programa C
1 KB
Programa A
3 KB
Fragmentao
interna
Programa E
5 KB
84
livre no final da memria, que podia ser distribuda entre os processos ainda
por executar. A este tipo de compactao de espaos livres foi dado o nome
de alocao particionada dinmica com realocao.
Estas solues ajudaram a diminuir os problemas da fragmentao (tanto interna
como externa), mas, devido complexidade dos algoritmos, nem todos os sistemas
operacionais as utilizaram.
8.7
8.8
Swapping:
uma tcnica aplicada gerncia de memria que visa dar maior taxa de
utilizao memria principal, melhorando seu compartilhamento. Visa tambm resolver
o problema da falta de memria principal num sistema.
Toda vez que um programa precisa ser alocado para execuo e no h espao
na memria principal, o sistema operacional escolhe entre os processos alocados que
85
no tem previso de utilizar a CPU nos prximos instantes (quase sempre entre aqueles
que esto em interrupo de E/S ou no final da fila de pronto), e descarrega este
processo da memria para uma rea especial em disco, chamada arquivo de swap, onde
o processo fica armazenado temporariamente. Durante o tempo em que o processo fica
em swap, o outro que necessitava de memria entra em execuo ocupando o espao
deixado pelo que saiu. Pouco antes de chegar a vez do processo armazenado em swap
utilizar a CPU, o sistema escolhe um outro processo para descarregar para swap e
devolve o anterior da rea de swap para a memria principal, para que este possa ser
executado novamente. E vai trabalhando assim at que os processos vo terminando. O
problema dessa tcnica que pode provocar um nmero excessivo de acesso memria
secundria (disco), levando o sistema a uma queda de desempenho.
8.9
Memria Virtual:
86
87
88
Algoritmo FIFO (first in, first out): escolhe a pgina que est h mais
tempo na memria principal para fazer a troca. um algoritmo de simples
implementao, mas corre o risco de retirar uma pgina que, embora tenha
sido carregada h mais tempo, esteja sendo muito utilizada. Por essa razo
no muito usado.
89
quantas referncias cada pgina teve e utiliza esta informao para escolher a
pgina.
-
90
Captulo 9
Gerncia de Sistemas de Arquivos
9.1
Estrutura de Diretrios:
Diretrio pessoal: Evoluo do modelo anterior, permite a cada usurio ter ser
diretrio particular, sem a preocupao de conhecer os outros arquivos do
disco. Neste modelo h um diretrio master que indexa todos os diretrios
particulares dos usurios, provendo o acesso a cada um.
FAT32: igual ao FAT no que diz respeito a organizao e desempenho, mas pode
trabalhar com parties de at 2TB.
91
92
Este tipo de alocao, alm de permitir acesso direto aos blocos, no utiliza
informaes de controle nos blocos de dados.
9.4
Proteo de acesso:
93
BIBLIOGRAFIA
DEITEL, Harvey M., DEITEL, Paul J. Sistemas Operacionais. ed. 3. So Paulo: Pearson
Education - Br, 2005.
MAIA, Luiz Paulo; MACHADO, Francis Berenger.
Operacionais. ed. 4. Rio de Janeiro: LTC, 2007.
Arquitetura
de
Sistemas
94