|
|
1.1 root 1: /* vmparam.h 6.1 83/07/29 */
2:
3: /*
4: * Machine dependent constants for VAX
5: */
6: /*
7: * USRTEXT is the start of the user text/data space, while USRSTACK
8: * is the top (end) of the user stack. LOWPAGES and HIGHPAGES are
9: * the number of pages from the beginning of the P0 region to the
10: * beginning of the text and from the beginning of the P1 region to the
11: * beginning of the stack respectively.
12: */
13: /* number of ptes per page */
14: #define USRTEXT 0
15: #define USRSTACK (0x80000000-UPAGES*NBPG)
16: /* Start of user stack */
17: #define P1PAGES 0x200000 /* number of pages in P1 region */
18: #define LOWPAGES 0
19: #define HIGHPAGES UPAGES
20:
21: /*
22: * Virtual memory related constants
23: */
24: #define SLOP 32
25: #define MAXTSIZ (6*2048-SLOP) /* max text size (clicks) */
26: #ifndef MAXDSIZ
27: #define MAXDSIZ (12*1024-32-SLOP) /* max data size (clicks) */
28: #endif
29: #define MAXSSIZ (12*1024-32-SLOP) /* max stack size (clicks) */
30:
31: /*
32: * Sizes of the system and user portions of the system page table.
33: */
34: /* SYSPTSIZE IS SILLY; IT SHOULD BE COMPUTED AT BOOT TIME */
35: #define SYSPTSIZE ((20+MAXUSERS)*NPTEPG)
36: #define USRPTSIZE (8*NPTEPG)
37:
38: /*
39: * The size of the clock loop.
40: */
41: #define LOOPPAGES (maxfree - firstfree)
42:
43: /*
44: * The time for a process to be blocked before being very swappable.
45: * This is a number of seconds which the system takes as being a non-trivial
46: * amount of real time. You probably shouldn't change this;
47: * it is used in subtle ways (fractions and multiples of it are, that is, like
48: * half of a ``long time'', almost a long time, etc.)
49: * It is related to human patience and other factors which don't really
50: * change over time.
51: */
52: #define MAXSLP 20
53:
54: /*
55: * A swapped in process is given a small amount of core without being bothered
56: * by the page replacement algorithm. Basically this says that if you are
57: * swapped in you deserve some resources. We protect the last SAFERSS
58: * pages against paging and will just swap you out rather than paging you.
59: * Note that each process has at least UPAGES+CLSIZE pages which are not
60: * paged anyways (this is currently 8+2=10 pages or 5k bytes), so this
61: * number just means a swapped in process is given around 25k bytes.
62: * Just for fun: current memory prices are 4600$ a megabyte on VAX (4/22/81),
63: * so we loan each swapped in process memory worth 100$, or just admit
64: * that we don't consider it worthwhile and swap it out to disk which costs
65: * $30/mb or about $0.75.
66: */
67: #define SAFERSS 32 /* nominal ``small'' resident set size
68: protected against replacement */
69:
70: /*
71: * DISKRPM is used to estimate the number of paging i/o operations
72: * which one can expect from a single disk controller.
73: */
74: #define DISKRPM 60
75:
76: /*
77: * Klustering constants. Klustering is the gathering
78: * of pages together for pagein/pageout, while clustering
79: * is the treatment of hardware page size as though it were
80: * larger than it really is.
81: *
82: * KLMAX gives maximum cluster size in CLSIZE page (cluster-page)
83: * units. Note that KLMAX*CLSIZE must be <= DMMIN in dmap.h.
84: */
85:
86: #define KLMAX (32/CLSIZE)
87: #define KLSEQL (16/CLSIZE) /* in klust if vadvise(VA_SEQL) */
88: #define KLIN (8/CLSIZE) /* default data/stack in klust */
89: #define KLTXT (4/CLSIZE) /* default text in klust */
90: #define KLOUT (32/CLSIZE)
91:
92: /*
93: * KLSDIST is the advance or retard of the fifo reclaim for sequential
94: * processes data space.
95: */
96: #define KLSDIST 3 /* klusters advance/retard for seq. fifo */
97:
98: /*
99: * Paging thresholds (see vm_sched.c).
100: * Strategy of 4/22/81:
101: * lotsfree is 1/4 of memory free.
102: * desfree is 200k bytes, but at most 1/8 of memory
103: * minfree is 64k bytes, but at most 1/2 of desfree
104: */
105: #define LOTSFREEFRACT 4
106: #define DESFREE (200 * 1024)
107: #define DESFREEFRACT 8
108: #define MINFREE (64 * 1024)
109: #define MINFREEFRACT 2
110:
111: /*
112: * Believed threshold (in megabytes) for which interleaved
113: * swapping area is desirable.
114: */
115: #define LOTSOFMEM 2
116:
117: /*
118: * BEWARE THIS DEFINITION WORKS ONLY WITH COUNT OF 1
119: */
120: #define mapin(pte, v, pfnum, count, prot) \
121: (*(int *)(pte) = (pfnum) | (prot), mtpr(TBIS, ptob(v)))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.