版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
嵌入式操作系統(tǒng)陳香蘭
xlanchen@/~xlanchenSpring2007中國科學(xué)技術(shù)大學(xué)計算機系xlanchen@2007.6.251EmbeddedOperatingSystems上周一中斷/異常上周二系統(tǒng)調(diào)用時鐘內(nèi)存管理xlanchen@2007.6.252EmbeddedOperatingSystems本次課進(jìn)程地址空間Linux中的信號用戶態(tài)進(jìn)程之間的通信xlanchen@2007.6.253EmbeddedOperatingSystems進(jìn)程地址空間xlanchen@2007.6.25xlanchen@2007.6.254EmbeddedOperatingSystems內(nèi)核態(tài)和用戶態(tài)分配內(nèi)存的不同內(nèi)核中的函數(shù)以直接了當(dāng)?shù)姆绞将@得動態(tài)內(nèi)存內(nèi)核是操作系統(tǒng)中優(yōu)先級最高的成分。內(nèi)核信任自己采用我們上次課介紹的頁面級內(nèi)存分配和小內(nèi)存分配給用戶態(tài)進(jìn)程分配內(nèi)存時請求被認(rèn)為是不緊迫的用戶進(jìn)程不可信任xlanchen@2007.6.255EmbeddedOperatingSystems內(nèi)核態(tài)和用戶態(tài)分配內(nèi)存的不同因此,當(dāng)用戶態(tài)進(jìn)程請求動態(tài)內(nèi)存時,并沒有立即獲得實際的物理頁框,而僅僅獲得對一個新的線性地址區(qū)間的使用權(quán)這個線性地址區(qū)間會成為進(jìn)程地址空間的一部分,稱作線性區(qū)(memoryareas)xlanchen@2007.6.256EmbeddedOperatingSystems進(jìn)程地址空間進(jìn)程最多能訪問4GB的線性地址空間但進(jìn)程在訪問某個線性空間之前,必須獲得該線性空間的許可因此,一個進(jìn)程的地址空間是由允許該進(jìn)程訪問的全部線性地址組成內(nèi)核使用線性區(qū)資源來表示線性地址空間每個線性區(qū)由起始線性地址、長度和一些存取權(quán)限描述xlanchen@2007.6.257EmbeddedOperatingSystems與進(jìn)程地址空間相關(guān)的描述符xlanchen@2007.6.258EmbeddedOperatingSystems線性區(qū)的開始和結(jié)束都必須4KB對齊進(jìn)程獲得新線性區(qū)的一些典型情況:剛剛創(chuàng)建的新進(jìn)程使用exec系統(tǒng)調(diào)用裝載一個新的程序運行將一個文件(或部分)映射到進(jìn)程地址空間中當(dāng)用戶堆棧不夠用的時候,擴展堆棧對應(yīng)的線性區(qū)……xlanchen@2007.6.259EmbeddedOperatingSystems線性區(qū)(memoryarea)比如0x08048000——0x0804C000這段線性地址空間被分配給了一個進(jìn)程,進(jìn)程就可以訪問這段地址空間進(jìn)程只能訪問某個有效的memoryarea。進(jìn)一步講,這個area可以被標(biāo)志為只讀或者不可執(zhí)行(nonexecutable)如果進(jìn)程試圖訪問一個有效的area之外的地址或者用不正確的方式訪問一個有效的area,內(nèi)核將通過段異常(segmentationfault)殺死這個進(jìn)程xlanchen@2007.6.2510EmbeddedOperatingSystems線性區(qū)中可以包含各種內(nèi)容可執(zhí)行文件代碼段的內(nèi)存映射,就是.textsection數(shù)據(jù)段的內(nèi)存映射,.datasectionzeropage的內(nèi)存映射用來包含未初始化的全局變量,.bsssection為庫函數(shù)和鏈接器附加的代碼、數(shù)據(jù)、bss段文件的內(nèi)存映射共享內(nèi)存的映射匿名內(nèi)存區(qū)域的映射,比如通過malloc()函數(shù)申請的內(nèi)存區(qū)域xlanchen@2007.6.2511EmbeddedOperatingSystems進(jìn)程地址空間中所有有效的線性地址都確定的存在于一個area中memoryareas不重疊進(jìn)程中每個單獨的area對應(yīng)一個不同內(nèi)存區(qū):堆棧、二進(jìn)制代碼、全局變量、文件映射等等task_struct中的內(nèi)存描述符xlanchen@2007.6.2512EmbeddedOperatingSystems內(nèi)核使用內(nèi)存描述符來描述進(jìn)程的整個地址空間(即進(jìn)程的全部線性區(qū))xlanchen@2007.6.2513EmbeddedOperatingSystems內(nèi)存描述符內(nèi)存描述符包含了跟進(jìn)程地址空間相關(guān)的所有信息mm_users表示共享這個地址空間的進(jìn)程數(shù)目比如兩個輕量級進(jìn)程共享了這個area,mm_users就等于2mmap和mm_rb是兩個不同的數(shù)據(jù)結(jié)構(gòu),但是包含了相同的東西:進(jìn)程地址空間中所有的memoryareas前者使用鏈表存儲areas后者用紅黑樹存儲areas所有的mm_struct結(jié)構(gòu)通過mmlist域鏈接在一個雙向鏈表上。這個鏈表的第一個元素是idle進(jìn)程的mm_struct結(jié)構(gòu)xlanchen@2007.6.2514EmbeddedOperatingSystems分配一個內(nèi)存描述符copy_mm函數(shù)用來在fork()調(diào)用中從父進(jìn)程拷貝內(nèi)存描述符而mm_struct數(shù)據(jù)結(jié)構(gòu)本身的空間是從mm_cachep指向的slab緩存中通過allocate_mm()宏分配得到的如果父進(jìn)程在fork()創(chuàng)建子進(jìn)程時,通過一些標(biāo)志指明要和子進(jìn)程共享地址空間。那么,只需要childtask->mm=parent->mmxlanchen@2007.6.2515EmbeddedOperatingSystems釋放一個內(nèi)存描述符在進(jìn)程退出時,exit_mm()函數(shù)被調(diào)用首先做一些清除工作,更新一些內(nèi)核全局統(tǒng)計數(shù)據(jù)接著調(diào)用mmput(),這個函數(shù)減內(nèi)存描述符的mm_users域如果mm_users域變成了0,就調(diào)用mmdrop()函數(shù)來減mm_count域如果mm_count域變成了0,就由free_mm()宏調(diào)用kmem_cache_free()函數(shù)把mm_struct返還給mm_cachp指向slab緩存xlanchen@2007.6.2516EmbeddedOperatingSystems線性區(qū)(memoryareas)每個線性區(qū)由一個vm_area_struct結(jié)構(gòu)來表示這個結(jié)構(gòu)描述了一段給定的內(nèi)存區(qū)間區(qū)間中的地址都有同樣的屬性,比如同樣的存取權(quán)限和相關(guān)的操作函數(shù)用這個結(jié)構(gòu)可以表示各種線性區(qū),比如映射可執(zhí)行的二進(jìn)制代碼的線形區(qū)、用作用戶態(tài)堆棧的線形區(qū)等等xlanchen@2007.6.2517EmbeddedOperatingSystemsxlanchen@2007.6.2518EmbeddedOperatingSystems線性區(qū)的存取權(quán)限vm_flags域描述有關(guān)這個線性區(qū)全部頁的信息。例如,進(jìn)程訪問每個頁的權(quán)限是什么。還有一些標(biāo)志描述線性區(qū)自身,例如它應(yīng)該如何增長VM_READ,VM_WRITE,VM_EXECVM_SHAREDVM_RESERVEDVM_GROWSUPxlanchen@2007.6.2519EmbeddedOperatingSystems線性區(qū)的鏈表和紅黑樹通過內(nèi)存描述符中的兩個域mmap和mm_rb都可以訪問線性區(qū)。事實上,它們都指向了同一個vm_area_struct結(jié)構(gòu),只是鏈接的方式不同mmap指向的線性區(qū)鏈表用來遍歷整個進(jìn)程的地址空間紅黑樹用來定位一個給定的線性地址落在進(jìn)程地址空間中的哪一個線性區(qū)中xlanchen@2007.6.2520EmbeddedOperatingSystems處理線性區(qū)內(nèi)核進(jìn)程需要對一個線性區(qū)進(jìn)行處理,比如確定一個給定線性地址是否存在于一個線性地址空間中find_vma(),查找一個線性地址兩個參數(shù):進(jìn)程內(nèi)存描述符的地址mm和線性地址addrxlanchen@2007.6.2521EmbeddedOperatingSystems創(chuàng)建一個線性區(qū)間mmap()和do_mmap(),創(chuàng)建一個線性區(qū)根據(jù)file參數(shù)映射指定的文件中偏移量為offset,長度為len的一段內(nèi)容addr參數(shù)指明從何處開始查找一段可用的空閑線性地址區(qū)間Prot參數(shù)指定這個區(qū)間所包含的頁的存取權(quán)限flags參數(shù)指定這個創(chuàng)建的線性區(qū)本身的一些標(biāo)志staticinlineunsignedlongdo_mmap(structfile*file, unsignedlongaddr, unsignedlonglen, unsignedlongprot, unsignedlongflag, unsignedlongoffset)
xlanchen@2007.6.2522EmbeddedOperatingSystems刪除一個線性區(qū)間munmap()和do_munmap()do_munmap()函數(shù)從進(jìn)程地址空間中刪除一段線性空間mm參數(shù)指向了當(dāng)前進(jìn)程的內(nèi)存描述符addr參數(shù)為線性區(qū)的起始地址len參數(shù)指明要刪除的區(qū)間大小int
do_munmap
(struct
mm_struct*mm,unsignedlongaddr, size_t
len) xlanchen@2007.6.2523EmbeddedOperatingSystems缺頁異常(i386中14號異常)如前所述,內(nèi)核只是通過mmap()等調(diào)用分配了一些線性地址空間給進(jìn)程,并沒有真正的把實際的物理頁框分配給進(jìn)程當(dāng)進(jìn)程試圖訪問這些分配給它的地址空間時,比如一段線性地址空間映射的是二進(jìn)制代碼,則進(jìn)程被調(diào)度執(zhí)行的時候會跳轉(zhuǎn)到這個地址上去執(zhí)行。此時,并沒有物理頁框?qū)?yīng)于這些線性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版墻紙購銷合同范本
- 2025年度數(shù)字經(jīng)濟基礎(chǔ)設(shè)施建設(shè)承包借款合同4篇
- 2024預(yù)埋件研發(fā)與生產(chǎn)項目合同范本3篇
- 2024食品物流信息化管理系統(tǒng)合同
- 2025年度文化創(chuàng)意產(chǎn)品采購合同知識產(chǎn)權(quán)保護(hù)與市場推廣3篇
- 2025年度專業(yè)市場租賃協(xié)議范本4篇
- 2025年度智慧社區(qū)物業(yè)服務(wù)承包合同4篇
- 2025年度電力企業(yè)財務(wù)預(yù)算出納人員擔(dān)保合同3篇
- 2025年度商場櫥窗窗簾廣告設(shè)計與安裝合同4篇
- 2025年度新能源汽車制造項目承包商擔(dān)保合同規(guī)范4篇
- 春節(jié)英語介紹SpringFestival(課件)新思維小學(xué)英語5A
- 進(jìn)度控制流程圖
- 2023年江蘇省南京市中考化學(xué)真題
- 【閱讀提升】部編版語文五年級下冊第四單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 供電副所長述職報告
- 現(xiàn)在完成時練習(xí)(短暫性動詞與延續(xù)性動詞的轉(zhuǎn)換)
- 產(chǎn)品質(zhì)量監(jiān)控方案
- 物業(yè)總經(jīng)理述職報告
- 新起點,新發(fā)展心得體會
- 深圳大學(xué)學(xué)校簡介課件
- 校園欺凌問題成因及對策分析研究論文
評論
0/150
提交評論