c_learn_2
872
2025-04-01
1.進程,地址空間與線程
一個進程可以使用的全部內存的地址和它們存儲的數(shù)據成為這個進程的 地址空間。我們可以將級才能拿籠統(tǒng)地看成是一個或多個線程與一個地址空間的結合。
進程在系統(tǒng)中的實現(xiàn)方式需要達到兩個目的:
(1)進程的結果必須囊括一個進程的運行狀態(tài),在由于中斷、異常或系統(tǒng)調度進入內核態(tài)時我們應該能夠將進程的運行狀態(tài)放入內存中的某一位置,使我們可以在某一個時間點根據進程的優(yōu)先級接著這次的進度再運行該進程
(2)由于進程在用戶一側對內存進行抽象,我們需要在系統(tǒng)一側包含從抽象內存向實際內存和外存(磁盤等存儲設備)的映射,以便通過抽象內存的地址獲得物理地址和其中存儲的數(shù)據。
為了(1),即在進程中存儲其運行狀態(tài),我們將在進程中存儲處理器狀態(tài)寄存器、指令計數(shù)器、棧指針、通用寄存器等代表了進程目前的運行狀態(tài)的值。由于線代計算機中往往有多個核和多個處理器,我們的程序可以達到 并行(parallelism,即在物理時間上同時進行,區(qū)別于多個進程在處理器上的并發(fā)(concurrency)),因此同一個進程可能同時包含有多個不同的運行狀態(tài)。為了更好區(qū)分進程在一個處理器上的運行狀態(tài)和進程本身的運行狀態(tài),我們引入 線程(thread)概念。每個線程擁有一個線程控制塊(Thread control block,TCB),用來存儲我們上述提到的處理器狀態(tài)寄存器、指令計數(shù)器、棧指針、通用寄存器等數(shù)值,但同一個進程中的所有線程都共享同一個地址空間。
一個用戶進程所看到的內存空間是抽象的,區(qū)別于實際的物理內存,因此為了支持進程從抽象內存獲取物理內存中存儲的信息,我們需要在進程中包含從抽象
任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。