Sistemas Operativos - 2007/2008

2º Ano, 1º Semestre

LEIC - Campus Alameda
LEIC - Campus Tagus Park
LERC - Campus Tagus Park

Projecto - Adenda

  1. Implementação do projecto em arquitecturas de 64 bits

    A distribuição inicial do projecto foi concebida para ser implementada e testada em Linux arquitecturas i386 de 32 bits. Para que seja suportada em arquitecturas de 64 bits basta:

    • Adicionar a flag -m32 nas macro CFLAGS e CCASFLAGS das Makefile dos directórios sthread_lib e test-sthreads.
    • Certificar-se que existem as bibliotecas de 32 bits instaladas na máquina.

    Estas alterações permitem, por exemplo, compilar e executar o projecto no Sigma. Mais se informa que o pacote sthreads+snfs-chk1-skel.tgz foi actualizado com estas alterações.

    Chama-se a atenção que os projectos serão avaliados em arquitecturas de 32 bits, pelo que os alunos devem certificar-se que os projectos funcionam nas máquinas dos laboratórios.

  2. Parte III - Servidor Multi-Tarefa

    Como juntar o código da Parte I com a Parte II:

    Copiar os directórios de ambas as partes para a raiz do projecto (directório sthreads+snfs). Substituir a Makefile deste directório por esta.

    Colocar os ficheiros do directório include de ambos as partes no mesmo directório include.

    Actualizar o servidor:

    1. Copiar módulo io_delay.c para directório snfs_server. Contém funções que são chamadas pelas funções block_read e block_write do módulo blocks.c e que permite simular atrasos na leitura/escrita de blocos (ver ficheiro blocks.c e io_delay.c)
    2. Substituir a Makefile do directório snfs_server por esta. Permite: 1) utilizar as funções da biblioteca sthreads, 2) activar a simulação dos tempos de atraso no acesso aos blocos (macros SIMULATE_IO_DELAY). 
    3. Corrigir o bug encontrado no servidor substituindo o ficheiro fs.c por este (alterações efectuadas).
    4. Garantir que os testes sthreads+snfs-test-parte-2.2.tgz continuam a funcionar (agora com os atrasos induzidos pela simulação). Inclui ficheiro test-mylistdir.c corrigido com as seguintes alterações.

    Sugestões para implementação da Parte III:

    • Ler a secção do enunciado que especifica a Parte III.
    • Compreender o funcionamento do módulo server.c.
    • Estruturar o módulo server.c em várias tarefas de acordo com o especificado.
    • Sincronizar as tarefas (ver FAQ).

  3. Parte IV - Funcionalidades do Sistema de Ficheiros

    De modo a facilitar a utilização do sistema de ficheiros com sub-directórios, os alunos podem usar a função find_path. Esta função deverá ser incluída no ficheiro myfs.c.

  4. Sugestões para implementação da Parte IV: