




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、內(nèi)容(nirng) 進程管理 內(nèi)存(ni cn)管理 虛擬文件系統(tǒng)了解Linux內(nèi)核(ni h)核心功能的基本原理結構,引導源碼閱讀第1頁/共28頁第一頁,共29頁。Linux系統(tǒng)結構計算機硬件體系結構相關(xinggun)代碼進程(jnchng)管理內(nèi)存(ni cn)管理文件系統(tǒng)模塊模塊接口設備驅(qū)動驅(qū)動接口系統(tǒng)調(diào)用應用程序標準函數(shù)庫kernel第2頁/共28頁第二頁,共29頁。Linux系統(tǒng)(xtng)執(zhí)行框架地址(dzh)空間內(nèi)核(ni h)功能函數(shù)內(nèi)核線程1內(nèi)核線程2內(nèi)核線程3內(nèi)核線程4內(nèi)核線程5內(nèi)核線程n進程1進程2進程3進程n用戶態(tài)內(nèi)核態(tài)第3頁/共28頁第三頁,共29頁。進程(jnc
2、hng)和線程的區(qū)別 線程是系統(tǒng)最小的執(zhí)行流單位,一個線程就是(jish)一個執(zhí)行過程,是任務調(diào)度的基本單位。 進程是線程和資源的容器,一個以上的線程組成一個進程,在同一個進程中的線程共享進程資源。資源(zyun)線程1線程2線程n第4頁/共28頁第四頁,共29頁。Linux內(nèi)核(ni h)進程和線程表示 Linux現(xiàn)行內(nèi)核淡化(dn hu)了進程和線程的關系,原則上不區(qū)分進程和線程。 在Linux內(nèi)核中使用(struct task_struct)表示一個任務(Linux中稱為進程,也可以稱為線程) 多個 task_struct 共享資源和進程空間,實際就構成了一個進程(線程組),這些task
3、_struct實際就是這個進程的線程,通常在Linux書上將task_struct直接就稱為一個進程。第5頁/共28頁第五頁,共29頁。Linux內(nèi)核進程(jnchng)和線程表示taskstaskstaskstaskstasks進程(jnchng)1進程(jnchng)2進程3創(chuàng)建進程有幾個函數(shù)fork exec clonestruct list_head *group_leaderstruct list_head thread_group第6頁/共28頁第六頁,共29頁。Linux進程(jnchng)組織關系init子進程(jnchng)1子進程(jnchng)2子進程3子進程4子進程5子
4、進程6父進程children子進程slibing子進程slibing子進程slibing通過pstree命令可以顯示出進程樹第7頁/共28頁第七頁,共29頁。比較(bjio)Windows進程線程管理 Windows進程使用KPROCESS表示進程對象,能夠通過句柄單獨(dnd)操作進程對象 線程是通過ETHREAD線程塊來表示,多個線程塊鏈接到KPROCESS的執(zhí)行體線程塊鏈表頭上。(結構如下圖)KPROCESSETHREADETHREADETHREAD第8頁/共28頁第八頁,共29頁。任務調(diào)度 在多任務系統(tǒng)(xtng)中,任務調(diào)度很重要,調(diào)度策略決定了系統(tǒng)(xtng)最終性能和功能。 任務
5、調(diào)度有多種策略, 比如基于優(yōu)先級的調(diào)度,ucOS-II上就是這種,誰的優(yōu)先級高就誰占有CPU 還有基于時間片的,一個任務執(zhí)行時間結束的就執(zhí)行下一個 第9頁/共28頁第九頁,共29頁。調(diào)度(diod)過程中斷(zhngdun)或異常進入(jnr)關中斷執(zhí)行區(qū)保存中斷前所有的寄存器的內(nèi)容到SP原則上是保存程序使用的所有寄存器a0-a4v0-v1EPC將當前的SP保存到任務結構體上任務狀態(tài)段TSS任務上下文通過調(diào)度器策略算法求得下一個要執(zhí)行的任務從任務結構體上取下SP指針從SP上恢復所有的寄存器的內(nèi)容打開中斷并返回恢復的位置執(zhí)行第10頁/共28頁第十頁,共29頁。進程(jnchng)切換 對于多進程
6、系統(tǒng),任務調(diào)度的過程中伴隨進程切換,從真實的一個進程切換到另外一個不共享資源的進程,虛擬內(nèi)存地址映射表(PGD)必須(bx)進行切換,還有其它資源數(shù)據(jù)也需要跟著切換。 進程切換通常比較耗時,效率很低,需要執(zhí)行切換TLB,回寫Cache等低效率操作。第11頁/共28頁第十一頁,共29頁。Linux多線程機制(jzh) 原子操作(cozu) 自旋鎖 信號量 讀寫鎖 互斥量線程A線程Ba = ii = 0a = ii=1臨界(ln ji)區(qū)第12頁/共28頁第十二頁,共29頁。死鎖 所謂死鎖: 是指兩個或兩個以上的進程在執(zhí)行過程中,因爭奪資源而造成的一種互相(h xing)等待的現(xiàn)象;表現(xiàn)為程序假死
7、,不再被調(diào)度。 避免死鎖有 銀行家算法獲取(huq)B資源獲取(huq)A資源獲取A資源獲取B資源任務A任務B第13頁/共28頁第十三頁,共29頁。優(yōu)先級反轉(zhuǎn)(fn zhun) 高優(yōu)先級任務需要等待低優(yōu)先級任務釋放資源,而低優(yōu)先級任務又正在(zhngzi)等待中等優(yōu)先級任務的現(xiàn)象叫做優(yōu)先級反轉(zhuǎn)。 此時高優(yōu)先級任務和中等優(yōu)先級任務之間沒有任何共享資源但執(zhí)行順序卻發(fā)生了倒置,這種情況稱為優(yōu)先級反轉(zhuǎn),而高優(yōu)先級任務因為等待低優(yōu)先級任務釋放資源而阻塞的情況則不稱為優(yōu)先級反轉(zhuǎn) 第14頁/共28頁第十四頁,共29頁。優(yōu)先級反轉(zhuǎn)(fn zhun)任務(rn wu)1任務(rn wu)2任務3獲取資源釋放資源
8、獲取資源后果,任務1將一直等待任務2運行完才能運行,實時性差第15頁/共28頁第十五頁,共29頁。消除(xioch)優(yōu)先級反轉(zhuǎn) 優(yōu)先級繼承策略:繼承現(xiàn)有被阻塞任務的最高優(yōu)先級作為其優(yōu)先級,任務退出臨界區(qū),恢復初始優(yōu)先級;Linux內(nèi)核的實時互斥量就是使用這個策略。 優(yōu)先級天花板策略(封頂策略):指將申請(占有)某資源(zyun)的任務的優(yōu)先級提升到可能訪問該資源(zyun)的所有任務中最高優(yōu)先級任務的優(yōu)先級;ucOS的互斥量就是使用這個策略。第16頁/共28頁第十六頁,共29頁。Linux內(nèi)存(ni cn)管理 Linux進程空間使用虛擬存儲空間方式管理(gunl)的(通過MMU部件將離散的物
9、理地址拼接成連續(xù)的虛擬地址空間)(ucLinux除外) Linux內(nèi)核使用伙伴管理(gunl)頁式內(nèi)存 并在伙伴的基礎上發(fā)展了slab/slob/slub算法,用于內(nèi)核小內(nèi)存的分配,以彌補頁式分配浪費內(nèi)存的不足第17頁/共28頁第十七頁,共29頁。Linux進程(jnchng)虛存空間劃分操作系統(tǒng)(co zu x tn)內(nèi)核環(huán)境變量參數(shù)(cnsh)堆棧數(shù)據(jù)(BSS)數(shù)據(jù)代碼4G3G00 xC00000000 x00000000_end_edata_etext內(nèi)核區(qū)用戶區(qū)第18頁/共28頁第十八頁,共29頁。Linux內(nèi)存空間數(shù)據(jù)結構(sh j ji u)表示mmcountmmappgd頁目錄(
10、ml)表mm_structvm_startvm_endvm_opsvm_nextvm_startvm_endvm_opsvm_nextvm_area_structvm_area_structtask_structvm_startvm_endvm_opsvm_nextvm_area_structopenclosenopageswapinswaoutvm_operations_structopenclosenopageswapinswaoutvm_operations_struct虛存區(qū)虛存區(qū)進程(jnchng)虛存空間第19頁/共28頁第十九頁,共29頁。分頁式內(nèi)存(ni cn)管理 Linux
11、系統(tǒng)中使用(shyng)了同時用于64位和32位系統(tǒng)的通用分頁模型。 模型中使用(shyng)四級頁表,32位系統(tǒng)只使用(shyng)PGD和PTE兩項頁全局(qunj)目錄PGD頁上級目錄PUD頁中級目錄PMD頁表PTE頁內(nèi)偏移線性地址 64位cr3頁框第20頁/共28頁第二十頁,共29頁。Linux物理(wl)內(nèi)存管理 Linux內(nèi)核(ni h)為了適應不同的硬件架構,對不同性能的內(nèi)存分成不同的節(jié)點(Node),內(nèi)存模型如下圖:pg_data_t內(nèi)存(ni cn)節(jié)點node_zonesZONE_NORMALZONE_DMAZONE_HIGHMEMzonezone_mem_mapzone_
12、mem_mappagepagepagepagepagepagezone_mem_mapZONE_DMAZONE_NORMALZONE_HIGHMEM16M896MPC i386第21頁/共28頁第二十一頁,共29頁。物理頁面(y min)管理 物理頁面使用伙伴(Buddy)算法進行管理 算法核心是將頁面按 1,2,4,8,16,2i 個連續(xù)(linx)頁進行分割,放在11個鏈表上,i也就是通常所說的order;order6order5order4order3order2order1order0free_area pagepagepagepagepagepage例如分配一個頁面,直接到order
13、0上找,如果order0上沒有空閑頁面了,那么就到order1上找,(1)如果order1上有空閑塊,那么就將這個雙頁分成兩個單頁,一個分配出去,一個掛到order0的鏈表上。(2)如果order1沒有空閑塊,就到order2上找,如果找到空閑塊,那么就將這塊(zh kui)分割為 2:1:1的頁面 2的頁面掛回order1,1的掛一個回order0,另外一個來分配第22頁/共28頁第二十二頁,共29頁。order2要申請一個(y )order0的頁面order1order1order0order1order0order0order1第23頁/共28頁第二十三頁,共29頁。slab分配器 因為
14、基于Buddy算法的內(nèi)存(ni cn)管理,只能精確到頁面大小,對于內(nèi)核中需要大量申請的小內(nèi)存(ni cn)塊,為了滿足這個需求,在Buddy的基礎上增加了slab分配器cache_chainkmem_cachekmem_cachekmem_cacheslabs_fullslabs_partialslabs_emptyheadtailslabslabslabslabslabpagepagepagepagepageobjectobjectobject第24頁/共28頁第二十四頁,共29頁。Linux文件系統(tǒng)核心(hxn)VFS VFS(虛擬文件系統(tǒng))為具體文件系統(tǒng)提供抽象出一組通用的接口來表示具
15、體的文件系統(tǒng)。 萬物皆文件,硬件設備也是文件 VFS包含下面幾種數(shù)據(jù)(shj)類型 file_system_type 文件系統(tǒng)類型 vfsmount 掛在點對象,也就是文件系統(tǒng)類型實例 super_block 超級塊,描述文件系統(tǒng)的控制信息、參數(shù)等 inode 索引節(jié)點,保存文件的相關信息,是文件的元數(shù)據(jù)(shj) dentry 目錄項,就是文件夾 file 文件對象 file_struct 打開的文件對象第25頁/共28頁第二十五頁,共29頁。VFS各數(shù)據(jù)(shj)對象之間的關系s_filessuper_blockf_opf_dentryf_opf_dentryf_opf_dentry超級塊上各打開(d ki)文件的file實例d_inoded_sbdentry_operationsd_opsNAMEi_opi_dentryi_fopi_sbinodeinode_operationsfile_operationstask_structfilesfiles_struct第26頁/共28頁第二十六頁,共29頁。The End第27頁/共28頁第二十七頁,共29頁。感謝您的觀看(gunkn)!第28頁/共28頁第二十八頁,共2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷藏合同范本
- 加工車間轉(zhuǎn)租合同范本
- 不見面簽訂租賃合同范本
- 2025年合肥貨運車從業(yè)考試題
- 個人施工承攬合同范本
- app開發(fā)合同范本模板
- 加工訂單合同范本模板
- 農(nóng)村供熱服務合同范本
- 個人股權質(zhì)押合同范本
- 光租船合同范本
- 個人合伙開店合同范本
- 生而為贏自燃成陽-開學第一課發(fā)言稿
- 2024年設備監(jiān)理師考試題庫及答案參考
- 公司外派學習合同范例
- 2025年中國國投高新產(chǎn)業(yè)投資集團招聘筆試參考題庫含答案解析
- 2024-2025學年小學美術一年級下冊(2024)嶺南版(2024)教學設計合集
- 《研學旅行課程設計》課件-研學課程設計計劃
- 年產(chǎn)10噸功能益生菌凍干粉的工廠設計改
- 學習疊層母排必須知道的電力知識
- 微波與天線矩形波導
- 19+張愛玲經(jīng)典《金鎖記》英文版
評論
0/150
提交評論