進程和線程的內(nèi)存組織結(jié)構(gòu)
進程的內(nèi)存組織結(jié)構(gòu)
進程的地址空間
進程地址空間
通用的棧結(jié)構(gòu)
通用的棧結(jié)構(gòu)
進程是操作系統(tǒng)對一個正在運行的程序的抽象腮郊,它是資源分配的最小單位摹蘑,如寄存器,內(nèi)存轧飞,文件等衅鹿,每一個進程以進程控制塊(PCB)的形式來表現(xiàn)。
操作系統(tǒng)會保持跟蹤進程運行所需的所有狀態(tài)信息过咬,也就是進程的上下文大渤。不同進程并發(fā)執(zhí)行,當(dāng)操作系統(tǒng)決定把 CPU 的控制權(quán)從當(dāng)前進程轉(zhuǎn)移到某個新進程時,就會進行上下文切換掸绞,即保存當(dāng)前進程的上下文泵三,恢復(fù)新進程的上下文。
對應(yīng)用程序而言,提供了一個獨立的邏輯控制流和一個私有的地址空間
PCB
線程模型
線程是進程的執(zhí)行單元烫幕,每個線程都運行在進程的上下文中俺抽,共享該進程虛擬地址空間里的代碼、數(shù)據(jù)较曼、堆凌埂、共享庫和打開的文件。
每個線程都有自己的線程上下文诗芜,包括一個唯一的整數(shù)線程 ID瞳抓、棧、棧指針伏恐、PC孩哑、通用目的寄存器和條件碼。
各自獨立的線程棧的內(nèi)存模型并不整齊清楚翠桦,它們都保存在進程虛擬地址空間的棧區(qū)域中横蜒,通常被相應(yīng)的線程獨立訪問,但并不對其他線程設(shè)防销凑。
線程上下文模型