Você está na página 1de 5

1. Qual a diferena entre um programa puramente sequencial e uma aplicao contendo processos ou threads concorrentes? R: 2.

. Em programao concorrente, o que regio crtica (tambm chamada de seo crtica)? R: uma rea no cdigo de um algoritmo que acessa um recurso compartilhado que no pode ser acessado por mais de uma linha de comando. 3. O que excluso mtua? R: uma tcnica usada para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado em programao concorrente. 4. O que semforo no contexto de sistemas computacionais? R: uma varivel especial que tem como funo controlar o acesso de recursos compartilhados num ambiente multitarefa. 5. Como a excluso mtua pode ser implementada com o uso de semforos? R: 6. O que so starvation (espera indefinida) e deadlock (impasse)? R: Starvation: ocorre quando um processo nunca executado, pois os processos de prioridade maior sempre o impedem de ser executado. Deadlock: quando ocorre um impasse entre dois ou mais processos, eles so impedidos de continuar suas execues e ficam bloqueados.

7. Escreva e explique um algoritmo para resolver o problema do Produtor/Consumidor usando Semforos. R: #define N 100 /*nmero de espaos no buffer*/ typedef int semaphore; semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void producer (void) {}{ int item; while (TRUE) { produce_item (&item); P(&empty); P(&mutex); enter_item (item); V (&mutex); V (&full); } } void consumer (void) {}{ int item; while (TRUE) { P (&full); P (&mutex); remove_item (&item); V (&mutex); V (&empty); consume_item (&item); } } /*semforos so um tipo especial de inteiro*/ /*controla o acesso regio crtica*/ /*contador do nmero de espaos vazios no buffer*/ /*contador do nmero de espaos cheios no buffer*/

/*gera algo para colocar no buffer*/ /*decrementa o contador empty*/ /*entra na regio crtica*/ /*coloca um novo item no buffer*/ /*sai da regio crtica*/ /*incrementa o contador full */

/*decrementa o contador full*/ /*entra na regio crtica*/ /*retira um item do buffer*/ /*sai da regio crtica*/ /*incrementa o contador empty*/ /*processa o item retirado do buffer*/

8. Semforos e monitores podem ser usados para garantir excluso mtua e sincronizao entre processos/threads que executem em um mesmo computador, mesmo em sistemas multiprocessados que compartilham a mesma memria principal. Mas no serve se a aplicao executada de forma distribuda entre diferentes computadores. O que usar neste caso? R: 9. Em uma aplicao concorrente que controla saldo bancrio em contas-correntes, dois processos compartilham uma regio de memria onde esto armazenados os saldos dos clientes A e B. Os processos executam concorrentemente os seguintes passos:

Supondo que os valores dos saldos de A e B sejam 500,00 e 900,00 antes de os processos executarem, pede-se: a. Quais os valores corretos esperados para os saldos dos clientes A e B aps o trmino da execuo dos processos? R: Cliente A = 200 e cliente B = 1200 b. Quais os valores finais dos saldos dos clientes se a sequncia temporal de execuo das operaes for: a1, b1, a2, b2, a3, b3, a4, b4, a5, b5, a6, b6 ? R: Cliente A = 400 e cliente B = 1100

c. Utilizando semforos, proponha uma soluo que garanta a integridade dos saldos e permita o maior compartilhamento possvel dos recursos entre os processos. Processo 1 (Cliente A) /*saque em A */ Down (S1) x := saldo_do_cliente_A; x := x 200; saldo_do_cliente_A := x; Up (S1) /* deposito em B */ Down (S2) x := saldo_do_cliente_B; x := x + 100; saldo_do_cliente_B := x; Up (S2) Processo 2 (Cliente B) /*saque em A */ Down (S1) y := saldo_do_cliente_A; y := x 100; saldo_do_cliente_A := y; Up (S1) /* deposito em B */ Down (S2) y := saldo_do_cliente_B; y := x + 100; saldo_do_cliente_B := y; Up (S2)

10. O que poltica de escalonamento em um sistema operacional? R: uma atividade organizacional feita pelo escalonador da CPU, possibilitando executar os processos mais viveis e concorrentes, priorizando determinados tipos de processos. 11. Explique as seguintes polticas de escalonamento: a) FIFO (First-In First-Out) R: quando se adota o mtodo que o primeiro que chegar ser o primeiro a ser executado. b) LIFO (Last-In First-Out) R: uma fila de processos de um sistema operacional, em que estabelecido um tempo para ser usado por cada um dos processos. c) Time-slicing (ou round robin) R: Nesse escalonamento o sistema operacional possui um timer, chamado de quantum, onde todos os processos ganham o mesmo valor de quantum para rodarem na UCP. d) SJF (shortest job first) R: quando o menor processo ganha acesso a UCP e atrs dele forma-se uma fila de processos por ordem crescente de tempo de execuo. e) SRT (shortest remaining time) R: quando se escolhe o processo que possua o menor tempo restante, mesmo que esse processo chegue metade de uma operao, se um processo novo for menor, ele ser executado primeiro. f) Priority-based R: 12. Considere que cinco processos (P1, P2, P3, P4 e P5) sejam criados no instante de tempo zero e possuam as caractersticas descritas na tabela abaixo.

Desenhe um diagrama ilustrando o escalonamento dos processos e seus respectivos tempos de turnaround, segundo as polticas especificadas a seguir. O tempo de troca de contexto deve ser desconsiderado. a) FIFO b) SJF c) Priority-based (nmero menor implica prioridade maior) d) Round-robin com fatia de tempo igual a 2 ciclos R:

13. Considere a tabela abaixo.

Qual o tempo de turnaround mdio dos processos, considerando o tempo de troca de contexto igual a zero para os escalonamentos abaixo. E se o tempo de troca de contexto for igual a 5 ciclos? a) FIFO b) SJF c) Round-robin com fatia de tempo igual a 20 ciclos R: