Abstract
-
Container that holds all the information needed to run a program, Abstraction over running program
-
2 Components - Address Space, Process Control Block (PCB), stored in Main Memory
-
Process also has a Page Table that translates a given Memory Page to the Memory Address of Memory Frames that stores the actual data
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
- A suspended Process (进程) consists of its Address Space
Child Process
- Has the same UID as its parent
Process Resources
- Address Space
- Register (Include Program Counter and Stack Pointer)
- A list of open File
- Outstanding Software Interrupt
- List of related processes
- Process Scheduling information etc
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