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

什么時(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>
            久久久久久综合| 制服丝袜亚洲播放| 国产日韩精品在线播放| 欧美日产一区二区三区在线观看 | 亚洲女同同性videoxma| 亚洲每日在线| 宅男精品视频| 久久精品国产亚洲一区二区三区| 久久久久91| 狠狠色丁香久久婷婷综合丁香| 国产亚洲精久久久久久| 国内自拍视频一区二区三区| 尤物网精品视频| 亚洲美女在线视频| 亚洲一本大道在线| 欧美一级二区| 久久野战av| 亚洲福利在线观看| 久久久精品tv| 亚洲国产精品一区二区久| 亚洲乱码久久| 国产九区一区在线| 欧美一区二区视频网站| 亚洲自拍电影| 久久久水蜜桃av免费网站| 欧美日韩亚洲综合| 国产裸体写真av一区二区 | 亚洲日本va午夜在线影院| 亚洲美女诱惑| 久久一区二区三区超碰国产精品| 亚洲精品日韩综合观看成人91| 99re8这里有精品热视频免费| 欧美在线视频观看免费网站| 美女91精品| 国产精品麻豆成人av电影艾秋 | 亚洲一区二区视频在线观看| 狂野欧美激情性xxxx欧美| 99re6这里只有精品视频在线观看| 欧美自拍偷拍午夜视频| 国产精品麻豆成人av电影艾秋| 亚洲免费大片| 亚洲春色另类小说| 久久精品国产综合| 国产精品色婷婷| 亚洲一区日韩在线| 亚洲片国产一区一级在线观看| 久久久久国产一区二区| 国产精一区二区三区| 亚洲一区二区三区色| 亚洲欧洲日夜超级视频| 久久综合中文色婷婷| 激情成人av在线| 久久免费精品视频| 欧美一区二粉嫩精品国产一线天| 欧美日韩另类字幕中文| 9久草视频在线视频精品| 欧美国产一区二区| 免费不卡视频| 亚洲黄色一区二区三区| 麻豆九一精品爱看视频在线观看免费| 欧美一区2区视频在线观看| 国产美女扒开尿口久久久| 欧美一级欧美一级在线播放| 99国产精品99久久久久久粉嫩| 欧美精彩视频一区二区三区| 亚洲免费观看高清完整版在线观看熊| 亚洲高清精品中出| 免费中文字幕日韩欧美| 亚洲美女毛片| 亚洲人成77777在线观看网| 欧美韩日一区二区三区| 99精品欧美一区| av成人福利| 国产婷婷97碰碰久久人人蜜臀| 久久久久一区二区| 久久久久久国产精品mv| 91久久久亚洲精品| 日韩一级不卡| 国产网站欧美日韩免费精品在线观看| 国产精品私房写真福利视频| 欧美色综合天天久久综合精品| 亚洲深夜福利| 欧美一区二区三区视频免费| 在线成人h网| 最新国产精品拍自在线播放| 欧美视频一区| 久久精品主播| 欧美国产亚洲精品久久久8v| 亚洲性图久久| 久久精品导航| 一区二区三区日韩| 亚洲欧美美女| 亚洲精品在线视频观看| 亚洲香蕉视频| 亚洲欧洲视频| 性做久久久久久久免费看| 亚洲国产经典视频| 亚洲一区欧美激情| 最新国产精品拍自在线播放| 亚洲影院免费| 9i看片成人免费高清| 久久久久这里只有精品| 亚洲综合社区| 欧美国产免费| 蜜臀久久久99精品久久久久久 | 加勒比av一区二区| 亚洲伦理在线观看| 在线视频成人| 欧美一区二区三区四区在线| 一本久久a久久免费精品不卡| 久久精品国产第一区二区三区| 一区二区三区波多野结衣在线观看| 午夜精品免费| 亚洲综合色自拍一区| 欧美激情综合在线| 美女精品在线| 国产亚洲欧美日韩一区二区| 一本大道久久a久久综合婷婷| 亚洲黄色高清| 久久久久一本一区二区青青蜜月| 欧美一区二区三区的| 欧美日韩精品免费观看| 亚洲第一综合天堂另类专| 国产有码一区二区| 亚洲欧美日韩在线高清直播| 亚洲一区二区三区视频播放| 欧美日韩三区四区| 亚洲精品久久久一区二区三区| 亚洲国产精品传媒在线观看| 久久精品日韩| 久久精品视频免费| 国产日韩欧美制服另类| 亚洲女女女同性video| 亚洲砖区区免费| 欧美亚一区二区| 中国av一区| 欧美一区二区视频在线| 国产精品一区二区视频| 亚洲欧美一区二区激情| 久久久久国色av免费看影院| 激情校园亚洲| 久久一二三四| 亚洲国产黄色| 99热在这里有精品免费| 欧美乱人伦中文字幕在线| 曰本成人黄色| 亚洲精品网站在线播放gif| 999在线观看精品免费不卡网站| 免费成人在线视频网站| 最新69国产成人精品视频免费| 亚洲美女中文字幕| 欧美日韩在线影院| 亚洲欧美激情精品一区二区| 欧美在线影院| 亚洲国产高清在线| 欧美激情中文不卡| 亚洲一级影院| 美女爽到呻吟久久久久| 亚洲区国产区| 国产精品盗摄一区二区三区| 新67194成人永久网站| 另类春色校园亚洲| 亚洲欧洲精品一区二区三区不卡 | 欧美99久久| 一区二区三区av| 久久综合九色综合欧美狠狠| 亚洲精品久久久久久下一站| 国产精品激情偷乱一区二区∴| 欧美在线观看你懂的| 欧美激情一区二区三区在线| 在线综合欧美| 一区二区三区中文在线观看| 欧美日韩国产二区| 久久精品成人| 亚洲色图在线视频| 久久综合久久综合久久综合| 亚洲午夜电影在线观看| 影音先锋久久精品| 国产精品国产三级国产aⅴ无密码| 久久狠狠久久综合桃花| 99v久久综合狠狠综合久久| 久久一日本道色综合久久| 亚洲视频1区2区| 韩国三级电影一区二区| 欧美三级小说| 欧美成人亚洲成人日韩成人| 亚洲欧美中文日韩v在线观看| 最近中文字幕日韩精品| 久久网站免费| 欧美中文字幕视频| 一区二区欧美亚洲| 精品福利免费观看| 国产免费亚洲高清| 欧美午夜大胆人体| 欧美精品一区二区在线播放| 久热国产精品| 久久国产精品色婷婷| 亚洲小说区图片区| 99精品国产一区二区青青牛奶| 欧美激情一区二区三区高清视频 |