Hacker News new | past | comments | ask | show | jobs | submit login

Anyone know of any other resources about operating systems for beginners?



For an introduction to the theory, Nand2Tetris[0] starts you out with nothing more than an xor gate from which you construct every other logic gate, implement a CPU, then in part 2 you build an OS on top of that. Although that sounds intimidating, it's actually incredibly accessible. I went in knowing nothing about the topic, and was able to implement the CPU by the end of the course, which was a major confidence boost. Also I found the lessons learned from the course (basically, layer simple systems with clear interfaces together to get complex systems) extended well beyond just CPUs and OSes to software design in general.

That uses a very simple educational architecture designed for ease of learning, though. If you prefer a good introductory resource for real-world operating systems, I just finished Georgia Tech's Intro to OS graduate course[1] and found it very accessible as well, and now feel reasonably comfortable with the theory when reading about OS topics elsewhere.

[0] http://www.nand2tetris.org/

[1] https://www.udacity.com/course/introduction-to-operating-sys...


I haven't done the course, but I'm fairly sure that XOR isn't a universal gate, so you probably don't start out with "nothing more than an xor gate." Based on the name, I would guess you start out with only NAND, which is a universal gate.


Sorry, obviously yes, it starts with NAND. No idea where I got XOR from.


I did nand2tetris something like 7 years ago, it was a pretty fun introduction to digital logic. I remember hitting a point where I couldn't continue after designing the ALU due to either a paywall, something missing, or the Java software being broken. Not sure if it's been fixed, but I'm guessing running in an older JVM would have probably worked.


I did it last year through Coursera (it's what pushed me to apply for my current master's program) and got the certificate, so I was able to complete everything. I don't remember there being any special measures taken on my end to get it to work. Dunno what the issue was, if something was fixed in the intervening time, or what.


I haven't read it but I've seen https://github.com/0xAX/linux-insides posted here a few times.

Also https://littleosbook.github.io/


Sweet, this will help (hopefully this will also help when I come around to taking a formal operating systems course). Sorry for the noob question but I should really migrate over to a Linux-based computer if I would like to work with operating systems extensively, right? If so, any recommendations in regard to computers? Right now for all my software needs I use Mac OS.


I haven't done much myself, but I think a lot of people working on hobby operating systems use emulators or virtual machines to make development easier. Qemu and VirtualBox are popular and both run on macOS.

If you want to hack on your main operating system, then yeah, you'll probably want to switch to Linux, but I wouldn't do that yet.


You're right, good call.


I think you should be able to get away with using macOS. Most tools you’ll need are for Unix systems anyway.

If you were on Windows, that would be a different story.


What do you mean? There's lots of C tutorials, but the Mac OS command line is bash.


Sorry about the confusion, I just read the preface:

> This book is will be especially beneficial to students who’ve just finished their first C/C++ course.

That's what I was looking for.


http://www.learn-c.org/ looks good, I've also got https://learncodethehardway.org/c/ but not everyone will like that style.


Thank you! I have a general grasp of C but these will help. I also have The C Programming Language by Brian Kernighan and Dennis Ritchie - to which I now have a exciting reason to get around to.


You may also find interesting the Beej's Guides. https://beej.us/guide/


+1, those guides are excellent!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: