Exercícios Do Cap 6,7 3 9 Arquiteturas Do SO
Casos: Exercícios Do Cap 6,7 3 9 Arquiteturas Do SO. Pesquise 861.000+ trabalhos acadêmicosPor: leobo8 • 26/5/2014 • 1.889 Palavras (8 Páginas) • 14.197 Visualizações
CENTRO UNIVERSITÁRIO ANHANGUERA DE
CAMPO GRANDE – UNIDADE 1
CURSO: SUPERIOR EM TECNOLOGIA EM REDES DE COMPUTADORES
EXERCÍCIOS CAPÍTULOS 6, 7 E 9 SISTEMAS OPERACIONAIS
CAMPO GRANDE – MS
MAIO/2014
CAPÍTULO 6
TRHEAD
1. Como uma aplicação pode implementar concorrência em um ambiente Monothread?
Resposta = A aplicação deve implementar a concorrência através do uso de Múltiplos processos independentes ou subprocessos, permitindo dividir uma plicação em partes que podem trabalhar de forma concorrente.
2. Quais os problemas de aplicações concorrentes desenvolvidas em ambiente Monothread?
Resposta = O uso de múltiplos processos e subprocessos geram gastos de recursos do sistema, consumindo tempo de processamento e espaço na memória Principal, tanto para alocar ou desalocar recursos. Cada processo tem endereçamento diferente, isso significa que a comunicação entre esses processos se torna muito lenta e difícil de se programar, nesse caso usa-se técnicas muito complicadas como semáforos,pipes, sinais, memória compartilhada ou troca de mensagens.
3. O que é um ambiente Multithread e quais as vantagens de sua utilização?
Resposta = A ideia do ambiente Multithread é trabalhar de forma concorrente dentro do mesmo processo, dividindo as tarefas em várias tarefas menores chamadas de thread ou sub-rotinas.
O thread é tratado pelo processador como um processo. A vantagem é a minimização de recursos do sistema, e ganho de desempenho uma vez que os processos demandam muito tempo com a criação, troca e eliminação de processos. Os threads trabalhar de forma cooperativa e Utilizam o mesmo espaço de endereçamento. Isso torna o acesso às informações mais rápida e simples, pois evita mudança de modo de acesso e permissão de acesso.
4. Explique a diferença entre unidade de alocação de recursos e unidade de escalonamento.
Resposta = Com a unidade de alocação de recursos o processador seleciona um processo para execução e com a unidade de escalonamento permite a execução de threads.
5. Quais as vantagens e desvantagens do compartilhamento do espaço de endereçamento entre Threads de um mesmo processo?
Resposta = A vantagem é permitir o compartilhamento de dados entre os threads de maneira mais rápida e eficiente.
A desvantagem é necessidade de implementar mecanismos de comunicação e sincronização para garantir acesso seguro aos dados compartilhados na memória.
6. No programa Multithread do item 6.7, qual o thread que terminará primeiro?
Resposta = Como o escalonamento dos threads fica a critério do sistema operacional não há como saber qual thread irá terminar primeiro. Para isso a aplicação deve criar mecanismos para isso.
7. Altere o programa do item 6.7 de forma a incluir mais um contador totalizando uma aplicação concorrente com quatro Threads.
Resultado =
function ThreadConta1 (ThreadParm: pointer): longint;stdcall;
var i: integer;
begin
for i := 1 to 1000000 do
Form1.Label1.Caption := IntToStr(i);
end;
function ThreadConta2 (ThreadParm: pointer): longint;stdcall;
var i: integer;
begin
for i := 1 to 1000000 do
Form1.Label2.Caption := IntToStr(i);
end;
function ThreadConta3 (ThreadParm: pointer): longint;stdcall;
var i: integer;
begin
for i := 1 to 1000000 do
Form1.Label3.Caption := IntToStr(i);
end;
function ThreadConta4 (ThreadParm: pointer): longint;stdcall;
var i: integer;
begin
for i := 1 to 1000000 do
Form1.Label4.Caption := IntToStr(i);
end;
procedure TForm1.FormCreate (Sender: Tobject);
var
Thread1, Thread2, Thread3, Thread4: Thandle;
ThreadID1, ThreadID2, ThreadID3, ThreadID4: Dword;
begin
Form1.Caption := 'Programa Multithread';
Thread1 := CreateThread (nil,0,@ThreadConta1,0,0,ThreadID1);
if (Thread1=0) then MessageBox (Handle,'Erro na criação do thread',nil,MB_OK);
Thread2 := CreateThread (nil,0,@ThreadConta2,0,0,ThreadID2);
if (Thread2=0) then MessageBox (Handle,'Erro na criação do thread',nil,MB_OK);
Thread3 := CreateThread (nil,0,@ThreadConta3,0,0,ThreadID3);
if (Thread3=0) then MessageBox (Handle,'Erro na criação do thread',nil,MB_OK);
Thread4 := CreateThread (nil,0,@ThreadConta4,0,0,ThreadID4);
if (Thread1=4) then MessageBox (Handle,'Erro na criação do thread',nil,MB_OK);
end;
8. Compare os pacote de thread em modo usuário e modo kernel.
Resposta = Nos Threads em Modo usuário o Sistema operacional usa uma biblioteca de rotinas para criar/eliminar,trocar mensagens e escalonar os Threads. Esse modo possibilita utilizar Threads em sistemas operacionais que não suportam threads. A desvantagem
...