Sie sind auf Seite 1von 11

Sistemas Operativos

Introduc~ao
Rui Gustavo Crespo
IST/Universidade Tecnica de Lisboa

Ap^endice A

Sistemas Operativos:
introduc~ao
A.1 Introduc~ao
Neste ap^endice s~ao introduzidos alguns conceitos basicos, usualmente de nidos
na area de sistema operativo, usados na especi cac~ao de protocolos de comunicac~ao de dados.
O leitor interessado em aprofundar os assuntos abordados nesta introduc~ao,
sugere-se a consulta de bibliogra a especializada [1]. Para mais informac~ao
sobre a programac~ao sobre o sistema operativo Unix, sugere-se a leitura de [2].

A.2 Enquadramento dos sistemas telematicos

A palavra Telematica tem a genese na junc~ao de duas areas tecnologicas:


Telecomunicac~oes e Informatica.
Nos anos 60, o acesso remoto a computadores era feito atraves de modems,
em que os dgitos eram modelados, e desmodelados, em ondas sinusoidais que
podessem ser transmitidos numa rede telefonica. Inicialmente, as velocidades de
transmiss~ao eram muito baixas (por exemplo, 300 baud), mas hoje um computador pessoal tem instalado um modem interno com velocidade de transmiss~ao
de 56K.
Embora os modems ainda sejam usados em rede telefonica comutada e em
telemoveis, os computadores trocam informac~ao por meios dedicados mais potentes, desde cabo coaxial ate a bra optica.
Os sistemas telefonicos, por seu turno, evoluiram de uma transmiss~ao analogica para digital, com o correspondente incremento na qualidade. As centrais
de comutac~ao s~ao totalmente digitais, e novos servicos foram disponibilizados.

A.2.1 Atributos

A troca de dados, entre computadores, e controlada atraves de conjuntos de


regras-designadas por protocolos. Os sistemas telematicos possuem um conjunto
de atributos espec cos, entre os quais se destacam:
3

~
APE^ NDICE A. SISTEMAS OPERATIVOS: INTRODUCAO

1. distributividade dos sistemas (quer geogra camente, quer nas equipas projectistas),
2. co-exist^encia de imensos servicos (apesar de muitos serem normalisados,
a interacc~ao pode gerar resultados indesejaveis).
3. abilidade exigida muito elevada (ninguem aceita que a chamada caia, ou
haja perda/corrupc~ao de dados).
O atributo 1 envolve conceitos estudados na area de investigaca~o designada
por sistemas operativos. Sendo distribudos, os sistemas so podem ser analisados
e programados funcionalmente, i.e., sem memoria centralizada1.
O atributo 2 e abordado na area de investigac~ao designada por interacca~o
de servicos-\feature interaction".
O atributo 3 exige que os protocolos sejam de nidos formalmente, i.e., com
bases matematicas2.

A.2.2 Processador e paralelismo

De nic~ao A.2.1 (Processador) O processador e o elemento que efectua cal-

culos, segundo as instruc~oes determinadas em programas, e de acordo com os


valores (dados) armazenados em memoria.
Em cada instante, os computadores de grande dimens~ao, as centrais telefonicas e os servidores de rede de computadores possuem varios programas a
correr em \paralelo". O numero de processadores, pode ser muito menor que
o numero de programas a correr. Tradicionalmente, existem varias soluc~oes o
processador correr os diversos programas:
1. Tratamento em lotes (\batch"), usado tipicamente a controlar org~aos
mec^anicos lentos: os perifericos interrompem o processador central quando
terminam a sua operac~ao.
2. Multiplexagem, em que tempos do processador s~ao atribudos a cada programa, sob controlo de um programa de despacho (\scheduler").
Exemplo A.2.1 A gura A.1 mostra a distribuica~o do processador, ao longo
do tempo, entre tr^es entidades A ; C .
Entidades

A6
B
C

-t

Figura A.1: Utilizac~ao do processador


Cada uma das tr^es entidades, \v^e" o processador a trabalhar em paralelo
com as restantes entidades.

1 Infelizmente, a maior parte dos programas de forma


c~ao em Enga Electrotecnica e de
Informatica, baseia-se em linguagens de programac~ao imperativa (como o C), ou centrada em
objectos (como o Java).
2 As de ci^
encias, neste campo do sistema educativo nacional, s~ao bastante conhecidas, mas
pouco se tem feito para atacar este problema.

^
A.3. PROCESSOS E INSTANCIAS

Os sistemas com varias actividades paralelas s~ao designados por sistemas


concorrentes (\concurrent"). Nos sistemas operativos, entre outros topicos s~ao
estudados os algoritmos de despacho, os meios de assegurar a separaca~o dos
dados de cada programa e a sincronizac~ao entre os diversos programas.

A.3 Processos e inst^ancias


Frequentemente, os computadores s~ao usados por varias entidades (por exemplo,
pessoas) a executar o mesmo programa (embora, com dados distintos).

A.3.1 De nic~oes basicas

De nic~ao A.3.1 (Processo) Um processo (\process") e um conjunto de programas, que de nem determinadas tarefas.
O processo n~ao tem actividade propria. Esta e designada por inst^ancia do
processo.

De nic~ao A.3.2 (Inst^ancia de um processo) Uma inst^ancia (\instance")


de um processo e uma actividade activa no sistema, com os seus proprios dados
e com o processador a executar uma dada instruc~ao do processo.

Exemplo A.3.1 Um exemplo simples de um processo e um compilador da linguagem C. Num determinado instante, o processador pode ser usado por duas
inst^ancias do processo.
Processo
A
B

Figura A.2: Processo prescreve duas inst^ancias

 Na inst^ancia A do processo, o cheiro fonte cont^em duzentas linhas de

codigo e o processador esta a veri car que o texto de entrada e sintacticamente correcto.

 Na inst^ancia B do processo, o cheiro fonte cont^em setecentas linhas de


codigo e o processador esta a gerar o codigo nal.

As instruc~oes executadas pelas diversas inst^ancias residem no processo, porque n~ao ha necessidade de duplicar codigo. Na gura A.2, as instruc~oes est~ao
representadas no rect^angulo Processo.
Os dados, s~ao individuais as inst^ancias. Na gura A.2, o registo de instruc~ao
e representado por uma seta a apontar para a linha de codigo do processo. O cheiro fonte e individual a cada inst^ancia, sendo representado por um rect^angulo
estreito ao lado da inst^ancia.

~
APE^ NDICE A. SISTEMAS OPERATIVOS: INTRODUCAO

Outras notac~oes
Em muitos textos de sistemas operativos (por exemplo [1]), a actividade activa
e designada por processo, e a de nic~ao e simplesmente designada por programa.
Varios sistemas operativos permitem que uma unidade activa lance, em paralelo, varias unidades de processamento, designadas por \threads". A diferenca
entre a unidade activa e as \threads", e que estas s~ao conhecidas apenas pela unidade activa que as lanca. Para simpli car, a unidade activa e por vezes referida
como \heavyweight process" e a \thread" e referida como \lightweightprocess".
Para mais informac~ao sobre estes topicos, sugere-se a leitura de [3].

A.3.2 Identi cadores

Cada inst^ancia recebe um identi cador, designado por PID-\process identi er",
que o mantem ate ela terminar. O sistema operativo mantem uma listagem, de
todas as inst^ancias, numa tabela designada por tabela do processador \process
table". No sistema operativo Unix, o comando ps permite listar os processos.
Em muitos sistemas operativos, a cada pessoa com capacidade de acesso e
atribudo um identi cador unico, designado por uid-\user identi cation". Frequentemente, e necessaria uma senha (\password") para entrar em sess~ao no
computador3. Todas as inst^ancias lancadas pelo utilizador recebem o mesmo
uid e s~ao referidos como lhos-\child processes".
Ha inst^ancias que n~ao s~ao lancadas por utilizadores, por exemplo as que enviam cheiros para as impressoras. Essas inst^ancias s~ao designadas por deamon.

Exemplo A.3.2 No sistema operativo Unix, os PIDs s~ao inteiros, normalmente

de gama entre 0 e 30000.


Uma inst^ancia pode conhecer o seu identi cador atraves da chamada de sistema
int getpid();
Uma inst^ancia pode conhecer o identi cador da inst^ancia que a lancou (pai),
atraves da chamada de sistema
int getppid();

A.3.3 Operac~oes elementares

Os sistemas operativos disponibilizam as seguintes operac~oes de manipulaca~o


de inst^ancias de processos (entre par^entesis s~ao indicadas as func~oes em C que
implementam as operac~oes):
1. Criar uma inst^ancia (fork).
2. Terminar uma inst^ancia (exit).
3. Bloquear ate outra inst^ancia terminar (wait).
4. Criar canal de comunicac~ao com outra inst^ancia (pipe).
3

No sistema operativo

/etc/passwd.

Unix,

as senhas s~ao armazenadas em forma cifrada no cheiro

A criac~ao de utilizadores e feita por um administrador de sistema, designado por root.

^
A.3. PROCESSOS E INSTANCIAS

'$
&%
'$
'$
&% &%

5. Escrever e ler num canal de comunicac~ao (read, write).


Durante a sua vida, uma inst^ancia de um processo passa pelos estados indicados na gura A.3.
fork HH
j
Seleccionado
Executavel
pelo despacho

 

Execuc~ao
+
exit 

Retirado
;

pelo despacho
Bloqueado
3
wait

Figura A.3: Estados de uma inst^ancia de um processo

Primeiro, a inst^ancia e criada e passa para o estado de Executavel. O despacho do sistema operativo balanceia a inst^ancia entre os estados de Executavel
e de Execuc~ao.
Por vezes, a inst^ancia ca bloqueada, em resultado da operac~ao wait. Posteriormente, outra inst^ancia permite que regresse ao estado de Execuca~o.
Por m, a operac~ao exit termina de nitivamente a vida da inst^ancia.

Fork

No Unix, uma nova inst^ancia ( lha) e criada, a partir da inst^ancia de um processo


ja a corre (pai), pela chamada ao sistema
int fork();
A inst^ancia lha possui uma copia exacta das variaveis da inst^ancia pai. A
partir do lancamento, a inst^ancia lha e pai alteram de forma independente as
suas variaveis.
A chamada pode ter os seguintes resultados
Valor
Signi cado
;1 Erro no lancamento da nova inst^ancia
0
O processo e inst^ancia lha
> 0 PId da inst^ancia lha
O codigo tpico de lancamento, em C, de inst^ancias e dado por
int child pid;
if ((child pid=fork()) == -1) f
error("can't fork);
exit(1); g
else if (child pid == 0) f
/* lho */ g
else f
/ pai */ g

Exit

No Unix, uma inst^ancia termina com a chamada ao sistema

~
APE^ NDICE A. SISTEMAS OPERATIVOS: INTRODUCAO

exit(int);
O par^ametro e o status a passar ao kernel, que entrega a inst^ancia pai se
estiver em wait. Apenas devem ser usados os 8 bits de menor peso (0 ; 255).
Por convenc~ao, o valor 0 indica terminaca~o normal.

Wait
No Unix, uma inst^ancia pode car a espera da terminac~ao de uma inst^ancia
lha, com a chamada ao sistema
int exit(int *status);
A chamada pode ter os seguintes resultados
Valor
Signi cado
;1 N~ao ha inst^ancias lhas
>= 0 Pid da inst^ancia lha, que terminou
O status da inst^ancia lha, que terminou, e colocado na localizaca~o indicada
no par^ametro.

A.4 Comunicac~ao entre inst^ancias


As unidades activas necessitam de trocar informac~ao e sincronizar as actividades. A comunicaca~o entre inst^ancias e, frequentemente, referida por IPC\InterProcess Communication". Os dados trocados, s~ao frequentemente designadas por mensagens>
Existem duas formas de transmiss~ao de dados entre duas inst^ancias:

 Memoria partilhada, em que uma das inst^ancias escreve na memoria (designada por tamp~ao-\bu er") e a outra l^e da memoria.

 Canal de comunicac~ao

A.4.1 Corridas
Para alem de nem sempre ser possvel a exist^encia de memoria comum entre
duas inst^ancias residindo em processadores distintos, na memoria partilhada
existe o problema em garantir que uma inst^ancia escreve primeiro e so de pois
outra l^e da memoria tamp~ao.
Outro problema e designado por condica~o de corrida-\race", quando duas
inst^ancias tentam escrever na memoria tamp~ao.

Exemplo A.4.1 Consideremos duas inst^ancias A e B, em que cada uma pre-

tende escrever numa memoria tamp~ao uma mensagem a ser consumida por uma
outra inst^ancia C . Suponhamos que a memoria tamp~ao e, simplesmente, uma
tabela-\array".
A inst^ancia A veri ca que o primeiro ndice livre da tabela e o 7. Quando vai
inserir o dado, o despacho suspende a inst^ancia A e entrega o CPU a inst^ancia
B . Esta, veri ca que o primeiro ndice livre da tabela e o 7 e escreve o dado.
Depois, o despacho suspende a inst^ancia B e volta a entrega o CPU a inst^ancia
A, que escreve o seu dado no ndice (que considera livre) 7.

~ ENTRE INSTANCIAS
^
A.4. COMUNICACAO

A.4.2 Exclus~ao mutua

A memoria tamp~ao constitui uma regi~ao crtica, sendo necessario garantir


a exclus~ao mutua em caso de acesso. Tal pode ser conseguido, se forem
satisfeitas as seguintes condic~oes:
 Dentro de uma regi~ao crtica, apenas pode ser executada uma inst^ancia.
 N~ao podem ser assumido o numero de processadores e as suas velocidades
de processamento.
 Nenhuma inst^ancia fora da regi~ao crtica pode bloquear a inst^ancia dentro
da regi~ao crtica.
 Nenhuma inst^ancia deve esperar inde nidamente para entrar na regi~ao
crtica (i.e., a inst^ancia dentro da regi~ao crtica deve correr em tempo
limitado).

A.4.3 Canais de comunicac~ao

O canal de comunicac~ao e o metodo mais usado de comunicac~ao entre inst^ancias.


A inst^ancia pode enviar mensagens para o canal, sem ter de car a espera que a
outra inst^ancia as leia (se o canal tiver capacidade su ciente). A inst^ancia que
l^e, ca suspensa se n~ao tiverem sido enviadas mensagens.
A transmiss~ao de mensagens por canais de comunicaca~o levanta varios problemas
 As mensagens podem ser perdidas, pelo que e necessarios elas serem
con rmadas-\acknowledged" pelo leitor.
 O desempenho-\performance" deve ser cuidadosamente analisado, por forma a evitar atrasos.

Pipes

No sistema operativo Unix, a comunicaca~o uni-direccional entre duas inst^ancias


de processos e efectuada por pipes. O canal de comunicac~ao e criado, normalmente antes do fork, atraves da chamada ao sistema
int pipe(int * le dr);
O par^ametro e um endereco de uma tabela de dois inteiros. le dr[0] contem
o descritor para a leitura e le dr[1] contem o descritor para a escrita. Para um
utilizador, o Unix cria automaticamente os seguintes canais
Valor Signi cado
0
stdin
1
stdout
3
stderr
As mensagens s~ao sequ^encias de Bytes. Os pipes constituem uma memoria
tamp~ao de, pelo menos, 4K Bytes.
A escrita e leitura s~ao efectuadas pelas chamadas
int read(int le dr, char *msg, int size);
int write(int le dr, char *msg, int size);

10

~
APE^ NDICE A. SISTEMAS OPERATIVOS: INTRODUCAO

Bibliogra a
[1] A.M Marques and P. Guedes. Fundamentos de Sistemas Operativos. Number 2 in Informatica e Computadores. Editorial Presenca, 3 edition, 1994.
[2] W.R. Stevens. UNIX Networking Programming. Prentice-Hall, 1990.
[3] A.S. Tanenbaum and A.S Woodhull. Operating Systems: Design and Inplementation. Prentice-Hall, 2 edition, 1997.

11

Das könnte Ihnen auch gefallen