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?