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 UIDOs 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çãoOs seguintes requisitos devem ser atendidos:
map.c.map.c, os arquivos fornecidos não devem ser alterados.make test).map.c. Assim, alterações feitas nos demais arquivos serão destruídas.
Envie somente o arquivo map.c através do Moodle.