Welcome to the home page for the TrainOS (TOS) project.
TOS is a simple operating system for Intel x86 based PCs,
designed as a programming project to accompany a
course on operating systems. At the end of the project, you
will have implemented a small, pre-emptive multi-tasking operating
system that can boot on any Intel-based PC. It controls an external
model train via the serial line interface. The video below shows the result.
This page contains all the resources to install and build TOS as well
comprehensive documentation of all aspects of TOS. The freely available
software package includes a testing framework and a simulator for the model
train. Refer to the setup instructions for TOS as well
as the TOS API documentation.
Topic |
Slides |
Content |
Introduction
|
|
Introduction to Operating Systems.
|
Prerequisites
|
|
Bochs. Overview of TOS.
|
C-Pointers
|
|
Review of some finer points of the C-programming language.
|
x86 Assembly
|
|
x86 Architecture and Assembly Language.
|
Windowing
|
|
Text-based windowing system.
|
Debugging
|
|
Debugging hints for TOS. TOS Test Center (TTC).
|
TOS Processes
|
|
Creating a process in TOS. PCB (Process Control Block).
create_process()
|
Context Switch
|
|
Context Switch in TOS. resign()
|
Concurrency
|
|
Concurrency, race conditions, locks.
|
IPC
|
|
Inter-Process Communication. send(), receive(),
reply()
|
Segmentation
|
|
x86 Segmentation. GDT (Global Descriptor Table).
|
Interrupts
|
|
x86 Interrupts. ISR (Interrupt Service Routines).
|
Multitasking
|
|
Adding pre-emptive multitasking to TOS.
|
Timer
|
|
Timer Service. Null Process. wait_for_interrupt()
|
Device Driver
|
|
RS232 Device Driver. Loopback device.
|
Shell
|
|
Using the keyboard. Mini-shell for TOS.
|
Train
|
|
Train application.
|
Fork
|
|
Implementation of fork() for TOS.
|