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

Responder a