CH1 Basics of the Linux Kerne
1.3.1 Processes and threads
對於每個 process 而言其皆為獨立的,彼此之間不能存取彼此的資料,對於 thread 而言可以執行同一個任務並共享資料,在 linux 核心中不特別區分 process 以及 thread,其中最小的排程單位為一個 thread 而每一個 thread 都有一個獨特的 pid
屬於相同 process 的 thread 會有一個 TGID,若只有一個 thread 的情況下其 PID 以及 TGID 相等,而在 multithread 之下每個 thread 有不同的 pid 但是共享同一個 TGID
thread 跟 process 真正的區別在於 thread 共享相同的記憶體位址,使用共享記憶體並行處理並進行溝通
在 process 之間進行切換需要藉由排程器進行 context switch 過程為 cpu 停止 process 的執行,切換到排程器的運行,由排程器紀錄 process 目前執行到的位置,並喚醒其他 process,而對於不同 process 的 thread 切換必須要進行 TLB 內容切換所以是一個龐大的消耗