EH2011 - 21
Easterhegg 2011
the ccc family event
Speakers | |
---|---|
Andreas Galauner |
Schedule | |
---|---|
Day | Ostersonntag - 2011-04-24 |
Room | Raum 1 |
Start time | 12:00 |
Duration | 04:00 |
Info | |
ID | 4352 |
Event type | Lecture |
Track | Making |
Language used for presentation | German |
Feedback | |
---|---|
Did you attend this event? Give Feedback |
Wie schreibt man ein Betriebssystem?
Vom BIOS in den Userspace
Zu einer Zeit, zu der Computer noch raumfüllende Maschinen waren, gab es sogenannte Operator, die sich den ganzen Tag lang damit beschäftigt haben Computer mit Programmen auf Lochkarten oder Bändern zu füttern und auf das (hoffentlich korrekte) Ergebnis einer Reihe von Rechenoperationen zu warten. Als sich Programmierer im Jahr 1964 zum ersten mal Gedanken machten, wie man diese Prozesse automatisieren kann, wurde das erste Betriebssystem entworfen. Heutzutage sind sie auf jedem Rechner, den man vorfindet vorhanden und bilden den Grundstein einer Softwareumgebung, um Rechenmaschinen komfortabel und effizient nutzen zu können. Nerds wollen in der Regel relativ genau wissen, wie Systeme funktionieren. Um am besten zu verstehen, wie so ein System funktioniert schreibt man es selber. Die Grundlagen hierzu sollen anhand von Beispielcode und einigen wenigen Konzepten verdeutlicht werden.
Im Laufe eines Informatikstudiums hört jeder Student eine Vorlesung, die sich damit beschäftigt, wie Betriebssysteme funktionieren. Man hört viel über virtuellen Speicher, Swapping, Scheduling, Threads, IPC und noch viel mehr Verfahren und deren Funktionsweise. Da sich das in den Vorlesungen ja alles so einfach anhört fängt man als Nerd in den Abendstunden seines lokalen Hackerspaces an einen eigenen Kernel zu entwickeln. Man liest sich durch die Intel-Manuals und fängt an wilde Interrupt- und Tabellen für die Speicherverwaltung zusammenzuschustern, damit es einem am Ende doch um die Ohren fliegt.
Der Vortrag wird anhand von Beispielcode zeigen, wie man seinen Code initial nach dem BIOS ans laufen bekommt, wie man danach seinen virtuellen Speicher zusammenbaut, Interrupts handlet und sogar Multitasking implementiert.
Vorwissen in Assembler (sehr wenig) und C sind hilfreich.