想起之前上過(guò)的操作系統(tǒng)課,沒認(rèn)真聽啊。弄抬。
1. 每個(gè)進(jìn)程都有自己獨(dú)立的4G內(nèi)存空間,各個(gè)進(jìn)程的內(nèi)存空間具有類似的結(jié)構(gòu)
2. 一個(gè)新進(jìn)程建立的時(shí)候宪郊,將會(huì)建立起自己的內(nèi)存空間掂恕,此進(jìn)程的數(shù)據(jù)拖陆,代碼等從磁盤拷貝到自己的進(jìn)程空間,哪些數(shù)據(jù)在哪里懊亡,都由進(jìn)程控制表中的task_struct記錄依啰,task_struct中記錄中一條鏈表,記錄中內(nèi)存空間的分配情況店枣,哪些地址有數(shù)據(jù)速警,哪些地址無(wú)數(shù)據(jù),哪些可讀鸯两,哪些可寫闷旧,都可以通過(guò)這個(gè)鏈表記錄
問(wèn)題
計(jì)算機(jī)明明沒有那么多內(nèi)存(n個(gè)進(jìn)程的話就需要n4G)內(nèi)存*
建立一個(gè)進(jìn)程,就要把磁盤上的程序文件拷貝到進(jìn)程對(duì)應(yīng)的內(nèi)存中去钧唐,對(duì)于一個(gè)程序?qū)?yīng)的多個(gè)進(jìn)程這種情況忙灼,浪費(fèi)內(nèi)存!
第二層理解
1. 每個(gè)進(jìn)程的4G內(nèi)存空間只是虛擬內(nèi)存空間钝侠,每次訪問(wèn)內(nèi)存空間的某個(gè)地址该园,都需要把地址翻譯為實(shí)際物理內(nèi)存地址。
2. 所有進(jìn)程共享同一物理內(nèi)存帅韧,每個(gè)進(jìn)程只把自己目前需要的虛擬內(nèi)存空間映射并存儲(chǔ)到物理內(nèi)存上里初。
3. 進(jìn)程要知道哪些內(nèi)存地址上的數(shù)據(jù)在物理內(nèi)存上,哪些不在弱匪,還有在物理內(nèi)存上的哪里青瀑,需要用頁(yè)表來(lái)記錄
4. 頁(yè)表的每一個(gè)表項(xiàng)分兩部分,第一部分記錄此頁(yè)是否在物理內(nèi)存上萧诫,第二部分記錄物理內(nèi)存頁(yè)的地址(如果在的話)
5. 當(dāng)進(jìn)程訪問(wèn)某個(gè)虛擬地址斥难,去看頁(yè)表,如果發(fā)現(xiàn)對(duì)應(yīng)的數(shù)據(jù)不在物理內(nèi)存中帘饶,則缺頁(yè)異常
6. 缺頁(yè)異常的處理過(guò)程哑诊,就是把進(jìn)程需要的數(shù)據(jù)從磁盤上拷貝到物理內(nèi)存中,如果內(nèi)存已經(jīng)滿了及刻,沒有空地方了镀裤,那就找一個(gè)頁(yè)覆蓋,當(dāng)然如果被覆蓋的頁(yè)曾經(jīng)被修改過(guò)缴饭,需要將此頁(yè)寫回磁盤
總結(jié)
每個(gè)進(jìn)程都有4G內(nèi)存空間暑劝,這個(gè)4G空間為虛擬內(nèi)存,當(dāng)進(jìn)程訪問(wèn)數(shù)據(jù)時(shí)颗搂。頁(yè)表記錄哪些邏輯地址(物理內(nèi)存+虛擬內(nèi)存)在物理內(nèi)存上哪些不在担猛,頁(yè)表的每一個(gè)表項(xiàng)分兩部分,第一部分記錄此頁(yè)是否在物理內(nèi)存上,第二部分記錄物理內(nèi)存的地址(如果在的話)傅联,當(dāng)進(jìn)程訪問(wèn)某個(gè)地址時(shí)先改,先看頁(yè)表,如果發(fā)現(xiàn)不在物理內(nèi)存中則缺頁(yè)異常蒸走,則把進(jìn)程所需的數(shù)據(jù)從磁盤上拷貝到內(nèi)存中仇奶,如果內(nèi)存已滿,則找一個(gè)頁(yè)覆蓋比驻,當(dāng)然此頁(yè)若已被更改與磁盤中的不一致该溯,則要將此頁(yè)寫會(huì)磁盤。
優(yōu)點(diǎn):
1.既然每個(gè)進(jìn)程的內(nèi)存空間都是一致而且固定的别惦,所以鏈接器在鏈接可執(zhí)行文件時(shí)朗伶,可以設(shè)定內(nèi)存地址,而不用去管這些數(shù)據(jù)最終實(shí)際的內(nèi)存地址步咪,這是有獨(dú)立內(nèi)存空間的好處
2.當(dāng)不同的進(jìn)程使用同樣的代碼時(shí),比如庫(kù)文件中的代碼益楼,物理內(nèi)存中可以只存儲(chǔ)一份這樣的代碼猾漫,不同的進(jìn)程只需要把自己的虛擬內(nèi)存映射過(guò)去就可以了,節(jié)省內(nèi)存
3.在程序需要分配連續(xù)的內(nèi)存空間的時(shí)候感凤,只需要在虛擬內(nèi)存空間分配連續(xù)空間悯周,而不需要實(shí)際物理內(nèi)存的連續(xù)空間,可以利用碎片陪竿。
原文:http://www.cnblogs.com/dyllove98/archive/2013/06/12/3132940.html