Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* placement round */
- for(i=0; i< numPageFrames; i++) {
- /* if we've reached a page not in memory, use that index */
- if(pageTable[i].valid == 0) {
- pageTable[i].vmPage = pageNumber;
- pageTable[i].valid = 1;
- pageTable[i].referenced = 0;
- pageTable[i].modified = 0;
- return (0);
- }
- }
- /* Replacement Loop, because placement failed */
- loopStart = clockHand;
- do {
- /* if current spot is not referenced, replace it */
- if(pageTable[clockHand].referenced == 0) {
- // freeFrame(logicalAddress); <-----------------DO WE EVER NEED TO FREEFRAME() ??
- pageTable[clockHand].vmPage = pageNumber;
- pageTable[clockHand].valid = 1;
- pageTable[clockHand].referenced = 0;
- clockHand++; /* increment clock pointer for next time */
- if(pageTable[clockHand].modified == 1) {
- pageTable[clockHand].modified = 0;
- return (2);
- } else return (1);
- } else { /* if spot has already been referenced, set it to unreferenced and move on */
- pageTable[clockHand].referenced = 0;
- }
- /* if we failed for this index, increment clockHand, if over threshold, reset to 0 */
- clockHand++;
- if(clockHand >= numPageFrames) clockHand = 0;
- } while(clockHand != loopStart);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement