TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Exercícios - Sistemas Operacionais

Por:   •  9/7/2014  •  2.403 Palavras (10 Páginas)  •  2.465 Visualizações

Página 1 de 10

UNIVERSIDADE FEDERAL DE SÃO PAULO

INSTITUTO DE CIÊNCIA E TECNOLOGIA

Sistemas Operacionais

Prof Dr. Ezequiel Roberto Zorzal

Lista 2 (Entrega até: 1ª Prova)

Qual a maior vantagem de implementar threads no espaço do usuário? Qual a maior desvantagem?

A maior vantagem de implementar threads no espaço do usuário é que elas são escalonadas pelo programador, tendo a grande vantagem de cada processo usar um algoritmo de escalonamento que melhor se adapte a situação, o sistema operacional neste tipo de thread não faz o escalonamento, em geral ele não sabe que elas existem. Neste modo o programador é responsável por criar, executar, escalonar e destruir a thread. A maior desvantagem é se um thread fizer uma chamada bloqueante, todo o processo estará bloqueado, pois o kernel não tem acesso ao mesmo.

Descreva as diferenças entre o scheduling de curto prazo, de médio prazo e de longo prazo.

O scheduling de curto prazo seleciona entre os processos que estão em estado de pronto que estão na memória, para serem executados pelo processador. Ele faz decisões de escalonamento muito mais frequentemente que os de médio e longo prazo. O scheduling de médio prazo, seleciona entre os processos que estão na memória virtual, reduzindo o grau de multiprogramação. Ele temporariamente remove o processo da memória principal e o coloca na memória secundária. O scheduling de longo prazo seleciona entre os processos novos, os que são limitados por E/S e os que são limitados pela CPU, dando prioridade aqueles limitados por E/S, já que utilizam menos tempo o processador. Este escalonador é o responsável pelo grau de multiprocessamento, ou seja a quantidade de processos que o sistema irá trabalhar, além de ser o escalonamento menos frequente.

Incluindo o processo pai inicial, quantos processos são criados pelo programa mostrado abaixo?

#include<stdio.h>

#include<unistd.h>

int main()

{

fork();

fork();

fork();

return 0;

}

São criados 8 processos.

A sequência de Fibonacci é a série de números 0, 1, 1, 2 , 3, 5, 8, ... Formalmente, ela pode ser expressa como:

〖fib〗_0=0

〖fib〗_1=1

〖fib〗_n=〖fib〗_(n-1)+〖fib〗_(n-2)

Escreva um programa usando a chamada de sistema fork() que gere a sequência de Fibonacci no processo filho. O número da sequência será fornecido na linha de comando. Por exemplo, se 5 for fornecido, os cinco primeiros números da sequência serão exibidos pelo processo filho. Já que os processos pai e filho têm suas próprias cópias dos dados, será necessário que o filho exiba a sequência. Faça o pai invocar a chamada wait() para esperar o processo filho ser concluído antes de sair do programa. Execute a verificação de erros necessária para assegurar que um número negativo seja passado na linha de comando.

#include <stdio.h>

#include <sys/types.h>

#include <unistd.h>

#include <sys/wait.h>

int main(){

int x = 0, y = 1, n = x + y, i;

scanf("%d ", &i); //numero inserido pelo usuário.

pid_t pid = fork();

if (pid == 0){

printf("Filho faz o Fibonacci.\n");

printf("0 %d\n ",n);

while (i>0) {

n = x + y;

printf("%d \n", n);

x = y;

y =

...

Baixar como (para membros premium)  txt (11.9 Kb)  
Continuar por mais 9 páginas »
Disponível apenas no TrabalhosGratuitos.com