DATE: EXP NO: PAGE NO:
AIM: To write a python program to simulate page replacement algorithms of least
recently used.
PROGRAM:
def lru_page_replacement():
num_frames = int(input("Enter the number of frames: "))
pages = list(map(int, input("Enter the page reference string (separated by spaces):
").split()))
frames = [-1] * num_frames # Initialize frames with -1 (empty)
page_faults = 0
recent_use = {} # Dictionary to track recent use of pages
print("\nPage Reference String:\t", pages)
print("--------------------------------------------------")
print("Page\tFrames\t\tPage Fault")
print("--------------------------------------------------")
for i, page in enumerate(pages):
if page in frames:
recent_use[page] = i # Update recent use
print(f"{page}\t{frames}\t\tNo")
else:
page_faults += 1
if -1 in frames: # If there are empty frames
index = frames.index(-1)
frames[index] = page
recent_use[page] = i
print(f"{page}\t{frames}\t\tYes")
else:
lru_page = min(recent_use, key=recent_use.get) # Find LRU page
index = frames.index(lru_page)
frames[index] = page
del recent_use[lru_page] # Remove LRU page from recent_use
recent_use[page] = i
print(f"{page}\t{frames}\t\tYes")
print("--------------------------------------------------")
print(f"Total Page Faults: {page_faults}")
if __name__ == "__main__":
lru_page_replacement()
OPERATING SYSTEM LABORATORY CSE DEPARTMENT
DATE: EXP NO: PAGE NO:
SAMPLE OUTPUT:
Enter the number of frames: 4
Enter the page reference string (separated by spaces): 1 2 3 4 1 2 5 1 2 3 4 5
Page Reference String: [1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5]
--------------------------------------------------
Page Frames Page Fault
--------------------------------------------------
1 [-1, -1, -1, -1] Yes
2 [1, -1, -1, -1] Yes
3 [1, 2, -1, -1] Yes
4 [1, 2, 3, -1] Yes
1 [1, 2, 3, 4] No
2 [1, 2, 3, 4] No
5 [5, 2, 3, 4] Yes
1 [5, 1, 3, 4] Yes
2 [5, 1, 2, 4] Yes
3 [5, 1, 2, 3] Yes
4 [4, 1, 2, 3] Yes
5 [4, 5, 2, 3] Yes
--------------------------------------------------
Total Page Faults: 10
EXECUTED OUTPUT:
Enter the number of frames: 3
Enter the page reference string (separated by spaces): 4 1 2 1 4 3 2 4 3 1 2 3
Page Reference String: [4, 1, 2, 1, 4, 3, 2, 4, 3, 1, 2, 3]
--------------------------------------------------
Page Frames Page Fault
--------------------------------------------------
4 [-1, -1, -1] Yes
1 [4, -1, -1] Yes
2 [4, 1, -1] Yes
1 [4, 1, 2] No
4 [4, 1, 2] No
3 [3, 1, 2] Yes
2 [3, 1, 2] No
4 [3, 4, 2] Yes
3 [3, 4, 2] No
1 [1, 4, 2] Yes
2 [1, 4, 2] No
OPERATING SYSTEM LABORATORY CSE DEPARTMENT
DATE: EXP NO: PAGE NO:
3 [1, 3, 2] Yes
--------------------------------------------------
Total Page Faults: 8
RESULT:
Hence python program to simulate page replacement algorithm least recently used.
OPERATING SYSTEM LABORATORY CSE DEPARTMENT
DATE: EXP NO: PAGE NO:
AIM: To write a python program to simulate the page replacement algorithm of first in
first out.
PROGRAM:
def fifo_page_replacement(page_references, frame_size):
frames = []
page_faults = 0
frame_pointer = 0
print("Page References:", page_references)
print("Frame Size:", frame_size)
print("-" * 30)
print("Page | Frames | Page Fault")
print("-" * 30)
for page in page_references:
if page not in frames:
page_faults += 1
if len(frames) < frame_size:
frames.append(page)
else:
frames[frame_pointer] = page
frame_pointer = (frame_pointer + 1) % frame_size
frame_status = " ".join(map(str, frames))
print(f"{page:4} | {frame_status:6} | Yes")
else:
frame_status = " ".join(map(str, frames))
print(f"{page:4} | {frame_status:6} | No")
print("-" * 30)
print("Total Page Faults:", page_faults)
return page_faults
page_references_str = input("Enter page reference string (comma-separated): ")
page_references = [int(x) for x in page_references_str.split(",")]
frame_size = int(input("Enter frame size: "))
fifo_page_replacement(page_references, frame_size)
OPERATING SYSTEM LABORATORY CSE DEPARTMENT
DATE: EXP NO: PAGE NO:
SAMPLE OUTPUT:
Enter page reference string (comma-separated): 7,0,1,2,0,3,0,4,2,3,0,3,2
Enter frame size: 3
Page References: [7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2]
Frame Size: 3
------------------------------
Page | Frames | Page Fault
------------------------------
7|7 | Yes
0|70 | Yes
1|701 | Yes
2|201 | Yes
0|201 | No
3|203 | Yes
0|203 | No
4|403 | Yes
2|423 | Yes
3|423 | No
0|023 | Yes
3|023 | No
2|023 | No
------------------------------
Total Page Faults: 9
EXECUTED OUTPUT:
Enter page reference string (comma-separated): 1,2,3,4,1,2,5,1,2,3,4,5
Enter frame size: 4
Page References: [1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5]
Frame Size: 4
------------------------------
Page | Frames | Page Fault
------------------------------
1|1 | Yes
2|12 | Yes
3 | 1 2 3 | Yes
4 | 1 2 3 4| Yes
1 | 1 2 3 4| No
2 | 1 2 3 4| No
5 | 5 2 3 4| Yes
1 | 5 1 3 4| Yes
2 | 5 1 2 4| Yes
OPERATING SYSTEM LABORATORY CSE DEPARTMENT
DATE: EXP NO: PAGE NO:
3 | 5 1 2 3| Yes
4 | 4 1 2 3| Yes
5 | 4 5 2 3| Yes
------------------------------
Total Page Faults: 10
RESULT:
Hence python program to simulate page replacement algorithm of first in first out
executed successfully.
OPERATING SYSTEM LABORATORY CSE DEPARTMENT
DATE: EXP NO: PAGE NO:
AIM: To write a python program to simulate the page replacement algorithm of least
frequently used.
Program:
def lfu_page_replacement(page_references, frame_size):
frames = {}
page_faults = 0
frequency = {}
print("Page References:", page_references)
print("Frame Size:", frame_size)
print("-" * 40)
print("Page | Frames | Page Fault | Frequency")
print("-" * 40)
for page in page_references:
if page not in frames:
page_faults += 1
if len(frames) < frame_size:
frames[page] = 0
frequency[page] = 1
else:
min_freq_page = min(frequency, key=frequency.get)
del frames[min_freq_page]
del frequency[min_freq_page]
frames[page] = 0
frequency[page] = 1
frame_status = " ".join(map(str, frames.keys()))
freq_status = " ".join([f"{k}:{v}" for k,v in frequency.items()])
print(f"{page:4} | {frame_status:10} | Yes | {freq_status:20}")
else:
frequency[page] += 1
frame_status = " ".join(map(str, frames.keys()))
freq_status = " ".join([f"{k}:{v}" for k,v in frequency.items()])
print(f"{page:4} | {frame_status:10} | No | {freq_status:20}")
OPERATING SYSTEM LABORATORY CSE DEPARTMENT
DATE: EXP NO: PAGE NO:
print("-" * 40)
print("Total Page Faults:", page_faults)
return page_faults
page_references_str = input("Enter page reference string (comma-separated): ")
page_references = [int(x) for x in page_references_str.split(",")]
frame_size = int(input("Enter frame size: "))
lfu_page_replacement(page_references, frame_size)
SAMPLE OUTPUT:
Enter page reference string (comma-separated): 4,1,2,1,4,3,2,4,3,1,2,3
Enter frame size: 3
Page References: [4, 1, 2, 1, 4, 3, 2, 4, 3, 1, 2, 3]
Frame Size: 3
----------------------------------------
Page | Frames | Page Fault | Frequency
----------------------------------------
4|4 | Yes | 4:1
1|41 | Yes | 4:1 1:1
2|412 | Yes | 4:1 1:1 2:1
1|412 | No | 4:1 1:2 2:1
4|412 | No | 4:2 1:2 2:1
3|312 | Yes | 3:1 1:2 2:1
2|312 | No | 3:1 1:2 2:2
4|342 | Yes | 3:1 4:1 2:2
3|342 | No | 3:2 4:1 2:2
1|142 | Yes | 1:1 4:1 2:2
2|142 | No | 1:1 4:1 2:3
3|132 | Yes | 1:1 3:1 2:3
----------------------------------------
Total Page Faults: 8
EXECUTED OUTPUT:
Enter page reference string (comma-separated): 1,2,3,4,1,2,5,1,2,3,4,5
Enter frame size: 4
Page References: [1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5]
Frame Size: 4
----------------------------------------
Page | Frames | Page Fault | Frequency
OPERATING SYSTEM LABORATORY CSE DEPARTMENT
DATE: EXP NO: PAGE NO:
----------------------------------------
1|1 | Yes | 1:1
2|12 | Yes | 1:1 2:1
3 | 1 2 3 | Yes | 1:1 2:1 3:1
4 | 1 2 3 4 | Yes | 1:1 2:1 3:1 4:1
1 | 1 2 3 4 | No | 1:2 2:1 3:1 4:1
2 | 1 2 3 4 | No | 1:2 2:2 3:1 4:1
5 | 1 2 5 4 | Yes | 1:2 2:2 5:1 4:1
1 | 1 2 5 4 | No | 1:3 2:2 5:1 4:1
2 | 1 2 5 4 | No | 1:3 2:3 5:1 4:1
3 | 1 2 5 3 | Yes | 1:3 2:3 5:1 3:1
4 | 1 4 5 3 | Yes | 1:3 4:1 5:1 3:1
5 | 5 4 3 1 | Yes | 5:1 4:1 3:1 1:3
----------------------------------------
Total Page Faults: 9
RESULT:
Hence python program to the page replacement algorithm of least frequently used is
executed successfully.
OPERATING SYSTEM LABORATORY CSE DEPARTMENT