9. Evaluate the impact of caching and paging strategies on system performance.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ARRAY_SIZE 1000000 // Size of the array (large to stress paging)
#define CACHE_SIZE 1024 // Simulate a small cache size (to affect cache performance)
// Function to measure the time for sequential access (cache-friendly)
void measure_cache_performance() {
int *array = (int*)malloc(ARRAY_SIZE * sizeof(int));
for (int i = 0; i < ARRAY_SIZE; i++) {
array[i] = i; }
clock_t start_time = clock();
int sum = 0;
for (int i = 0; i < ARRAY_SIZE; i++) {
sum += array[i]; }
clock_t end_time = clock();
double time_spent = (double)(end_time - start_time) / CLOCKS_PER_SEC;
printf("Cache-friendly access time: %.6f seconds\n", time_spent);
free(array);
// Function to measure the time for random access (paging-friendly)
void measure_paging_performance() {
int *array = (int*)malloc(ARRAY_SIZE * sizeof(int));
for (int i = 0; i < ARRAY_SIZE; i++) {
array[i] = i; }
clock_t start_time = clock();
int sum = 0;
for (int i = 0; i < ARRAY_SIZE; i++) {
int index = rand() % ARRAY_SIZE; // Random index, simulating random access
sum += array[index]; }
clock_t end_time = clock();
double time_spent = (double)(end_time - start_time) / CLOCKS_PER_SEC;
printf("Random access time (paging impact): %.6f seconds\n", time_spent);
free(array);
int main() {
printf("Measuring Cache Performance...\n");
measure_cache_performance();
// Measure paging performance (random access)
printf("Measuring Paging Performance...\n");
measure_paging_performance();
return 0;
Output:-
Measuring Cache Performance...
Cache-friendly access time: 0.002642 seconds
Measuring Paging Performance...
Random access time (paging impact): 0.027480 seconds