file mmap

do_set_pmd

統計參數只會在這里設置:

add_mm_counter(vma->vm_mm, MM_FILEPAGES, HPAGE_PMD_NR);

?但是這貌似都是處理大頁的情況哪,小頁呢?

alloc_set_pte中有函數:inc_mm_couter_fast(vma->vm_mm, mm_couter_file(page))

?其中,mm_counter_file是在include 目錄下設置的,注意一下,這個函數返回的是頁的類型,有兩種類型,一種是:

1446 static inline int mm_counter_file(struct page *page)
1447 {
1448     if (PageSwapBacked(page))  //如果這個頁是被swap出去了,那么這個頁就是MM_SHMEMPAGES,
1449         return MM_SHMEMPAGES;
1450     return MM_FILEPAGES;
1451 }
1452 

SHMEMPAGES 感覺和ANON/FILE是兩種不同的考察維度呀,也就是說匿名頁和filebacked的頁都是可以當做SHMEM來用的。好像不對啊,匿名頁就是匿名頁,如果是可以共享的,也就是說MAP_ANONYMOUS? 和 MAP_SHARED 是可以同時設置的?【結論MAP_ANONYMOUS和MAP_SHARED是不可以同時設置的】,

PRIVATE 和 SHARED 都是對于文件來說的,是說多個

[什么叫做共享內存的頁呀: 下面這個patch中加了這個統計項,patch大致思想是:目前共享內存的頁,都和file-backed的文件一起去統計了(實際共享內存后面掛載的設備是/dev/zero,我們沒辦法看到共享內存的頁了,所以這個patch就是解決的就是區分這兩種頁]

eca56ff906bdd0239485e8b47154a6e73dd9a2f3

?那么下面一個問題還是沒有解決,為什么mm_counter_file中統計出來的page只會去統計MM_SHMEM / MM_FILE

?除了匿名頁之外,有兩種頁:共享內存的頁還有文件backed的頁

MAP_ANONYMOUS 是不能單獨出現的

SHMEMPAGES既可以當做

?這一部分好好講講文件系統的mmap file-backed

[ 一個進程所有的頁的類型包括:匿名頁,文件backed的頁,共享內存的頁,swap出去的頁.]

私有的文件映射如果改動的話會發生啥事情

《Linux環境編程》對該部分的解釋有亮點,但是避重就輕,過多地去講在MAP_SHARED的情況下,內存映射是如何完成的,比較難理解的是私有映射是如何完成的:

如果我設置了私有的映射,并且還具有寫權限,這個時候如果發生了寫,操作系統是如何實現的呢?這種情況也分明是存在的!

猜想:這個時候會發生寫時寫時復制機制,不會影響到文件的內容:【測試程序:

https://github.com/honpey/codebox/blob/master/mmap/mmap_file_private.c

設置了文件的MAP_PRIVATE 標志之后,我們發現,此時寫入的任何東西都不會保存,所以我們就大膽猜想,初始化時,是做了一個映射,但是第一次訪問之后,發生了缺頁中斷,而這個缺頁中斷的作用是從pagecache中copy一份數據到新的page中,即所謂的寫時復制!這是file-backed mmap類型的寫時復制。

這個

?

轉載于:https://www.cnblogs.com/honpey/p/7751834.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253023.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253023.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253023.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux鏈接庫三(C跟C++之間動態庫的相互調用)

http://www.cppblog.com/wolf/articles/74928.html http://www.cppblog.com/wolf/articles/77828.html http://www.jb51.net/article/34990.htm C和C之間庫的互相調用 extern "C"的理解: 很多人認為"C"表示的C語言,實際并非如此&…

C#如何開發多語言支持的Winform程序

C# Winform項目多語言實現(支持簡/繁/英三種語言)有很多種方案實現多語言,我在這里介紹一種最簡單最容易理解的,作為教學材題應該從通俗易懂入手。在寫這篇文章之前,本來想用枚舉窗體對象成員的方式設置語言,但是找不到源代碼了&a…

Alpha 沖刺 (2/10)

Alpha 沖刺 (2/10) 隊名:第三視角 組長博客鏈接 本次作業鏈接 團隊部分 團隊燃盡圖 工作情況匯報 張揚(組長) 過去兩天完成了哪些任務: 文字/口頭描述: 1、學習qqbot庫; 2、實時保存…

Linux學習之第二課時--linux命令格式及命令概述

命令概述 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盤管理,文件存取,目錄操作,進程管理,文件權限設定等 Linux命令格式 Linux命令的組成部分:命令字 命令選項參數&#xff…

Linux C語言調用C++動態鏈接庫

Linux C語言調用C動態鏈接庫 標簽: C調用C庫 2014-03-10 22:56 3744人閱讀 評論(0) 收藏 舉報 分類: 【Linux應用開發】(48) 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 如果你有一個c做的動態…

Android實踐 -- 對apk進行系統簽名

對apk進行系統簽名 簽名工具 網盤下載 ,需要Android系統的簽名的文件platform.x509.pem 和 platform.pk8 這個兩個文件在Android源碼中的 ./build/target/product/security 目錄下 具體的使用方法: java -jar signapk.jar platform.x509.pem platform.…

Java編寫基于netty的RPC框架

一 簡單概念RPC: ( Remote Procedure Call),遠程調用過程,是通過網絡調用遠程計算機的進程中某個方法,從而獲取到想要的數據,過程如同調用本地的方法一樣.阻塞IO :當阻塞I/O在調用InputStream.read()方法是阻塞的,一直等到數據到來時才返回,同樣ServerSocket.accept()方法時,也…

linux下c和c++互相調用

c調用cpp 創建個目錄 創建4個文件 c.c--c文件 cpp.cpp--c文件 cpp.hh--c聲明文件 Makefile c.c [javascript] view plaincopy#include "cpp.hh" int main() { cpp_fun(); } cpp.cpp [cpp] view plaincopy#include "cpp.hh" #include <stdi…

Applications Manager Docker監控

Docker 是一個流行的開源容器應用程序&#xff0c;允許您將應用程序、應用程序的內部依賴和關聯庫打包到一個單元中。Docker 的主要優點在于單臺機器上的多個 docker 容器共享同一操作系統內核&#xff0c;這可以幫助提升性能和節省大量內存。監控 docker 容器會很困難&#xf…

find

Linux中find常見用法示例 find path -option [ -print ] [ -exec -ok command ] {} \; find命令的參數&#xff1b; pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄&#xff0c;用/來表示系統根目錄。-print&#xff1a; find命令將匹配的文件輸出…

PHP將多個文件中的內容合并為新的文件

function test(){$hostdir iconv("utf-8","gbk","C:\Users\原萬里\Desktop\日常筆記") ; //iconv()轉換編碼方式&#xff0c;將UTF-8轉換為gbk&#xff0c;若是報錯在gbk后加//IGNORE$filesnames scandir($hostdir); …

HTTP Live Streaming直播(iOS直播)技術分析與實現

不經意間發現&#xff0c;大半年沒寫博客了&#xff0c;自覺汗顏。實則2012后半年&#xff0c;家中的事一樣接著一樣發生&#xff0c;實在是沒有時間。快過年了&#xff0c;總算忙里偷閑&#xff0c;把最近的一些技術成果&#xff0c;總結成了文章&#xff0c;與大家分享。 前些…

中文論文格式【雜】

轉自知乎&#xff0c;https://www.zhihu.com/question/23791742/answer/344752056 【紙張】畢業論文一律打印&#xff0c;采取A4紙張&#xff0c;頁邊距一律采取&#xff1a;上、下2.5cm&#xff0c;左3cm,右1.5cm&#xff0c;行間距取多倍行距(設置值為1.25);字符間距為默認值…

jmeter 非gui 模式跑jmx

D:\study\apache-jmeter-3.0\bin>jmeter -n -t D:\study\apache-jmeter-3.0\基金排行.jmx -l D:\study\apache-jmeter-3.0\result_log\獲取基金排行.jtl D:\study\apache-jmeter-3.2\bin>jmeter -n -t D:\study\apache-jmeter-3.2\bin\examples\test\百度新聞首頁.jmx -l…

noip模擬賽 遭遇

分析&#xff1a;暴力挺好打的&#xff0c;對于前30%的數據神搜&#xff0c;hi相同的數據將所有的建筑按照c從小到大排序&#xff0c;看最多能跳多少,ci0的數據將所有的建筑按照h從小到大排序&#xff0c;枚舉起點和終點&#xff0c;看能否跳這么多,取個max就可以了.這樣70分就…

揭開全景相機創業真相:國外一開源國內就自主

今年以來全景相機有了一個大爆發&#xff0c;國外Google、三星、諾基亞等大廠都進入了這個領域&#xff0c;國內也有很多廠商推出了全景相機。 Bubl全景相機國外一開源&#xff0c;國內就自主。這在VR&#xff08;虛擬現實&#xff09;領域體現的淋漓盡致——Google的Cardborad…

福大軟工1816 · 團隊現場編程實戰(抽獎系統)

值得一看的補充版本演示視頻 軟工錦鯉在這里程序版本鏈接及說明 按時提交版本 以基礎功能為主github鏈接&#xff1a;first version測試環境說明 本程序在python 3.6以上環境下運行操作說明&#xff1a; 鍵入抽獎關鍵詞&#xff0c;支持&#xff1a;#我要紅包#或“我要換組“或…

LeakCanary——直白的展現Android中的內存泄露

之前碰到的OOM問題&#xff0c;終于很直白的呈現在我的眼前&#xff1a;我嘗試了MAT&#xff0c;但是發現不怎么會用。直到今天終于發現了這個新工具&#xff1a; 當我們的App中存在內存泄露時會在通知欄彈出通知&#xff1a; 當點擊該通知時&#xff0c;會跳轉到具體的頁面&am…

老司機做VR視頻,需要什么樣的全景相機?

做為一個在全景內容領域摸爬滾打一年有余的老司機&#xff0c;經歷了太多的坑。最近有不少朋友轉行進入這個領域&#xff0c;問我買什么樣的相機好。我現在項目太多&#xff0c;根本沒空詳盡解答。所以寫下這篇文章&#xff0c;不懂得自己看吧。 說白了&#xff0c;買什么樣子…

域乎曹勝虎:傳統互聯網“生病”了

11月17日&#xff0c;2018&#xff08;第12屆&#xff09;創業周暨全球創業周中國站在上海盛大召開&#xff0c;由上海域乎信息技術有限公司&#xff08;以下簡稱“域乎”&#xff09;承辦的區塊鏈專場論壇——《區塊鏈產業應用賦能精英論壇》成功舉辦&#xff0c;吸引了眾多業…