Parallel Operating System (POS)

  • Posted February 23, 2010. Last modified January 21, 2012 by

Hobby / Toy OS from scratch which aims to support parallel computation on cheap heterogeneous equipment and networks. Current features include:

  • Custom two-stage boot loader
  • 32-bit Protected Mode with working Global Descriptor Table (GDT) and Interrupt Descriptor Table (IDT)
  • Programmable Interrupt Controller (PIC), Interrupt Request Routines (IRQ) and Interrupt Service Routines (ISRs)
  • Device support for: pci bus, system clock, keyboard, basic vga, realtek rtl8139 network adapter
  • Rudimentary support for several networking protocols: IPv4, ICMP, UDP, ARP
  • “Watermark” memory management
  • Mono-tasking for the time being
  • Rudimentary FAT16 Support
  • Simple Shell
  • Compiles on both 32-bit and 64-bit host systems
  • Runs on bochs, qemu and several test machines
  • Useful tools including: hexdump utility (hd) and register dump (rd) implemented in both real and protected mode
  • Low-level support for floppy disk I/O using DMA

As of right now, the operating system boots from a floppy disk, but the goal will be complete control over a heterogeneous cluster. With the custom bootloader, the computing nodes in the cluster will be able to network boot into the operating system and form a decentralized cluster. Certain components of the OS will be configurable such as the scheduling, paging/segmentation etc. to allow the user to experiment with performance over various tasks easily.

There are several requirements to be able to build and test the source:

  • gcc & nasm (maybe also build-essentials if you are using ubuntu)
  • bochs (and bochs-term) or qemu (if you want to use an emulator to test)
  • a floppy drive (or usb stick &bios which emulates a floppy) if you wish to test on real hardware
  • an rtl8139 network card if you wish to try networking on real hardware

To compile, type ‘make’ in the source folder to compile. By default it should be setup to use the bochs emulator, so after it compiles you can just type ‘bochs’ to try it out. If you wish to use a floppy and real hardware you can use the command ‘dd if=floppy.img of=/dev/fd0’ to get the image onto the floppy. Then just reboot the computer with the floppy in the drive to test. Note: this can also be done with certain usb flash sticks as well (if the stick and the BIOS support floppy emulation).

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.