Abstract


Kernel not a process!

OS System Program like the Init System and the shell are processes, but the kernel itself isn’t a process!

Communication among processes

Process usually don’t share Memory Frames among themselves for isolation purposes. We need Inter-Process Communication for communication among processes.

Process memory usage

You can check the detailed breakdown of process memory usage but cat /proc/<pid>/statm on Linux Kernel. You refer to ChatGPT to make sense what the value represent.

Info

VmSize represents the size of Virtual Memory assigned to a process.

VmRSS represents the size of Memory Frames a process is currently using.

Core Image

Child Process

  • Has the same UID as its parent

Process Resources

Process State


  • Ready to Run: could be running but CPU gave processing power to some other processes
  • Block: process is waiting for things like I/O to finish working (eg. waiting for file to be read)

Queuing Model for State Transition

  • Ready queue to hold the processes that are ready to run
  • Blocked queue to hold processes that are waiting for things like I/O to finish working (eg. waiting for file to be read)

procs


  • A ps replacement written in Rust
brew install procs # Installation 
 
# Alias to ps, and add in config file, add the following line to .zshrc
alias ps='sudo procs --load-config <path_to_your_config.toml>' # Refer to https://github.com/dalance/procs?tab=readme-ov-file#configuration for more info on the config.toml