2025-03-06 21:50:29 +02:00
|
|
|
#ifndef PROCESS_HEADER
|
|
|
|
#define PROCESS_HEADER
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
struct PageTableEntry {
|
|
|
|
size_t p:1;
|
|
|
|
size_t r:1;
|
|
|
|
size_t m:1;
|
|
|
|
size_t ppn;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct Process {
|
|
|
|
struct Process *prev;
|
|
|
|
struct Process *next;
|
|
|
|
size_t id;
|
|
|
|
size_t pages_accessed;
|
|
|
|
size_t max_accesses;
|
|
|
|
size_t total_pages_owned;
|
|
|
|
struct PageTableEntry *pt;
|
2025-03-07 22:52:43 +02:00
|
|
|
size_t *ws;
|
|
|
|
size_t ws_size;
|
2025-03-06 21:50:29 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
struct Process *Process(size_t proc_id,
|
|
|
|
size_t max_accesses,
|
2025-03-07 22:52:43 +02:00
|
|
|
size_t total_pages_owned,
|
|
|
|
size_t ws_size);
|
2025-03-06 21:50:29 +02:00
|
|
|
|
2025-03-18 19:10:38 +02:00
|
|
|
void PROCESS_destroy(struct Process *p);
|
|
|
|
|
2025-03-06 21:50:29 +02:00
|
|
|
size_t PROCESS_run_for(struct Process *p, size_t time_bits);
|
2025-03-07 22:52:43 +02:00
|
|
|
void PROCESS_change_working_set(struct Process *p);
|
2025-03-06 21:50:29 +02:00
|
|
|
|
|
|
|
#endif
|