/* AC 17/18 * TPC5 Ex1 */ //#define PAGESIZE (4*1024) // 4KBytes unsigned int translateOneAddr(unsigned int addr, char rw) { /* converte endereco virtual para endereco real (fisico) */ int page; int frame; int realAddress; page = addr/PAGESIZE; // ou addr>>12 frame = page2frame(page); realAddress = (frame*PAGESIZE)+(addr%PAGESIZE); // ou (frame<<12) | (addr&0x0fff); return realAddress; } /*********************************************************/ /* AC 17/18 * TPC5 Ex2 */ static int findVictim() { /* escolher entrada a ser removida para dar a uma nova pagina */ // Selecionar a entrada da TBL que está à mais tempo sem ser utilizada (LRU) // assume-se que todas estão em uso (valid==1) int victim=0; for ( int i=1; i