main-qimg-f65286fb73e20152c441894b203ca75c.webp

OS = Kernel + Shell + GUI

Kernel is the interaction b/w everything else and hardware. it’s the software that is specific to the hardware itself.

Shell

anything that lets you interact with the OS. can be the GUI itself, i.e main desktop, or text interpretor ex cmd, powershell, bash

GUI and Terminal are just interfaces to your OS.

in most cases, Shell refers to the specific cmd line interpretor.

Terminals/Consoles are the programs that load the shell, and let you input / output. Historically, this was the only way to interact with the computer.

https://superuser.com/questions/144666/what-is-the-difference-between-shell-console-and-terminal

ENVIRONMENT

the runtime environment in which a process will run. there’s a base env which is your OS

ENVIRONMENT VARIABLES

They’re just like programming variables but outside the program and usually at OS or shell session level. It’s a key value pair that’s it.

PATH

Environment variables that contain a path as value, usually an executable.

path should be directories, and not direct files

it doesn’t search more than 1 level down the path

when you type a word like flutter in the shell, the PATH is searched for an executable with that name ex flutter.exe. first entry matched is chosen(incase multiple have same name).

PROCESS

basically an activity, it’s related memory, thread etc

when a program(set of instructions, is loaded from storage to memory, it becomes a process)

each process creates a copy of it’s parents env, and variables. and can pass it down to it’s child processes

hence, these processes can consume these variables

100 processes vs 100 threads?