Beruflich Dokumente
Kultur Dokumente
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 denidos
na area de sistema operativo, usados na especicac~ao de protocolos de comunicac~ao de dados.
O leitor interessado em aprofundar os assuntos abordados nesta introduc~ao,
sugere-se a consulta de bibliograa especializada [1]. Para mais informac~ao
sobre a programac~ao sobre o sistema operativo Unix, sugere-se a leitura de [2].
A.2.1 Atributos
~
APE^ NDICE A. SISTEMAS OPERATIVOS: INTRODUCAO
1. distributividade dos sistemas (quer geogracamente, 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 denidos formalmente, i.e., com
bases matematicas2.
A6
B
C
-t
^
A.3. PROCESSOS E INSTANCIAS
Denic~ao A.3.1 (Processo) Um processo (\process") e um conjunto de programas, que denem determinadas tarefas.
O processo n~ao tem actividade propria. Esta e designada por inst^ancia 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
codigo e o processador esta a vericar que o texto de entrada e sintacticamente correcto.
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 denic~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 simplicar, 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].
Cada inst^ancia recebe um identicador, designado por PID-\process identier",
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 identicador unico, designado por uid-\user identication". 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.
No sistema operativo
/etc/passwd.
Unix,
^
A.3. PROCESSOS E INSTANCIAS
'$
&%
'$
'$
&% &%
Execuc~ao
+
exit
Retirado
;
pelo despacho
Bloqueado
3
wait
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 denitivamente a vida da inst^ancia.
Fork
Exit
~
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
Signicado
;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.
Memoria partilhada, em que uma das inst^ancias escreve na memoria (designada por tamp~ao-\buer") 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.
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 verica 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, verica 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
Pipes
10
~
APE^ NDICE A. SISTEMAS OPERATIVOS: INTRODUCAO
Bibliograa
[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