HrwOS

This is a partially reconstructed backup as the wiki of Prof. Kirsch’s website, on which our project page was hosted, went offline.

Introduction

During our OS Course (“Spezielle Kapitel aus Betriebssysteme”) we have to implement the basic paradigms of an operating system (Processes, Memory Management, Filesystem,…). We are allowed to use a “startup framework” like GeekOS, PintOS or similar. The requirements for passing this class is that our operating system is able to run a non trivial concurrent application appropriately.

Team

Development Milestones

To fit the whole development time in this term we created a schedule. The milestones in the schedule correspond to the projects in the GeekOS framework. Furthermore this course is an additional chance to learn more about project management.

  1. 2006-10-30: Getting Started [OK]

    Chosen GeekOS as base framework

    Setup development milestones with dates

  2. 2006-11-08: ELF Binary Loader [OK]

    Getting the ELF format definition.

    Implementing a stub function which parses an ELF file.

  3. 2006-11-22: Process Management [OK]

    Manage segments of user processes (LDT, GDT, …)

    Loading executable to user space memory

    Setting up user space threads, stack and so on

    Implementing basic system calls

    Running a little shell as init process and launching further applications from it

  4. 2006-11-29: Scheduling [OK]

    Implementing RR and MLF Scheduler

    Implementing semaphores for synchronization (and the syscalls too)

  5. 2006-12-20: Virtual Memory [OK]

    Implemented two level paging, creating page directory and tables

    Adapting old process creation to paging

    Implemented swapping, managing a swap file

    Handling page faults, making page-ins and page-outs

  6. 2006-12-28: Filesystem [OK]

    Create, Open, Read, Write, Stat, Seek, Delete files

    Create, Open, Read_Entry, Stat, Seek, Delete directories

    Sync file system

  7. 2007-01-03: IPC [OK]

    Implementing abstract console FS – stdin, stdout are ‘files’ in the sense of POSIX. This enables redirecting output via ‘<’ and ‘>’ in shell.

    Implementing IPC via pipes which are implemented as a FS too. This enables the pipe ‘|’ in shell.

  8. 2007-01-08: Run Concurrent Application [OK]

    Implemented Dining Philosophers

    It’s a server-client like architecture. The philosophers communicate with the server (called “phitable”) over pipes…

Documents

Technical Report

The technical report is written in LaTeX. All main components are described to get a good overview and enables one to write applications for hrwOS. hrwos-techrep.pdf

10-min. Presentation

This 10 minute presentation is also written in LaTeX. We chose two special components (VM, scheduler) and give a little overview. hrwos-10min.pdf

Source Code

The current source code (version 1.0) is available here: hrwOS.tar.gz. For a quick launch type:

make clean && make depend
make
bochs