Mapa genérico
Este projeto faz parte do PPOS v2.
O núcleo do SO gerencia diversos objetos para os programas do usuário, como arquivos aberto, threads, semáforos, etc. O programa acessa esses objetos através identificadores únicos (Unique IDentifiers - UIDs), geralmente números inteiros positivos, gerados pelo núcleo quando o objeto é criado.
Este projeto visa construir uma pequena biblioteca em C com operações básicas para gerenciar mapas de objetos, que associam ponteiros de objetos a UIDs inteiros. O mapa a ser implementado é genérico, ou seja, é um mapa de ponteiros void * para inteiros, onde cada elemento é um ponteiro para um dado cujo tipo não é conhecido pela biblioteca. O mapa não armazena os dados, mas somente os ponteiros para eles.
Um mapa de tamanho SIZE registra cada objeto sob um identificador único (UID), que varia entre 0 e SIZE-1 de forma crescente (0, 1, 2, …). Ao registrar um novo objeto deve ser usado o próximo UID livre, com comportamento circular caso não existam mais UIDs livres no final do mapa.
As principais operações em um mapa são:
map_create: cria um novo mapa (vazio)map_destroy: destrói um mapa (mas não destrói os objetos em si; o responsável por destruí-los é quem os criou)map_put: adiciona um objeto ao mapa e retorna um UIDmap_get: informa o objeto associado a um UIDmap_del: retira o objeto do mapa e libera o seu UID
Requisitos
Os arquivos necessários a este projeto estão em tad-vazio.tgz:
map.h: interface da bibliotecamap.c: implementação da biblioteca (a implementar)testa-map.c: programa de testetesta-map.txt: saída esperada do programa de testemakefile: para a compilação
Os seguintes requisitos devem ser atendidos:
- A implementação deve ser feita em C no padrão C99 no arquivo
map.c. - Com exceção de
map.c, os arquivos fornecidos não devem ser alterados. - O código deve funcionar corretamente com o programa de teste.
- A saída do programa de teste deve ser igual à saída esperada (veja
make test).
map.c. Assim, alterações feitas nos demais arquivos serão destruídas.
A entregar
Envie somente o arquivo map.c através do Moodle.
Outras informações
- Dependências:
- Conhecimento da linguagem C.
