-------------------------------------------------------------------------- - Considere a figura que se segue como representativa de parte de um sistema de ficheiros organizado segundo as estruturas de dados utilizadas no Trabalho II (considere inteiros de 4 bytes). #define TYPE_DIR 'D' #define TYPE_FILE 'F' #define TYPE_FREE '-' #define MAX_NAME_LENGHT 20 typedef struct superblock_entry { int check_number; int block_size; int fat_type; int root_block; int free_block; } superblock; typedef struct directory_entry { char type; char name[MAX_NAME_LENGHT]; unsigned char day; unsigned char month; unsigned char year; int size; int first_block; } dir_entry; -------------------------------------------------------------------------- - Questão I: Qual é o número total de blocos do sistema de ficheiros (considere inteiros de 4 bytes): a) 1 + (2^8 * 4 / 256) + 2^8 b) 1 + (2^8 / 256) + 2^8 c) 1 + (8 * 4) + (8 * 256) d) 1 + 8 + (8 * 256) -------------------------------------------------------------------------- - Questão II: Quantos entradas (dir_entry) cabem num bloco de dados (considere inteiros de 4 bytes): a) 8 b) 16 c) 32 d) 4 -------------------------------------------------------------------------- - Questão III: Quantos blocos de dados estão em utilização: a) 255 b) 247 c) 9 d) 8 -------------------------------------------------------------------------- - Questão IV: Considerando que o bloco de dados 6 representa o directório corrente, qual será o resultado da execução do comando `pwd': a) /d/b/a b) /a/b/d c) /d/a/a d) /d/a/b -------------------------------------------------------------------------- - Questão V: Considerando que o bloco de dados 2 representa o directório corrente, qual será o resultado da execução do comando `cat w': a) abcd b) abcdef c) dá um erro do tipo 'cat: o ficheiro não existe'. d) não existem dados suficientes para responder à pergunta. -------------------------------------------------------------------------- - Questão VI: Considerando que o bloco de dados 2 representa o directório corrente, qual será o resultado da execução do comando `cp y a' (assuma que `y' não existe em `a'): a) dá um erro do tipo 'cp: não existe espaço livre no disco'. b) dá um erro do tipo 'cp: o ficheiro de origem não existe'. c) o ficheiro `y' é copiado para o ficheiro `a'. d) o ficheiro `y' é copiado para o directório `a'. -------------------------------------------------------------------------- - Questão VII: Considerando que o bloco de dados 6 representa o directório corrente e que este possui 8 entradas (dir_entry), qual será o resultado da execução do comando `mkdir d' (assuma que `d' não existe no directório corrente): a) dá um erro do tipo 'mkdir: não existe espaço livre no disco'. b) é criada uma nova dir_entry no bloco de dados 6 e o novo directório `d' fica no bloco de dados 9. c) é criada uma nova dir_entry no bloco de dados 9 e o novo directório `d' fica no bloco de dados 10. d) não existem dados suficientes para responder à pergunta. -------------------------------------------------------------------------- - Questão VIII: Considerando que '/d' é o directório corrente, quantos blocos de dados serão libertados pela execução do comando `rm a': a) 0 b) 1 c) 11 d) não existem dados suficientes para responder à pergunta. -------------------------------------------------------------------------- - Questão IX: Considerando que '/d' é o directório corrente, quantos novos blocos de dados poderão ser ocupados pela execução do comando `mv a b': a) 0 no mínimo e 1 no máximo. b) 0 no mínimo e 0 no máximo. c) 1 no mínimo e 1 no máximo. d) não existem dados suficientes para responder à pergunta. -------------------------------------------------------------------------- - Questão X: Considere o procedimento get_hierarchical_level() que calcula o nível hierárquico de um dado directório na estrutura de directórios do sistema de gestão de ficheiros desenvolvido no Trabalho II. int get_hierarchical_level(int dblock) { int level = 0; while (dblock != sb->root_block) { dir = (dir_entry *) BLOCK(dblock); // código em falta level++; } return level; } O nível hierárquico de um directório diz respeito ao número de directórios pai que existem no seu caminho absoluto. Por exemplo, o directório ``/dir/subdir'' é de nível 2, o directório ``/dir'' é de nível 1, e o directório raiz (``/'') é de nível 0. O procedimento recebe como argumento o número do primeiro data block (first_block) relativo ao directório pretendido e retorna o valor correspondente ao seu nível hierárquico. O código em falta no procedimento pode ser implementado pela sequência de instruções: a) dblock = dir[1].first_block; b) dblock = dir[dir[0].size].first_block; c) dblock = fat[dir[0].first_block]; d) dblock = fat[dir[1].first_block]; -------------------------------------------------------------------------- // questões sobre: sockets, problemas clássicos de IPC, sistemas de ficheiros, gerência de memória, escalonamento de processos -------------------------------------------------------------------------- - Questão XI: Assuma a seguinte ordem de chegada de processos no sistema: (números mais baixos de prioridade indicam alta prioridade) # Tempo de chegada Tempo de execução Prioridade P0 0.0 1 4 P1 0.2 0.5 1 P2 1.0 2 2 P3 1.5 1 3 A seguinte afirmação é verdadeira: a) o algoritmo round-robin com quantum de tempo igual a 1 tem um tempo médio de espera maior do que o algoritmo SJF (Shortest Job First) b) o algoritmo round-robin com quantum de tempo igual a 1 executa estes processos em menos tempo do que o algoritmo SJF (Shortest Job First) c) o algoritmo que utiliza prioridades vai escalonar os jobs na seguinte ordem: P1, P2, P3 e P0 d) o algoritmo que utiliza prioridades vai escalonar os jobs na seguinte ordem: P0, P3, P2 e P1 -------------------------------------------------------------------------- - Questão XII: Considere um sistema de ficheiros. Qual das seguintes afirmações é mais adequada: a) quanto menor o tamanho de um bloco do sistema de ficheiros maior é o "overhead" de entrada e saída b) quanto maior o tamanho de um bloco do sistema de ficheiros maior é o "overhead" de entrada e saída c) quanto maior o tamanho de um bloco do sistema de ficheiros melhor é a taxa de utilização do espaço em disco d) quanto menor o tamanho de um bloco do sistema de ficheiros pior é a taxa de utilização do espaço em disco -------------------------------------------------------------------------- - Questão XIII: Um computador utiliza endereços virtuais de 32 bits e páginas de tamanho 4KBytes. O programa e os dados cabem na página de endereço mais baixo. A pilha cabe na página de endereço mais alto. Quantos bits são necessários para endereçar toda a tabela de páginas para este programa? a) 20 bits b) 12 bits c) 32 bits d) 4 bits -------------------------------------------------------------------------- - Questão XIV: Um computador tem 4 molduras em memória. O tempo de primeiro acesso, tempo do último acesso e os bits R e M para cada página são mostrados na tabela abaixo: Página 1º acesso último acesso R M 0 126 280 1 0 1 230 265 0 1 2 140 270 0 0 3 110 285 1 1 Quail página será substituída pelos algoritmos NRU, FIFO, LRU e segunda tentativa, respectivamente? a) 2, 3, 1, 2 b) 1, 3, 1, 2 c) 2, 3, 1, 1 d) 2, 3, 2, 1 -------------------------------------------------------------------------- - Questão XV: O que é o tempo de resposta (response time) de um processo? a) tempo para obter a primeira resposta b) tempo para obter todas as respostas c) tempo de execução de um processo que executa em "batch" d) tempo de execução de um processo que é interativo -------------------------------------------------------------------------- - Questão XVI: Considere um sistema de memória. Qual das seguintes afirmações é mais adequada: a) fragmentação externa ocorre em sistemas que utilizam partições de tamanho variável b) fragmentação interna ocorre em sistemas que utilizam partições de tamanho variável c) fragmentação interna ocorre quando as partições são de tamanho muito grande (e.g., maior do que 32 KBytes) d) fragmentação externa ocorre quando as partições são de tamanho muito grande (e.g., maior do que 32 KBytes) -------------------------------------------------------------------------- - Questão XVII: Em Unix, um socket do tipo "datagram": a) estabelece uma ligação não fiável b) estabelece uma ligação com uma porta específica c) estabelece uma ligação do tipo correio d) estabelece uma conexão entre cliente e servidor -------------------------------------------------------------------------- - Questão XVIII: Considere um sistema de gestão de memória virtual com paginação de um nível. O tamanho das páginas é de 1024 bytes, a memória física máxima é de 2 megabytes e o tamanho máximo do espaço de endereçamento é de 16 megabytes. Considere agora o trecho de tabela de páginas de um processo, mostrado abaixo. página moldura 0 4 1 8 2 16 3 17 4 9 ... ... A que endereço físico corresponde o endereço virtual 1524 e a que endereço virtual corresponde o endereço físico 10020? a) 8692, 4900 b) 1524, 10020 c) 8692, 10020 d) 1524, 4900 -------------------------------------------------------------------------- - Questão XIX: Para que o acesso às páginas de um processo se torne mais eficiente, o ideal é que a tabela de páginas possa estar toda em memória principal. Quando a tabela de páginas é muito grande para ser totalmente carregada em memória há algumas formas de organização da memória que permitem um maior ganho em desempenho. Este ganho pode ser alcançado: a) utilizando múltiplos níveis de tabelas de páginas b) utilizando múltiplos níveis de indireção c) utilizando segmentação d) mantendo parte da tabela de página em memória, parte no disco -------------------------------------------------------------------------- - Questão XX: Considere a seguinte implementação do problema dos leitores e escritores: semaforo mutex=1; leitor() { semaforo bd=1; while (true) { int num_leitores=0; down(&mutex); num_leitores++; escritor() { if (num_leitores==1) down(&bd); while (true) { up(&mutex); produz_dado() le_dado(); down(&bd); down(&mutex); escreve_dado_bd() num_leitores--; up(&bd); if (num_leitores==0) up(&bd); } up(&mutex); } processa_dado_lido(); } } Esta implementação dá prioridade: a) aos leitores b) aos escritores c) igual aos leitores e escritores d) a muitos escritores