linux虚拟地址被大量占用,《Linux中为什么要使用虚拟地址》
1.直接使用物理地址
(1)安全風(fēng)險(xiǎn):
用戶有可能在程序中操作不當(dāng),直接操作了某個(gè)未知的物理地址,導(dǎo)致數(shù)據(jù)被改寫(xiě)。有可能導(dǎo)致那部分內(nèi)存的程序或者設(shè)備損壞。
使用虛擬地址的話,會(huì)有相對(duì)應(yīng)的保護(hù)機(jī)制。
(2)地址不確定
眾所周知,編譯完成后的程序是存放在硬盤(pán)上的,當(dāng)運(yùn)行的時(shí)候,需要將程序搬到內(nèi)存當(dāng)中去運(yùn)行,如果直接使用物理地址的話,我們無(wú)法確定內(nèi)存現(xiàn)在使用到哪里了,也就是說(shuō)拷貝的實(shí)際內(nèi)存地址每一次運(yùn)行都是不確定的,比如:第一次執(zhí)行a.out時(shí)候,內(nèi)存當(dāng)中一個(gè)進(jìn)程都沒(méi)有運(yùn)行,所以搬移到內(nèi)存地址是0x00000000,但是第二次的時(shí)候,內(nèi)存已經(jīng)有10個(gè)進(jìn)程在運(yùn)行了,那執(zhí)行a.out的時(shí)候,內(nèi)存地址就不一定了。
(3)效率低下
用的時(shí)候,我們一般的辦法是將不常用的進(jìn)程拷貝到磁盤(pán)的交換分區(qū)中,好騰出內(nèi)存,但是如果是物理地址的話,就需要將整個(gè)進(jìn)程一起拷走,這樣,在內(nèi)存和磁盤(pán)之間拷貝時(shí)間太長(zhǎng),效率較低。
2.虛擬地址的實(shí)現(xiàn)
虛擬地址實(shí)際上就相當(dāng)于在物理地址和進(jìn)程間引入一個(gè)第三者,一般實(shí)現(xiàn)方法有兩種:分段映射和分頁(yè)映射。
分段映射能夠解決安全隱患、地址不確定問(wèn)題,但是對(duì)于效率問(wèn)題仍然沒(méi)有很好的解決。因此引出了新的方法:分頁(yè)方式。分頁(yè)的方式實(shí)際上就是講內(nèi)存以4KB為單位分頁(yè)(一頁(yè)4KB),然后在Linux內(nèi)核中提供頁(yè)項(xiàng)目表、頁(yè)表,一個(gè)大小占多個(gè)頁(yè)的進(jìn)程,在運(yùn)行的時(shí)候,并不是所有的也都在運(yùn)行,這時(shí)候?qū)⑦\(yùn)行的頁(yè)拷貝到內(nèi)存,這樣就緩解了效率的問(wèn)題。
原文:https://www.cnblogs.com/zhuangquan/p/12157266.html
總結(jié)
以上是生活随笔為你收集整理的linux虚拟地址被大量占用,《Linux中为什么要使用虚拟地址》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 360购物小蜜打不开怎么办
- 下一篇: linux 组的管理,LINUX用户组管