IT技術互動交流平台

對Linux虛擬內存和物理內存的理解以及Linux下怎樣增加虛擬內存

來源|_辉能达:IT165收集  發布日期__刷qb软件免费版2013:2016-06-06 21:53:37

首先_--成人网1234,讓我們看下linux虛擬內存_||红米手机缺点:

 

第一層理解

1. 每個進程都有自己獨立的4G內存空間_摩登城市辅助工具,各個進程的內存空間具有類似的結構

 

2. 一個新進程建立的時候_班队活动记录,將會建立起自己的內存空間---金庸群侠传2秘籍,此進程的數據-|ed2k 麻仓优,代碼等從磁盤拷貝到自己的進程空間-_台湾身份证生成器,哪些數據在哪裏-||阿里魔战,都由進程控製表中的task_struct記錄||-易彩票正规吗,task_struct中記錄中一條鏈表_|-解放军胸章,記錄中內存空間的分配情況||周永慷,哪些地址有數據-__2125火影世界,哪些地址無數據|||深圳电视剧频道直播,哪些可讀---奥特曼剧场版有哪些,哪些可寫_军星网成绩查询,都可以通過這個鏈表記錄

 

3. 每個進程已經分配的內存空間_陈雅倩,都與對應的磁盤空間映射

 

問題__|2009qq下载:

計算機明明沒有那麼多內存(n個進程的話就需要n*4G)內存

建立一個進程-_众赢计划网,就要把磁盤上的程序文件拷貝到進程對應的內存中去__-cctv 6直播,對於一個程序對應的多個進程這種情況___阿荣旗贴吧,浪費內存|||wifi密码破解软件!

第二層理解

1. 每個進程的4G內存空間隻是虛擬內存空間-|_酒包装设计,每次訪問內存空間的某個地址|_陇海铁路线,都需要把地址翻譯為實際物理內存地址

2. 所有進程共享同一物理內存||戴拿奥特曼国语版,每個進程隻把自己目前需要的虛擬內存空間映射並存儲到物理內存上快乐大本营落跑甜心剧组。

3. 進程要知道哪些內存地址上的數據在物理內存上_-卓易彩票不能买了吗,哪些不在_|短信超人图标怎么点亮,還有在物理內存上的哪裏|_-优优娱乐11选5好不好,需要用頁表來記錄

4. 頁表的每一個表項分兩部分--_智行彩票平台,第一部分記錄此頁是否在物理內存上-北京58同城二手车,第二部分記錄物理內存頁的地址(如果在的話)

5. 當進程訪問某個虛擬地址___易富彩票app,去看頁表|亿彩有猫腻吗,如果發現對應的數據不在物理內存中-_|青阳房屋出租,則缺頁異常

6. 缺頁異常的處理過程|_|仙五前传dlc,就是把進程需要的數據從磁盤上拷貝到物理內存中-|-巨兽岛在哪,如果內存已經滿了97香港回归晚会,沒有空地方了|||脉灵康多功能治疗仪,那就找一個頁覆蓋-|广东打黑,當然如果被覆蓋的頁曾經被修改過_|158计划网站,需要將此頁寫回磁盤

總結|-掌上福利彩:

優點_|_花花公子成人网:

1.既然每個進程的內存空間都是一致而且固定的-|_destinywarfare,所以鏈接器在鏈接可執行文件時_-云顶国际能提现吗,可以設定內存地址||_畅购一卡通,而不用去管這些數據最終實際的內存地址|_-晨光bt,這是有獨立內存空間的好處

2.當不同的進程使用同樣的代碼時|_-致命交易市长放过我,比如庫文件中的代碼|||tisdeny,物理內存中可以隻存儲一份這樣的代碼_29彩票,不同的進程隻需要把自己的虛擬內存映射過去就可以了|_该隐打卡修斯,節省內存

3.在程序需要分配連續的內存空間的時候__|跑马场演员表,隻需要在虛擬內存空間分配連續空間---醉美cf单机版1 4,而不需要實際物理內存的連續空間--银利半岛卡,可以利用碎片_-_360彩票双色球杀号定胆。

 

另外|星际争霸2人族大讲堂,事實上|||22福利彩票官方手机版,在每個進程創建加載時__长治文明小博客,內核隻是為進程“創建”了虛擬內存的布局-nokia6120c软件下载,具體就是初始化進程控製表中內存相關的鏈表_-_诺基亚6700s拆机,實際上並不立即就把虛擬內存對應位置的程序數據和代碼(比如.text .data段)拷貝到物理內存中_||致富彩合法吗,隻是建立好虛擬內存和磁盤文件之間的映射就好(叫做存儲器映射)---花开有声婚纱,等到運行到對應的程序時|__对开海报尺寸,才會通過缺頁異常-盈彩彩票苹果版,來拷貝數據|-黄海地震。還有進程運行過程中-_-雅马哈r1报价,要動態分配內存|_-疥舒宁多少钱,比如malloc時|-苹果皮c皮官网,也隻是分配了虛擬內存|-助赢计划怎么选稳定,即為這塊虛擬內存對應的頁表項做相應設置|_例外包包官网,當進程真正訪問到此數據時_|盈彩娱乐是骗局吗,才引發缺頁異常__-青山湖教体局。

 

補充理解---角竹光寿打成语:

虛擬存儲器涉及三個概念-|-258彩票网是正规的吗: 虛擬存儲空間_--重庆城投集团董事长,磁盤空間-|1288彩票是正规公司吗?,內存空間

可以認為虛擬空間都被映射到了磁盤空間中|-恩艾效果怎么样,(事實上也是按需要映射到磁盤空間上-铜旗阵,通過mmap)-|2m牛蛙彩票开奖直,並且由頁表記錄映射位置|_-运盛彩票套路,當訪問到某個地址的時候-|_ct透视器,通過頁表中的有效位__至尊快三APP,可以得知此數據是否在內存中|_铜钱占卜,如果不是_-临淄中学网,則通過缺頁異常---阴道老化,將磁盤對應的數據拷貝到內存中-306官方彩票安卓,如果沒有空閑內存|__青岛大哥骂雅阁女,則選擇犧牲頁麵_||蕉岭网,替換其他頁麵__-至尊争霸彩票真的假的。

 

mmap是用來建立從虛擬空間到磁盤空間的映射的-_八路网,可以將一個虛擬空間地址映射到一個磁盤文件上||-09彩票,當不設置這個地址時-_商南眼,則由係統自動設置_-_温州口碑网,函數返回對應的內存地址(虛擬地址)--mellow高敏爱,當訪問這個地址的時候__0234大发彩票就没赢过钱,就需要把磁盤上的內容拷貝到內存了_234彩票是合法的吗,然後就可以讀或者寫|_111彩票v11安卓版,最後通過manmap可以將內存上的數據換回到磁盤-_canster,也就是解除虛擬空間和內存空間的映射__|大连开发区好望角,這也是一種讀寫磁盤文件的方法_|135彩票官网,也是一種進程共享數據的方法 共享內存

微笑接下來我們來討論下物理內存_-芜湖德尔福派克招聘:

 

 

在內核態申請內存比在用戶態申請內存要更為直接||qq游戏商城网址,它沒有采用用戶態那種延遲分配內存技術|-金手指v6。內核認為一旦有內核函數申請內存__|掉下了眼泪音译,那麼就必須立刻滿足該申請內存的請求-|-青岛极地海洋世界攻略,並且這個請求一定是正確合理的|-网易云音乐官网页版。相反_-|北风吹呀吹,對於用戶態申請內存的請求|_|东莞石甜甜,內核總是盡量延後分配物理內存_-2628彩票平台靠谱吗,用戶進程總是先獲得一個虛擬內存區的使用權__薄樱鬼同人 羁绊,最終通過缺頁異常獲得一塊真正的物理內存-__四川卫视参数。

1.物理內存的內核映射


IA32架構中內核虛擬地址空間隻有1GB大小(從3GB到4GB)--moko美空模特路遥,因此可以直接將1GB大小的物理內存(即常規內存)映射到內核地址空間_-云顶娱乐网址,但超出1GB大小的物理內存(即高端內存)就不能映射到內核空間_360彩票导航彩票走势图。為此__15700牛蚌彩票开奖现场,內核采取了下麵的方法使得內核可以使用所有的物理內存_|肾毒清。


1).高端內存不能全部映射到內核空間-_132彩票软件,也就是說這些物理內存沒有對應的線性地址|__诺基亚n78软件下载。不過---冀东油田吧,內核為每個物理頁框都分配了對應的頁框描述符|-深圳电视台第一现场,所有的頁框描述符都保存在mem_map數組中_-年利率是什么意思,因此每個頁框描述符的線性地址都是固定存在的_-_众赢国际彩票。內核此時可以使用alloc_pages()和alloc_page()來分配高端內存|_综艺盛典,因為這些函數返回頁框描述符的線性地址_观音童子。


2).內核地址空間的後128MB專門用於映射高端內存|--风流少年唐伯虎2,否則-|易发彩票邀请码怎么找?,沒有線性地址的高端內存不能被內核所訪問-|_倚天屠龙夺艳记下载。這些高端內存的內核映射顯然是暫時映射的_||京东商城首页淘宝,否則也隻能映射128MB的高端內存-优博彩票平台。當內核需要訪問高端內存時就臨時在這個區域進行地址映射__李天一受害老师照片,使用完畢之後再用來進行其他高端內存的映射-浪翻云博客。
由於要進行高端內存的內核映射--清穿之花妖耿氏,因此直接能夠映射的物理內存大小隻有896MB|-_沈阳酷狗俱乐部,該值保存在high_memory中|--海华癫痫病医院。內核地址空間的線性地址區間如下圖所示|-_尊龙娱乐人生:

 


從圖中可以看出_智彩彩票软件,內核采用了三種機製將高端內存映射到內核空間|--csol2什么时候出:永久內核映射__|手机qq 2010,固定映射和vmalloc機製||_盈盈彩票网首页。

2.物理內存管理機製
基於物理內存在內核空間中的映射原理-|2628彩票平台登录链接,物理內存的管理方式也有所不同__中央1台直播。內核中物理內存的管理機製主要有夥伴算法-阜新红茶馆,slab高速緩存和vmalloc機製||-街头篮球葡萄论坛。其中夥伴算法和slab高速緩存都在物理內存映射區分配物理內存_-132彩票登录,而vmalloc機製則在高端內存映射區分配物理內存__|连锁销售在中国。
夥伴算法
夥伴算法負責大塊連續物理內存的分配和釋放_-云购彩票什么时候有的,以頁框為基本單位_-脊柱宝。該機製可以避免外部碎片|_|36选7的好彩3。
per-CPU頁框高速緩存
內核經常請求和釋放單個頁框--_苏芩博客,該緩存包含預先分配的頁框咸水湾,用於滿足本地CPU發出的單一頁框請求_|_公车系列强x轮。
slab緩存
slab緩存負責小塊物理內存的分配-|永盛彩票网信得过吗,並且它也作為高速緩存锐捷aaa认证,主要針對內核中經常分配並釋放的對象-|_厚皮哪里多。
vmalloc機製
vmalloc機製使得內核通過連續的線性地址來訪問非連續的物理頁框|_|灵芝体,這樣可以最大限度的使用高端物理內存dnf6月21日。

3.物理內存的分配
內核發出內存申請的請求時--|365电玩棋牌游戏,根據內核函數調用接口將啟用不同的內存分配器__-助赢手机版免费。
3.1 分區頁框分配器
分區頁框分配器 (zoned page frame allocator) ,處理對連續頁框的內存分配請求__-188彩票官方网址。分區頁框管理器分為兩大部分:前端的管理區分配器和夥伴係統-_猜成语高级版,如下圖_--阿诺德蓄电池:


管理區分配器負責搜索一個能滿足請求頁框塊大小的管理區__|舞龙的意义。在每個管理區中,具體的頁框分配工作由夥伴係統負責_3M彩票官网。為了達到更好的係統性能,單個頁框的申請工作直接通過per-CPU頁框高速緩存完成|子龙郡。
該分配器通過幾個函數和宏來請求頁框,它們之間的封裝關係如下圖所示_|国产suv排名。


這些函數和宏將核心的分配函數__alloc_pages_nodemask()封裝,形成滿足不同分配需求的分配函數-__联众打码。其中___诺基亚166,alloc_pages()係列函數返回物理內存首頁框描述符-|北京站台,__get_free_pages()係列函數返回內存的線性地址_|-平山腾龙山。
3.2 slab分配器
slab 分配器最初是為了解決物理內存的內部碎片而提出的_亿彩彩票可以提现吗,它將內核中常用的數據結構看做對象_|-csol防沉迷系统。slab分配器為每一種對象建立高速緩存||夜游黄浦江。內核對該對象的分配和釋放均是在這塊高速緩存中操作|_-媚行深宫 菏泽天下。一種對象的slab分配器結構圖如下|__陕西省府谷县:


可以看到每種對象的高速緩存是由若幹個slab組成_|_昆山花桥开锁,每個slab是由若幹個頁框組成的-陈龙 羽毛球。雖然slab分配器可以分配比單個頁框更小的內存塊||-019期富婆看图肖特,但它所需的所有內存都是通過夥伴算法分配的_-|注册送红包彩票网站。
slab高速緩存分專用緩存和通用緩存|阜南县教育网。專用緩存是對特定的對象_||兰西小屋论坛,比如為內存描述符創建高速緩存--食品包装设计论文。通用緩存則是針對一般情況_|涪风论坛,適合分配任意大小的物理內存__|羽毛球陈龙,其接口即為kmalloc()-||街头篮球葡萄论坛。
3.3 非連續內存區內存的分配
內核通過vmalloc()來申請非連續的物理內存||盈彩网下载,若申請成功-|_038彩票是合法的吗?,該函數返回連續內存區的起始地址__二十二选五,否則|--煤气灶风门,返回NULL--高三毕业寄语。vmalloc()和kmalloc()申請的內存有所不同||-功夫小帅,kmalloc()所申請內存的線性地址與物理地址都是連續的|赢彩彩票有人玩吗,而vmalloc()所申請的內存線性地址連續而物理地址則是離散的|-_金华艾克医院院长孙尚见,兩個地址之間通過內核頁表進行映射_|-篱笆墙外百度影音。
vmalloc()的工作方式理解起來很簡單|--盈众彩票:
1).尋找一個新的連續線性地址空間-_-钟秀全;
2).依次分配一組非連續的頁框--_2009版qq下载;
3).為線性地址空間和非連續頁框建立映射關係-诺基亚6730c主题,即修改內核頁表|-_宋茜韩国综艺;
vmalloc()的內存分配原理與用戶態的內存分配相似--|李白谈爱原文,都是通過連續的虛擬內存來訪問離散的物理內存|_|happytogetherfx,並且虛擬地址和物理地址之間是通過頁表進行連接的-|-长宁温水游泳池,通過這種方式可以有效的使用物理內存_|航嘉功率计算器。但是應該注意的是|-步步为赢药膏功效,vmalloc()申請物理內存時是立即分配的-金川公司吧,因為內核認為這種內存分配請求是正當而且緊急的_|-什么叫波推;相反_永盛国际APP,用戶態有內存請求時_-2M彩票2m永久费资料,內核總是盡可能的延後--106cc彩票客服,畢竟用戶態跟內核態不在一個特權級__银行存款日记账怎么记。

【簡單命令演示】Linux下怎樣增加虛擬內存|||借身份证号?

1_广州网货交易会、打開終端|-广州莲香楼,切換到root用戶_堂色品,輸入||_玩具熊不要冬眠:free -m查看內存狀態
[root@lxt lxt]# free -m
total used free shared buffers cached
Mem: 498 357 141 0 27 162
-/+ buffers/cache: 167 331
Swap: 1023 0 1023


2__描写大自然的优美语句、輸入df -B M(或df -m)查看各分區當前使用情況
[root@lxt lxt]# df -B M
文件係統 1M-塊 已用 可用 已用% 掛載點
/dev/mapper/vg_lxt-lv_root
12875M 4059M 8162M 34% /
/dev/sda7 194M 14M 170M 8% /boot
tmpfs 250M 1M 249M 1% /dev/shm
(fdisk -l可查看磁盤分區情況)

3-|金山抢票软件、選擇一個較大的分區||_奥鹏教育学生请进,建立分區文件_-功夫国语高清:
[root@lxt lxt]# dd if=/dev/zero of=/swapadd bs=1024 count=524288
524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied-_|联建科技,13.0709 秒-_社旗县教育网,41.1 MB/秒
以上命令在根目錄新建一個名為swapadd-库尔勒暴乱,大小為512M的虛擬內存文件

4_|摩登城市辅助、移動該文件到空間較大的其他分區_-洪荒重生录:
[root@lxt lxt]# mkdir /mnt/swap
[root@lxt /]# mv swapadd /mnt/swap

5||_赢彩网是哪年成立的、執行以下命令啟用虛擬內存並重啟電腦
[root@lxt /]# mkswap /mnt/swap/swapadd
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=a5c8b651-6f64-4414-bb5f-580b742acfce
[root@lxt /]# swapon /mnt/swap/swapadd
查看內存--海比网:
[root@lxt /]# free -m
total used free shared buffers cached
Mem: 498 492 6 0 15 302
-/+ buffers/cache: 174 323
Swap: 1535 0 1535

6__金川公司吧、如果不需要使用新增的虛擬內存-|印度新娘第四部,則輸入-__女孩一年做5次人流:
swapoff -v /mnt/swap/swapadd

 

【作者推薦】野狗 - 國內領先的實時後端雲 _-_智行飞机票出票靠谱吗: https://www.wilddog.com/

延伸閱讀|尊龙娱乐官方网站app:

Tag標簽_|金盟减肥药: 內存   物理  
  • 專題推薦

  • Directx11 遊戲編程入門教程
  • 專題主要學習DirectX的初級編程入門學習--198彩票自动挂机软件,對Directx11的入門及初學者有...... 詳細
  • Windows7係統入門 優化 技巧技術專題
  • Windows7係統專題 無論是升級操作係統_|_湖北专科学校排名、資料備份||小小智慧树之巧巧手、加強資料的安全及管...... 詳細
About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯係方式
本站內容來自於互聯網,僅供用於網絡技術學習,學習中請遵循相關法律法規
秒速赛车重庆时时彩UC彩票众发彩票快乐飞艇博发彩票

免责声明: 本站资料及图片来源互联网文章,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关,如用户分享不慎侵犯了您的权益,请联系我们告知,我们将做删除处理!