1) Em um sstema que suporta programação concorrente apenas através da troca de mensagens, será crado um Servdor para controlar o uso das portas seras. Quando um processo Clente deseja usar uma porta seral, ele enva uma mensagem Aloca para o Servdor. Exstem N portas seras, todas equvalentes, mas cada uma pode ser usada somente por um Clente de cada vez. O Servdor nforma ao Clente a porta que ele va usar através da mensagem Porta p. Ao conclur o uso, o Clente enva para o Servdor a mensagem Lbera p. Suponha que exsta mas do que N processos Clentes. Mostre o algortmo do Servdor, em português estruturado. Apresentar a solução como fo feto para o Servdor de Buffer vsto em aula. Supor receve bloqueante. 2) O problema dos letores/escrtores consste de um texto que pode ser ldo ou escrto por város processos. Consderando o códgo abaxo, responda justfcando: a) É possível város letores lerem ao mesmo tempo? b) É possível város escrtores escreverem ao mesmo tempo? c) É possível postergação ndefnda de um letor? d) É possível postergação ndefnda de um escrtor? nt nl = 0; semaphore tpo = 1; semaphore exclusvo = 1; vod letor( vod) f( nl > 0 ) ++ nl; else{ P( tpo ); nl = 1; -- nl; f( nl == 0 ) V( tpo ); vod escrtor( vod) P( tpo ); V( tpo ); 3) Em um programa concorrente exstem N processos trabalhadores e um únco processo fnalzador. O programa é tal que o processo fnalzador precsa esperar todos os processos trabalhadores termnarem para então ele fnalzar o programa. Este tpo de sncronzação é chamada de barrera e é típca da programação em máqunas paralelas. Implemente uma solução para o problema da barrera usando mutexes e varáves condção da bbloteca das pthreads. A solução consste de 2 rotnas: /* processo trabalhador meupd nforma que acabou sua parte do servço */ vod acabe (nt meupd); /* processo fnalzador fca bloqueado até todos os trabalhadores acabarem o servço */ vod espera_todos( vod );
Dcas sobre o Posx: pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock( &m ); pthread_mutex_unlock( &m ); pthread_cond_t vc = PTHREAD_COND_INITIALIZER; pthread_cond_wat( &vc, &m ); pthread_cond_sgnal( &vc ); 4) Determne se o conjunto de tarefas abaxo é escalonável com deadlne monotônco, aplcando a análse para D P, vsta em aula. T1: J1=0 C1=2 P1=5 D1=5 B1 = 0 T2: J2=0 C2=5 P2=30 D2=10 B2 = 0 T3: J3=0 C3=10 P3=25 D3=25 B3 = 0 J + W W j = C + B + C j HP ( ) j R = J + W Pj 5) Determne se o conjunto de tarefas abaxo é escalonável, aplcando a análse baseada em tempo de resposta vsta em aula, quando: (a) prordades são atrbuídas conforme o deadlne monotônco; (b) prordades são atrbuídas conforme o taxa monotônco (rate monotonc); T1: C1=3 P1=20 D1=6 T2: C2=3 P2=15 D2=7 T3: C3=4 P3=9 D3=8 6) Consderando o mesmo conjunto de tarefas, é possível crar uma escala de tempo não preemptva para atender os deadlnes solctados? Justfque tentando crar uma escala do tpo usada por executvo cíclco. 7) Ilustre através de exemplos como as característcas abaxo do sstema operaconal podem aumentar o tempo de resposta de uma tarefa com alta prordade. Para cada exemplo, desenhe um dagrama de tempo para mostrar o mpacto sobre a tarefa de alta prordade. (a) Interrupções desabltadas. (b) Kernel não é preemptvo. 8) Indque dos aspectos do projeto de um sstema operaconal que afetam o comportamento temporal de uma aplcação, atrapalhando o atendmento dos requstos temporas. 9) Eventos são coletados em uma rede composta por 4 computadores, e assocados com a hora local do computador que detecta cada evento. Para que os mesmos possam ser analsados em conjunto, é necessáro um erro máxmo entre relógos de 100 mlsegundos. Os crstas usados nesses computadores possuem uma precsão de 10-5 em relação a sua freqüênca nomnal, para mas ou para menos. Supondo que pode exstr um erro ncal de 40 mlssegundos entre quasquer dos relógos da rede, calcule quanto tempo va levar até que os dos relógos com maor erro entre eles apresentem um erro de 100 mlsegundos, supondo sempre o por caso.
10) Desenhe o grafo de precedênca do códgo abaxo: man() { [1] nt f1, f2, f3; /* Identfca processos flho*/ [2] prntf("alo do pa\n"); [3] f1 = fork( codgo_do_flho ); /* Cra flho 1 */ [4] prntf("flho 1 crado\n"); [5] f2 = fork( codgo_do_flho ); /* Cra flho 2 */ [6] prntf("flho 2 crado\n"); [7] wat( f1); [8] prntf("flho 1 morreu\n"); [9] f3 = fork( codgo_do_flho ); /* Cra flho 3 */ [10] prntf("flho 3 crado\n"); [11] wat( f3); [12] prntf("flho 3 morreu\n"); [13] wat( f2); [14] prntf("flho 2 morreu\n"); [15] ext(); codgo_do_flho() { [16] prntf("alo do flho\n"); [17] ext(); 11) Em um sstema que suporta programação concorrente apenas através da troca de mensagens, será crado um Servdor de Semáforo. Suponha que o processo S será o servdor, mplementando a funconaldade de um únco semáforo ncalzado com 1. O protocolo que permte a um processo clente executar operações P e V é mostrado abaxo. Mostre o algortmo do processo S, em português estruturado. Apresentar a solução como fo feto para o Servdor de Buffer vsto em aula. Supor receve bloqueante. P: --valor Se valor < 0 então bloquea quem executou o P V: ++valor Acorda o prmero da fla, se houver alguém bloqueado Solcta P Clente Lberado Servdor Solcta V Clente
12) Em um sstema que suporta programação concorrente apenas através da troca de mensagens, será crado um Servdor para controlar o uso das portas seras. Quando um processo Clente deseja usar uma porta seral, ele enva uma mensagem Aloca para o Servdor. Exstem N portas seras, todas equvalentes, mas cada uma pode ser usada somente por um Clente de cada vez. O Servdor nforma ao Clente a porta que ele va usar através da mensagem Porta p. Ao conclur o uso, o Clente enva para o Servdor a mensagem Lbera p. Suponha que exsta mas do que N processos Clentes. Mostre o algortmo do Servdor, em português estruturado. Apresentar a solução como fo feto para o Servdor de Buffer vsto em aula. Supor receve bloqueante. Aloca Clente Porta p Servdor Lbera p 13) Suponha a exstênca de um texto que é acessado por város processos Letores e um processo Escrtor. Quando o Escrtor está acessando, nenhum Letor pode ler o texto, pos podera acessar uma versão nconsstente. Por outro lado, é permtdo que város Letores acessem o texto smultaneamente. Implemente a solução descrta abaxo, usando os recursos da bbloteca Pthreads. Não é necessáro crar as threads, apenas mostrar o códgo de acesso ao texto. Letor: Escrtor: Se número de letores acessando for maor que zero Então Incrementa número de letores acessando Senão Se escrtor acessando Então Espera escrtor sar Senão Faz Letores acessando gual a 1 Decrementa número de letores acessando Se número de letores acessando for gual a zero Então Lbera o texto Se número de letores acessando for maor que zero Então Espera fcar lvre Senão Indca escrtor acessando Lbera o texto Dcas sobre o Posx: pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock( &m ); pthread_mutex_unlock( &m ); pthread_cond_t vc = PTHREAD_COND_INITIALIZER; pthread_cond_wat( &vc, &m ); pthread_cond_sgnal( &vc );
14) Consderando o códgo abaxo, uma varação da mplementação do produtor/consumdor vsta em aula, responda as seguntes perguntas (justfcando): a) Está garantdo o acesso exclusvo à varável "buffer" no caso de 1 produtor e 1 consumdor? b) É possível a ocorrênca de deadlock no caso de 2 produtores e 2 consumdores? struct tpo_dado buffer; semaphore espera_vaga = 1; semaphore espera_dado = 0; vod produtor( vod) P( espera_vaga ); buffer = dado_produzdo; V( espera_dado ); vod consumdor( vod) P( espera_dado ); dado_a_consumr = buffer; V( espera_vaga ); 15) Descreva a dferença entre deadlnes hard, frm e soft, e ndque um exemplo para cada um deles. 16) Usando os mecansmos "mutex" e "varáves condção" do Posx, mplemente as operações P e V de um semáforo. Cada uma dessas operações deverá ser substtuda por um códgo C com semântca smlar. Lembre-se que estas operações devem ser atômcas. O valor ncal do semáforo é 1. Dcas sobre o Posx: pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock( &m ); pthread_mutex_unlock( &m ); pthread_cond_t vc = PTHREAD_COND_INITIALIZER; pthread_cond_wat( &vc, &m ); pthread_cond_sgnal( &vc ); 17) Consderando o códgo abaxo, uma varação da mplementação do produtor/consumdor vsta em aula, responda as seguntes perguntas (justfcando): a) Está garantdo o acesso exclusvo à varável "buffer" no caso de 1 produtor e 1 consumdor? b) É possível a ocorrênca de deadlock no caso de 2 produtores e 2 consumdores? struct tpo_dado buffer; semaphore espera_vaga = 1; semaphore espera_dado = 0; vod produtor( vod) P( espera_vaga ); buffer = dado_produzdo; V( espera_dado ); vod consumdor( vod) P( espera_dado ); dado_a_consumr = buffer; V( espera_vaga ); 18) Indque dos aspectos do projeto de um sstema operaconal que afeta o comportamento temporal de uma aplcação.
19) Qual a dferença entre tempo real crítco e tempo real brando? Forneça também uma aplcação exemplo para cada tpo. 20) Em um sstema que suporta programação concorrente apenas através da troca de mensagens, será crado um Servdor para controlar o envo de dados entre produtores e consumdores. Os dados serão envados dretamente de um Produtor para um Consumdor lvre, mas o Produtor deve consultar o Servdor para obter o número do Consumdor que ele deverá usar. O Servdor deve manter uma lsta com os números dos Consumdores lvres no momento, e nformar um desses números quando um Produtor solcta. Após receber e processar os dados, o Consumdor volta a nformar que está lvre para o Servdor. Mostre o algortmo do Servdor, em português estruturado. Apresentar a solução como fo feto para o Servdor de Buffer vsto em aula. Supor receve bloqueante. Produtor Pede Servdor lvre Consumdor 1 Produtor End 2 Dados 21) O problema dos letores/escrtores consste de um texto que pode ser ldo ou escrto por város processos. Consderando o códgo abaxo, responda justfcando: e) É possível város letores lerem ao mesmo tempo? f) É possível város escrtores escreverem ao mesmo tempo? g) É possível um letor e um escrtor acessarem ao mesmo tempo? h) É possível postergação ndefnda de um escrtor? Consumdor 2 nt nl = 0; semaphore tpo = 1; semaphore exclusvo = 1; vod letor( vod) f( nl > 0 ) ++ nl; else{ P( tpo ); nl = 1; -- nl; f( nl == 0 ) V( tpo ); vod escrtor( vod)
22) Usando semáforos, mplemente rotnas cujo comportamento seja smlar ao das funções wat e sgnal vstas em aula (pthreads) e descrtas abaxo. Cre tantos semáforos e varáves auxlares do tpo ntero quantos julgar necessáro. Explque a lógca da solução. WAIT( VC ): Sempre bloquea o processo até alguém executar um SIGNAL. SIGNAL( VC ): Se exste alguém bloqueado em VC, acorda apenas 1 deles. Obs: O que é peddo são dos trechos de códgo em C, tal que um funcone como se fosse o wat e o outro funcone como se fosse o sgnal. Neste códgo em C, para obter atomcdade e bloquear tarefas, devem ser usados semáforos. 23) Determne se o conjunto de tarefas abaxo é escalonável se prordades forem atrbudas segundo o deadlne monotônco, aplcando a análse para D P, vsta em aula. Consdere que exste uma seção crítca entre T1 e T2, em função de uma tabela acessada pelas duas tarefas. A tarefa T1 permanece 1 undade de tempo acessando a tabela, enquanto a tarefa T2 permanece 2 undades de tempo acessando a mesma tabela. T1: J1=0 C1=2 P1=5 D1=5 T2: J2=0 C2=5 P2=30 D2=10 T3: J3=0 C3=10 P3=25 D3=25 J + W W j = C + B + C j HP ( ) j R = J + W Pj 24) Consderando o mesmo conjunto de tarefas, é possível crar uma escala de tempo não preemptva para atender os deadlnes solctados? Justfque tentando crar uma escala do tpo usada por executvo cíclco. 25) Consdere um kernel preemptvo com as seguntes característcas: - Interrupções do tmer acontecem a cada 10 ms; - O tratador de nterrupções do tmer demora 1 ms para executar; - Dentro do kernel as nterrupções fcam desabltadas no máxmo por 2 ms de cada vez; - A carga do contexto de uma tarefa demora 0,1 ms e o salvamento do contexto de uma tarefa demora 0,2 ms. Supondo que a tarefa da aplcação de mas alta prordade execute a cada atvação um algortmo que demora (tempo de computação) no por caso 200 ms, qual será o seu tempo máxmo de resposta? Justfque cada termo da equação usada no cálculo.