青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

什么時(shí)候用memory-mapped files:

1.System use it to load and execute .exe and dll files.

2.Use memory-mapped files to access a data file on disk.

3.allow multiple processes running on the same machine to share data with each other.

------------------------------------------------------------------------------------------------------

用途一:使用mapping file executables and dlls

當(dāng)調(diào)用createProcess時(shí)候,系統(tǒng)做了以下的事情:

1.locates CreateProcess 中指定的the .exe file,失敗則return false

2.創(chuàng)建新的process kernel object

3.creates a private address space for new process

4.reserves a region of address space large enough to contain the .exe file.The desired location of this region is specified by the .exe file itself.by default ,base address is 0x00400000 .You can change it by create your app .exe fiel using linker’s /BASE option.

5.the systems notes that the physical storage baking the reserved region is in the .exe file on disk instread of the system’s paging file.(系統(tǒng)注意到,支持已保留區(qū)域的物理存儲(chǔ)區(qū)域是在磁盤上的.exe 文件而不是在系統(tǒng)頁面中)

當(dāng)。exe 被mapped into the process address space,系統(tǒng)訪問.exe的一個(gè)區(qū)域,那里列出了.exe含有的dll,然后系統(tǒng)利用 LoadLibrary for each dlls。系統(tǒng)map dll時(shí)候,如果dll的 preferred base address 被占據(jù)或者不夠大,dllwill try to find another region of address space to reserve for the dll。如果dll 被設(shè)定了/Fixed when it build,也就是不支持重定位,那么加載失敗。

如果加載dll或者exe 失敗,彈出對(duì)話框并且釋放申請(qǐng)的地址空間。

after all .exe  dll mapped into the process address space, system can begin exec the .exe file starup code. the sys takes care of all paging,buffering, and caching. 例如,如果一段代碼訪問了一個(gè)并不在主存的地址,那么一個(gè)錯(cuò)誤產(chǎn)生,系統(tǒng)察覺到錯(cuò)誤并且自動(dòng)的調(diào)入page of code from the files image into a page of RAM。

the sys maps the page of ram to the proper location in the process address and allows the thread  to continue.

當(dāng)為一個(gè)app創(chuàng)建第二個(gè)實(shí)例時(shí),系統(tǒng)只是簡(jiǎn)單的打開另外一個(gè)memory-mapped view  of file-mapping object that identifies the exec files image and create a new process object and a new thread object.利用內(nèi)存映射文件,多個(gè)實(shí)例可以共享代碼和數(shù)據(jù)。實(shí)際上,file 是分為多個(gè)section ,多個(gè)節(jié)均對(duì)齊于頁邊界。如果一個(gè)instance of the app 修改了全局變量,系統(tǒng)應(yīng)用了copy-on-write 機(jī)制,復(fù)制修改的頁面,并更新實(shí)例的file-mapping view。當(dāng)我們調(diào)試程序時(shí)同樣的事情會(huì)發(fā)生,debuger modify code,sys use cow again。

當(dāng)一個(gè)進(jìn)程被加載,系統(tǒng)檢查其所有映射文件頁,系統(tǒng)將所有通常用cow保護(hù)的頁面提交給存儲(chǔ)系統(tǒng),這些頁面僅僅是被提交,當(dāng)文件被訪問的時(shí)候,系統(tǒng)讀入相應(yīng)的頁面,如果頁面沒有被修改,那么他們可以被換出,如果已經(jīng)修改,系統(tǒng)將修改過的頁面轉(zhuǎn)入已經(jīng)提交的頁面之一(這點(diǎn)很晦澀啊 system swaps the modified page to one of the perviously committed pages in the paging file ,怎么翻譯呢~~~~ :(   )

------------------------------------------------------------------------------------------------------

在可執(zhí)行文件或者dll中共享靜態(tài)變量

------------------------------------------------------------------------------------------------------

內(nèi)存映射數(shù)據(jù)文件

例子:要把一個(gè)文件所有字節(jié)倒置

如果利用file mapping 我們告訴系統(tǒng)使用一個(gè)虛擬空間的區(qū)域來倒置文件,然后告訴把文件的第一個(gè)字節(jié)映射到保留空間的第一個(gè)字節(jié),然后就像處理內(nèi)存中的字符串一樣處理文件即可,引文系統(tǒng)會(huì)幫助你完成文件緩存以及調(diào)頁等工作。

使用流程:

1.創(chuàng)建一個(gè)file kernel object that identifies the file on disk that you want to use as a memory –mapped file

2.創(chuàng)建一個(gè)file mapping kernel object 告訴系統(tǒng)文件的大小,以及你準(zhǔn)備如何訪問文件

3.告訴系統(tǒng)map all或者部分文件到你的進(jìn)程地址空間

當(dāng)使用結(jié)束后要:

1告訴系統(tǒng) unmap file-mapping kernel object form your process add

2cloes filemapping kernel object

3close file kernel object

---------

具體步驟

--1. 創(chuàng)建文件內(nèi)核對(duì)象

CreateFile

失敗返回 INVALID_HANDLE_VALUE = –1 一般來說windows func 失敗return null這個(gè)比較特殊

createfile dwdesiredAccess 需要設(shè)置為 GENERIC_READ 或者 GENERIC_WRITE 

--2. 創(chuàng)建file-mapping 內(nèi)核對(duì)象

CreatefileMapping(HANDLE,PSECURITY_ATTRIBUTES,DWORD fdwProtect,DWORD dwMaximumsizeHigh,DWORD dwMaximumSizeLow,PCTSTR pszName);

第一個(gè)參數(shù)使用createfile 返回的handle。psa一般使用默認(rèn)null。當(dāng)創(chuàng)建一個(gè)file mapping object 時(shí)候,系統(tǒng)并不會(huì) 馬上保留一個(gè)地址空間,然后將file映射到這個(gè)區(qū)域。但很i,當(dāng)系統(tǒng)map時(shí)候,系統(tǒng)必須知道為physical storage分配什么樣的保護(hù)屬性,第三個(gè)參數(shù)指明了這些。

后面兩個(gè)參數(shù)指明file的大小,ensure  enouth physical storage is available for the file-mapping object.

high指明高32位,low指明低32位。如果想創(chuàng)建一個(gè)反應(yīng)現(xiàn)在文件大小的map,均傳0.

pszName 用于與其它進(jìn)程共享內(nèi)存映射文件

--3.將文件數(shù)據(jù)map to process address space

使用這個(gè)函數(shù)

PVOID MapViewOfFile(HANDLE hfileMappingObject,dwDesireaccess,dwFileOffsetHigh,dwFileOffsetLow,dwNumberOfbytestomap)

文件沒必要一次全映射,一次映射一部分,這一部分成為一個(gè)view

首先通過high和low 指定開始映射的字節(jié)

其次是指定映射多大,0則映射到文件尾部。

--4.unmapping the file data from the process address space

UnmapviewOfFile(PVOID pvBaseAdddress);

參數(shù)使用mapview的返回值

如果強(qiáng)制write back to disk 則使用 FlushViewOfFile(PVOID pvAddress,SIZE_T dwNumberOfBytesToFlush)

第一個(gè)地址是想要開始flush的地址

--5.關(guān)閉filemapping object 以及file object

-----------------------------------------------------------------------------------

使用filemap 在進(jìn)程之間共享數(shù)據(jù)

例子:

app開始時(shí)候,系統(tǒng)調(diào)用createfile to open .exe file onthe disk。sys call creatFileMapping to create filemapping object.然后系統(tǒng)調(diào)用  mapviewofffileEX (with sec_image flag to point out it is a pe file),So that the file’s image is mapped to the address of the first byte of exectuable code of this mapped view. System creates the primary thread , puts the address of the first byte of exec code of this mapped view in the thread instruction pointer,and then lets the cpu start exec the code.

If user 再啟動(dòng)同一個(gè)app,sys 看到file-mapping已經(jīng)存在了,系統(tǒng)maps a view of file a second time,this time in the context of the newly created process address space.

像所有內(nèi)核對(duì)象一樣,有三種方法共享他,繼承,命名對(duì)象以及賦值handle。

···頁文件支持的內(nèi)存映射文件

許多應(yīng)用程序運(yùn)行是產(chǎn)生數(shù)據(jù)需要和其他進(jìn)程共享如果必須在硬盤建立文件才可以共享,那么效率很低。因此微軟提供了由system paging file 支持的 file mapping。不需要createfile ,只需要在調(diào)用createFilemapping 的時(shí)候傳進(jìn)一個(gè) INVALID_HANDLE_VALUE 作為hFile 參數(shù)即可。 映射文件大小同樣是由high 和low 參數(shù)決定的。

`````稀疏提交的內(nèi)存映射文件

--看來需要把虛擬內(nèi)存那章一起看看了~~~~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美福利小视频| 欧美成人精品在线观看| 在线精品一区| 亚洲激情视频在线| 夜夜嗨av一区二区三区网站四季av| 在线精品视频免费观看| 亚洲精品九九| 亚洲欧美日韩一区在线| 欧美中文字幕不卡| 欧美二区视频| 中文国产一区| 久久人人超碰| 欧美视频一区在线观看| 国产一区再线| 99re8这里有精品热视频免费| 亚洲永久免费av| 免播放器亚洲一区| 99精品视频免费在线观看| 羞羞漫画18久久大片| 欧美成人在线免费视频| 国产精品自在欧美一区| 亚洲人屁股眼子交8| 欧美在线电影| 亚洲精品一二| 久久一日本道色综合久久| 国产精品久久午夜| 亚洲精品一区在线观看| 久久精品国产亚洲高清剧情介绍| 欧美国产专区| 久久国内精品自在自线400部| 欧美日韩国产美女| 亚洲高清免费在线| 久久久久久久欧美精品| 狠狠v欧美v日韩v亚洲ⅴ| 欧美日韩一区在线观看| 怡红院精品视频| 亚洲欧美在线免费观看| 亚洲国产成人在线视频| 亚洲一区二区三区欧美| 欧美激情精品久久久久久免费印度| 国产亚洲成年网址在线观看| 亚洲少妇最新在线视频| 亚洲欧洲美洲综合色网| 久色成人在线| 亚洲风情亚aⅴ在线发布| 久久视频免费观看| 亚洲欧美成aⅴ人在线观看| 欧美视频在线观看免费网址| 亚洲精品日本| 亚洲国产精品视频| 欧美成人精品一区| 亚洲伦理在线观看| 91久久亚洲| 欧美日韩一区在线视频| 宅男在线国产精品| 一区二区动漫| 国产精品欧美日韩一区二区| 亚洲亚洲精品在线观看| 中文日韩电影网站| 国产精品午夜在线| 欧美综合二区| 久久久久久综合| 亚洲国产一区在线观看| 亚洲国产精品va在看黑人| 免费一区视频| 一区二区三区欧美在线| 在线亚洲欧美| 国产日韩高清一区二区三区在线| 午夜久久电影网| 午夜精品国产| 在线电影一区| 91久久精品美女高潮| 欧美日韩亚洲国产精品| 午夜日韩电影| 久久久国产亚洲精品| 91久久精品www人人做人人爽| 亚洲日本va午夜在线电影| 国产精品久久久一区二区三区 | 狠狠干综合网| 欧美丰满高潮xxxx喷水动漫| 欧美激情在线观看| 午夜欧美不卡精品aaaaa| 欧美在线亚洲在线| 亚洲免费观看在线观看| 亚洲制服av| 黄色成人av在线| 日韩午夜中文字幕| 国产亚洲va综合人人澡精品| 欧美国产一区二区在线观看| 欧美日韩在线播放一区二区| 久久久国产亚洲精品| 欧美国产视频日韩| 欧美在线免费观看视频| 欧美一级大片在线免费观看| 亚洲第一天堂无码专区| 欧美三级欧美一级| 久久综合狠狠| 国产精品久久久久秋霞鲁丝| 蜜臀久久99精品久久久久久9 | 欧美一区二区日韩一区二区| 亚洲国产mv| 亚洲欧美综合v| 亚洲精品中文字幕有码专区| 午夜精品视频网站| 亚洲伦理网站| 久久久久国产一区二区| 亚洲专区一区| 欧美成人亚洲成人日韩成人| 香蕉视频成人在线观看| 欧美久久久久久蜜桃| 久热精品在线视频| 国产精品一卡二卡| 亚洲乱码精品一二三四区日韩在线| 国产女优一区| 一区二区三区精品视频| 亚洲精品日韩在线观看| 久久久青草青青国产亚洲免观| 亚洲欧美综合| 欧美性一区二区| 亚洲理论在线| 日韩视频二区| 欧美黄在线观看| 亚洲电影成人| 亚洲国产欧美日韩精品| 久久九九国产| 男人插女人欧美| 尤物精品在线| 久久久综合视频| 美女被久久久| 狠狠色丁香久久综合频道| 亚洲欧美日韩在线一区| 午夜精品一区二区三区四区| 欧美午夜电影网| 国产精品99久久久久久人| 亚洲一区二区欧美| 欧美性事在线| 午夜久久电影网| 久久久精品一区二区三区| 国产欧美日韩精品a在线观看| 亚洲午夜在线视频| 羞羞答答国产精品www一本| 国产精品视频免费在线观看| 亚洲自拍另类| 另类天堂av| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美成人日韩| 一本大道av伊人久久综合| 亚洲欧美在线观看| 国产日韩欧美在线看| 久久久精品国产一区二区三区| 久久亚洲私人国产精品va| 亚洲国产精品传媒在线观看| 欧美激情在线| 午夜精品免费| 亚洲第一免费播放区| 亚洲午夜精品一区二区| 国产一区二区高清| 欧美久久电影| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美国产日产韩国视频| 99riav久久精品riav| 国产精品一区二区a| 久久亚洲午夜电影| 亚洲九九九在线观看| 欧美一区国产在线| 91久久精品久久国产性色也91| 欧美日韩国产91| 欧美亚洲日本网站| 亚洲三级电影全部在线观看高清| 亚洲淫片在线视频| 亚洲国产高清视频| 欧美日韩在线观看视频| 亚洲精品久久| 久久另类ts人妖一区二区| 亚洲精品视频一区二区三区| 国产精品三级久久久久久电影| 久久久久久午夜| 亚洲淫性视频| 亚洲激情在线激情| 久久久亚洲综合| 亚洲一区三区在线观看| 亚洲第一精品夜夜躁人人爽| 国产精品久久久久毛片大屁完整版| 久久久国产一区二区三区| 中文av一区特黄| 最新亚洲电影| 欧美va天堂va视频va在线| 性色av一区二区三区在线观看| 亚洲剧情一区二区| 在线日韩电影| 狠狠色丁香婷婷综合久久片| 欧美午夜精品一区| 欧美顶级大胆免费视频| 久久久久久久综合日本| 欧美一级理论性理论a| 中文日韩在线视频| 9久re热视频在线精品| 亚洲激情第一区| 亚洲国产成人午夜在线一区| 免费看成人av|