Introduction
We work in teams to develop the core of an operating system. We set up the interrupt descriptor table (IDT), basic paging support for tasks, separate 4 MB pages for the kernel and applications, initialize a few devices, write the system call interface along with ten system calls, provide support for six tasks from program images in the file system which interface with the kernel via system calls, multiple terminals and basic scheduling.
The goal for the project is to earn hands-on experience in developing the software used to interface between devices and applications, i.e., operating systems.
Implemented Features
Load the Global Descriptor Table (GDT)
Initialise the Interrupt Descriptor Table (IDT)
Initialise the Devices (PIC, Keyboard, RTC)
Initialise Paging
Create a Terminal Driver
Parse the Read-only File System
The Real-Time Clock Driver
Support System Calls
Support A Loader
Executing User-level Code
Process Control Block
Multiple Terminals and Active Tasks
Scheduling
Signals
Dynamic Memory Allocation