国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 操作系統(tǒng) > 正文

內(nèi)存映射與DMA

2024-06-28 13:24:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
內(nèi)存映射與DMA

1、mmap系統(tǒng)調(diào)用的實(shí)現(xiàn)過(guò)程,該系統(tǒng)調(diào)用直接將設(shè)備內(nèi)存映射到用戶(hù)進(jìn)程的地址空間。

2、用戶(hù)空間內(nèi)存如何映射到內(nèi)核中(get_user_pages)。

3、直接內(nèi)存訪(fǎng)問(wèn)(DMA),他使得外設(shè)具有直接訪(fǎng)問(wèn)系統(tǒng)內(nèi)存的能力。

linux中地址類(lèi)型:用戶(hù)虛擬地址、內(nèi)核虛擬地址、內(nèi)核邏輯地址(與物理地址是線(xiàn)性關(guān)系)、物理地址

用戶(hù)空間與內(nèi)核空間:內(nèi)核將4G的虛擬地址空間分割為用戶(hù)空間與內(nèi)核空間;在二者的上下文中使用同樣的映射。內(nèi)核無(wú)法操作沒(méi)有映射到內(nèi)核地址空間的內(nèi)存。在內(nèi)核地址中有一塊地址空間專(zhuān)門(mén)用于用戶(hù)空間到內(nèi)核的虛擬映射。

低端內(nèi)存:存在于內(nèi)核空間上的邏輯內(nèi)存地址。

高端內(nèi)存:是指那些不存在邏輯地址的內(nèi)存。

內(nèi)核中處理內(nèi)存的函數(shù)趨向使用指向page結(jié)構(gòu)的指針,該數(shù)據(jù)結(jié)構(gòu)用來(lái)保存內(nèi)核需要的所有物理內(nèi)存的信息

頁(yè)表:處理器使用頁(yè)表將虛擬地址轉(zhuǎn)換為相應(yīng)的物理地址。

虛擬內(nèi)存區(qū)(VMA):用于管理進(jìn)程地址空間中不同區(qū)域的內(nèi)核數(shù)據(jù)結(jié)構(gòu)。每個(gè)進(jìn)程在編譯、鏈接后形成的映象文件有一個(gè)代碼段、數(shù)據(jù)段、還有堆棧段(如下圖1所示),所有一個(gè)內(nèi)存映射(至少)包含下面這些區(qū)域:

  1)程序的可執(zhí)行代碼區(qū)域

  2)多個(gè)數(shù)據(jù)區(qū),其中包括初始化數(shù)據(jù)區(qū)、非初始化數(shù)據(jù)區(qū)及程序堆棧。

  3)與每個(gè)活動(dòng)的內(nèi)存映射對(duì)應(yīng)的區(qū)域

  圖1(進(jìn)程虛擬空間的劃分)

通常,進(jìn)程所使用到的虛存空間不連續(xù),且各部分虛存空間的訪(fǎng)問(wèn)屬性也可能不同。所以一個(gè)進(jìn)程的虛存空間需要多個(gè)vm_area_struct結(jié)構(gòu)來(lái)描述。

在vm_area_struct結(jié)構(gòu)的數(shù)目較少的時(shí)候,各個(gè)vm_area_struct按照升序排序,以單鏈表的形式組織數(shù)據(jù)(通過(guò)vm_next指針指向下一個(gè)vm_area_struct結(jié)構(gòu))。但是當(dāng)vm_area_struct結(jié)構(gòu)的數(shù)據(jù)較多的時(shí)候,仍然采用鏈表組織的化,勢(shì)必會(huì)影響到它的搜索速度。針對(duì)這個(gè)問(wèn)題,vm_area_struct還添加了vm_avl_hight(樹(shù)高)、vm_avl_left(左子節(jié)點(diǎn))、vm_avl_right(右子節(jié)點(diǎn))三個(gè)成員來(lái)實(shí)現(xiàn)AVL樹(shù),以提高vm_area_struct的搜索速度。

  假如該vm_area_struct描述的是一個(gè)文件映射的虛存空間,成員vm_file便指向被映射的文件的file結(jié)構(gòu),vm_pgoff是該虛存空間起始地址在vm_file文件里面的文件偏移,單位為物理頁(yè)面。

圖2 進(jìn)程虛擬地址示意圖

mmap系統(tǒng)調(diào)用所完成的工作就是準(zhǔn)備這樣一段虛存空間,并建立vm_area_struct結(jié)構(gòu)體,將其傳給具體的設(shè)備驅(qū)動(dòng)程序,這些都是由內(nèi)核完成。

用戶(hù)空間進(jìn)程調(diào)用mmap將設(shè)備內(nèi)存映射到他的地址空間時(shí),系統(tǒng)通過(guò)創(chuàng)建一個(gè)表示該映射的新VMA作為響應(yīng),支持mmap的驅(qū)動(dòng)程序,需要幫助進(jìn)程完成VMA的初始化。


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐安县| 翁源县| 岳阳市| 尼玛县| 泰宁县| 库尔勒市| 丹东市| 漳浦县| 正镶白旗| 和龙市| 翁牛特旗| 额敏县| 南雄市| 南华县| 四子王旗| 电白县| 澎湖县| 逊克县| 西和县| 来安县| 宜都市| 东兰县| 梧州市| 平湖市| 漳浦县| 桑日县| 安图县| 壤塘县| 新兴县| 广平县| 肇庆市| 民和| 盐城市| 西宁市| 泉州市| 九龙城区| 井陉县| 沽源县| 桂平市| 甘南县| 彭水|