Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

This project servers as a memory dump of my head. It contains more or less structure data about the technology I’m lerning about and as such the primary purpose of it is to help me remind of details which would others go away. Although it’s trying to be correct it is by no means perfect. It’s subject of continuous changes as I get deeper and deeper in the topics.

If you find it intreresting, found some obvious mistakes or want to contribute feel free to drop me a line at dbognar@protonmail.com

Misconceptions about system programming

  • It’s hard to learn
  • It’s too low level
  • It’s not flexibel enough
  • It’s dangerous and unsafe
  • It takes long to write a program
  • It’s targeting only one platform

Questions to answer:

  • Why does the kernel use a user-space loader (ld.so) instead of loading the shared libraries itself (like it does with the elf binary)?
  • Why do we need argc if the end of argv is marked by a null pointer?
  • Should I write this book in as a set of coding challenges?
    • Every section could start with a challenge description. Eg: print out the CLI arguments
    • It could provide some background knowledge
    • And an implementation of mine