Colegas listuarios!
Estou realizando um curso na Area de Redes Linux, e estou tendo dificuldades
em assimilar o conteudo das materias de Sistemas Operacionais.
Gostaria de saber se tem algum listuario com diposi��o de me ajudar a
resolver os problemas abaixo propostos:
1a. quest�o
Considere o algoritmo 5. Mostre (caso exista) um exemplo no qual h�
mais de um processo no estado <in-cs>. Explique (caso exista) a(s)
conseq��ncia(s)
oriunda(s) desta situa��o.
Algoritmo 5
#A estrutura de dados comum a ser utilizada � a seguinte:
var flag: array [0..n-1] of (idle, want-in, in-cs);
#idle = desocupado;
#want-int = esperando, na fila para entrar na se��o cr�tica e
#in-cs = Dentro da se��o cr�tica.
turn: 0..n-1;
#Todos os elementos do flag s�o inicializadas idle e o valor inicial de turn
situa-se entre 0 e n 1.
#A estrutura do processo Pi �:
var j: 0..n;
repeat
[repeat
flag[i]:=want-in; # coloca o processo flag[i] em espera na fila da se��o
cr�tica.
j:=turn; #indica que o j estah com o nro do processo que estah na secao
critica.
while not(j=i) do #enquanto j for diferente do nro do processo atual, fa�a.
if not(flag[j] = idle) then #Se for diferente de idle fa�a.
j := turn; #atribui ao j o nr. do processo que esta na se��o cr�tica.
else j := j+1 mod n; #se o processo j estiver idle, passa para o
proximo processo.
flag[i] := in-cs; # Sinaliza o processo flag[i] que � a sua vez inten��o de
entrar se��o #cr�tica
j := 0;
#se todos os processos estiverem idle, este loop irah sair quando o j for
igual a i
# se algum processo nao estiver em want-in ou in-cs, o j estarah sempre
recebendo o processo da #secao critica.
#este laco varre todos os processos j (de 0 ateh n-1), ateh encontrar algum
que esteja em in-cs #(secao critica)
while (j<n) and (j=i or not(flag[j] = in-cs)) do j := j+1;
#Neste While o algor�timo confere se tem outros processos na se��o cr�tica.
until (j>=n) and (turn = i or flag[turn]=idle);
#este until confere se � a vez do processo atual, ou se o processo que tinha a
vez terminou.
turn:=i;]
se��o_cr�tica
[j:=turn+1 mod n;
while (flag[j] = idle) do j:=J+1 mod n;
turn :=j;
flag[i]:=idle;]
...
until false;
2a. quest�o
Qual(is) o(s) problema(s) do algoritmo 1 abaixo. Explique atrav�s de um
contra-
exemplo. Obs: parbegin/parend s�o primitivas para paralelismo, ou seja, indica
que a ordem
de execu��o dos processos pode ser qualquer uma segundo a pol�tica de
escalonamento
subjacente.
Algoritimo 1
var blocked: array [0..1] of boolean;
turn:0..1;
procedure P (id: integer)
begin
repeat
blocked[id]:=true;
while turn ? id do
begin
while blocked[1-id] do skip;
turn:=id;
end;
<CRITICAL SECTION>
blocked[id]:=false;
<REMAINDER SECTION>
until false
end;
begin
blocked[0]:=false; blocked[1]:=false;
turn:=0;
parbegin
P(0); P(1);
parend
end.
3o. quest�o
N processos compartilham M recursos. A cada escalonamento de processo, apenas
uma
aloca��o ou libera��o de recurso pode ocorrer. A necessidade m�xima de
recursos por
processo n�o ultrapassa M. A soma de todas as necessidades dos processos �
menor do
M+N. Mostre que neste caso n�o h� deadlocks.
---------------------------------------------------------------------------
Esta lista � patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utiliza��o da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html