sistemas operativos

Propaganda
UNIVERSIDADE DA BEIRA INTERIOR
Departamento de Informática
SISTEMAS OPERATIVOS
Frequência I, 11 de Abril de 2008, 14Horas
Escala 0:20 Sem Consulta
Duração: 1h30m
Grupo A: História, Estrutura e Arquitectura dum Sistema Operativo (SO) (8 valores)
1) Discute o termo “Interpretador de Comandos” no contexto de sistemas operativos e dê exemplos.
(2-Valor)
2) Qual é a diferença entre multi-programação e multi-processamento?
(1-Valor)
3) Qual o papel das interrupções num sistema operativo moderno?
(2-Valores)
4) No modelo de computação de Von-Neumann qualquer operação de Input/Output envolve a
movimentação de dados entre, o CPU, memoria RAM e o diapositivo de I/O. Numa arquitectura de 32
bits a movimentação de dados pode ser feita apenas em blocos de 32 bits usando buses de 32 bits.
Qual o mecanismo que permite então operações de I/O eficazes e rápidos ?
(1-Valor)
5) Quais das instruções seguintes deverão ser privilegiadas?
(2 -Valores)
Nota: Na sua folha de teste basta a respectiva alínea e a resposta Sim ou Não
Instrução:
i
ii
iii
iv
v
vi
Privilegiada
(sim/não)
Modificar entradas na tabela dos
diapositivos
Modificar o relógio
Limpar memória
Desligar interrupções
Aceder um diapositivo de I/O
Mudar para Modo Monitor/Kernel
Grupo B: Programas, Processos e Escalonamento (8 valores)
6) Mostre as transições e desenhe o diagrama de 7(sete) estados dum processo - este é uma simples
extensão ao modelo de 5 estados apresentados nas aulas. Neste modelo existem mais dois estados,
para indicar processos que já não se encontram em memória RAM – estão em memoria
secundária/temporária (disco) e podem ser bloqueados ou desbloqueados. Justifique as transições de
e para estes dois novos estados.
(2-Valores)
7) A eficácia do CPU (E) é definida como o valor do CPU gasto em computações úteis dividido pelo
tempo total gasto pelo CPU. Mediações dum sistema computacional mostram que o processo médio
executa durante um tempo T antes de ser bloqueado com uma operação de I/O. O tempo duma
comutação de contexto é S (que é tempo efectivamente perdido e inútil). Para escalonamento do
tipo Round Robin com time quantum Q diga o valor de E quando :
(A)
(B)
(C)
(D)
(E)
Q=Infinito
Q=Quase Zero
Q=S
Q>T
S<Q<T
E=S/(T+S),
E=T/(T+S) ou
E=Q/(Q+T) ?.
E=0,
E=0,5
ou
E=1 ?
E=0,
E=0,5
ou
E=1 ?
E=S/(T+S),
E=T/(T+S) ou
E=Q/(Q+T) ?
dê uma formula para E (Justifique.)
(3-Valores)
Departamento de Informática, UBI. Frequência I 2008
1/2
8) Qual é o output do seguinte programa? (Deverá mostrar o funcionamento do programa como
fluxograma como foi feito nas aulas teóricas)
(2-Valores)
int main()
{
int pid, x = 3;
pid = fork();
if (0 == pid)
{
fork();
pid = fork();
x--;
if (0 == pid) x--;
} else
x++;
printf(“x=%d\n”,x);
}
9) O programa seguinte utilize as estruturas e funções definidos nas aulas práticas e imprime o string
completo “olá mundo” duas vezes para o ficheiro ! Explique porquê
#include <soio.h>
main() {
SOFILE*f=sofopen(“res.txt”,”c”);
sofputc(‘o’,f); sofput(‘l’,f); sofputc(‘a’,f);sofputc(‘ ‘);
fork();
sofputc...os caracteres “mundo\n”...
sofclose(f);
}
(1 Valor)
Grupo C: Exercício Prático (4 valores)
10) Considere o caso dum diapositivo de I/O que está a funcionar com erro. É necessário escrever uma
função que dado o nome dum ficheiro copie o ficheiro do disco (a funcionar bem) para este diapositivo.
Protótipo: int safeCopy ( char *src, char *destino)
Exemplo Utilização: safeCopy( “passwd.txt”, “/mnt/badtape/passwd-backup.txt”)
Deverá utilizar I/O de baixo-nível. A cópia deverá ser efectuada lendo/escrevendo blocos de 124 bytes.
No entanto cuidado ! O diapositivo do destino tem um problema, a seguir cada operação de escrita a
cabeça de leitura/escrita avança sempre 1000 bytes para frente !
Dicas: As funções open(), creat(), read(), write() e lseek()
Não é necessário especificar as bibliotecas padrão (#include <stdio.h> etc.) no seu programa.
Testes de Sistemas Operativos .
Normas, Bibliotecas de linguagem C e a Biblioteca Pthreads
Leitura e Escritura de Baixo Nivel
int open(char *filename, int access); Opens a file.
int creat(const char *filename, int perms); Creates a file
Access: example : O_RDONLY Permission: examples : S_IRUSR , S_IWUSR etc
int read (int handle, void *buf, unsigned len); read attempts to read len bytes from the file associated with handle
into the buffer pointed to by buf. On success, read returns the number of bytes placed in the buffer.
int write (int handle, void *buf, unsigned len); write writes a buffer of data to the file or device named by the
given handle. write returns the number of bytes written.
lseek(int fildes, off_t offset, int whence); repositions the offset of the file descriptor fildes to the argument offset
according to the directive whence. ..SEEK_SET, the offset is set to offset bytes. SEEK_CUR, the offset is set to its
current location plus offset bytes. SEEK_END, the offset is set to the size of the file plus offset bytes.
Departamento de Informática, UBI. Frequência I 2008
2/2
Download