There was a similar topic on HN about trying to know everything in a modern computer system, like in old days with those simple CPUs and simple devices .. But now even an OS developer can't become expert in every components due to the complexity of modern computer systems. I am wondering is there any effort that tries to help people get there? OS development and source code explanation tutorials are very good examples, but most of them are really really old and focused on basic functionality..
I have spent the last year developing an Operating System as my Bsc dissertation. In September I will begin a PhD, the focus of which firmly resides in OS design.<p>I may be under qualified to say this, but I believe pretty strongly that the number of people that truly understand everything that happens when they use a computer is tending towards zero. This is partially the fault of rising hardware complexity, but more fundamentally your Intel/AMD CPU, your SSD etc is not open source. It is unlikely then that you will be able to understand exactly what your computer is doing when you execute an instruction, because Intel will not tell you how it works, only that it does. You could of course reverse engineer the chips, but I do not believe that anybody has.<p>There are a number of places you can go to learn more about how modern systems work, I will list the fruitful resources I have used below.<p>- wiki.osdev.org/Main_Page<p>This wiki has a lot of valuable information, if you have not already found it.<p>- www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html?iid=tech_vt_tech+64-32_manuals<p>The Intel manuals describe how the CPU frontend functions, but does not explain how this functionality is implemented on the backend. The problem here is volume. The combined volumes weigh in at over 3300 pages.<p>- scholar.google.com<p>- Wikipedia<p>I hope this has been helpful - good luck!
Raspberry Pi was an attempt to get people (kids especially) thinking about computing at a lower level than the modern windowed OS/smart phone OS. I've done a bit of bare metal programming on it myself which is a good way to get a feel for the ARM processor, without an OS in the way. There's a project here which is a tutorial on building an OS on the RPi from the ground up:<p><a href="https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/" rel="nofollow">https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/</a><p>I have also done a small amount of FPGA work which is more towards the hardware level, bypassing a CPU altogether.
Have you looked at <a href="http://www.nand2tetris.org/" rel="nofollow">http://www.nand2tetris.org/</a>
and the book The Elements of Computing Systems, MIT Press, By Noam Nisan and Shimon Schocken?<p>"The site contains all the software tools and project materials necessary to build a general-purpose computer system from the ground up. We also provide a set of lectures designed to support a typical course on the subject."
Designing and building a CPU from scratch is still possible; in fact it's easier now (using an FPGA and a hardware design language) than it was a few years ago (using 7400-series TTL chips and wire wrap). It's old, but I highly recommend the book <i>Understanding Digital Computers</i> by Forrest M. Mims (1987). It teaches the architecture of a four-bit computer <i>completely</i> and is sufficient to gain a foothold from which to read Hennessey and Patterson. From there, read Gordon Bell's description of the VAX (and <i>The Soul of a New Machine</i>). For perspective, learn about the architecture of Burroughs and the IBM AS/400.<p>I can think of no better way to grok the underlying hardware. Write a simple assembler. Next, begin writing an OS.
Niklaus Wirth's Oberon system (<a href="http://projectoberon.com/" rel="nofollow">http://projectoberon.com/</a>) includes a complete CPU (in Verilog), compiler, and OS. I haven't studied it, though.<p>For a slightly more common architecture (although hopefully we are entering an FPGA-enabled golden age), try Harris & Harris's "Digital design and computer architecture". It covers the MIPS designs (using both SystemVerilog and VHDL simultaneously) in H&P's "Computer organization and design", but in a more compact and systematic way (omitting H&P's broad but shallow coverage of advanced topics).
One of the ideas behind of "Trillek" game is having a computer were you can do anything like could do you do in a old computer of the 80's. So, is possible know everything about this computer for a normal personal.
<a href="https://github.com/trillek-team/trillek-computer" rel="nofollow">https://github.com/trillek-team/trillek-computer</a><p>Obviously , the trick is that we have a computer defined by the emulation software and not by real hardware, so it allow to make some short-cuts and simplifier some stuff that in a physical computer will be more problematic.