在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

虛擬地址和邏輯地址的區(qū)別是什么?

Linux愛(ài)好者 ? 來(lái)源:飛天小牛肉 ? 作者:飛天小牛肉 ? 2021-06-17 14:08 ? 次閱讀

先解釋下一個(gè)困擾了我很久的問(wèn)題:虛擬地址(vitural address)和邏輯地址(logical address)的區(qū)別。

大部分操作系統(tǒng)的書(shū)籍要么寫(xiě)的是虛擬地址,要么寫(xiě)的是邏輯地址,看的我一臉懵逼。

在《深入理解 Linux 內(nèi)核》這本書(shū)中終于找到了確切的答案,這里我就不寫(xiě)出來(lái)了,扣概念的話這倆確實(shí)是有些區(qū)別的,不過(guò)對(duì)于我們?nèi)粘J褂靡约袄斫獠僮飨到y(tǒng)來(lái)說(shuō)的話,暫且可以把虛擬地址和邏輯地址理解為同一個(gè)意思。

你看到的所有地址都不是真的

我們需要知道的是,所有這些打印出來(lái)的地址都是虛擬的,在物理內(nèi)存中這些地址并不真實(shí)存在,它們最終都將由操作系統(tǒng)和 CPU 硬件翻譯成真正的物理地址,然后才能從真實(shí)的物理位置獲取該地址的值。

OK,上述就當(dāng)作一個(gè)引子,讓各位對(duì)物理地址和虛擬地址有個(gè)直觀的理解,下面正文開(kāi)始。

物理尋址 Physical Addressing

物理地址的概念很好理解,你可以把它稱為真正的地址。《深入理解計(jì)算機(jī)系統(tǒng) - 第 3 版》中給出的物理地址(physical address)的定義如下:

計(jì)算機(jī)系統(tǒng)的主存被組織成一個(gè)由 M 個(gè)連續(xù)的字節(jié)大小的單元組成的數(shù)組。每字節(jié)都有一個(gè)唯一的物理地址。

比如說(shuō),第一個(gè)字節(jié)的物理地址是 0,接下來(lái)的字節(jié)地址是 1,再下一個(gè)是 2,以此類推,給定這種簡(jiǎn)單的結(jié)構(gòu),CPU 訪問(wèn)內(nèi)存的最自然的方式就是使用這樣的物理地址。我們把這種方式稱為物理尋址(physical addressing)。

舉個(gè)例子,比如說(shuō)當(dāng)程序執(zhí)行了一條加載指令,指令內(nèi)容是從物理地址 4 中讀取 4 字節(jié)字傳送到某個(gè)寄存器中。

物理尋址過(guò)程如下:當(dāng) CPU 執(zhí)行到這條指令時(shí),會(huì)生成物理地址 4,然后通過(guò)內(nèi)存主線,把它傳遞給內(nèi)存,內(nèi)存取出從物理地址 4 處開(kāi)始的 4 字節(jié)字,并將它返回給 CPU,CPU 會(huì)將它存放到指定的寄存器中。其實(shí)不難發(fā)現(xiàn),物理尋址這種方式,每一個(gè)程序都直接訪問(wèn)物理內(nèi)存,其實(shí)是存在重大缺陷的:

1)首先,用戶程序可以尋址內(nèi)存的任意一個(gè)字節(jié),它們就可以很容易地破壞操作系統(tǒng),從而使系統(tǒng)慢慢地停止運(yùn)行。

2)再次,這種尋址方式使得操作系統(tǒng)中同時(shí)運(yùn)行兩個(gè)或以上的程序幾乎是不可能的。

舉個(gè)例子,我們打開(kāi)了三個(gè)相同的程序(計(jì)算器),都執(zhí)行到某一步。比方說(shuō),用戶在這三個(gè)程序的界面上分別輸入了 10、100、1000,其對(duì)應(yīng)的指令就是把用戶輸入的數(shù)字保存在內(nèi)存中的某個(gè)地址中。如果這個(gè)位置只能保存一個(gè)數(shù),那應(yīng)該保存哪個(gè)呢?這不就沖突了嗎?

再舉個(gè)例子,摘自《現(xiàn)代操作系統(tǒng) - 第 3 版》:

一個(gè)程序給物理內(nèi)存地址 1000 賦值也就是存入了一些數(shù)據(jù)后,另一個(gè)程序也同樣給這個(gè)地址賦值,那么第二個(gè)程序的賦值會(huì)覆蓋掉第一個(gè)程序所賦的值,這會(huì)造成兩個(gè)程序同時(shí)崩潰。

當(dāng)然了,我們也說(shuō)了是幾乎不可能,不是完全不可能,還是有一些方法可以在物理尋址這種方式下實(shí)現(xiàn)多個(gè)程序并發(fā)運(yùn)行的。

最簡(jiǎn)單的方法就是:首先,將空閑的進(jìn)程存儲(chǔ)在磁盤上,這樣當(dāng)它們不運(yùn)行時(shí)就不會(huì)占用內(nèi)存,然后,讓一個(gè)程序(或者說(shuō)進(jìn)程)單獨(dú)占用全部?jī)?nèi)存運(yùn)行一小段時(shí)間,當(dāng)發(fā)生上下文切換的時(shí)候,就停止這個(gè)進(jìn)程,并將它所有的狀態(tài)信息保存在磁盤上,再加載其他進(jìn)程的狀態(tài)信息,然后運(yùn)行一段時(shí)間...... 只要在某一個(gè)時(shí)間內(nèi)存中只有一個(gè)程序,那么就不會(huì)發(fā)生上述所說(shuō)的地址沖突。這就實(shí)現(xiàn)了一種比較粗糙的并發(fā)。

為什么說(shuō)他是粗糙的呢,因?yàn)檫@種方法有一個(gè)問(wèn)題:將全部的內(nèi)存信息保存到磁盤太慢了!特別是當(dāng)內(nèi)存增長(zhǎng)的時(shí)候。

因此,我們考慮把進(jìn)程對(duì)應(yīng)的內(nèi)存一直留在物理內(nèi)存中,在發(fā)生上下 文切換的時(shí)候就切換到特定的區(qū)域。

如下圖所示,有 3 個(gè)進(jìn)程(A、B、C),每個(gè)進(jìn)程擁有從 512KB 物理內(nèi)存中切出來(lái)給它們的一小部分內(nèi)存,可以理解為這 3 個(gè)進(jìn)程共享物理內(nèi)存:

79d804b4-ca6f-11eb-9e57-12bb97331649.png

顯然,這種方式是存在一定安全隱患的。畢竟如果各個(gè)進(jìn)程之間可以隨意讀取、寫(xiě)入內(nèi)容的話那就亂套了。

那么如何對(duì)每個(gè)進(jìn)程使用的地址進(jìn)行保護(hù)(protection)呢?繼續(xù)使用物理內(nèi)存模型肯定是不行了,因此操作系統(tǒng)創(chuàng)造了一個(gè)新的內(nèi)存抽象,引入了一個(gè)新的內(nèi)存模型,那就是虛擬地址空間,很多書(shū)中都會(huì)直接稱呼為 “地址空間(Address Space)”。

虛擬尋址 Virtual Addressing

我先通俗地解釋下虛擬地址空間和虛擬地址的概念,直接上書(shū)中的定義讀起來(lái)有點(diǎn)生澀。

就是說(shuō)每個(gè)進(jìn)程的棧啊、堆啊、代碼段啊等等它們的實(shí)際物理內(nèi)存地址對(duì)于這個(gè)進(jìn)程來(lái)說(shuō)是不可見(jiàn)的,誰(shuí)也不能直接訪問(wèn)這個(gè)物理地址。

那我們?cè)趺慈ピL問(wèn)這個(gè)進(jìn)程呢?

操作系統(tǒng)會(huì)給每個(gè)進(jìn)程分配一個(gè)虛擬地址空間(vitural address),每個(gè)進(jìn)程包含的棧、堆、代碼段這些都會(huì)從這個(gè)地址空間中被分配一個(gè)地址,這個(gè)地址就被稱為虛擬地址。底層指令寫(xiě)入的地址也是虛擬地址。

每個(gè)進(jìn)程都擁有一個(gè)自己的地址空間,并且獨(dú)立于其他進(jìn)程的地址空間。也就是說(shuō)一個(gè)進(jìn)程中的虛擬地址 28 所對(duì)應(yīng)的物理地址與另一個(gè)進(jìn)程中的虛擬地址 28 所對(duì)應(yīng)的物理地址是不同的,這樣就不會(huì)發(fā)生沖突了。

可以這么理解,物理地址就是一個(gè)倉(cāng)庫(kù),虛擬地址就是一個(gè)門牌,比方說(shuō)一共有三十個(gè)門牌,那么所有的進(jìn)程都能看見(jiàn)這三十個(gè)門牌,但是他們看見(jiàn)的某個(gè)相同門牌,指向的并不是同一個(gè)倉(cāng)庫(kù)。

OK,下面再來(lái)看《現(xiàn)代操作系統(tǒng) - 第 3 版》書(shū)中對(duì)于地址空間的解釋,應(yīng)該很容易理解了:

地址空間是一個(gè)進(jìn)程可用于尋址內(nèi)存的一套地址集合。每個(gè)進(jìn)程都有一個(gè)自己的地址空間,并且這個(gè)地址空間獨(dú)立于其他進(jìn)程的地址空間(除了在一些特殊情況下進(jìn)程需要共享它們的地址空間外)。

地址空間的概念非常通用,并且在很多場(chǎng)合中出現(xiàn)。比如電話號(hào)碼,在美國(guó)和很多其他國(guó)家,一個(gè)本地電話號(hào)碼通常是一個(gè) 7 位的數(shù)字。因此,電話號(hào)碼的地址空間是從 0 000 000 到 9 999 999。

地址空間也可以是非數(shù)字的,以 “.com” 結(jié)尾的網(wǎng)絡(luò)域名的集合也是地址空間。這個(gè)地址空間是由所有包含 2~63 個(gè)字符并且后面跟著 “.com” 的字符串組成的,組成這些字符串的字符可以是字母、數(shù)字和連字符。

到現(xiàn)在你應(yīng)該已經(jīng)明白地址空間的概念了,它是很簡(jiǎn)單的。

有了虛擬地址空間后,CPU 就可以通過(guò)生成一個(gè)虛擬地址來(lái)訪問(wèn)主存,這個(gè)虛擬地址在被送到內(nèi)存之前會(huì)先被轉(zhuǎn)換成合適的物理地址,這個(gè)虛擬地址到物理地址的轉(zhuǎn)換過(guò)程稱為地址翻譯/地址轉(zhuǎn)換(address translation)。

地址翻譯需要 CPU 硬件和操作系統(tǒng)的密切合作:CPU 上的內(nèi)存管理單元(Memory Management Unit,MMU)就是專門用來(lái)進(jìn)行虛擬地址到物理地址的轉(zhuǎn)換的,不過(guò) MMU 需要借助存放在內(nèi)存中的查詢表,而這張表的內(nèi)容正是由操作系統(tǒng)進(jìn)行管理的。

那么,上述這一套 CPU 生成虛擬地址并進(jìn)行地址翻譯的流程就是虛擬尋址(virtual addressing)。

原文標(biāo)題:你看到的所有地址都不是真的

文章出處:【微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10889

    瀏覽量

    212395
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11327

    瀏覽量

    209965

原文標(biāo)題:你看到的所有地址都不是真的

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MAC地址的作用范圍,MAC地址怎么申請(qǐng)?

    MAC地址(MediaAccessControlAddress),也稱為局域網(wǎng)地址(LANAddress)、以太網(wǎng)地址(EthernetAddress)、硬件地址(HardwareAd
    的頭像 發(fā)表于 12-19 17:44 ?565次閱讀
    MAC<b class='flag-5'>地址</b>的作用范圍,MAC<b class='flag-5'>地址</b>怎么申請(qǐng)?

    怎么綁定IP地址和MAC地址

    本篇文章主要說(shuō)一說(shuō)怎么在本地計(jì)算機(jī)上綁定IP和MAC地址以及通過(guò)路由器綁定IP和MAC地址,并且這兩者綁定可以解決什么問(wèn)題。 ? 先來(lái)說(shuō)說(shuō)怎么去綁定 本地計(jì)算上綁定IP和MAC地址: 首先獲取IP
    的頭像 發(fā)表于 12-01 22:48 ?339次閱讀

    為什么ip地址通常以192.168開(kāi)頭?

    不同的IP地址類型,它們之間的區(qū)別在于它們所在的網(wǎng)絡(luò)范圍和使用方式。 公網(wǎng)地址:被稱為全球唯一IP地址,是指可以直接在internet上訪問(wèn)的IP
    的頭像 發(fā)表于 11-20 09:40 ?274次閱讀

    IP地址小分享

    一、IP地址的作用與重要性 唯一標(biāo)識(shí):在網(wǎng)絡(luò)通信中,每個(gè)連接到互聯(lián)網(wǎng)的設(shè)備都必須擁有唯一的IP地址,這樣才能確保數(shù)據(jù)在網(wǎng)絡(luò)中正確地路由和傳遞。想象一下,如果網(wǎng)絡(luò)中的設(shè)備沒(méi)有IP地址或者IP地址
    的頭像 發(fā)表于 09-25 14:21 ?253次閱讀
    IP<b class='flag-5'>地址</b>小分享

    域名、IP 地址、網(wǎng)址分別是什么?有什么區(qū)別呢?

    域名、IP 地址和網(wǎng)址我們經(jīng)常會(huì)聽(tīng)到這三個(gè)名詞,尤其是當(dāng)你想要開(kāi)通一個(gè)網(wǎng)站的時(shí)候,但很多人對(duì)它們之間的區(qū)別并不十分清楚,那么域名、IP 地址、網(wǎng)址分別是什么?有什么
    的頭像 發(fā)表于 09-18 11:13 ?710次閱讀
    域名、IP <b class='flag-5'>地址</b>、網(wǎng)址分<b class='flag-5'>別是</b>什么?有什么<b class='flag-5'>區(qū)別</b>呢?

    數(shù)據(jù)總線和地址總線的區(qū)別

    數(shù)據(jù)總線和地址總線是計(jì)算機(jī)系統(tǒng)中至關(guān)重要的兩種總線,它們?cè)跀?shù)據(jù)傳輸和地址指定方面發(fā)揮著不同的作用。
    的頭像 發(fā)表于 09-10 11:40 ?2487次閱讀

    IP地址與子網(wǎng)劃分

    子網(wǎng)的劃分,實(shí)際上就是設(shè)計(jì)子網(wǎng)掩碼的過(guò)程,它指的是指將一個(gè)給定的IP網(wǎng)絡(luò)地址空間劃分為更小的子網(wǎng)絡(luò)。 在子網(wǎng)掩碼中用1和0來(lái)分別網(wǎng)絡(luò)號(hào)和主機(jī)號(hào),其中是1的表示是網(wǎng)絡(luò)部分,0表示的是主機(jī)部分,所有
    的頭像 發(fā)表于 09-06 09:46 ?394次閱讀

    怎么申請(qǐng)MAC地址?不同申請(qǐng)方式的區(qū)別是什么?

    藍(lán)牙設(shè)備的MAC地址是指藍(lán)牙模塊中使用的唯一標(biāo)識(shí)符,用于在網(wǎng)絡(luò)中識(shí)別和區(qū)分不同的藍(lán)牙設(shè)備。這個(gè)MAC地址是由美國(guó)電氣和電子工程師協(xié)會(huì)(IEEE)分配的,而不是由藍(lán)牙聯(lián)盟直接分配的。接來(lái)來(lái)英利檢測(cè)將
    的頭像 發(fā)表于 08-22 16:55 ?758次閱讀
    怎么申請(qǐng)MAC<b class='flag-5'>地址</b>?不同申請(qǐng)方式的<b class='flag-5'>區(qū)別是</b>什么?

    購(gòu)買海外虛擬IP地址可以通過(guò)以下幾種方式#虛擬IP地址

    ip地址
    jf_62215197
    發(fā)布于 :2024年08月16日 07:16:04

    IP地址的分配

    公有IP地址與私有IP地址 公有IP地址:用于互聯(lián)網(wǎng)上的全球唯一地址,由互聯(lián)網(wǎng)號(hào)碼分配機(jī)構(gòu)(IANA)和區(qū)域互聯(lián)網(wǎng)注冊(cè)機(jī)構(gòu)(RIR)分配。比如說(shuō): “ 8.8.8.8 ”就是谷歌的DN
    的頭像 發(fā)表于 08-09 14:55 ?1261次閱讀

    IP地址基礎(chǔ)科普

    IP地址是我們?cè)诰W(wǎng)絡(luò)上識(shí)別設(shè)備的“身份證”。 1. 什么是IP地址? IP地址是一個(gè)用來(lái)標(biāo)識(shí)網(wǎng)絡(luò)設(shè)備的數(shù)字地址。IPv4地址由32位數(shù)字組成
    的頭像 發(fā)表于 07-22 11:55 ?612次閱讀

    怎么申請(qǐng)MAC地址?MAC地址申請(qǐng)流程分享

    在數(shù)字化高速發(fā)展,機(jī)器設(shè)備大規(guī)模代替原始勞動(dòng)力的時(shí)代,功能各異的設(shè)備不斷被創(chuàng)造出來(lái)。因此每一臺(tái)網(wǎng)絡(luò)設(shè)備都需要一個(gè)獨(dú)特的身份標(biāo)識(shí),這也就是我們所熟知的MAC地址。MAC地址作為設(shè)備的唯一標(biāo)識(shí)符,在網(wǎng)
    的頭像 發(fā)表于 07-10 17:30 ?578次閱讀
    怎么申請(qǐng)MAC<b class='flag-5'>地址</b>?MAC<b class='flag-5'>地址</b>申請(qǐng)流程分享

    MAC地址碼申請(qǐng)指南:散裝串號(hào)與主體關(guān)聯(lián)的大中小號(hào)段的區(qū)別

    中的地址分配。這個(gè)是毋庸置疑是獲取MAC地址的唯一途徑。而想要申請(qǐng)MAC地址,常見(jiàn)的有兩種方式:分別是購(gòu)買別的主體注冊(cè)過(guò)的散裝串號(hào)以及用自己主體直接向IEEE申請(qǐng)的
    的頭像 發(fā)表于 04-24 17:48 ?889次閱讀
    MAC<b class='flag-5'>地址</b>碼申請(qǐng)指南:散裝串號(hào)與主體關(guān)聯(lián)的大中小號(hào)段的<b class='flag-5'>區(qū)別</b>

    CentOS虛擬機(jī)克隆后開(kāi)機(jī)無(wú)法獲取IP地址的解決策略

    克隆虛擬機(jī)后出現(xiàn)一臺(tái)能獲取到IP地址,另外一臺(tái)獲取不到IP地址,查看MAC地址后,發(fā)現(xiàn)兩臺(tái)MAC地址相同。
    的頭像 發(fā)表于 04-17 12:27 ?781次閱讀
    CentOS<b class='flag-5'>虛擬</b>機(jī)克隆后開(kāi)機(jī)無(wú)法獲取IP<b class='flag-5'>地址</b>的解決策略

    虛擬機(jī)的ip地址和主機(jī)一樣嗎

    地址,用于與其他設(shè)備進(jìn)行通信。下面將詳細(xì)介紹虛擬機(jī)的IP地址和主機(jī)的IP地址之間的區(qū)別和聯(lián)系。 IP地址
    的頭像 發(fā)表于 03-26 15:34 ?5479次閱讀
    主站蜘蛛池模板: 日日摸人人拍人人澡| 青草99| 美女黄网站人色视频免费国产| 免费激情网站| 欲色视频| aaaaa特级毛片| 欲色综合| 四虎在线免费视频| 宅男午夜| 一区二区三区欧美在线| 亚洲日本视频在线观看| 日本在线不卡一区二区| 国产精品久久久精品三级| 性夜影院午夜看片| 亚洲人成网站在线观看妞妞网 | 国产资源在线观看| 欧美另类69xxxxx性欧| 免费亚洲成人| 福利片欧美| 特黄免费| 正在播放欧美| 女同性大尺度床戏视频| 五月婷婷中文字幕| 免费观看三级毛片| www.av123| 久久久久女人精品毛片| h视频在线看| 欧美激情 自拍| 亚洲人成网站色7799在线观看| 简单视频在线播放jdav| 高颜值美女啪啪| 日韩图区| 国产好深好硬好爽我还要视频| 国内一国产农村妇女一级毛片| bt种子在线搜索| 狠狠干天天色| 综合色久七七综合七七蜜芽| 乡村乱人伦短小说| 99视频热| 欧美一级黄色录相| 躁天天躁中文字幕在线|