hgesser.com/ulix/

The Implementation of the ULIX Literate Operating System

header

Navigation

Privates

Publikationen

Studium

Software

Sonstiges

Blaue Links: intern
Rote Links: extern

Suche Linux-Bücher bei
Amazon.de


Subscribe ULIX: Literate Unix

A diary documenting the implementation of ULIX-i386

Welcome to the ULIX blog.

Ulix (Literate Unix) is a Unix-like operating system developed at University of Erlangen-Nürnberg. I use D. E. Knuth's concept of Literate Programming for the implementation and documentation. The goal was a fully working system which can be used in operating system courses to show students how OS concepts (such as paging and scheduling) can be implemented. Literate programs are very accessible because they can be read like a book; the order of presentation is not enforced by program logic or compiler restrictions, but instead is guided by the implementer's creative process.

Ulix is written in C and assembler for the Intel architecture. The literate programming part is handled by noweb.

On this page I document my progress with the implementation.


Navigation: 2015 | 2014 | 2013 | 2012 | 2011


v0.07: Scheduling, fork(), exit(), and waitpid() are working (05.04.2013)


It's taken some time, but I finally got the context switch working, and so Ulix can now launch new processes and have them all run in parallel by the (simple round-robin) scheduler. The problem was in the function which changes the address space (by modifying the CR3 register which points to the page directory). For some time I thought it should be sufficient to make that function an inline function, but now I found that it must not be a function at all (there's still parameter-passing involved in calling inline functions, and these parameters are lost when changing the page directory). So now it's not a function call anymore, instead the scheduler directly switches the page directory, and everything works.

The first two Bachelor theses (on Ulix-Filesystem/RAM disk and the ELF binary loader) are completed, so after I've included the code in Ulix, it will be able to start programs from disk properly. The third student who is working on a priority-based scheduler is also about to complete his work in the next weeks.

[ Path: | persistent link ]

Copyright © 2011-2015 Hans-Georg Eßer; Server: Debian Linux, Apache Web Server, blog page powered by blosxom :: the zen of blogging, Theme: Hazard Area 1.6 (modified), created by Bryan Bell, Copyright © 2000-2006 Weblogger.com.