自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

操作系統(tǒng)/虛擬化安全知識(shí)域:內(nèi)存保護(hù)和地址空間

系統(tǒng) 其他OS
頁(yè)表是現(xiàn)代操作系統(tǒng)控制內(nèi)存訪問(wèn)的主要方式。但是,一些(主要是較舊的)操作系統(tǒng)還使用另一個(gè)技巧:分段。毫不奇怪,最早同時(shí)使用分段和分頁(yè)的操作系統(tǒng)之一是Multics。

內(nèi)存保護(hù)和地址空間

僅當(dāng)安全域彼此隔離時(shí),訪問(wèn)控制才有意義。為此,我們需要根據(jù)訪問(wèn)權(quán)限和能夠授予或撤銷此類訪問(wèn)權(quán)限的特權(quán)實(shí)體分離安全域的數(shù)據(jù)。我們將首先查看隔離,稍后在引入保護(hù)環(huán)時(shí)討論特權(quán)。

一個(gè)進(jìn)程通常不應(yīng)該能夠在不經(jīng)過(guò)適當(dāng)?shù)脑L問(wèn)控制檢查的情況下讀取另一個(gè)進(jìn)程的數(shù)據(jù)。Multics和幾乎所有隨后的操作系統(tǒng)(如UNIX和Windows)通過(guò)為每個(gè)進(jìn)程提供信息來(lái)隔離進(jìn)程中的信息

(一)它自己的處理器狀態(tài)(寄存器、程序計(jì)數(shù)器等)以及(b)它自己的內(nèi)存子集。每當(dāng)操作系統(tǒng)決定以犧牲當(dāng)前正在運(yùn)行的進(jìn)程P1(所謂的上下文切換)為代價(jià)來(lái)執(zhí)行進(jìn)程P2時(shí),它首先停止P1和將其所有處理器狀態(tài)保存在內(nèi)存中其他進(jìn)程無(wú)法訪問(wèn)的區(qū)域。接下來(lái),它將P2的處理器狀態(tài)從內(nèi)存加載到CPU中,調(diào)整確定物理內(nèi)存的哪些部分可訪問(wèn)的簿記,并開始在程序計(jì)數(shù)器指示的地址執(zhí)行P2,它剛剛作為處理器狀態(tài)的一部分加載。由于用戶進(jìn)程不能直接操作簿記本身,因此P2無(wú)法以非中介形式訪問(wèn)P1的任何數(shù)據(jù)。

大多數(shù)現(xiàn)代操作系統(tǒng)通過(guò)頁(yè)表跟蹤內(nèi)存簿記,如圖所示。2.對(duì)于每個(gè)進(jìn)程,它們維護(hù)一組頁(yè)表(通常包含組織為有向無(wú)環(huán)圖6的多個(gè)級(jí)別),并將指向頂級(jí)頁(yè)表的指針存儲(chǔ)在寄存器中,該寄存器是處理器狀態(tài)的一部分,必須在上下文切換上保存和恢復(fù)。

頁(yè)表結(jié)構(gòu)的主要用途是為每個(gè)進(jìn)程提供自己的虛擬地址空間,范圍從地址0到某個(gè)最大地址(例如,248),即使物理內(nèi)存量可能要少得多。由于兩個(gè)進(jìn)程都可以在地址0x10000存儲(chǔ)數(shù)據(jù),但不應(yīng)該允許訪問(wèn)彼此的數(shù)據(jù),因此必須有一個(gè)來(lái)自虛擬的映射。每個(gè)進(jìn)程使用的地址到硬件使用的物理地址。這就像一場(chǎng)籃球比賽,每方可能有一個(gè)數(shù)字為23的球員,但這個(gè)數(shù)字被映射到每個(gè)球員的不同身體球員身上。團(tuán)隊(duì)。

這就是頁(yè)表的用武之地。我們將每個(gè)虛擬地址空間劃分為固定大小的頁(yè)面,并使用頁(yè)表結(jié)構(gòu)將虛擬頁(yè)面的第一個(gè)字節(jié)的地址映射到物理地址。處理器通常使用多個(gè)級(jí)別的轉(zhuǎn)換。在圖例中。2、它使用虛擬地址的前九位作為頂層頁(yè)表中的索引(由作為處理器狀態(tài)一部分的控制寄存器指示)來(lái)查找包含下一級(jí)頁(yè)表物理地址的條目,該條目由接下來(lái)的九位索引,依此類推,直到我們到達(dá)最后一級(jí)頁(yè)表,其中包含包含虛擬地址的物理頁(yè)面的物理地址。虛擬地址的最后12位只是此頁(yè)面中的偏移量,并指向數(shù)據(jù)。

分頁(yè)允許進(jìn)程的虛擬地址空間的(總)大小遠(yuǎn)大于系統(tǒng)中可用的物理內(nèi)存。首先,進(jìn)程通常不會(huì)使用其所有可能的巨大地址空間,只有實(shí)際使用的虛擬頁(yè)面需要物理頁(yè)面的支持。其次,如果一個(gè)進(jìn)程需要更多的內(nèi)存來(lái)存儲(chǔ)一些數(shù)據(jù),并且此時(shí)沒(méi)有可用的物理頁(yè)面(例如,因?yàn)樗鼈円呀?jīng)被其他進(jìn)程使用,或者他們正在支持此過(guò)程的其他一些虛擬頁(yè)面),操作系統(tǒng)可能會(huì)將這些頁(yè)面的內(nèi)容交換到磁盤,然后重新使用物理頁(yè)面來(lái)存儲(chǔ)新數(shù)據(jù)。

圖片

圖2:現(xiàn)代處理器中的地址轉(zhuǎn)換。MMU“遍歷”頁(yè)表以查找頁(yè)面的物理地址。僅當(dāng)頁(yè)面“映射”在進(jìn)程的頁(yè)表上時(shí),進(jìn)程才能解決它,假設(shè)它存在并且進(jìn)程具有適當(dāng)?shù)脑L問(wèn)權(quán)限權(quán)利。具體而言,用戶進(jìn)程無(wú)法訪問(wèn)在頁(yè)表?xiàng)l目中為其設(shè)置了主管(S)位的頁(yè)。

這種組織的一個(gè)關(guān)鍵結(jié)果是,如果進(jìn)程的頁(yè)表中存在映射,則進(jìn)程只能訪問(wèn)內(nèi)存中的數(shù)據(jù)。是否是這種情況,由操作系統(tǒng)控制,因此,操作系統(tǒng)能夠準(zhǔn)確決定哪些內(nèi)存應(yīng)該是私有的,哪些內(nèi)存應(yīng)該共享,并且和誰(shuí)在一起。保護(hù)本身由稱為內(nèi)存管理單元(MMU7)的專用硬件實(shí)施。如果特定地址的虛擬到物理的映射不在稱為事務(wù)后備緩沖區(qū)(TLB)的小型但非常快速的緩存中,則MMU將通過(guò)遍歷頁(yè)表來(lái)查找它,然后在包含地址的頁(yè)面未映射時(shí)觸發(fā)中斷。

如果頁(yè)面當(dāng)前不在內(nèi)存中(交換到磁盤),或者與安全性更相關(guān)的用戶沒(méi)有訪問(wèn)此內(nèi)存所需的權(quán)限,MMU也會(huì)觸發(fā)中斷。具體來(lái)說(shuō),頁(yè)表?xiàng)l目(PTE)的最后12位包含一組標(biāo)志和其中一個(gè)標(biāo)志,即圖中的S位。2,指示這是主管代碼(例如,以最高權(quán)限運(yùn)行的操作系統(tǒng))還是普通用戶進(jìn)程的頁(yè)面。我們稍后會(huì)詳細(xì)介紹特權(quán)。

頁(yè)表是現(xiàn)代操作系統(tǒng)控制內(nèi)存訪問(wèn)的主要方式。但是,一些(主要是較舊的)操作系統(tǒng)還使用另一個(gè)技巧:分段。毫不奇怪,最早同時(shí)使用分段和分頁(yè)的操作系統(tǒng)之一是Multics。與頁(yè)面不同,段具有任意長(zhǎng)度,并從任意地址開始。但是,兩者都取決于硬件支持:MMU。例如,英特爾的32位x86等處理器具有一組稱為段選擇器的專用寄存器:一個(gè)用于代碼,一個(gè)用于數(shù)據(jù)等。每個(gè)段都有特定的權(quán)限,例如讀取、寫入或執(zhí)行。給定一個(gè)虛擬地址,MMU使用相應(yīng)段選擇器中的當(dāng)前值作為所謂的描述符表中的索引。描述符表中的條目包含段的起始地址和長(zhǎng)度,以及保護(hù)位,以防止代碼沒(méi)有必需訪問(wèn)它的權(quán)限級(jí)別。如果只有分段而沒(méi)有分頁(yè),則生成的地址是添加到分段開頭的原始虛擬地址,這將是物理地址,我們就完成了。但是,用于Multics的GE-645大型計(jì)算機(jī)和更現(xiàn)代的x86-32都允許將分段和分頁(yè)結(jié)合起來(lái)。在這種情況下,首先使用段描述符表將虛擬地址轉(zhuǎn)換為所謂的線性地址,然后該線性地址使用頁(yè)表結(jié)構(gòu)轉(zhuǎn)換為物理地址。

這聽起來(lái)很復(fù)雜;沒(méi)有一個(gè)流行的現(xiàn)代操作系統(tǒng)仍然使用分段。使用分段的操作系統(tǒng)最著名的例子是OS/2(微軟和IBM之間命運(yùn)多舛的合作,始于1980年代中期,從未流行過(guò))和IBM的AS/400(也是在1980年代推出的8,今天仍然在您附近的大型機(jī)上愉快地運(yùn)行)。Xen虛擬機(jī)管理程序也在32位x86上使用分段,但在64位系統(tǒng)上不再可能。實(shí)際上,英特爾x64的66位版本甚至不再支持完全分段,盡管其功能仍然存在一些痕跡。另一方面,復(fù)雜的多級(jí)地址轉(zhuǎn)換在虛擬化環(huán)境中仍然很常見(jiàn)。在這里,虛擬機(jī)管理程序試圖給虛擬機(jī)一種錯(cuò)覺(jué),即它們都在真實(shí)硬件上自行運(yùn)行,因此MMU首先將虛擬地址轉(zhuǎn)換為稱為來(lái)賓物理地址(使用頁(yè)表)。但是,這還不是一個(gè)真正的物理地址,因?yàn)樵S多虛擬機(jī)可能具有使用物理地址0x10000的相同想法。因此,MMU使用第二個(gè)轉(zhuǎn)換階段(使用Intel所說(shuō)的擴(kuò)展頁(yè)表,由虛擬機(jī)管理程序維護(hù))將來(lái)賓物理地址轉(zhuǎn)換為主機(jī)物理地址(“機(jī)器地址”)。

責(zé)任編輯:武曉燕 來(lái)源: 河南等級(jí)保護(hù)測(cè)評(píng)
相關(guān)推薦

2023-01-30 00:05:02

操作系統(tǒng)虛擬化安全

2023-02-07 00:24:24

2023-01-09 00:08:37

2023-01-08 00:31:14

2023-02-02 00:06:06

2023-01-31 00:10:32

2023-02-03 00:14:43

2018-07-27 05:08:58

2023-02-06 00:26:02

2010-04-29 14:08:38

Unix操作系統(tǒng)

2010-04-14 17:54:06

2023-04-13 08:09:35

操作系統(tǒng)虛擬地址內(nèi)存

2010-04-20 17:34:25

Unix操作系統(tǒng)

2009-02-17 17:09:59

虛擬化操作系統(tǒng)服務(wù)器

2009-02-17 15:57:38

虛擬化傳統(tǒng)操作系統(tǒng)威脅

2012-09-27 09:41:31

虛擬化

2013-03-22 09:05:48

操作系統(tǒng)虛擬化

2017-08-24 11:00:56

Linux用戶空間內(nèi)核空間

2010-04-19 16:57:09

Unix操作系統(tǒng)

2010-04-19 10:54:33

Unix操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)