Exame 2005 06 2 sp - Exercícios. PDF

Title Exame 2005 06 2 sp - Exercícios.
Course Sistemas Operativos
Institution Instituto Universitário de Lisboa
Pages 6
File Size 283.4 KB
File Type PDF
Total Downloads 29
Total Views 129

Summary

Exercícios....


Description

INSTITUTO SUPERIOR DE CIÊNCIAS DO TRABALHO E DA EMPRESA Sistemas Operativos ETI - IGE Exame – época especial Ano lectivo 2005/06

Set/2006

Leia atentamente cada questão antes de responder. Seja organizado na elaboração das suas respostas - respostas ilegíveis não serão classificadas. Duração: 2h + 30 min (Tolerância) Boa Sorte!

Grupo I 1) Considere a seguinte tabela de páginas

Page Table Virtual Real 0 1 3 2 3 2 4 5 6 0 7 1 a) (0,5v) Considerando uma dimensão de 512bytes por página, Indique um endereço virtual com 11 bits que, face a esta tabela, origine um page fault.

b) (1v) Considerando o endereço da alínea anterior, indique a dimensão da memória virtual e real.

c) (0,5v) Face à mesma tabela indique um endereço virtual que não origine um page fault e o endereço real correspondente.

d) (1v) Considere o algoritmo de substituição de páginas NRU que usa como última escolha uma página com R=1 e M=1. Acrescente à tabela colunas representando o R e o M de forma que a primeira escolha de página para sair recaia na página virtual 3. e) (1v) Explique o funcionamento do R e M. Qual a razão porque em determinada altura podem existir páginas com R=0 ou com R=1 ? E, identicamente, qual a razão porque em determinada altura podem existir páginas com M=0 ou com M=1.

2) Considere o seguinte diagrama:

Bloqueado (Blocked)

Executável (Ready)

Em execução (Running)

a) (0,5v) Suponha que uma máquina tem 2 CPU's. Indique o número de processos que podem estar em cada estado (Se não tiver um número exacto diga "vários").

b) (0,5v) Na mesma máquina, indique quantas threads podem estar em execução ao mesmo tempo. Justifique!

c) (2v) Considere um processo que executa o programa seguinte. Para cada uma das quatro transições indicadas no diagrama, indique uma situação e assinale uma linha do programa, em que essa transição possa ocorrer neste processo. 1. #include 2. main() { 3. int x = 10, count = 0; 4. int try; 5. do { 6. printf("Numero: "); 7. scanf("%d", &try); 8. count++; 9. } while ( try != x ); 10. printf("Conseguiu em %d vezes\n", count); 11. }

Exame de época especial

Sistemas Operativos

Página 2

3) (1,5v) Compare as implementações dos sistemas de ficheiros com FAT e i-nodes, indicando as principais vantagens e desvantagens de cada uma.

4) Considere o seguinte diagrama que representa várias camadas de software de input/output. Utilizador

Device independent software

Device drivers

a) (0,25v) Em que camada situaria a função fprinf().

b) (0,25v) Qual (quais) das camadas situaria dentro do kernel.

c) (1v) Suponha que é executada a instrução fclose(fp) ; que fecha um ficheiro. Acha possível que, na sequência desta operação haja escrita no disco? Justifique.

Exame de época especial

Sistemas Operativos

Página 3

Grupo II 1) Considere o seguinte programa. void p1() { int res = fork(); if ( res == 0 ) { execl("/bin/ls", "/bin/ls", "-la", "/", NULL); printf("SAIR.\n"); exit(0); } wait(); } main() { p1(); p2(); while (1) { pause(); } } a) (0,5v) Explique o funcionamento da função p1(). Em que circunstâncias poderá surgir a mensagem "SAIR." e qual o efeito da função wait()?

b) (0,5v) Faça função p2() que cria um processo filho. Esse processo filho deverá escrever o seu PID e o PID do seu pai e logo depois enviar o sinal SIGUSR2 ao pai.

c) (1,5v) Introduza as alterações necessárias, para que o utilizador passe a ser informado com uma mensagem, quando o programa receber o sinal SIGUSR2.

Exame de época especial

Sistemas Operativos

Página 4

2) Considere o seguinte programa struct sembuf UP = { 0, 1, 0 } ; struct sembuf DOWN = { 0, -1, 0 } ; main() { int n = 10; int m_id = shmget ( 1000, 10*sizeof(int), 0600 | IPC_CREAT); int s_id = semget ( 1000, 1, 0600 | IPC_CREAT); wsm(); } a) (1,5v) Considerando a memória partilhada do programa anterior, faça a função wsm() que escreva no ecrã o valor dos inteiros aí armazenados.

b) (2v) Complete o programa de forma a que depois de executar a função wsm(), escreva o valor de n em todas as posições da memória partilhada. Admitindo que o semáforo do programa é utilizado para fazer exclusão mútua e já foi anteriormente iniciado, utilize-o para garantir que, ao escrever na memória, ninguém está a aceder a essa região crítica em simultâneo com o seu processo. Glossário de chamadas de sistema: int shmget(key_t key, int size, int shmflg); void *shmat(int shmid, const void *shmaddr, int shmflg); int shmctl(int shmid, int cmd, struct shmid_ds *buf); int semget(key_t key, int nsems, int semflg); int semop(int semid, struct sembuf *sops, unsigned nsops); int semctl(int semid, int semnum, int cmd, ...);

Exame de época especial

Sistemas Operativos

Página 5

Grupo III 1) (0,5v) O ficheiro “pessoas.txt” contém uma lista de pessoas, com nome e idade. Escreva um comando que copie a informação das pessoas com 18 anos para o ficheiro "maiores.txt".

2) (0,5v) Indique um comando que usaria para mostrar as permissões do ficheiro "/etc/so.conf"?.

3) Escreva um script que: a) (1v) Dado o valor do seu primeiro argumento, Indique se corresponde ao nome de um ficheiro, de um directório ou se não existe.

b) (2v) Considere o seguinte script #!/bin/bash n=0 for f in *.sh *.c *.h; do echo $f n=$(($n+1)) done echo "Mostradas $n Linhas" Altere o script de forma que indique, no fim, indique apenas o número de ficheiros com permissão de execução, existentes no directório corrente.

Exame de época especial

Sistemas Operativos

Página 6...


Similar Free PDFs