Ad1 sistemas operacionais

Disponível somente no TrabalhosFeitos
  • Páginas : 5 (1138 palavras )
  • Download(s) : 0
  • Publicado : 27 de agosto de 2012
Ler documento completo
Amostra do texto
Sistemas Operacionais
11113050050
Mariana da Costa de Andrade
AD1 – 2012.2
Polo: Nova Iguaçu

Questão 1 – De acordo com a questão vemos que o programa foi executado em um sistema de terceira ou quarta geração. Com isso, sabemos que o sistema possui o conceito de multiprogramação, e assim, o tempo de 7s gasto com E/S não está incluído nos 21s do tempo de execução do programa. Como na segundageração não existe o conceito de multiprogramação, o tempo de 7s de E/S fará parte do tempo de execução do programa no processador. Isso ocorrerá porque o processador, que está executando este programa, ficará ocioso esperando pelo término da operação de E/S, para depois continuar a executar o programa. Logo, o tempo de execução do programa agora será de 28s. Como o processador ficará ocioso por7s destes 28s, então a fração de tempo desperdiçada do processador será de 7/28 = ¼ = 0,25, ou seja, aproximadamente 25% do tempo de execução do programa.
Sim, o processador fica ocioso por 2s quando a operação de E/S de A termina de ser executada.

Questão 2 – Não, pois foram encontrados alguns erros, como: B possui dois pais (D e F), um filho só pode ter um pai. D e F como pais não podemficar no mesmo nível de hierarquia. O processo E está no terceiro nível, mas ele deveria ser filho de algum outro processo, como C, B ou A, ou então estar em algum outro nível.

Questão 3 – Pelo enunciado, o programa executa por 10s, ou seja, 10000ms. Como durante a execução são feitas 800 operações de E/S, e como cada operação de E/S demora 2,5ms, então 2000ms de 10000ms são gastos com elas. Logo,o programa executa no processador do hardware por 8000ms. Considere agora que o programa execute sobre a máquina virtual. Note que a velocidade do processador virtual ser de 50% da velocidade do processador real significa que, durante os 8000ms, somente 50% das instruções serão executadas. Com isso, no processador virtual, o programa executará em 8000/0,50 = 16000ms. Como o tempo de cada operaçãode E/S agora é de 5ms, então o tempo total de E/S passará para 5 x 800 = 4000ms. Logo, o tempo total de execução do programa na máquina virtual será de 16000ms + 4000ms = 20000ms, ou seja, 20s.

Questão 4 - Vamos analisar os dados informados:
xp: processos;
p: processadores;
t: tempo de um intervalo;
yt: tempo total de execução do processo.
Vamos dar o nome de IF ao tempo decorrido entre oinício e o fim de cada processo.

Portanto, podemos definir a seguinte fórmula:
IF=ytt-1*p*txp+t

Vamos dar um exemplo:
p=4 xp=3 t=2 yt=14
IF=142-1*4*23+2=6*4*23+2=483+2=18ms

Questão 5 –
Não. A solução correta para o problema dos filósofos é:

#define N 5 /* número de filósofos */
#define LEFT (i+N-1)%N /* número do vizinho à esquerda de i */
#defineRIGHT (i+1)%N /* número do vizinho à direita de i */
#define THINKING 0 /* o filósofo está pensando */
#define HUNGRING 1 /* o filósofo está tentando pegar garfos */
#define EATING 2 /* o filósofo está comendo */
typedef int semaphore; /* os semáforos são um tipo especial de int */
int state[N]; /* array para controlar o estado de todos */
semaphore mutex = 1; /* exclusão mútua pararegiões críticas */
semaphore s[N]; /* um semáforo por filósofo */

void philosopher(int i) /* i: número do filósofo, de 0 a N – 1 */
{
while(TRUE){ /* repete eternamente */
think(); /* o filósofo está pensando */
take_forks(i); /* pega dois garfos ou bloqueia */
eat(); /* nham-nham, espaguete */
put_forks(i); /* coloca os dois garfos de volta na mesa */
}
}void take_forks(int i) /* i: número do filósofo, de 0 a N – 1 */
{
down(&mutex); /* entra na região crítica */
state[i] = HUNGRY; /* registra o fato de que o filósofo i está com fome */
test(i); /*tenta pegar 2 garfos */
up(&mutex); /* sai da região crítica */
down(&s[i]); /* bloqueia se os garfos não foram pegos */
}

void put_forks(i) /* i: número do filósofo,...
tracking img