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.

Mapa genérico

As principais operações em um mapa são:

Esta biblioteca será utilizada em vários outros projetos, portanto capriche na sua implementação!

Requisitos

Os arquivos necessários a este projeto estão em tad-vazio.tgz:

Os seguintes requisitos devem ser atendidos:

O processo de correção substitui os arquivos do projeto pelas versões originais, com exceção da implementação do aluno em 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