I'm in my third year of electronics engineering and want to understand how operating systems work and how source code becomes machine code. What resources or projects would be a good place to start?
Where should I start learning how operating systems and compilers work?
Answers
Try Nand2Tetris if you want to connect the hardware and software sides. You build up a computer from logic gates, then work your way toward the software that runs on it. Your electronics background should give you a useful starting point for the hardware sections.
It gives you a concrete model to refer back to when you start looking at compilers and operating systems. After that, OSSU Computer Science or Teach Yourself CS can help you find a broader study path.
Reply to this answer
For the language side, Crafting Interpreters is free online and very project focused. It walks through building a parser and interpreter, then a bytecode compiler and virtual machine.
Bytecode for a VM isn't the same thing as native machine code, but building those pieces is a useful way to see how source text gets transformed into something executable.
Reply to this answer
If puzzles keep you interested, take a look at Turing Complete. It's a game where you build up components like logic gates, registers and an ALU, then program a CPU. That covers the hardware side more than OS internals, but it's a hands-on way to explore it.
Reply to this answer
For operating systems, try pairing a general OS book with one focused on Linux. The general book can explain the concepts, while the Linux material gives you a concrete system to examine. Code: The Hidden Language of Computer Hardware and Software is another option if you want a broader introduction to how hardware and software fit together.
Reply to this answer
Add your answer
Answers are reviewed before publication.
Related Discussions