đ Process āĻ Threads:
đ§ ā§§. Process:
âī¸ Process āĻā§?
āϧāϰā§, āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ⧠āĻāĻŋāĻā§ set of instructions āϞāĻŋāĻā§ āϰāĻžāĻāϞāĻžāĻŽ â āĻ āĻŋāĻ āϝā§āĻŽāύāĻāĻžāĻŦā§ āĻāĻāĻāĻž .js
āĻĢāĻžāĻāϞ⧠āĻā§āĻĄ āϞāĻŋāĻāĻŋāĨ¤
āĻāĻ āĻĢāĻžāĻāϞāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰā§āϰ SSD āĻŦāĻž HDD-āϤ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻĨāĻžāĻā§āĨ¤
â āĻāĻŋāύā§āϤ⧠āϤāĻāύ⧠āĻāĻ āĻā§āĻĄ āĻā§āĻŦāϞ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āĻŽāĻžāϤā§āϰ â āĻ
āύā§āĻāĻāĻž .doc
āĻĢāĻžāĻāϞā§āϰ āĻŽāϤā§, āϝā§āĻāĻŋ āĻļā§āϧ⧠āϞā§āĻāĻž â āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻā§āĻŦāϞ āύā§āĨ¤
âļī¸ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āϰāĻžāύ āĻāϰāĻžāϞ⧠āĻā§ āĻšā§?
āϝāĻāύ āĻāĻĒāύāĻŋ āĻāĻ āĻĢāĻžāĻāϞāĻāĻŋ run āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻāύ:
- āĻāĻ āĻā§āĻĄāĻāĻŋ RAMāĻ āϞā§āĻĄ āĻšā§āĨ¤
- āϞā§āĻĄ āĻšāĻā§āĻž āĻā§āĻĄāĻāĻŋ āĻāĻāĻāĻŋ environment-āĻāϰ āĻŽāϧā§āϝ⧠āĻāĻžāϞ⧠āĻšā§, āϝā§āĻāĻžāύ⧠āϏā§āĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻ āĻāϞāĻŽāĻžāύ environment-āĻā§āĻ āĻŦāϞāĻž āĻšā§ đ ProcessāĨ¤
āĻ āϰā§āĻĨāĻžā§,
āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āĻļā§āϧ⧠āĻā§āĻĄ āϧāĻžāϰāĻŖ āĻāϰā§,
āĻāĻŋāύā§āϤ⧠āϝāĻāύ āϏā§āĻāĻŋ RAM-āĻ āĻāĻŋā§ā§ āĻāĻāĻāĻŋ Active Execution Context āϤā§āϰāĻŋ āĻāϰ⧠āĻāĻŦāĻ āĻāĻžāĻ āĻļā§āϰ⧠āĻāϰ⧠â āϤāĻāύ āϏā§āĻāĻŋāĻ āĻāĻāĻāĻŋ ProcessāĨ¤
āĻāĻ āĻĒā§āϰāϏā§āϏā§āϰ āĻŽāϧā§āϝā§āĻ āĻāϞ⧠āĻā§āĻĄ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ, āĻŽā§āĻŽā§āϰāĻŋ āĻ ā§āϝāĻžāĻā§āϏā§āϏ, CPU āĻāĻžāĻ āĻāϤā§āϝāĻžāĻĻāĻŋāĨ¤
āϤāĻžāĻ āϝāĻāύ āĻŦāϞāĻž āĻšā§, âāĻāĻāĻāĻž āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āϰāĻžāύ āĻšāĻā§āĻā§â â āϤāĻžāϰ āĻŽāĻžāύ⧠āĻŽā§āϞāϤ āĻāĻāĻāĻž āĻĒā§āϰā§āϏā§āϏ āĻāϞāĻā§āĨ¤
đ§° Process āĻāϰ Resources (āĻāĻĒāĻžāĻĻāĻžāύāϏāĻŽā§āĻš)
āĻāĻāĻāĻŋ Process āϝāĻāύ āϰāĻžāύ āĻāϰā§, āϤāĻāύ āϏā§āĻāĻž āĻā§āĻŦāϞ āĻā§āĻĄ āĻāĻžāϞāĻžā§ āύāĻž â āĻŦāϰāĻ āϤāĻžāϰ āĻāϞāĻžāϰ āĻāύā§āϝ āĻ āύā§āĻ Resource āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āύāĻŋāĻā§ āĻāĻāĻāĻŋ process-āĻāϰ āĻŽā§āϞ resource āĻā§āϞ⧠āϤā§āϞ⧠āϧāϰāĻž āĻšāϞā§:
đ§ ā§§. Memory (RAM)
- āĻĒā§āϰā§āϏā§āϏ āĻāϞāĻžāϰ āϏāĻŽā§ āϤāĻžāϰ āĻā§āĻĄ āĻ āĻĄā§āĻāĻž RAMāĻ āϞā§āĻĄ āĻšā§āĨ¤
- Stack, Heap, āĻ Variables āĻāĻāĻžāύā§āĻ āĻĨāĻžāĻā§āĨ¤
âī¸ ā§¨. CPU Time
- āĻā§āĻĄ execute āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§āϏā§āϏ CPUāϰ āϏāĻŽā§ āύā§ā§āĨ¤
- āϝāĻĻāĻŋ āĻ āύā§āĻ āĻĒā§āϰā§āϏā§āϏ āĻāĻāϏāĻžāĻĨā§ āĻāϞā§, āϤāĻāύ CPU scheduling āĻšā§āĨ¤
đī¸ ā§Š. Files / File Descriptors
- āĻā§āύ⧠āĻĒā§āϰā§āϏā§āϏ āϝāĻāύ āĻĢāĻžāĻāϞ āĻĒā§ā§ āĻŦāĻž āϞā§āĻā§, āϤāĻāύ āϏā§āĻāĻŋ āĻĢāĻžāĻāϞ descriptor āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
- āϝā§āĻŽāύ:
fs.readFile()
call āĻāϰāϞ⧠Node.js backend-āĻ file system access āĻāϰā§āĨ¤
đ ā§Ē. Network Accesspng)
- API call, socket connection, āĻ āĻĨāĻŦāĻž web server āĻāĻžāϞāĻžāϤ⧠network ports āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
- āϝā§āĻŽāύ: Express.js āĻ ā§āϝāĻžāĻĒ 3000 port-āĻ listen āĻāϰā§āĨ¤
đ§ĩ ā§Ģ. Threads (Main & Worker)
- Node.js āĻŽā§āϞāϤ single-threaded, āĻāĻŋāύā§āϤ⧠CPU-intensive āĻāĻžāĻā§āϰ āĻāύā§āϝ Thread Pool āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
đ ā§Ŧ. Event Loop & Call Stack
- Node.js asynchronous āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ event loop āĻāĻŦāĻ callback queue āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
đŽ ā§. GPU (Graphics Processing Unit)
- āĻāĻŋāĻā§ process (āĻŦāĻŋāĻļā§āώ āĻāϰ⧠heavy computation āĻŦāĻž graphical rendering āĻāϰ āĻāύā§āϝ) GPU āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
- Modern workloads āϝā§āĻŽāύ: machine learning, video processing, WebGL rendering āĻāϤā§āϝāĻžāĻĻāĻŋāϤ⧠GPU āĻā§āĻŦāĻ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤
- āϝāĻĻāĻŋāĻ Node.js āϏāϰāĻžāϏāϰāĻŋ GPU access āĻāϰ⧠āύāĻž, āϤāĻŦā§ āĻāĻŋāĻā§ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϰ āĻŽāĻžāϧā§āϝāĻŽā§ GPU-āĻā§ compute task āĻāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§ (āϝā§āĻŽāύ
tensorflow.js
,gpu.js
)āĨ¤
đĻ āĻāĻāĻāĻŋ Process āĻā§ āϧāĻžāϰāĻŖ āĻāϰā§?
āĻāĻāĻāĻŋ āĻĒā§āϰā§āϏā§āϏ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻā§āĻĄ āĻāĻžāϞāĻžā§ āύāĻž â āĻāĻāĻŋ āύāĻŋāĻāϏā§āĻŦ āĻāĻŋāĻā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻĒāĻžāĻĻāĻžāύ āϧāĻžāϰāĻŖ āĻāϰā§, āϝā§āĻŽāύ:
đ§ āĻāĻāĻāĻŋ Process āϏāĻžāϧāĻžāϰāĻŖāϤ āϧāĻžāϰāĻŖ āĻāϰā§:
đ§Š Component | đ Description (āĻŦāĻžāĻāϞāĻžā§) |
---|---|
Processor Registers | CPU-āϤ⧠āĻ āϏā§āĻĨāĻžā§ā§āĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻĄā§āĻāĻž āϰāĻžāĻāĻžāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§āĨ¤ |
Program Counter (PC) | āĻā§āύ āϞāĻžāĻāύ āĻŦāĻž āĻāύāϏā§āĻā§āϰāĻžāĻāĻļāύ āĻĒāϰāĻŦāϰā§āϤā§āĻŦāĻžāϰ execute āĻšāĻŦā§ āϤāĻž āĻā§āϰā§āϝāĻžāĻ āĻāϰā§āĨ¤ |
Stack Pointer / Stack Counter | Stack memory āĻāϰ āĻāĻĒ āĻā§āϰā§āϝāĻžāĻ āĻāϰ⧠â āϝā§āĻāĻžāύ⧠āĻĢāĻžāĻāĻļāύā§āϰ āĻāϞ, āϰāĻŋāĻāĻžāϰā§āύ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏ, āϞā§āĻāĻžāϞ āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞ āĻāϤā§āϝāĻžāĻĻāĻŋ āĻĨāĻžāĻā§āĨ¤ |
Memory (RAM) | āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āϰā§āϏā§āϏ āϤāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āĻā§āĻĄ, āĻĄā§āĻāĻž, Stack āĻ Heap āϏāĻš āĻāĻāĻāĻŋ āĻāϞāĻžāĻĻāĻž āĻŽā§āĻŽā§āϰāĻŋ āϏā§āĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ |
đ§Ŧ Multiple Process, Multiple Context
- āĻāĻāĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāĻāĻžāϧāĻŋāĻ āĻĒā§āϰā§āϏā§āϏ āĻāĻāϏāĻžāĻĨā§ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠(Parallel āĻŦāĻž Concurrent)āĨ¤
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āϰā§āϏā§āϏā§āϰ āĻĨāĻžāĻā§:
- āĻāϞāĻžāĻĻāĻž Code Segment
- āĻāϞāĻžāĻĻāĻž Data Segment
- āĻāϞāĻžāĻĻāĻž Stack
- āĻāϞāĻžāĻĻāĻž Heap
āϤāĻžāĻ āĻāĻāĻāĻŋ āĻĒā§āϰā§āϏā§āϏā§āϰ Environment āĻŦāĻž Memory Context, āĻ āύā§āϝ āĻāϰā§āĻāĻāĻŋ āĻĒā§āϰā§āϏā§āϏā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞ⧠āύāĻž āĻāĻŦāĻ āĻŽā§āĻļā§ āύāĻžāĨ¤
đ ⧍. Thread:
đ§ĩ Thread āĻā§?
Thread āĻšāĻā§āĻā§ āĻāĻāĻāĻŋ unit of execution, āĻ āϰā§āĻĨāĻžā§ code execution-āĻāϰ āĻā§āώā§āĻĻā§āϰāϤāĻŽ āĻāĻāĻāĨ¤
āĻāĻŽāϰāĻž āϝāĻāύ āĻā§āύ⧠āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āϰāĻžāύ āĻāϰāĻŋ, āϤāĻāύ āĻĒā§āϰ⧠process āĻāĻž āĻāĻāϏāĻžāĻĨā§ āύāĻž āĻšā§ā§ unit by unit āĻŦāĻž āϧāĻžāĻĒā§ āϧāĻžāĻĒā§ execute āĻšā§āĨ¤
āĻāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ execution unit-āĻ āĻšāϞ⧠ThreadāĨ¤
đ§ āĻāĻāĻāĻŋ Thread āϏāĻžāϧāĻžāϰāĻŖāϤ āϧāĻžāϰāĻŖ āĻāϰā§:
- Stack
- Registers
- Program Counter
āĻāĻāĻāĻŋ āĻĒā§āϰā§āϏā§āϏ⧠āĻāĻāĻžāϧāĻŋāĻ āĻĨā§āϰā§āĻĄ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§, āϤāĻāύ āϤāĻžāĻā§ āĻŦāϞ⧠Multithreaded ProcessāĨ¤
āĻāϰ āϝāĻĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āĻĨā§āϰā§āĻĄ āĻĨāĻžāĻā§, āϤāĻāύ āϤāĻžāĻā§ āĻŦāϞ⧠Single Threaded ProcessāĨ¤
đĸ Node.js Process & Thread
Node.js āύāĻŋāĻā§āĻ āĻāĻāĻāĻŋ Process, āϝā§āĻāĻž Single ThreadedāĨ¤
- āĻ āϰā§āĻĨāĻžā§, Node.js āĻ āĻāĻāĻāĻŋ āĻŽāĻžāϤā§āϰ Thread āĻĨāĻžāĻā§ â āϝā§āĻāĻž āĻāĻāĻāĻžāϰ āĻĒāϰ āĻāĻāĻāĻž āĻāĻžāĻ sequentially execute āĻāϰā§āĨ¤