linux核心系列之程式管理(轉)
linux核心系列之程式管理(轉)[@more@] 程式概念:程式執行起來稱之為程式。程式使用task_struct來表示自身資訊。pid,各種連結串列,狀態,核心棧SP,地址空間分配、檔案描述符、及其他各種資源分配情況、時間片、程式統計資訊等。
核心態和使用者態:保護模式下,程式執行狀態分為使用者態和核心態。程式的地址空間一共有4G(32bitsOS),最高的1G為各程式共享的核心資料對映。使用者態程式只能訪問使用者地址空間資料(小於3G),核心態程式可以訪問所有地址空間。程式使用段頁管理虛擬記憶體,GDT中對應核心段的基址(0)與使用者段的基址(3G)不同。根據段描述符(CS,DS)的值判斷該程式是核心態或使用者態程式。使用者態程式只能訪問程式自己的地址空間,使用使用者態堆疊;核心態程式可以訪問核心堆疊(與task_struct在同一物理頁),同時也可以訪問使用者態堆疊。
程式狀態的切換:從使用者態到核心態的轉換稱為切換。引起的原因有系統呼叫和中斷。系統呼叫戶中斷產生時,頁表切換為新程式的頁表,CS/SP切換為核心態段選擇符,IP切換為系統呼叫的目標地址,透過iRet指令切換。
程式切換:根據排程演算法,當從中斷或系統呼叫返回時,如果程式的時間片用盡,會發生程式切換。新選中的程式佔領CPU,CS,mm和SS棧更換為新程式的環境。需要說明,在核心態執行的程式不能被切換出去,進城切換的時機只能是當前程式從核心態轉到使用者態的時候(例如中斷和系統呼叫)
訊號:signal的資訊儲存在task_struct中,傳送訊號(kill)會更新目標程式的task_struct,但是隻有在從核心態返回使用者態時,才對程式的訊號佇列進行檢查並進行處理。
程式關係:根據父子關係,程式狀態等程式排入到各種連結串列中。0號程式是init程式,是所有孤兒程式的父程式
程式間通訊:訊號-直接修改task_struct;檔案對映-線性地址對映同樣的物理頁面;pipe:管道檔案系統,透過檔案系統API進入核心;系統V共享記憶體,訊號燈,訊息佇列:核心資料結構
核心態和使用者態:保護模式下,程式執行狀態分為使用者態和核心態。程式的地址空間一共有4G(32bitsOS),最高的1G為各程式共享的核心資料對映。使用者態程式只能訪問使用者地址空間資料(小於3G),核心態程式可以訪問所有地址空間。程式使用段頁管理虛擬記憶體,GDT中對應核心段的基址(0)與使用者段的基址(3G)不同。根據段描述符(CS,DS)的值判斷該程式是核心態或使用者態程式。使用者態程式只能訪問程式自己的地址空間,使用使用者態堆疊;核心態程式可以訪問核心堆疊(與task_struct在同一物理頁),同時也可以訪問使用者態堆疊。
程式狀態的切換:從使用者態到核心態的轉換稱為切換。引起的原因有系統呼叫和中斷。系統呼叫戶中斷產生時,頁表切換為新程式的頁表,CS/SP切換為核心態段選擇符,IP切換為系統呼叫的目標地址,透過iRet指令切換。
程式切換:根據排程演算法,當從中斷或系統呼叫返回時,如果程式的時間片用盡,會發生程式切換。新選中的程式佔領CPU,CS,mm和SS棧更換為新程式的環境。需要說明,在核心態執行的程式不能被切換出去,進城切換的時機只能是當前程式從核心態轉到使用者態的時候(例如中斷和系統呼叫)
訊號:signal的資訊儲存在task_struct中,傳送訊號(kill)會更新目標程式的task_struct,但是隻有在從核心態返回使用者態時,才對程式的訊號佇列進行檢查並進行處理。
程式關係:根據父子關係,程式狀態等程式排入到各種連結串列中。0號程式是init程式,是所有孤兒程式的父程式
程式間通訊:訊號-直接修改task_struct;檔案對映-線性地址對映同樣的物理頁面;pipe:管道檔案系統,透過檔案系統API進入核心;系統V共享記憶體,訊號燈,訊息佇列:核心資料結構
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-961960/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux核心模組程式設計--替代printk系列(轉)Linux程式設計
- LINUX 核心程式管理Linux
- Linux核心研究系列之可執行檔案格式(轉)Linux
- 揭秘Linux核心偵錯程式之內幕(轉)Linux
- 玩轉webpack系列之webpack核心概念(一)Web
- Linux 程式管理(轉)Linux
- Linux核心程式設計(阻塞程式)(轉)Linux程式設計
- Linux系統管理之程式管理Linux
- Linux核心模組程式設計--阻塞程式(轉)Linux程式設計
- Linux核心之 核心同步Linux
- Linux 核心偵錯程式內幕(轉)Linux
- Linux核心模組程式設計指南(轉)Linux程式設計
- Linux核心程式設計(結論)(轉)Linux程式設計
- linux核心資料結構之kfifo【轉】Linux資料結構
- linux核心管理初步Linux
- Linux運維之程式管理①Linux運維
- linux命令終極系列之(find)(轉)Linux
- Linux核心模組程式設計指南(一)(轉)Linux程式設計
- Linux核心模組的程式設計方法(轉)Linux程式設計
- Linux核心源程式的部分特點(轉)Linux
- 熟悉linux核心配置檔案之 fstab篇(轉)Linux
- 核心管理概述(轉貼)
- 核心管理概述(轉載)
- 水木-給Linux新手 [系列之四] (轉)Linux
- Linux核心模組程式設計--中斷處理程式(轉)Linux程式設計
- Linux核心模組程式設計--系統呼叫(轉)Linux程式設計
- 【轉載】Linux核心除錯之使用模組引數Linux除錯
- (1)Linux效能調優之Linux程式管理Linux
- RHEL7系統管理之核心管理
- Linux程式管理及作業控制(轉)Linux
- Linux系統裡的程式管理(轉)Linux
- IT組織管理的核心-知識管理(轉)
- Linux程式設計之四(轉)Linux程式設計
- LINUX核心升級 (轉)Linux
- Linux核心分析方法(轉)Linux
- LINUX核心升級(轉)Linux
- 《Linux核心修煉之道》 之 高效學習Linux核心Linux
- Linux核心程式設計實戰經驗談(轉)Linux程式設計