Prof. Dr.-Ing. Hans-Georg Eßer
Systemprogrammierung, Betriebssystem-Entwicklung
Studiengang Informatik, TH Nürnberg

ohm.hgesser.de


Navigation
Startseite
Impressum
Vorlesungsarchiv
BS-Entwicklung
mit Literate
Programming
WS 2015/16
Übersicht
Folien / Videos
Evaluation
Systempro-
grammierung
Linux/Unix
SS 2015
Übersicht
Folien / Audio
Evaluation
BS-Entwicklung
mit Literate
Programming
WS 2014/15
Übersicht
Folien / Videos
Evaluation
Systempro-
grammierung
Linux/Unix
SS 2014
Übersicht
Folien / Videos
Evaluation
BS-Entwicklung
mit Literate
Programming
WS 2013/14
Übersicht
Folien / Videos
Evaluation
Systempro-
grammierung
Linux/Unix
SS 2013
Übersicht
Folien / Videos
Evaluation
Systempro-
grammierung
Linux/Unix
SS 2012
Übersicht
Folien / Videos
Evaluation
Über den Dozenten
Homepage [extern]
Veröffentlichungen
Didaktik-Fortbildungen
Vorlesungen an der ...
  - FH Südwestfalen
  - Hochschule München
  - FOM Hochschule
  - Hochschule
    Albstadt-Sigmaringen
TH Nürnberg
Homepage
 

Operating System Development (Winter term 2015/16)

On this page you can find information and material belonging to my "Operating System Development with Literate Programming" lecture held at Nuremberg Institute of Technology (TH Nürnberg) in the winter term 2015/16. Please note that this page is a translated version, the original page is German, and both this and the original page link to many documents with German content.

Operating System Development with Literate Programming (Winter term 2015/16)

In the winter termin 2015/16 I have held lectures in "Operating System Development with Literate Programming".

Lectures start on October 8th, 2015, at 15:45.

In the first weeks you will not need any materials. I will provide lecture slides as PDF files or as HTML-based slide archives in ZIP files as downloads. I will bring printed exercise sheets to the classes.

If you want to participate in the practical exercises, you will need a Linux system (either a real or a virtual one) with an installed development enviroment (C compiler, assembler, make, etc.) as well as the Qemu emulator. I provide a VirtualBox image that has all required tools pre-installed.

In the practical sessions you will implement and document parts of the tiny, Unix-like operating system ULIX, usimng Literate Programming. Hand in the resulting documentation file before the end of the term if you want to receive credits for this course. (If you're reading this today -- 2020 or later -- it should be obvious that you cannot receive credits :) )

Prerequisites

Helpful previous knowledge: programming in C, foundations of operating systems, document markup with LaTeX.

Contents

  1. Introduction/Overview
  2. Crash course in C and the Linux shell Bash
  3. Features of a Unix System (overview)
  4. LaTeX and Literate Programming
  1. Booting, Protected Mode, Memory
  2. Interrupts, Faults and System Calls in Ulix
  3. Processes; fork() iplementation in the kernel
  4. Implementation project

News

[2016/01/07] Andreas Kurz has developed a small tool called nwIndex that displays a program's structure. An archive with the source code and a compiled version suitable for the development VM can be found here.
[2015/12/01] Evaluation results are online (German). Thanks for participating.
[2015/10/04] The first slides and the textbook (voluntary extra reading) are online.

Material

You can download some of the slides in 1-up or 4-up format (PDF), but most slides are HTML-based and were prepared with my LiPPGen tool. Note that almost all slides were written in the German language. However, all identifiers, function names, inline comments etc. in the code are in English. The videos are German, too.

I have run the 1-up PDFs, the exercise sheets and the project task description through the automatic PDF translation service at https://www.onlinedoctranslator.com/ which uses Google Translate. The English versions are available via the "*-EN" links. Don't expect more from those versions than from other content you've run through an auto-translator :) You may want to look at the German and English documents side-by-side. (I really like how it's translated my name: my last name was turned into "Eater"...)

#Tag ThemaFolien (pdf), Übungen, LösungenVideo (mov)
108.10.2015 Introduction, Installation of the Development VM,
Unix und ULIX features (1.*, 2.1-2.16, 3.*);
Exercise 1
Slides #1: 1-up, 1-up-EN, 4-up
Slides #2: 1-up, 1-up-EN, 4-up
Slides #3: 1-up, 1-up-EN, 4-up
Exercise 1: ue01.pdf, ue01-EN.pdf
#1 (81 MB),
#2 (41 MB)
215.10.2015 LaTeX and Literate Programming (4.*);
Exercise 2
Slides #4: 1-up, 1-up-EN, 4-up
Exercise 2: ue02.pdf, ue02-EN.pdf
Solution: PDF file, Source code (zip)
#1 (86 MB)
322.10.2015 Booting, Protected Mode, Memory (5.*) Slides #5: 1-up, 1-up-EN, 4-up #1 (96 MB),
#2 (69 MB)
429.10.2015 Exercise 3 and Solution (No. 5, 6) Exercise 3: ue03.pdf, ue03-EN.pdf #1 (80 MB)
505.11.2015 Frame and Page Management (6.*),
Exercise 4
Slides #6: HTML, html.zip, Print PDF;
Exercise 4: ue04.pdf, ue04-EN.pdf
#1 (75 MB),
#2 (58 MB)
612.11.2015 Exercise 4 (continued) and Solution,
Interrupts and Faults (7.1-7.21)
Slides #7: HTML, html.zip, Print PDF #1 (79 MB)
719.11.2015 Interrupts and Faults (7.22-7.36), Exercise 5 Exercise 5: ue05.pdf, ue05-EN.pdf #1 (81 MB),
#2 (19 MB)
826.11.2015 Exercise 5 (No. 10, with solution), mid-term
evaluation, System Calls (8.*), Exercise 5
(No. 11, with solutions), Processes (9.1-9.7)
Slides #8: HTML, html.zip, Print PDF
Slides #9: HTML, html.zip, Print PDF
#1 (58 MB),
#2 (42 MB)
903.12.2015 Processes (9.8-9.80) -- #1 (82 MB),
#2 (72 MB)
1010.12.2015 Processes (9.81-9.92), Exercise 6 Exercise 6: ue06.pdf, ue06-EN.pdf #1 (63 MB)
1117.12.2015 Solutions for Exercise 6, fork() and Sched-
uling (10.*), Introduction to the project (exam)
Slides #10: HTML, html.zip, Print PDF;
Project Tasks, Project Tasks-EN
#1 (90 MB),
#2 (40 MB)
24.12.2015-06.01.2016: Christmas Break
1207.01.2016 Project
1314.01.2016 Project
Turn in project reports: 07.02.2015 (23:59 Uhr)

Blackboard pictures: Folder

Literature

  • H.-G. Eßer, F. C. Freiling: The Design and Implementation of the ULIX Operating System, 2015, PDF file (Official course book)
  • F. Mittelbach, M. Goossens: Der LaTeX-Begleiter, 2010, ISBN: 386894088X
  • D. E. Knuth: Literate Programming, The Computer Journal, 27(2), pp. 97-111, 1984, PDF file
  • N. Ramsey: Literate Programming Simplified, IEEE Software, 11(5):97-105, 1994, PDF file
  • N. Ramsey: A One-Page Guide to Using noweb with LaTeX, PDF file
  • A. S. Tanenbaum, A. S. Woodhull: Operating Systems Design and Implementation, 3rd edition, ISBN 0131429388 bzw. 0135053765 (Taschenbuch)
  • W. R. Stevens, S. A. Rago: Advanced Programming in the Unix Environment, 2013, ISBN 0321637739
  • Helmut Herold: Linux/Unix Systemprogrammierung, 2004, ISBN: 3827321603
  • Elias Fischer: Das C-Tutorial
  • Ted Jensen: A Tutorial on Pointers and Arrays in C, 2003


Copyright © 2012-2017 Hans-Georg Eßer. Letzte Änderung: Monday, 02-Jan-2023 09:52:18 CET
Anschrift: Technische Hochschule Nürnberg, Fakultät Informatik, Hohfederstr. 40, 90489 Nürnberg