aboutsummaryrefslogtreecommitdiff
path: root/pa7_lru/simulator.h
diff options
context:
space:
mode:
Diffstat (limited to 'pa7_lru/simulator.h')
-rw-r--r--pa7_lru/simulator.h111
1 files changed, 0 insertions, 111 deletions
diff --git a/pa7_lru/simulator.h b/pa7_lru/simulator.h
deleted file mode 100644
index dccb4c2..0000000
--- a/pa7_lru/simulator.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * File: simulator.h
- *
- * Original Author: Dr. Alva Couch
- * http://www.cs.tufts.edu/~couch/
- */
-
-#define TRUE 1
-#define FALSE 0
-
-#define MAXPROCPAGES 20 /* max pages per individual process */
-#define MAXPROCESSES 20 /* max number of processes in runqueue */
-#define PAGESIZE 128 /* size of an individual page */
-#define PAGEWAIT 100 /* wait for paging in */
-#define PHYSICALPAGES 100 /* number of available physical pages */
-#define QUEUESIZE 40 /* total number of processes to run */
-#define PROGRAMS 5 /* total number of program types */
-
-#define MAXBRANCHES 40 /* number of branches in a program */
-#define MAXEXITS 10 /* number of maximum exits per program */
-#define MAXBRINGS 100 /* must be EVEN! data points in branch table */
-#define MAXPC (MAXPROCPAGES * PAGESIZE) /* largest PC value */
-
-struct pentry {
- long active;
- long pc;
- long npages;
- long pages[MAXPROCPAGES]; /* 0 if not allocated, 1 if allocated */
-};
-
-typedef struct pentry Pentry;
-
-/* int pagein (int process, int page)
- * This pages in the requested page
- * Arguments:
- * proc: process to work upon (0-19)
- * page: page to put in (0-19)
- * Returns:
- * 1 if pagein started, already running, or paged in
- * 0 if it can't start (e.g., swapping out)
- */
-extern int pagein(int process, int page);
-
-/* int pageout(int process, int page)
- * This pages out the requested page.
- * Arguments:
- * proc: process to work upon (0-19)
- * page: page to swap out.
- * Returns:
- * 1 if pageout started, already running, or paged out
- * 0 if can't start (e.g., swapping in)
- */
-extern int pageout(int process, int page);
-
-/* void pageit(Pentry q[MAXPROCESSES])
- * This is called by the simulator
- * every time something interesting occurs.
- * It is where you implement the paging strategy.
- * Arguments:
- * q: state of every process
- * Returns:
- * void
- */
-extern void pageit(Pentry q[MAXPROCESSES]);
-
-typedef enum { GOTO, FOR, NFOR, IF } BranchType;
-
-/* abstract description of a branch
- describes qualitative behavior, not actual branching */
-typedef struct branch {
- long wherefrom;
- long whereto;
- BranchType btype;
- long min, max;
- double prob;
- long extent;
-} Branch;
-
-typedef struct program {
- long size;
- long nbranches;
- Branch branches[MAXBRANCHES];
- long nexits;
- long exits[MAXEXITS]; /* which statements are "halt" */
-} Program;
-
-// branch context: determines which branch to
-// take next in a probabilistic situation...
-typedef struct bcontext {
- BranchType btype;
- long boffset; /* offset into brings array */
- long bsize; /* size of brings array */
- long bvalue; /* which branch direction to take */
- long bcount; /* value of current decrement */
- long brings[MAXBRINGS];
-} Bcontext;
-
-typedef struct process {
- Program *program;
- long nbcontexts;
- Bcontext bcontexts[MAXBRANCHES];
- long pc; /* program counter */
- long npages;
- long pages[MAXPROCPAGES]; /* whether page is available */
- long blocked[MAXPROCPAGES]; /* whether we've reported page state */
- long active; /* whether running now */
- long compute; /* number of compute ticks */
- long block; /* number of blocked ticks */
- long pid; /* unique process number */
- long kind; /* kind of process from table */
-} Process;