fork download
  1.  
  2. def pageFaults(incomingStream, n, frames):
  3. print("Incoming \t pages")
  4. s = set()
  5. queue = Queue()
  6. page_faults = 0
  7. for i in range(n):
  8. if len(s) < frames:
  9. if incomingStream[i] not in s:
  10. s.add(incomingStream[i])
  11. page_faults += 1
  12. queue.put(incomingStream)
  13. else:
  14. if incomingStream[i] not in s:
  15. val = queue.queue[0]
  16. queue.get()
  17. s.remove(val)
  18. s.add(incomingStream[i])
  19. queue.put(incomingStream[i])
  20. page_faults += 1
  21. print(incomingStream[i], end="\t\t")
  22. for q_item in queue.queue:
  23. print(q_item, end="\t")
  24. print()
  25. return page_faults
  26. incomingStream = [7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1]
  27. n = len(incomingStream)
  28. frames = 3
  29. page_faults = pageFaults(incomingStream, n, frames)
  30. hits = n - page_faults
  31. print("\nPage Faults: " + str(page_faults))
  32. print("Hit: " + str(hits))
  33.  
Success #stdin #stdout 0.04s 25104KB
stdin
Standard input is empty
stdout
def pageFaults(incomingStream, n, frames):
 print("Incoming \t pages")
 s = set()
 queue = Queue()
 page_faults = 0
 for i in range(n):
 if len(s) < frames:
 if incomingStream[i] not in s:
 s.add(incomingStream[i])
 page_faults += 1
 queue.put(incomingStream)
 else:
 if incomingStream[i] not in s:
 val = queue.queue[0]
 queue.get()
 s.remove(val)
 s.add(incomingStream[i])
 queue.put(incomingStream[i])
 page_faults += 1
 print(incomingStream[i], end="\t\t")
 for q_item in queue.queue:
 print(q_item, end="\t")
 print()
 return page_faults
incomingStream = [7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1]
n = len(incomingStream)
frames = 3
page_faults = pageFaults(incomingStream, n, frames)
hits = n - page_faults
print("\nPage Faults: " + str(page_faults))
print("Hit: " + str(hits))