kirk scott computer science the university of alaska anchorage 1
TRANSCRIPT
![Page 1: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/1.jpg)
1
The Minimal Instruction Set Computer (MISC) in Java:
Demonstration of Operating System Concepts
Kirk ScottComputer Science
The University of Alaska Anchorage
![Page 2: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/2.jpg)
2
These overheads fall into 3 sections: 1. An explanation of MISC in general 2. Modifications to MISC 3. What is the Point of This?
Overall Plan of Overheads
![Page 3: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/3.jpg)
3
1. An explanation of MISC in general
![Page 4: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/4.jpg)
4
MISC is a Java simulation of a simple CPU The simulation includes a simple machine
language Machine programs can be written in this
language
An Introduction to MISC
![Page 5: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/5.jpg)
5
MISC contains a simple operating system The operating system functions are
written in Java as part of the simulation In MISC, absolute machine code is loaded
at memory address 0 and executed there Program loading and execution in MISC
can be modified in several ways
![Page 6: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/6.jpg)
6
Bytes and registers Bytes, words, and memory General remarks on machine instruction
execution Fetch, decode, and execute The machine language instruction set
The Basic Structure of MISC
![Page 7: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/7.jpg)
7
General remarks on the form of machine language
An example program The Java methods comprising the simulation The command line interface A summary of the structure of the Java
simulation by class, constructor, and method
The Basic Structure, Continued
![Page 8: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/8.jpg)
8
The MISC architecture makes use of 4 byte words
The contents of a register are modeled by an object containing a character array of 8 bytes
Bytes and Registers
![Page 9: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/9.jpg)
9
Each bit is modeled by the presence of the character ‘1’ or the character ‘0’ in a position in an 8 byte array
The registers are packaged together in an array named “reg”
The index of the array identifies the particular register
![Page 10: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/10.jpg)
10
Registers:
register name decimal index binary code identification in reg array of index unused reg[0] "00000000" general purpose A reg[1] "00000001" B reg[2] "00000010" C reg[3] "00000011" D reg[4] "00000100"
![Page 11: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/11.jpg)
11
Registers, cont’d.:
register name decimal index binary code identification in reg array of index
memory offsets codeoffsetreg[5] "00000101" dataoffset reg[6] "00000110" unused1 reg[7] "00000111" unused2 reg[8] "00001000" unused3 reg[9] "00001001" flag reg[10] "00001010"
![Page 12: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/12.jpg)
12
Registers, cont’d.:
register name decimal index binary code identification in reg array of index
control unit registers instruction reg[11] "00001011" operand1 reg[12] "00001100" operand2 reg[13] "00001101" extrareg[14] "00001110"
ALU registers aluinreg1 reg[15] "00001111" aluinreg2 reg[16] "00010000" aluoutreg reg[17] "00010001"
![Page 13: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/13.jpg)
13
A word in MISC consists of 4 bytes Memory is implemented as an array of
words The index of the array is the word offset into
memory Memory: array name memory[]
Bytes, Words, and Memory
![Page 14: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/14.jpg)
14
These are the general rules for move and arithmetic instructions◦ A register or a memory variable can be a
destination◦ A constant, a register, or a memory variable can
be a source◦ Memory to memory operations are not allowed
General Remarks on Machine Instruction Execution
![Page 15: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/15.jpg)
15
A program is loaded to memory location 0 by default
The machine takes control of execution The machine steps through the program
code until it encounters an empty (“00000000”) instruction byte
Fetch, Decode, and Execute
![Page 16: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/16.jpg)
16
Execution starts with the value 0 in the code offset register
The next 4 contiguous bytes of code memory are put into the instruction, operand1, operand2, and extra registers
After the retrieval of each instruction the code offset is incremented for the next retrieval
![Page 17: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/17.jpg)
17
The MOVE Instruction assembly instruction method in simulation machine instruction MOVE register, register void moveDestRegSrcReg() “10000001” MOVE memory, register void moveToMemFromReg() “10000010” MOVE register, memory void movetoregfrommem() “10000011” MOVE memory, constant void movetomemfromconst() “10000100” MOVE register, constant void movetoregfromconst() “10000101”
The Machine Language Instruction Set
![Page 18: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/18.jpg)
18
The ADD Instruction assembly instruction method in simulation machine instruction ADD register, register void addDestRegSrcReg() “10000110” ADD memory, register void addToMemFromReg() “10000111” ADD register, memory void addToRegFromMem() “10001000” ADD memory, constant void addToMemFromConst() “10001001” ADD register, constant void addToRegFromConst() “10001010”
![Page 19: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/19.jpg)
19
The SUB Instruction assembly instruction method in simulation machine instruction SUB register, register void subDestRegSrcReg() “10001011” SUB memory, register void subFromMemSrcReg() “10001100” SUB register, memory void subFromRegSrcMem() “10001101” SUB memory, constant void subFromMemSrcConst() “10001110” SUB register, constant void subFromRegSrcConst() “10001111”
![Page 20: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/20.jpg)
20
The JUMP Instruction assembly instruction method in simulation machine instruction JMP unsigned integer void jumpUnconditional() “10010000” JPOS unsigned integer void jumpOnPositive() “10010001” JNEG unsigned integer void jumpOnNegative() “10010010” JZERO unsigned integer void jumpOnZero() “10010011” JOVER unsigned integer void jumpOnOverflow() “10010100”
![Page 21: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/21.jpg)
21
The data declarations come first, then the program code
The program will be loaded at offset 0 Words 0-7 are reserved for data variables
and will be filled with 0’s if there are not that many variables
No program, including data, can be longer than 31 lines
The source file signals termination with a row of asterisks
General Remarks on the Form of Machine Language
![Page 22: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/22.jpg)
22
Data Declaration Line Byte 1: value Bytes 2-4: unused Line of Code Byte 1: instruction Byte 2: operand 1 Byte 3: operand 2 Byte 4: unused
![Page 23: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/23.jpg)
23
The example is a machine language program that sums the first 10 integers
The machine language alone with artificial line breaks and segment labels follows
The *’s are used on input to detect the end of the program.
An Example Machine Language Program
![Page 24: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/24.jpg)
24
data segment 00001011000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000
![Page 25: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/25.jpg)
25
code segment 10000101000001000000000100000000 10000111000000010000010000000000 10001010000001000000000100000000 10000011000000110000000000000000 10001011000000110000010000000000 10010001000010010000000000000000 ********************************
![Page 26: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/26.jpg)
26
/.DATA///
00001011 00000000 00000000 00000000 /LOOPLIM/X0B// loop limit offset 0, value 11 00000000 00000000 00000000 00000000 /ACCUM/X00// accumulator offset 1, value 0
The Example Program Data Segment with Assembly Language Guide
![Page 27: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/27.jpg)
27
/.CODE///
10000101 00000100 00000001 00000000 /MOVE/D/X01/ move reg D, const 1 movetoregfromconst 4, 1 /.LABEL/LOOPTOP// 10000111 00000001 00000100 00000000 /ADD/ACCUM/D/ (LABEL) add data offset 1, reg D addtomemfromreg 1, 4
The Example Program Code Segment with Assembly Language Guide
![Page 28: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/28.jpg)
28
10001010 00000100 00000001 00000000 /ADD/D/X01/ add reg D, 1 addtoregfromconst 4, 1 10000011 00000011 00000000 00000000 /MOVE/C/LOOPLIM/ move reg C, data offset 0 movetoregfrommem 3, 0
![Page 29: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/29.jpg)
29
10001011 00000011 00000100 00000000 /SUB/C/D/ sub reg C, reg D subtractdestregsrcreg 3, 4
10010001 00001001 00000000 00000000 /JPOS/LOOPTOP// Since space is reserved for 8 variables, the first instruction
comes at word 8. jump on positive to “LABEL” jumponpositive 9 ******** ******** ******** ******** /.END///
![Page 30: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/30.jpg)
30
The simulation consists of 4 java files:◦ MachineWord.java◦ Machine.java◦ Osystem.java◦ MachineOSProgram.java
MachineOSProgram contains main()
The Java Files Comprising the Simulation
![Page 31: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/31.jpg)
31
MISC presents these 3 command prompts: rpf (run program file) dmc (dump memory contents) exit
The Command Line Interface
![Page 32: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/32.jpg)
32
rpf = run program file This prompts the user for the machine
language program to run Machine language programs should be text
files
rpf
![Page 33: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/33.jpg)
33
dmc = dump machine contents This prompts the user for the name of the
output file to create This should be a text file MISC has no I/O capabilities You know what a program did by looking at
the dmc file
dmc
![Page 34: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/34.jpg)
34
exit = quit the simulation
exit
![Page 35: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/35.jpg)
35
MachineByte.java MachineWord.java
Machine.java This is the heart of the simulation It contains these critical methods:
◦ totalReset()◦ resetOffsets()◦ takeControl()
A Summary of the Structure of the Java Simulation by Class, Constructor, and Method
![Page 36: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/36.jpg)
36
Osystem.java This has a constructor in which a copy of
the Machine is constructed It contains these critical methods:
◦ runProgramFile()◦ dumpMemoryContents()
![Page 37: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/37.jpg)
37
MachineOSProgram.java This contains the main() method It is the simulation driver In it a copy of the Osystem is constructed It loops, checking for user input from the
command prompt
![Page 38: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/38.jpg)
38
MyTerminalIO This presents the command prompt in a
graphical user interface
![Page 39: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/39.jpg)
39
MISC can be modified to illustrate these operating system concepts:◦ Memory allocation◦ Absolute code◦ Relative code◦ Concurrency and scheduling
2. Modifications to MISC
![Page 40: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/40.jpg)
40
By default, programs in MISC are loaded and executed at address 0 in memory
The following overhead shows a dmc file after running the example program
![Page 41: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/41.jpg)
41
memory contents 00001011000000000000000000000000 00110111000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 10000101000001000000000100000000 10000111000000010000010000000000 10001010000001000000000100000000 10000011000000110000000000000000 10001011000000110000010000000000 10010001000010010000000000000000 00000000000000000000000000000000 …
![Page 42: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/42.jpg)
42
Here are three possible modifications to MISC:
1. Load machine programs at addresses other than 0◦ Modify relative code to absolute code for a non-
zero address 2. Load machine programs at addresses
other than 0 with dynamic address checking◦ Load relative code and modify the simulation to
check memory accesses
Modifications to MISC Which Illustrate Operating System Concepts
![Page 43: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/43.jpg)
43
3. Load and run more than one machine program at a time◦ This builds on modification 2◦ Memory accesses for each loaded program have
to be correctly handled◦ Execution of multiple programs also involves
scheduling
![Page 44: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/44.jpg)
44
Support program loading at an address other than 0
Alter the machine program code at load time Memory address references are changed to
correspond with the load address The loaded program is absolute code for the
new address The following overhead shows a dmc file after
running the example program with these modifications
Modification 1
![Page 45: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/45.jpg)
45
memory contents 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 … 00001011000000000000000000000000 00110111000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 10000101000001000000000100000000 10000111001000010000010000000000 10001010000001000000000100000000 10000011000000110010000000000000 10001011000000110000010000000000 10010001001010010000000000000000 00000000000000000000000000000000 …
![Page 46: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/46.jpg)
46
Support program loading at an address other than 0
Do not alter the machine program code at load time
A machine language program is loaded to an address other than 0
The machine code is relative code
Modification 2
![Page 47: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/47.jpg)
47
Each time the running machine program wants to do a memory access, it returns the relative address in the machine code to the operating system
The operating system checks to see if it’s within range
![Page 48: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/48.jpg)
48
The operating system adds the memory access to the base address where the program was loaded
The operating system passes this absolute address back to the machine for program memory access
The following overhead shows a dmc file after running the example program with these modifications
It looks no different from the previous modification
![Page 49: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/49.jpg)
49
memory contents 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 … 00001011000000000000000000000000 00110111000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 10000101000001000000000100000000 10000111001000010000010000000000 10001010000001000000000100000000 10000011000000110010000000000000 10001011000000110000010000000000 10010001001010010000000000000000 00000000000000000000000000000000 …
![Page 50: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/50.jpg)
50
Modify MISC to load and run more than one machine language program concurrently
Round robin scheduling can be implemented Instead of time-slicing, use instruction counts Switch between from one machine program
to another when it has executed a fixed number of instructions
Note that threading of command prompt input is necessary to accomplish this
Modification 3
![Page 51: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/51.jpg)
51
The following overhead shows a dmc file taken midstream while two copies of the machine language program are running
It illustrates that concurrency is taking place Look at the second data variable, the
accumulator Both programs have non-zero totals Neither program has yet reached the final
value of 00110111
![Page 52: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/52.jpg)
52
memory contents 00001011000000000000000000000000 00011100000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 10000101000001000000000100000000 10000111000000010000010000000000 10001010000001000000000100000000 10000011000000110000000000000000 10001011000000110000010000000000 10010001000010010000000000000000 00000000000000000000000000000000 … 00000000000000000000000000000000 00001011000000000000000000000000 00001010000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 10000101000001000000000100000000 10000111000000010000010000000000 10001010000001000000000100000000 10000011000000110000000000000000 10001011000000110000010000000000 10010001000010010000000000000000 00000000000000000000000000000000 …
![Page 53: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/53.jpg)
53
MISC and the modifications given are used as part of a course on operating systems
Students are given the original version of MISC and do the modifications as assignments
Because MISC is written in Java, the students program their solutions by writing Java code
Students can work on operating system concepts without having to work with kernel code of a live operating system
3. What is the Point of This?
![Page 54: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/54.jpg)
54
MISC as is, or expanded and modified, could be used in other areas of computer science◦ Machine language coding◦ Other operating system concepts◦ Language translation◦ Machine level operating system implementation◦ Security exercises
![Page 55: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/55.jpg)
55
MISC could also be modified for additional purposes
Its machine language could be expanded It could then be used as a testbed for
machine language coding
Machine Language Coding
![Page 56: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/56.jpg)
56
MISC could be extended to cover other operating system concepts
For example, different scheduling algorithms could be implemented
Other Operating System Concepts
![Page 57: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/57.jpg)
57
MISC and its machine language could be used as part of an exercise in language translation
It would be possible to write an assembler for MISC
It would be possible to define a simple high-level language for MISC and write a compiler for it
Language Translation
![Page 58: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/58.jpg)
58
The MISC machine language could be extended
It could include memory operations It could include all operations needed in
order to support operating system functionality
Machine Level Operating System Implementation
![Page 59: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/59.jpg)
59
If this were done, a big conceptual jump would be possible
The operating system of MISC would not be Java code, Osystem
A complete operating system in MISC machine language could be written
Running the MISC simulation would consist of loading and running this machine language program
![Page 60: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/60.jpg)
60
If the previous step were taken, MISC would closely resemble a real operating system environment
It would then become possible to write malware for that environment
For example, it would become possible to write code which caused buffer overflows in the MISC operating system
Security Exercises
![Page 61: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/61.jpg)
61
The overall idea is this: A basic version of MISC exists The three basic modifications have been
developed MISC has potential for further development
in other areas
Conclusion
![Page 62: Kirk Scott Computer Science The University of Alaska Anchorage 1](https://reader030.vdocuments.mx/reader030/viewer/2022032702/56649f455503460f94c66237/html5/thumbnails/62.jpg)
62
The End