《Linux核心設計與實現》第3章讀書筆記

2022-08-30 15:15:17 字數 1261 閱讀 5869

第三章 程序管理

一、程序

1.程序就是處於執行期的程式,但並不侷限於可執行**。實際上,程序是正在執行的程式**的實時結果。

2.執行執行緒是在程序中活動的物件

3.在現代作業系統中,程序提供兩種虛擬機制:虛擬處理器和虛擬記憶體。

4.程序是呼叫fork()系統的結果,最後程式通過exit()系統呼叫退出執行。

二、程序描述符及任務結構

核心把程序的列表存放在叫做任務佇列的雙向迴圈鍊錶中。鍊錶中的每一項都是型別為task_struct、稱為程序描述符的結構。

1.分配程序描述符

linux通過slab分配器分配task struct,以達到物件復用和快取著色的目的

2.程序描述符的存放

核心通過乙個唯一的程序標識值或pid來標識每個程序,核心把每個程序的pid存放進它們各自的程序描述符中。

3.程序狀態

程序描述符中的state域描述了程序的當前狀態

4.程序上下文

當乙個程式執行了系統呼叫或者觸發了某個異常,它就陷入核心空間。此時,我們稱核心「代表程序執行」並處於程序上下文中。

三、程序建立

1.unix的程序建立方式

2.寫時拷貝

四、執行緒在linux中的實現

1.執行緒機制提供了在同一程序內共享記憶體位址空間執行的一組執行緒,這些執行緒可以共享開啟的檔案和其他資源。linux系統中並沒有專門的執行緒機制,執行緒僅視為與其他程序共享某些資源的程序。

2.建立程序

3.核心執行緒

核心執行緒和普通程序區別在於核心執行緒沒有獨立的位址空間,只在核心空間執行,從來不切換到使用者空間去。

五、程序終結

1.該任務大部分依賴於do_exit(),該函式永不返回

2.刪除程序描述符

該任務是和清理工作分開進行的,因為這樣在程序終結之後系統仍然可以獲得它的資訊

通過release_task()實現程序描述符的刪除

3.解決孤兒程序

《Linux核心設計與實現》 第4章(程序排程)

排程程式 在可執行態程序之間分配有限處理器時間資源的核心子系統 多工作業系統 同時併發地互動執行多個程序的作業系統 linux提供了搶占式的多工模式,對程序強制的掛起動作即搶占 程序可分為 i o消耗型 和 處理器消耗型 i o消耗型指程序的大多數時間用來提交i o請求或等待i o請求 處理器消費型...

《Linux核心設計與實現》第5章讀書筆記

第五章 系統呼叫 一 系統呼叫概述 系統呼叫在linux中稱為syscall,返回的值是long型變數 如果出錯,c庫會將錯誤 寫入errno全域性變數 通過呼叫perror 函式可以把該變數翻譯成使用者可以理解的錯誤 為了保證32和64位系統相容,系統呼叫在使用者空間和核心空間有不同的返回值型別 ...

Linxu核心設計與實現 第2章 從核心出發

主要內容 linux核心基本知識 www.kernel.org git clone git git pull 核心發布 patch p1 patch x.y.z 目錄說明 arch 特定體系結構的 block 塊裝置i o層 crypo 加密api documentation 核心原始碼文件 dri...