Gustavo Duarte

manybutfinite.com · Personal blog · on HN since 2018

Gustavo Duarte explains how computers work at a low level, covering memory, CPUs, booting and the Linux kernel.

What HN saysCommenters call his memory-layout post probably the best source for understanding Linux memory, recommend his archives, and want updated versions.
35HN people shared it
12linked it in comments
29stories submitted
913story points
3 years agolast shared
2018people per year2026

Most-shared posts

  1. 1
    Anatomy of a Program in Memory (2009)
    5 people · 115 points · first shared 2018 · 26 comments on HN
  2. 2
    iPhones, Armed Robbery, and Hacking (2018)
    5 people · 25 points · first shared 2018 · 5 comments on HN
  3. 3
    Goto and the folly of dogma (2018)
    4 people · 78 points · first shared 2018 · 63 comments on HN
  4. 4
    How Computers Boot Up (2008)
    3 people · 168 points · first shared 2019 · 24 comments on HN
  5. 5
    What does an idle CPU do? (2014)
    2 people · 328 points · first shared 2019 · 101 comments on HN
  6. 6
    First Recorded Usage of “Hacker” (2008)
    2 people · 128 points · first shared 2019 · 18 comments on HN
  7. 7
    Page Cache, the Affair Between Memory and Files (2009)
    2 people · 51 points · first shared 2018 · 7 comments on HN
  8. 8
    The Linux Kernel Boot Process
    2 people · 6 points · first shared 2018 · discussion on HN
  9. 9
    Covid-19 Data Sources for Programmers
    2 people · 5 points · first shared 2020 · discussion on HN
  10. 10
    How the Kernel Manages Your Memory (2009)
    2 people · 4 points · first shared 2018 · discussion on HN
  11. 11
    Understanding and Visualizing Covid Growth in the US
    2 people · 3 points · first shared 2020 · discussion on HN
  12. 12
    Archives
    2 people · first shared 2018
  13. 13
    The thing king
    2 people · first shared 2021
  14. 14
    Home Row Computing
    1 people · 1 points · first shared 2018 · discussion on HN
  15. 15
    Journey to the Stack (2014)
    1 people · 1 points · first shared 2023 · discussion on HN

What HN people wrote when they linked it

deckard1 · 2023-04-03
this is probably the best source to actually understand how memory works in Linux: https://manybutfinite.com/post/anatomy-of-a-program-in-memory/ [1] You can't really understand mmap/sbrk without understanding virtual memory and process space layout. [1] Images are broken. Just open https://static.duartes.org/img/blogPosts/kernelUserMemorySplit.png and go to advanced and "Proceed to static.duartes.org" to workaround their https issues. The duartes.org host is owned by the blog author. Refresh the blog article and images should load now.
nerdponx · 2019-07-22
Would love to see a "2019 update" for this (and its predecessor post, https://manybutfinite.com/post/motherboard-chipsets-memory-map/)
Arkanosis · 2018-09-15
If you enjoy this article, I highly recommend the other articles in the archives [1], especially the 2008-2009 series. By the way, the author also created Grokbit [2], a search engine for source code that's just… amazing. [1] https://manybutfinite.com/archives/ [2] https://grokbit.com/
meepmorp · 2021-03-09
I realize it's not what you're referring to, but the context and terminology of your comment reminded me of this: https://manybutfinite.com/post/the-thing-king/
0zymandiass · 2020-09-09
Ah. Yeah. The motherboard just loads BIOS/UEFI into a predefined memory address and then starts the CPU This is a pretty good explanation https://manybutfinite.com/post/how-computers-boot-up/ > In a multi-processor or multi-core system one CPU is dynamically chosen to be the bootstrap processor (BSP) that runs all of the BIOS and kernel initialization code These days, the "bootstrap processor" is a separate core that your OS can't see. On Intel it's the IME (running Minix) and on AMD it's the PSP (ARM TrustZone)
benreesman · 2019-07-01
I also prefer a GNU userland, but Dave Cutler and his team did a pretty serious job with the NT kernel. A post from a blog I like a lot about how Linux and NT aren’t so different: https://manybutfinite.com/post/how-the-kernel-manages-your-memory/.
dang · 2019-03-17
Yes. But the first recorded use of "hacker" did have to do with phone systems. I wonder what the first recorded use of "phreaker" is? https://manybutfinite.com/post/first-recorded-usage-of-hacker/
marcell · 2019-01-19
This article should give you some of the keywords to start Googling: https://manybutfinite.com/post/what-your-computer-does-while-you-wait/
sargstuff · 2024-01-10
Programming languages typically operate in middle of one higher/ one lower order level of logic. DNA describes hyperbolic multi-level of logic. The lowest level programming language (assembly) is designed to map/correspond/translate directly to hardware electronic bits. Where, cpu emulates version of turing machine on assembly instructions. And cpu/hardware is under control of OS ( post-pc boot strap ). --- The mapping between hardware & assembler may static (compiled) or interpreted in real-time into a sequence of boolean AND's and OR's. At the assembly programming language level, the programming language 'TERMINAL' construct is 1:1 with hardware. Such abstractions typically conveyed using BNF and/or various calculi such epsilon and lambda. As one progresses through higher level programming lanugages, have to work one's way through more and more non-ternmal instructions (aka grammar) to get to just the TERMINAL value to access that 1:1 mapping to 'run'. --- Given constraints on article length, going to reduce the bodies hyperbolic geometry descriptions down to a simplified analytic geometric analogy via bodies largest organ -- the skin. Can look at the skin as mobious strip where, gi tract is internal side compliment of external skin. Organs can be views as klein bottle chained together & interact/influence each other (per flow through klein bottle opening and/or perfusion of klein bottle surface. Scaling down the cline bottle to cell & simplfied 2d…
0x0203 · 2021-10-25
One of the easiest ways to get into writing your own kernel is to start with the OS Dev wiki [0]. Both the wiki and their forums are a great place for getting your feet wet. For more general information, there are also a handful of articles and/or blog posts that I've come across when I was getting started that gave a very good introduction to many of the low-level components of how computers work and what the OS needs to do to run them. One of my favorites was Many But Finite [1]. Check out a bunch of his posts about the memory map, the computer boot process [2], cpu rings, etc... Not exhaustive by any means, but good, well-presented info. Many other such sources exist; maybe others will share their favorites. And if you'd just like to get a more gentle introduction into actual OS code than the monster that is Linux, maybe try looking at some of the BSD's. NetBSD [3] and OpenBSD [4] are remarkably easy to navigate and follow from a code flow perspective, and if you just want to see how things work in a real OS, it's both a good reference and a good place to start. [0] https://wiki.osdev.org/Main_Page [1] https://manybutfinite.com/archives [2] https://manybutfinite.com/post/how-computers-boot-up [3] http://netbsd.org/ [4] https://www.openbsd.org/

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close