The Implementation of the ULIX Literate Operating System








Blaue Links: intern
Rote Links: extern

Suche Linux-Bücher bei

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

Executing processes (05.10.2012)

Ulix can run processes now. It does not handle several of them nicely yet, but the news is that programs can be compiled (externally) using a basic usermode library. So far it can printf() and--sort of--open files and read/write them.

Compiling requires a linker script which creates a flat binary: So far, Ulix does not support ELF binaries (but there'll be ELF support early next year, since a BSc student has just started working on that component). Such programs can call functions in the usermode library which in turn make system calls in order to do privileged things (such as writing to the screen and forking).

After launching a program (which has no way to properly exit() so far), Shift-Esc jumps back to the shell. The new ps command in that shell shows what's going on.

[ 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.