linux的虛擬內(nèi)存機(jī)制
Linux是一套免費(fèi)使用和自由傳播的類(lèi)UNIX操作系統(tǒng),是款獨(dú)立的非常強(qiáng)大的系統(tǒng),有著很多的愛(ài)好者,那么今天我們就一起來(lái)了解一下他那獨(dú)特的虛擬內(nèi)存機(jī)制吧。
【虛擬內(nèi)存常見(jiàn)問(wèn)題】
linux的虛擬內(nèi)存機(jī)制:1、每個(gè)進(jìn)程都有自己獨(dú)立的4G內(nèi)存空間,各個(gè)進(jìn)程的內(nèi)存空間具有類(lèi)似的結(jié)構(gòu)。
Linux內(nèi)存管理采用的是頁(yè)式管理,使用的是多級(jí)頁(yè)表,動(dòng)態(tài)地址轉(zhuǎn)換機(jī)構(gòu)與主存、輔存共同實(shí)現(xiàn)虛擬內(nèi)存一個(gè)新進(jìn)程建立的時(shí)候,
將會(huì)建立起自己的內(nèi)存空間,此進(jìn)程的數(shù)據(jù),代碼等從磁盤(pán)拷貝到自己的進(jìn)程空間,哪些數(shù)據(jù)在哪里,
都由進(jìn)程控制表中的task_struct記錄,task_struct中記錄中一條鏈表,記錄中內(nèi)存空間的分配情況,
哪些地址有數(shù)據(jù),哪些地址無(wú)數(shù)據(jù),哪些可讀,哪些可寫(xiě),都可以通過(guò)這個(gè)鏈表記錄每個(gè)進(jìn)程已經(jīng)分配的內(nèi)存空間,都與對(duì)應(yīng)的磁盤(pán)空間映射。
2、每個(gè)程序都能看到一片完整連續(xù)的地址空間,這些空間并沒(méi)有直接關(guān)聯(lián)到物理內(nèi)存,而是操作系統(tǒng)提供了內(nèi)存的一種抽象概念,
使得每個(gè)進(jìn)程都有一個(gè)連續(xù)完整的地址空間,在程序的運(yùn)行過(guò)程,再完成虛擬地址到物理地址的轉(zhuǎn)換。
我們同樣知道,進(jìn)程的地址空間是分段的,存在所謂的數(shù)據(jù)段,代碼段,bbs段,堆,棧等等。每個(gè)段都有特定的作用。
同時(shí)計(jì)算機(jī)沒(méi)有那么多的內(nèi)存(n個(gè)進(jìn)程就需要對(duì)應(yīng)n*4G內(nèi)存),建立一個(gè)進(jìn)程,就要把磁盤(pán)上的程序文件拷貝到進(jìn)程對(duì)應(yīng)的內(nèi)存中去,
對(duì)于有一個(gè)程序?qū)?yīng)多個(gè)進(jìn)程這種情況,浪費(fèi)內(nèi)存。
3、每個(gè)進(jìn)程的4G內(nèi)存空間只是虛擬內(nèi)存空間,每次訪問(wèn)內(nèi)存空間的某個(gè)地址,都需要把地址翻譯為實(shí)際物理地址所有進(jìn)程共享同一物理內(nèi)存,
每個(gè)進(jìn)程只把自己目前需要的虛擬內(nèi)存空間映射并存儲(chǔ)到物理內(nèi)存上進(jìn)程要知道哪些內(nèi)存地址上的數(shù)據(jù)在物理內(nèi)存上,哪些不在,還有在物理內(nèi)存上的哪里,
需要頁(yè)表記錄頁(yè)表的每一個(gè)表項(xiàng)分為兩部分,第一部分記錄此頁(yè)是否在物理內(nèi)存上,第二部分記錄物理內(nèi)存的地址當(dāng)進(jìn)程訪問(wèn)某個(gè)虛擬地址,
去查看頁(yè)表,如果對(duì)應(yīng)的數(shù)據(jù)不在物理內(nèi)存中,,則缺頁(yè)異常缺頁(yè)異常的處理過(guò)程,就是把進(jìn)程需要的數(shù)據(jù)從磁盤(pán)拷貝到物理內(nèi)存中,
如果內(nèi)存已經(jīng)滿(mǎn)了 ,沒(méi)有空地方,那就找一個(gè)頁(yè)進(jìn)行覆蓋,當(dāng)然如果被覆蓋的頁(yè)曾經(jīng)被修改過(guò),需要將此頁(yè)寫(xiě)回磁盤(pán)。
4、竟然每個(gè)進(jìn)程的內(nèi)存空間都是一致而且固定的,所以鏈接器在鏈接執(zhí)行文件時(shí),可以設(shè)定內(nèi)存地址,而 不用去管這些數(shù)據(jù)最終實(shí)際的內(nèi)存地址,
這是有獨(dú)立內(nèi)存 空間的好處當(dāng)不同的進(jìn)程使用同樣的代碼時(shí),比如庫(kù)文件中的代碼,物理內(nèi)存中可以只存儲(chǔ)一份這樣的代碼,
不同的進(jìn)程只需要把自己的虛擬內(nèi)存映射過(guò)去就可以了,節(jié)省內(nèi)存在程序需要分配連續(xù)的內(nèi)存空間的時(shí)候,
只需要在虛擬內(nèi)存空間分配連續(xù)空間,而不需要實(shí)際物理內(nèi)存的連續(xù)空間,可以利用碎片。
以上就是給各位小伙伴帶來(lái)的linux虛擬內(nèi)存機(jī)制的所有內(nèi)容,希望你們會(huì)喜歡。更多相關(guān)教程請(qǐng)收藏好吧啦網(wǎng)~
以上就是linux的虛擬內(nèi)存機(jī)制的全部?jī)?nèi)容,望能這篇linux的虛擬內(nèi)存機(jī)制可以幫助您解決問(wèn)題,能夠解決大家的實(shí)際問(wèn)題是好吧啦網(wǎng)一直努力的方向和目標(biāo)。
相關(guān)文章:
1. uos支持觸屏嗎? 統(tǒng)信uos使用觸屏操作的技巧2. 企業(yè) Win10 設(shè)備出現(xiàn)開(kāi)始菜單和任務(wù)欄快捷方式消失問(wèn)題,微軟展開(kāi)調(diào)查3. 如何在電腦PC上啟動(dòng)Windows11和Linux雙系統(tǒng)4. 如何雙啟動(dòng)Win11和Linux系統(tǒng)?Win11 和 Linux雙系統(tǒng)安裝教程5. Centos7安裝Chacha20加密算法詳解6. 世界上最流行的操作系統(tǒng)不是Linux或者Windows,而是MINIX7. uos怎么格式化硬盤(pán)? UOS磁盤(pán)分區(qū)格式化的技巧8. UOS怎么設(shè)置時(shí)間? 統(tǒng)信UOS顯示24小時(shí)制的技巧9. 使用kali破解wifi密碼的方式10. 統(tǒng)信UOS個(gè)人版(V201030)正式發(fā)布 新增功能匯總
