Skip to content
 
 

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

It was a course taught at Stony Brook University by Prof. Donald Porter.
Developed along with Rahul Madan (rahulsachint@gmail.com).

COURSE PROJECT
Implemented task schedulers used in various versions of linux
    - O(1) Scheduler (kern/sched_o.c)
    - Completely Fair Scheduler (kern/sched_cfs.c)
    - Lottery Scheduler (kern/sched_lottery.c)

COURSE LABS
OVERVIEW : Implement (the interesting pieces of) a real operating system that will boot on a PC. The operating system is called JOS. (JOS exokernel was developed at MIT)

LAB1: Bootloader
    - Trace through the first few instructions of the boot loader
    - Implement a stack backtrace function that displays function name, source file name and line number for each EIP
    
LAB2: Memory Management
    - Implement page table management functions like page_alloc, page_insert, page_lookup etc...

LAB3: Processes/Environments
    - Implement process/environment management functions for allocating an environment, loading a binary, start environment in user mode etc...
    - Setup a interrupt descriptor table and implement a trapframe handler
    - Implement a page fault, breakpoint and system call handler

LAB4: System Calls & Inter Process Communication
    - Implement a round-robin scheduler
    - Implement system calls to allocate a page of physical memory, copy a page mapping etc...
    - Implement Copy On Write fork (COW) using the above system calls
    - Implement timer interrupt and enable preemptive multitasking
    - Implement Inter Process Communication (IPC) and the additional system calls it requires
    
LAB5: FileSystems
    - Implement the file system as its own user-space process in micro-kernel fashion
    - Key components of the file system implemented
        -> reading blocks into the block cache & flushing them back to disk
        -> allocating disk blocks
        -> mapping file offsets to disk blocks
        -> implementing read, write and open in the IPC interface
    - Spawn a process, load a ELF binary, start a child process running this program
    
LAB6: Network Driver
    - Write a driver for a network interface card that will be based on the Intel 82559ER chip
    - Transmit & receive packets by polling DMA rings for valid data
    - Create system calls for transmitting and receiving packets

LAB7: Shell
    - Minimize copying of data when spawning a new process by copying just the mapping for shared pages
    - Implement a shell to run basic commands like ls, cat etc...

Source Code: https://github.com/rahulsachint/JOS

About

MIT-based operating system, developed as a part of Operating System Course

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages