/** * Frees up main memory occupied by the task. Then unreserves the freed pages, if * necessary. @OSPProject Memory */ public void do_deallocateMemory() { int s = MMU.getFrameTableSize(); for (int i = 0; i < s; i++) { FrameTableEntry frame = MMU.getFrame(i); PageTableEntry page = frame.getPage(); if (page != null && getTask() == page.getTask()) { frame.setPage(null); frame.setDirty(false); frame.setReferenced(false); if (frame.getReserved() == getTask()) { frame.setUnreserved(getTask()); } } } }