If you're interested in this type of stuff I can personally recommend MIT's 6.828 course (Operating Systems Engineering) as an additional resource. Specifically, you'll want to take a look at xv6, a teaching OS implemented for the course (http://pdos.csail.mit.edu/6.828/2014/xv6.html). The OS is small enough to print as cross referenced code listing (http://pdos.csail.mit.edu/6.828/2014/xv6/xv6-rev8.pdf) and has a book that fully explains each piece (http://pdos.csail.mit.edu/6.828/2014/xv6/book-rev8.pdf). You are only 9,000 lines of code away from fully understanding basic operating systems concepts!
By far one of the most satisfactory things (and also hair reducing things) I've had as a long term hobby is: O/S development. Been doing it seriously for just over a year now, it's slow because it is purely free time. Was working happily on the kernel but decided to go back and build a bootloader after I got to higher half kernel and was messing around with the GDT base address overflow hack. It's now turned into a multi-stage boot loader, because I appreciate the idea of your system have full control over your own partition, nothing else.
I enjoy going to http://wiki.osdev.org for a broad overview and then hitting the manuals for the details; sometimes that manual and note book session can take up to 3 days of my free time haha.
I especially love writing custom tools around the development process; I like to call it reducing reliance - I found that this really helps solidify concepts in my mind; although making the process even slower, I feel comfortable at every stage.
I highly recommend everyone to go through the book http://www.linuxfromscratch.org/ before, or as a complementary direction to, diving into any "operating system" resources mentioned on this page. (you could try this on a QEMU/VMWare/VirtualBox/KVM/whatever instance instead of risking your current hard-drive partition setup).
(alert: it's not really a book, it's a project: to compile and install linux without using any distro! the whole process could take somewhere from 1 day to 1 week, depending on the speed of your machine and your command-line skills.)
Because then you would discover (if you haven't already) that what all these people call "operating system" is essentially only a nucleus of the operating system (kernel) and that there is much more to an operating system than whatever is discussed in an OS class.
Also LFS is enlightening in ways I may not have expressed here. If you successfully go through the process, your first thought might be to roll your own linux distro!
I developed a from-scratch operating system as part of my PhD thesis. We initially ran it on qemu due to its speed and simplicity, but the truth is that while qemu would run something developed on real hardware, it would also run a lot more. What it accepted was very, very loose and when you developed for qemu, you generally couldn't take it and run it on real hardware without days worth of debugging and trying to figure out where qemu did things just a little more loosely than actual hardware did.
We ended up using Bochs for that purpose, which is a lot slower but a lot more faithful (and unfortunately lacks a lot of secondary hardware that's important, but it will take you a long time in development before you hit that particular limitation).
For those that really want to build everything from scratch, including hardware, Niklaus Wirth has revised his Project Oberon book, including the Verilog files
There's also the tried and true Lions' Commentary on UNIX 6th Edition with Source Code pdf floating around to understand what's going on in the workings of a timesharing OS.
Nickolai Zeldovich a current MIT professor wrote HiStar OS from scratch and it's source is still available online to view how a minimally trusted system could work http://www.scs.stanford.edu/histar/
While you can find a lot of video lectures (complete courses) about OS dev, I'd really like to have some Database systems dev course from coursera or any other source.
This is so exciting! I never got to write my own boot sector in college, our lab exercises were kind of advanced and we had a lot of starting code.
That document inspired me to create a Github repo with only the code, split into micro lessons. Feel free to check it out, I'll update it at the same pace that I process the document and learn stuff myself https://github.com/cfenollosa/os-tutorial
I was sad that the disk driver section was unfinished. How does the disk driver for a spinning disk work? Does it take into account any physical properties of the needle?
Been there, done that! Apart from this contributing to my grade, I still miss the point of the usability nowadays. I wouldn't say this gives you a real knowledge on how modern ooerating systems work. On the other side in the OS/C and C++ modules (the link is below) you can find good entry points for kernel programming, which has proven useful few times.
This looks really interesting. Another course / book that I have used in the past which was great for getting to grips with the ideas of an entire system from scratch was http://www.nand2tetris.org/
The page referenced says that POTATOES implements a broad range of operating system concepts and features, e.g. multitasking, paging, an extensive I/O subsystem as well as a custom file system, and runs on x86 hardware.
Seems nice at first glance, but where the topics start to get a little less trivial (where, for example, the brokenthorn series on OSdev stop being relevant as well: the harddisk driver), the draft ends.
[+] [-] timsally|11 years ago|reply
It's been a few years since I took the class but it was an absolute blast. The offering in 2011 has recorded lecture videos (http://pdos.csail.mit.edu/6.828/2011/schedule.html).
[+] [-] theoutlander|11 years ago|reply
Have you done any work in a related project after taking this course?
[+] [-] journeeman|11 years ago|reply
[+] [-] charliefg|11 years ago|reply
I enjoy going to http://wiki.osdev.org for a broad overview and then hitting the manuals for the details; sometimes that manual and note book session can take up to 3 days of my free time haha.
I especially love writing custom tools around the development process; I like to call it reducing reliance - I found that this really helps solidify concepts in my mind; although making the process even slower, I feel comfortable at every stage.
[+] [-] yudlejoza|11 years ago|reply
(alert: it's not really a book, it's a project: to compile and install linux without using any distro! the whole process could take somewhere from 1 day to 1 week, depending on the speed of your machine and your command-line skills.)
Because then you would discover (if you haven't already) that what all these people call "operating system" is essentially only a nucleus of the operating system (kernel) and that there is much more to an operating system than whatever is discussed in an OS class.
Also LFS is enlightening in ways I may not have expressed here. If you successfully go through the process, your first thought might be to roll your own linux distro!
[+] [-] Blackthorn|11 years ago|reply
Don't.
I developed a from-scratch operating system as part of my PhD thesis. We initially ran it on qemu due to its speed and simplicity, but the truth is that while qemu would run something developed on real hardware, it would also run a lot more. What it accepted was very, very loose and when you developed for qemu, you generally couldn't take it and run it on real hardware without days worth of debugging and trying to figure out where qemu did things just a little more loosely than actual hardware did.
We ended up using Bochs for that purpose, which is a lot slower but a lot more faithful (and unfortunately lacks a lot of secondary hardware that's important, but it will take you a long time in development before you hit that particular limitation).
[+] [-] felixrabe|11 years ago|reply
Some pointers: http://www.landley.net/ols/ols2007/tutorial.txt, found via https://encrypted.google.com/search?hl=en&q=linuxfromscratch...
[+] [-] pjmlp|11 years ago|reply
http://www.inf.ethz.ch/personal/wirth/ProjectOberon/index.ht...
So you could have your own graphical workstation. :)
[+] [-] dobbsbob|11 years ago|reply
Nickolai Zeldovich a current MIT professor wrote HiStar OS from scratch and it's source is still available online to view how a minimally trusted system could work http://www.scs.stanford.edu/histar/
[+] [-] peer2pper|11 years ago|reply
[+] [-] theoutlander|11 years ago|reply
[+] [-] theoutlander|11 years ago|reply
http://www.sal.ksu.edu/faculty/tim/ossg/index.html
http://joelgompert.com/OS/
http://www.csi.ucd.ie/staff/jcarthy/home/alp/alp-05.pdf
http://www.superfrink.net/athenaeum/
http://www.cs.utah.edu/flux/oskit/html/oskit-www.html
http://duartes.org/gustavo/blog/post/how-computers-boot-up/
http://duartes.org/gustavo/blog/post/kernel-boot-process/
http://www.ibm.com/developerworks/library/l-linuxboot/index....
http://www.osdever.net/bkerndev/Docs/title.htm
http://sourceforge.net/p/oszur11/code/ci/master/tree/
http://www.codeproject.com/Articles/737545/Writing-a-bit-dum...
http://freevideolectures.com/Course/2653/CSE-30341-Operating...
[+] [-] zura|11 years ago|reply
[+] [-] carlesfe|11 years ago|reply
That document inspired me to create a Github repo with only the code, split into micro lessons. Feel free to check it out, I'll update it at the same pace that I process the document and learn stuff myself https://github.com/cfenollosa/os-tutorial
[+] [-] aetherspawn|11 years ago|reply
[+] [-] chrismsnz|11 years ago|reply
[+] [-] toddkazakov|11 years ago|reply
[+] [-] theoutlander|11 years ago|reply
[+] [-] sigjuice|11 years ago|reply
[+] [-] Swinx43|11 years ago|reply
[+] [-] valevk|11 years ago|reply
[+] [-] whitten|11 years ago|reply
[+] [-] cordite|11 years ago|reply
Though ultimately I have no plans to get into the kernel space for development.
[+] [-] rubynl|11 years ago|reply
[+] [-] joshvm|11 years ago|reply
http://www.cs.bham.ac.uk/~exr/lectures/opsys/13_14/lectures....
[+] [-] swartkrans|11 years ago|reply
[+] [-] andrewchambers|11 years ago|reply