0% found this document useful (0 votes)
22 views9 pages

Os Page Replace

The document outlines Python programs to simulate three page replacement algorithms: Least Recently Used (LRU), First In First Out (FIFO), and Least Frequently Used (LFU). Each program includes sample outputs demonstrating how page faults are calculated based on user-defined page reference strings and frame sizes. The results indicate the total number of page faults for each algorithm after execution.

Uploaded by

Praveena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views9 pages

Os Page Replace

The document outlines Python programs to simulate three page replacement algorithms: Least Recently Used (LRU), First In First Out (FIFO), and Least Frequently Used (LFU). Each program includes sample outputs demonstrating how page faults are calculated based on user-defined page reference strings and frame sizes. The results indicate the total number of page faults for each algorithm after execution.

Uploaded by

Praveena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

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

You might also like