Paging
Thu Jun 06 2024 01:04:13 GMT+0000 (Coordinated Universal Time)
Saved by
@login
#include <stdio.h>
#include <stdlib.h>
#define PAGE_SIZE 256 // Size of a page
#define FRAME_SIZE 256 // Size of a frame
#define NUM_PAGES 16 // Number of pages
#define NUM_FRAMES 8 // Number of frames
int main() {
int page_table[NUM_PAGES];
int memory[NUM_FRAMES * FRAME_SIZE];
// Initialize page table with invalid frame number (-1)
for (int i = 0; i < NUM_PAGES; i++) {
page_table[i] = -1;
}
// Load pages into frames
for (int i = 0; i < NUM_PAGES; i++) {
page_table[i] = i % NUM_FRAMES; // Simple mapping for demonstration
printf("Page %d is loaded into Frame %d\n", i, page_table[i]);
}
// Accessing memory
int logical_address;
printf("Enter logical address to access (0-%d): ", NUM_PAGES * PAGE_SIZE - 1);
scanf("%d", &logical_address);
int page_number = logical_address / PAGE_SIZE;
int offset = logical_address % PAGE_SIZE;
int frame_number = page_table[page_number];
if (frame_number == -1) {
printf("Page fault!\n");
} else {
int physical_address = frame_number * FRAME_SIZE + offset;
printf("Logical address %d maps to physical address %d\n", logical_address, physical_address);
}
return 0;
}
content_copyCOPY
Comments