#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SEGMENTS 5 #define MEMORY_SIZE 1024 // Total size of physical memory typedef struct { int base; int limit; } Segment; Segment segment_table[MAX_SEGMENTS]; int memory[MEMORY_SIZE]; int main() { // Initialize segments (base and limit for each segment) segment_table[0] = (Segment){.base = 0, .limit = 100}; segment_table[1] = (Segment){.base = 100, .limit = 200}; segment_table[2] = (Segment){.base = 300, .limit = 150}; segment_table[3] = (Segment){.base = 450, .limit = 250}; segment_table[4] = (Segment){.base = 700, .limit = 150}; // Display segment table printf("Segment Table:\n"); for (int i = 0; i < MAX_SEGMENTS; i++) { printf("Segment %d: Base = %d, Limit = %d\n", i, segment_table[i].base, segment_table[i].limit); } // Accessing memory int segment_number, offset; printf("Enter segment number to access (0-%d): ", MAX_SEGMENTS - 1); scanf("%d", &segment_number); printf("Enter offset within segment: "); scanf("%d", &offset); if (segment_number < 0 || segment_number >= MAX_SEGMENTS || offset < 0 || offset >= segment_table[segment_number].limit) { printf("Invalid segment number or offset!\n"); } else { int physical_address = segment_table[segment_number].base + offset; printf("Segment number %d with offset %d maps to physical address %d\n", segment_number, offset, physical_address); } return 0; }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter