Skip to content
Vaisakh P S edited this page Sep 3, 2024 · 3 revisions

Welcome to the systemsw-rampup wiki!

This wiki page is intended to help you rampup in to several key technologies involved in System Sofware domain ranging from Linux Kernel, Bootloaders, Embedded Systems, Compilers etc.

About Me

Hello, I am Vaisakh, a System Software professional and hobbyist. Been working in to this domain for more than 18 years now. Not much of a talkative person, please feel free to know more about me in the below links.

About this wiki

The intentio of this wiki is to host relevant references and a few practical assignments to help every individuals to ramp up in to the domain that has been a source of great research and professional interest for me for more than a decade and half.

Unlike other mainstream domains of Software Development, this one requires an individual to develop keen insights in to core domains of:

  • Computer Organization
  • Operating Systems
  • Compilers
  • Bootloaders
  • Performance Engineering and many more.

We will not get in to working assignments of programming languages, as I believe, there are plenty of resources available already to cover those. However, for the sake of understanding concepts in certain programming languages related to tackling low-level problems and operations, we will touch upon concepts and assignments related to the same.

Without further adeu, let me get right in to the topics. The section listed below gives the top level listings to topics to cover. Please feel free to share your feedback on this to improve this content and approach of learning.

Topics

Computer Organization

  • Memory Hierarchy
  • Pipelining and Superscalar Processors
  • Performance (Monitoring &) Engineering
  • Simulators

Build Systems & Cross Platform Development

  • CMake
  • Entry-level Concepts of Cross Compilation
    • Cross Compilation Usage
    • Libc

Operating Systems

  • Building & Running Linux Kernel
  • Looking under the hood
    • Memory Management
    • Scheduler Concepts
  • Device Drivers
  • Observability
    • strace
    • eBPF
  • Userspace Concepts
    • Memory Allocators
  • Extending Linux Kernel
    • Adding System Call
    • Loadable modules

Compilers

  • Binutils
  • Building Compilers
    • Building and usage of Cross Compilers
    • Building and usage of LLVM/Clang
    • Building Android Toolchain
  • Sanitizers
  • Compiler Optimizations
    • PreLink Optimizations
    • Link-time Optimizations
    • Post-link Optimizations
  • LLVM/MLIR

Bootloaders

Embedded Systems

Android

Acknowledgement

I am greatly in debt to several people for assisting me in specializing in to this domain, as they have contributed in to developing a rich set of online and offline resources for professionals and hobbyist like us to develop indepth understanding.