0% found this document useful (0 votes)
43 views2 pages

Linux Page Replacement Algorithms

Uploaded by

apnakitaab
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)
43 views2 pages

Linux Page Replacement Algorithms

Uploaded by

apnakitaab
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

Implement page replacement algorithms a) FIFO b) LRU

a) FIFO
#!/bin/bash
# FIFO Page Replacement Algorithm in Shell Script
pages=(7 0 1 2 0 3 0 4 2 3 0 3 2)
frames=3
frame_queue=()
page_faults=0
for page in "${pages[@]}"; do
# Check if page is already in frames
if [[ ! " ${frame_queue[@]} " =~ " ${page} " ]]; then
((page_faults++))
if [[ ${#frame_queue[@]} -eq $frames ]]; then
frame_queue=("${frame_queue[@]:1}") # Remove the first page (FIFO)
fi
frame_queue+=("$page")
fi
echo "Frames: ${frame_queue[*]}"
done
echo "Total Page Faults (FIFO): $page_faults"

b) LRU

#!/bin/bash
# LRU Page Replacement Algorithm in Shell Script
pages=(7 0 1 2 0 3 0 4 2 3 0 3 2)
frames=3
frame_queue=()
page_faults=0
for page in "${pages[@]}"; do
# Check if page is already in frames
if [[ ! " ${frame_queue[@]} " =~ " ${page} " ]]; then
((page_faults++))
if [[ ${#frame_queue[@]} -eq $frames ]]; then
frame_queue=("${frame_queue[@]:1}") # Remove the least recently used
fi
else
# Remove page and re-add to simulate recent use
frame_queue=("${frame_queue[@]/$page}")
fi
frame_queue+=("$page")
echo "Frames: ${frame_queue[*]}"
done
echo "Total Page Faults (LRU): $page_faults"
Implement Disk scheduling algorithms (a) Scan (b) C-Scan

a) Scan
#!/bin/bash
requests=(98 183 37 122 14 124 65 67)
head=53
direction="up"
# Sort the requests
sorted_requests=($(for r in "${requests[@]}"; do echo "$r"; done | sort -n))
# Find the position of the head in the sorted list
index=0
for i in "${!sorted_requests[@]}"; do
if [[ ${sorted_requests[i]} -ge $head ]]; then
index=$i
break
fi
done
echo "Head Movement (SCAN):"
if [[ $direction == "up" ]]; then
for ((i=index; i<${#sorted_requests[@]}; i++)); do
echo "${sorted_requests[i]}"
done
for ((i=0; i<index; i++)); do
echo "${sorted_requests[i]}"
done
else
for ((i=index-1; i>=0; i--)); do
echo "${sorted_requests[i]}"
done
for ((i=index; i<${#sorted_requests[@]}; i++)); do
echo "${sorted_requests[i]}"
done
fi

b) C-Scan

#!/bin/bash
requests=(98 183 37 122 14 124 65 67)
head=53

# Sort the requests


sorted_requests=($(for r in "${requests[@]}"; do echo "$r"; done | sort -n))

echo "Head Movement (C-SCAN):"


for ((i=index; i<${#sorted_requests[@]}; i++)); do
echo "${sorted_requests[i]}"
done
echo "0" # Jump to the start
for ((i=0; i<index; i++)); do
echo "${sorted_requests[i]}"
done

You might also like