久久午夜无码,国产中文资源,Chinese熟女熟妇2乱2,高清五码d一区

strncmp(虛擬內(nèi)存 和 page fault 的解釋)

strncmp(虛擬內(nèi)存 和 page fault 的解釋)

龔易真 2025-04-13 科技 14 次瀏覽 0個(gè)評(píng)論
虛擬內(nèi)存 和 page fault 的解釋

Linux 內(nèi)核給每個(gè)進(jìn)程都提供了一個(gè)獨(dú)立的虛擬地址空間,并且這個(gè)地址空間是連續(xù)的。這樣進(jìn)程就可以很方便地訪問內(nèi)存,更確切地說(shuō)是訪問虛擬內(nèi)存。

1、什么是虛擬內(nèi)存

假設(shè)某個(gè)進(jìn)程需要100MB的空間,而內(nèi)存假設(shè)是16MB的,如果進(jìn)程直接使用物理地址,就會(huì)因?yàn)閮?nèi)存不足而無(wú)法運(yùn)行。

既然進(jìn)程不是直接訪問物理內(nèi)存,那么進(jìn)程中涉及的內(nèi)存地址當(dāng)然也不是物理內(nèi)存地址。而是虛擬的內(nèi)存地址,虛擬的內(nèi)存地址和物理的內(nèi)存地址之間保持一種映射關(guān)系,這種關(guān)系由內(nèi)存管理單元(MMU)進(jìn)行管理。

虛擬內(nèi)存 和 page fault 的解釋

內(nèi)存管理單元(Memory Management Unit,MMU),將物理內(nèi)存分割成多個(gè)pages,MMU管理進(jìn)程的虛擬地址空間中的page和物理內(nèi)存中的page之間的映射關(guān)系。、

因?yàn)槭怯成洌噪S時(shí)都可能發(fā)生變化,例如某個(gè)進(jìn)程虛擬內(nèi)存空間中的page1,在不同的時(shí)間點(diǎn),可能出現(xiàn)在物理內(nèi)存中的不同位置(當(dāng)發(fā)生了頁(yè)交換時(shí))。

虛擬內(nèi)存 和 page fault 的解釋

2、什么是 page fault

虛擬地址空間的內(nèi)部又被分為內(nèi)核空間和用戶空間兩部分。并不是所有的虛擬內(nèi)存都會(huì)分配物理內(nèi)存,只有那些實(shí)際使用的虛擬內(nèi)存才分配物理內(nèi)存,并且分配后的物理內(nèi)存,是通過內(nèi)存映射來(lái)管理的。

當(dāng)進(jìn)程訪問它的虛擬地址空間中的page時(shí),如果這個(gè)page目前還不在物理內(nèi)存中,此時(shí)CPU是不能工作的,Linux會(huì)產(chǎn)生一個(gè)hard page fault中斷。系統(tǒng)需要從慢速設(shè)備(如磁盤)將對(duì)應(yīng)的數(shù)據(jù)page讀入物理內(nèi)存,并建立物理內(nèi)存地址與虛擬地址空間page的映射關(guān)系。然后進(jìn)程才能訪問這部分虛擬地址空間的內(nèi)存。

page fault 又分為三種:minor page fault、major page fault、invalid(segment fault)。

2.1、minor page fault

也稱為 soft page fault,指需要訪問的內(nèi)存不在虛擬地址空間,但是在物理內(nèi)存中,需要MMU建立物理內(nèi)存和虛擬地址空間的映射關(guān)系。

當(dāng)一個(gè)進(jìn)程在調(diào)用 malloc 獲取虛擬空間地址后,首次訪問該地址會(huì)發(fā)生一次soft page fault。

通常是多個(gè)進(jìn)程訪問同一個(gè)共享內(nèi)存中的數(shù)據(jù),當(dāng)某些進(jìn)程還沒有建立起映射關(guān)系,訪問時(shí)也會(huì)出現(xiàn)soft page fault。

虛擬內(nèi)存 和 page fault 的解釋

2.2、major page fault

也稱為 hard page fault,指需要訪問的內(nèi)存不在虛擬地址空間,也不在物理內(nèi)存中,需要從慢速設(shè)備載入。

從磁盤 swap in 回到物理內(nèi)存就是 hard page fault。

swap out:當(dāng)物理內(nèi)存不夠時(shí),把一些物理內(nèi)存 page 中的內(nèi)容寫入到磁盤,以騰出一些空閑的 page;swap in:當(dāng)CPU要執(zhí)行的指令被發(fā)現(xiàn)已經(jīng) swap out 到了磁盤中, 這時(shí)就需要從磁盤把這些指令再 swap in 到物理內(nèi)存中。

注意:swap in 和 swap out 的操作都是比較耗時(shí)的。

2.3、invalid(segment fault)

也稱為 segment fault,指進(jìn)程需要訪問的內(nèi)存地址不在它的虛擬地址空間范圍內(nèi),屬于越界訪問,內(nèi)核就會(huì)報(bào) segment fault 錯(cuò)誤。

造成 segment fault 的原因可能有以下幾種:

堆棧溢出;內(nèi)存訪問越界,如數(shù)組下表錯(cuò)誤訪問越界;使用strcpy/strcat/sprintf/strcmp 等字符串操作函數(shù)導(dǎo)致的讀寫越界,應(yīng)盡量使用strncpy/strncat/snprintf/strncmp 等函數(shù);非法指針:野指針,錯(cuò)誤的指針轉(zhuǎn)換等;多線程讀寫的數(shù)據(jù)未加鎖保護(hù),或使用了線程不安全的函數(shù)。虛擬內(nèi)存 和 page fault 的解釋

轉(zhuǎn)載請(qǐng)注明來(lái)自夕逆IT,本文標(biāo)題:《strncmp(虛擬內(nèi)存 和 page fault 的解釋)》

每一天,每一秒,你所做的決定都會(huì)改變你的人生!

發(fā)表評(píng)論

快捷回復(fù):

評(píng)論列表 (暫無(wú)評(píng)論,14人圍觀)參與討論

還沒有評(píng)論,來(lái)說(shuō)兩句吧...

中文无码大片在线观看| 免费一级特黄aa大片爽爽影院| 一极无码高清| 成人91亚洲精品网站| 欧洲精品一区二区三区| 人人天天夜夜| 无码的国模视频在线| 日本乱人伦xxxx| 国产精品一区一区三区四区| 欧美激情网站| 精品人妻码一区二区| 亚洲一区无码专区久久| 日本乱人伦精品免费观看| 亚洲伊人国产成人av| 亚洲av日韩av天堂影片精品一| 亚洲色图最新网站| 国产又爽又粗又猛的免费视频| 麻豆视频高清无码| 精品欧洲久久久久99| 亚洲精品中文字幕乱码| 国产欧美日韩亚欧| av在线6区| 欧美日韩综合一区在线播放| 无码一区二区三区免费看视频| 亚洲AV无码一区二区三区16| 婷婷六月激情首页| 国产精品秘密臂麻豆| 极品三p一区二区| 免费综合操操AV| 国产三级在线播放| 丰满少妇与性猛交| 日日摸夜夜添夜夜免费视频| 欧美国产综合日韩一区二区| 久久天堂一区AV| 日本高清一区二区三区水蜜桃 | 永久免费a∨片在线观看| 欧美中文字幕图文小说| 欧美三级大黄片| 人禽伦免费视频播放| 久久中文大香蕉人妻| 色欲aⅴ亚洲情无码AV |