jsos
college code for operating system fundamentals in js
git clone https://9o.is/git/jsos.git
globals.js
(2963B)
1 /* ------------
2 Globals.js
3
4 Global CONSTANTS and _Variables.
5 (Global over both the OS and Hardware Simulation.)
6
7 This code references page numbers in the text book:
8 Operating System Concepts 8th editiion by Silberschatz, Galvin, and Gagne. ISBN 978-0-470-12872-5
9 ------------ */
10
11 //
12 // Global Constants
13 //
14 var APP_NAME = "JuliOS"; // 'cause I was at a loss for a better name.
15 var APP_VERSION = "0.4";
16
17 var CPU_CLOCK_INTERVAL = 100; // in ms, or milliseconds, so 1000 = 1 second.
18
19 var TIMER_IRQ = 0; // Pages 23 (timer), 9 (interrupts), and 561 (interrupt priority).
20 // NOTE: The timer is different from hardware clock pulses. Don't confuse these.
21 var KEYBOARD_IRQ = 1;
22
23 var SYSCALL_IRQ = 2;
24
25
26 //
27 // Global Variables
28 //
29 var _CPU = null;
30
31 var _OSclock = 0; // Page 23.
32
33 var _Memory = null;
34
35 var _Disk = null;
36
37 var _Mode = 0; // 0 = Kernel Mode, 1 = User Mode. See page 21.
38
39 // TODO: Fix the naming convention for these next five global vars.
40 var CANVAS = null; // Initialized in hostInit().
41 var DRAWING_CONTEXT = null; // Initialized in hostInit().
42 var DEFAULT_FONT = "Open Baskerville 0.0.53"; // Ignored, just a place-holder in this version.
43 var DEFAULT_FONT_SIZE = 13;
44 var FONT_HEIGHT_MARGIN = 4; // Additional space added to font size when advancing a line.
45
46 // dom id's
47 var CANVAS_ID = "display";
48 var HALT_BTN = "btnHaltOS";
49 var RESET_BTN = "btnReset";
50 var TALOG = "taLog";
51 var TA_PROGRAM_INPUT = "taProgramInput";
52
53 // Default the OS trace to be on.
54 var _Trace = true;
55
56 // OS queues
57 var _KernelInterruptQueue = null;
58 var _KernelBuffers = null;
59 var _KernelInputQueue = null;
60 var _KernelMemoryManager = null;
61 var _KernelReadyQueue = null;
62 var _KernelCPUScheduler = null;
63
64 // Standard input and output
65 var _StdIn = null;
66 var _StdOut = null;
67
68 // UI
69 var _Console = null;
70 var _OsShell = null;
71
72 // At least this OS is not trying to kill you. (Yet.)
73 var _SarcasticMode = false;
74
75 //
76 // Global Device Driver Objects - page 12
77 //
78 var krnKeyboardDriver = null;
79 var krnFilesystemDriver = null;
80
81 // memory size
82 var TOTAL_PAGES = 3;
83 var SWAPPABLE = 1;
84 var MAX_MEMORY_PROGRAM = 256; //bytes
85 var TOTAL_MEMORY = TOTAL_PAGES * MAX_MEMORY_PROGRAM; //bytes
86
87 // pcb states
88 var PCB_STATE_RESIDENT = "resident";
89 var PCB_STATE_READY = "ready";
90 var PCB_STATE_RUNNING = "running";
91 var PCB_STATE_TERMINATED = "terminated";
92
93 // error codes
94 var _ERROR = "ERROR: ";
95 var _ERROR_INVALID_SYSTEM_CALL = _ERROR+"INVALID SYSTEM CALL";
96 var _ERROR_INVALID_OPERATOR = _ERROR+"INVALID OPERATOR";
97 var _ERROR_STACK_OVERFLOW = _ERROR+"STACK OVERFLOW";
98 var _ERROR_INVALID_BYTE_VALUE = _ERROR+"INVALID BYTE VALUE";
99
100 // cpu scheduling
101 var CPU_STATE_RR = {name:"Round Robin", abbr:"rr"};
102 var CPU_STATE_FCFS = {name:"First Come First Serve", abbr:"fcfs"};
103 var CPU_STATE_PRIORITY = {name:"Non-preemptive Priority",abbr:"priority"};
104 var CPU_STATE = CPU_STATE_RR.name;
105
106 // Round Robin Quantum
107 var RR_QUANTUM = 6;