Example #1
0
signed int getValue(unsigned int x){
  
	unsigned int pageNum = getPageNum(x) + 1;
	unsigned int offset = getPageOff(x);

 	//cout << pageNum;
	if(working_tlb.check(pageNum)){
		//need more things here, like returning the actual physical address
		return (ptable.getValue(working_tlb.getFrameNumber(pageNum), offset));
	}
	else if(ptable.checkPageTable(pageNum)){
		//if in the page table, return the physical address
		working_tlb.addEntry(pageNum, ptable.getFrameNumber(pageNum));
		return (ptable.getValue(ptable.getFrameNumber(pageNum), offset));
	}
	else if((!(ptable.checkPageTable(pageNum)) && !(working_tlb.check(pageNum)))){
		//up the page fault counter
		Frame f;
		f.setVal(getFrameDat(pageNum));
		f.setPageNumber(pageNum);
		ptable.addEntry(f);
		ptable.incCounter();
		working_tlb.addEntry(pageNum, ptable.getFrameNumber(pageNum));
		return (ptable.getValue(ptable.getFrameNumber(pageNum), offset));
	}
}
Example #2
0
int getPhysicalAddr(unsigned int x){

	unsigned int pageNum = getPageNum(x) + 1;
	unsigned int offset = getPageOff(x);

	return ((ptable.getFrameNumber(pageNum)-1) * 256) + offset;
}