CSL373/CS333N Assignment 4: Building your own OS (Part 2)

Background reading

  1. Read the documentation of Bochs (a free X86 emulator) and OSKit. Check out the Bochs and OSKit documentation mirrored locally.

Building your own OS (Part 2)

  1. Use Bochs (a free X86 emulator) to develop your own OS. Use OSKit to boot your machine (or emulator) in to protected mode and first run a "hello world" application.
  2. Change the "hello world" application in to an init process that sets up the interrupt vector table and initializes the timer and the CPU registers and passes control to a scheduler.
  3. Implement a round-robin preemptive scheduler and context switching. Initialize the timer appropriately and explicitly save the register contents during context switch (unlike the scheme used in Assignment 3).
  4. Port your semaphore implementation of Assignment 3 on to your new OS and intregrate it with the new context switching mechanism. semaphores can now be implemented as spin-lock critical sections using compare and exchange.
  5. Use a flat memory model. Use OSKit's malloc, printf etc. Do not use any external devices (including keyboard) except the monitor screen.
  6. Re-implement the applications of Assignment 3 in your new OS.


  1. Soumyadeb's pointers to OsKit
  2. Some tips for context switching in A4
  3. The last date of submission is Feb 26. That should give you adequate time to build something useful (an mp3 player, may be?) with your own OS.

Subhashis Banerjee / Dept. Computer Science and Engineering / IIT Delhi / Hauz Khas/ New Delhi 110016 / suban@cse.iitd.ernet.in