|
|
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
- Introduction/Overview
- Crash course in C and the Linux shell Bash
- Features of a Unix System (overview)
- LaTeX and Literate Programming
|
- Booting, Protected Mode, Memory
- Interrupts, Faults and System Calls in Ulix
- Processes; fork() iplementation in the kernel
- 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 |
Thema | Folien (pdf), Übungen, Lösungen | Video (mov) |
1 | 08.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)
|
2 | 15.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)
|
3 | 22.10.2015 |
Booting, Protected Mode, Memory (5.*)
|
Slides #5:
1-up,
1-up-EN,
4-up
|
#1 (96 MB),
#2 (69 MB)
|
4 | 29.10.2015 |
Exercise 3 and Solution (No. 5, 6)
|
Exercise 3:
ue03.pdf,
ue03-EN.pdf
|
#1 (80 MB)
|
5 | 05.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)
|
6 | 12.11.2015 |
Exercise 4 (continued) and Solution,
Interrupts and Faults (7.1-7.21)
|
Slides #7:
HTML,
html.zip,
Print PDF
|
#1 (79 MB)
|
7 | 19.11.2015 |
Interrupts and Faults (7.22-7.36), Exercise 5
|
Exercise 5:
ue05.pdf,
ue05-EN.pdf
|
#1 (81 MB),
#2 (19 MB)
|
8 | 26.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)
|
9 | 03.12.2015 |
Processes (9.8-9.80)
|
--
|
#1 (82 MB),
#2 (72 MB)
|
10 | 10.12.2015 |
Processes (9.81-9.92), Exercise 6
|
Exercise 6:
ue06.pdf,
ue06-EN.pdf
|
#1 (63 MB)
|
11 | 17.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 |
12 | 07.01.2016 |
Project
|
13 | 14.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
|