All pastes #932863 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-03-07 23:46 UTC
rendered paste body
1. Make an emulator for the processor with the Machine Code specified. This is similar to the coursework in first year computer architecture. You are advised also to complete an assembler that produces machine code, since this greatly simplifies the next part of the assignment. Test your emulator with some simple programs. 

2. Make an assembly program that polls one terminal for data, and that outputs all data that it receives to the other terminal. Your program should ignore interrupts. This part of the assignment should make you familiar with the bit-manipulation that you have to do in order to talk to the terminal device. 

3. Design a micro kernel. Your kernel should have the following features: 

A process table with at least 3 slots. 
Each slot should store process context, process status (runnable etc), and if not runnable what this process is waiting for (I/O etc) 
A scheduler that runs the next process. 
A system call that creates a process. 
A system call that destroys a process. 
A system call that reads one character from a terminal 
A system call that writes one character to a terminal 

The last two system calls should implement blocking I/O, Ie, they should only return to the calling process once the operation is completed, allowing other processes to run in the meantime. In your design document (1000-2000 words), you should write down what the issues are, some pseudo code on how you are going to handle interrupts, etc. 

The write up of your design should be such that anybody who is competent in assembly code but who does not know anything about operating systems can implement the microkernel. 

4. Implement your microkernel. 

5. Write a process that copies data from terminal line 1 to terminal lines 1 and 2; write a process that copies data from terminal line 2 to terminal lines 1 and 2; and a program that runs both processes concurrently. 

6. Implement a cache that sits between the processor and the bus. 

7. You can pick and mix a selection of the following extras: 

Make a dual-processor bus-based system. Allow either processor to run any process, ie you should have a single scheduler. 
Make a non bus-based multi-processor system, using split transactions. Allow either processor to run any process, ie you should have a single scheduler. 
Implement a virtual memory system that protects the kernel from malicious processes, and that protects user processes from each other. 
Write the kernel in a high level language (for example using the compier that you developed in Language Engineering).