News
Currently, no news are available
Building an Operating System from Scratch
First things first; this is an atypical seminar. We will learn about operating system design and implementation by actually doing it ourselves. You will spend much of your time building and reading up on necessary information, augmented by regular group discussion. The project is a joint venture, where everyone will contribute different pieces to one shared system.
By participating in this seminar you will become deeply familiar with operating systems and how they actually work. So while other courses in the program focus on the concepts and abstractions of operating systems, this seminar focuses on practical experience of everything that is involved. While most of you are unlikely to spend your future developing custom operating systems, your experience will be useful far beyond that (e.g. by understanding how applications really interact with the OS, how software and hardware interact and why, etc...)
For the project we will write a working operating system (mostly) from scratch in C and run it on real cloud hardware. Specfically our goals are:
- Runs on Amazon Web Services ec2 x86 instances
- Supports multiple cores
- Be able to send and receive network packets (probably just udp?)
- Read from and write to storage
- Can run simple applications
This is a substantial endeavor, so depending on how many students sign up, and how things go we may have to scope things down a bit and drop some goals. And of course, if things go miraculously well, we may achieve more.
But to manage expectations: this is an extremely ambitious target, so there will be a lot of compromises and we will not end up with a production-quality OS after one semester.
As a reference point: a seminar with a similar spirit in the past at UdS was "Build an 8-bit Computer from Scratch" (organized by Sebastian Hack & Team) where students jointly designed and built the SaarCPU, a complete 8-bit computer, out of discrete logic gate chips.
The seminar is organized by the operating systems research group at the Max Planck Institute for Software Systems.
Disclaimer
This seminar is relatively implementation-heavy compared to what you may be used to from other courses. The joint project is also much more open ended and less well defined compared to most other course projects. Finally, writing low-level code such as drivers or other operating systems functionality is frequently frustrating. You should also expect to engage in some hairy debugging (e.g. segmentation faults, and memory corruption) typical of low-level systems code.
That said, you will learn a lot about how computers and operating systems actually work, and how to understand and build low-level software. While frustrating at times, the only way to truly learn these lessons is by doing and experiencing this yourself.
Of course the grading will also reflect this, and is not meant to be adversarial.
Logistics
You will spend your time working on the project and discussion asynchronously through the forum and through our regular meeting.
Kick-Off Meeting: To be announced
Regular Meeting: Wednesdays, time to be determined at the kick-off meeting.
Grades: based on participation in all three course components: 60% implementation, 20% documentation, 20% discussion (in class and the forum)
Registration: You need to register through the SIC seminar system between Sep. 5 and Oct 17. (email instructor if for some reason you want to participate not for credit)
Requirements
Critically, since this is a major joint venture project, you have to be able to contribute throughout the semester. This is not a course where you can put off work to the end of the semester when there is a deadline. Others depend on you to complete your pieces.
This seminar is open to senior Bachelor, Masters, and doctoral students. Ideally, students should have already taken courses on system architecture and operating systems, or at the very least be ready to quickly & independently read up on the necessary bits. Bachelor students must have passed the basic courses on Programming 2 or equivalent. Proficiency in C/C++ programming (including low-level aspects such as pointers and memory management) and UNIX development tools (e.g., shell, make, gcc, gdb) is strictly required to succeed in this course.
The language of the seminar is English. All meetings and communication with the course staff will be conducted exclusively in English.
Please reach out to Antoine with any questions: antoinek@mpi-sws.org