chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

Linux愛好者 ? 來源:飛天小牛肉 ? 作者:飛天小牛肉 ? 2021-06-17 14:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

OK,上述就當作一個引子,讓各位對物理地址和虛擬地址有個直觀的理解,下面正文開始。

物理尋址 Physical Addressing

物理地址的概念很好理解,你可以把它稱為真正的地址?!渡钊肜斫庥嬎銠C系統(tǒng) - 第 3 版》中給出的物理地址(physical address)的定義如下:

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

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

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

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

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

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

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

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

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

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

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

為什么說他是粗糙的呢,因為這種方法有一個問題:將全部的內(nèi)存信息保存到磁盤太慢了!特別是當內(nèi)存增長的時候。

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

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

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

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

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

虛擬尋址 Virtual Addressing

我先通俗地解釋下虛擬地址空間和虛擬地址的概念,直接上書中的定義讀起來有點生澀。

就是說每個進程的棧啊、堆啊、代碼段啊等等它們的實際物理內(nèi)存地址對于這個進程來說是不可見的,誰也不能直接訪問這個物理地址。

那我們怎么去訪問這個進程呢?

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

每個進程都擁有一個自己的地址空間,并且獨立于其他進程的地址空間。也就是說一個進程中的虛擬地址 28 所對應的物理地址與另一個進程中的虛擬地址 28 所對應的物理地址是不同的,這樣就不會發(fā)生沖突了。

可以這么理解,物理地址就是一個倉庫,虛擬地址就是一個門牌,比方說一共有三十個門牌,那么所有的進程都能看見這三十個門牌,但是他們看見的某個相同門牌,指向的并不是同一個倉庫。

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

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

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

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

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

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

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

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

原文標題:你看到的所有地址都不是真的

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

責任編輯:haq

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

    關(guān)注

    68

    文章

    11214

    瀏覽量

    222802
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11624

    瀏覽量

    217849

原文標題:你看到的所有地址都不是真的

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    請問e203定義的地址空間是虛擬地址還是物理地址?

    蜂鳥e203實現(xiàn)的是物理地址,硬件端與軟件端的地址分配相同,從而確定軟件開發(fā)過程中能操作底層寄存器。 硬件端:在總線分發(fā)模塊sirv_icb1to16_bus定義好各個端口寄存器的地址區(qū)間, 軟件端
    發(fā)表于 11-11 06:20

    唯品會:利用訂單地址API校驗收貨信息,降低因地址錯誤導致的退貨率

    ? ?在電子商務領(lǐng)域,退貨率高是許多平臺面臨的挑戰(zhàn),其中地址錯誤導致的退貨占比不小。唯品會作為國內(nèi)領(lǐng)先的時尚電商平臺,通過集成訂單地址API(Application Programming
    的頭像 發(fā)表于 09-11 15:47 ?372次閱讀

    CNC的IP地址相同沖突如何解決?

    在網(wǎng)絡世界中,每個設(shè)備都需要一個獨特的標識來確保信息的準確傳輸,這個標識就是IP地址。然而,在CNC(數(shù)控機床)生產(chǎn)車間中,由于存在多個品牌、不同型號的設(shè)備,且這些設(shè)備在出廠測試時往往會被配備相同
    的頭像 發(fā)表于 07-23 14:13 ?433次閱讀
    CNC的IP<b class='flag-5'>地址</b>相同沖突如何解決?

    從零開始學IP地址

    IP地址是一種網(wǎng)絡編碼,用來唯一標識網(wǎng)絡中的設(shè)備,以確保主機間正常通信。IP地址由32位二進制(32-bit)組成。
    的頭像 發(fā)表于 07-08 09:29 ?1392次閱讀
    從零開始學IP<b class='flag-5'>地址</b>

    芯知識|WT2003H語音芯片音頻地址詳解:一線/UART模式差異及靜音地址實踐

    廣州唯創(chuàng)電子WT2003H系列語音芯片以其高集成度、豐富的控制接口和出色的音質(zhì)表現(xiàn),在各類嵌入式語音應用中廣受歡迎。正確理解其音頻播放地址的編排規(guī)則,特別是不同通訊模式下的起始地址差異,是開發(fā)穩(wěn)定
    的頭像 發(fā)表于 06-19 09:21 ?506次閱讀
    芯知識|WT2003H語音芯片音頻<b class='flag-5'>地址</b>詳解:一線/UART模式差異及靜音<b class='flag-5'>地址</b>實踐

    TECS OpenStack資源池虛擬機網(wǎng)絡二層地址無法互通的問題處理

    某運營商TECS OpenStack使用主機overlay SDN方案組網(wǎng),運維人員在創(chuàng)建虛擬機測試虛擬機網(wǎng)絡狀態(tài)時發(fā)現(xiàn)問題:在其中一臺主機上創(chuàng)建兩臺同網(wǎng)段虛擬機,虛擬機之間二層
    的頭像 發(fā)表于 06-12 09:28 ?673次閱讀
    TECS OpenStack資源池<b class='flag-5'>虛擬</b>機網(wǎng)絡二層<b class='flag-5'>地址</b>無法互通的問題處理

    季豐推出SRAM錯誤地址定位黑科技

    近期受晶圓廠委托, 季豐在執(zhí)行完SRAM芯片在中子輻射下SER測試后, 通過對SRAM芯片的深入研究,對測試失效數(shù)據(jù)的分析,將邏輯失效地址成功轉(zhuǎn)換為物理坐標地址,最終在圖像上顯示失效位置,幫助客戶直觀地看到失效點分布位置。 通過
    的頭像 發(fā)表于 06-03 10:08 ?800次閱讀
    季豐推出SRAM錯誤<b class='flag-5'>地址</b>定位黑科技

    局域網(wǎng)地址檢測器

    局域網(wǎng)地址檢測器是一款非常實用的IP地址沖突快速檢測工具。這款它功能強大、操作簡單,能幫助用戶快速檢測在同一局域網(wǎng)內(nèi)遇到IP沖突的問題,需要的用戶可下載!  局域網(wǎng)地址檢測器提供了強大的功能和簡潔
    發(fā)表于 02-17 17:00 ?2次下載

    NAT網(wǎng)絡地址轉(zhuǎn)換的技術(shù)原理

    由全球IP地址分配機構(gòu),IANA (Internet Assigned Numbers Authority)管理的IPv4地址,于2011年完全用盡。但是需要連接互聯(lián)網(wǎng)必須要IP地址,但是公網(wǎng)
    的頭像 發(fā)表于 02-17 10:30 ?2465次閱讀
    NAT網(wǎng)絡<b class='flag-5'>地址</b>轉(zhuǎn)換的技術(shù)原理

    I2C總線設(shè)備地址設(shè)置方法

    I2C總線是一種廣泛使用的串行通信協(xié)議,它允許多個設(shè)備在兩條線上(數(shù)據(jù)線SDA和時鐘線SCL)進行通信。每個設(shè)備都有一個唯一的地址,以確保數(shù)據(jù)能夠正確地發(fā)送到目標設(shè)備。 I2C地址概述 I2C地址
    的頭像 發(fā)表于 01-17 15:17 ?6914次閱讀

    ISP與IP地址

    ISP可以為用戶提供互聯(lián)網(wǎng)接入、信息內(nèi)容、應用服務以及其他增值業(yè)務。 要知道,在ISP的網(wǎng)絡中,IP地址池幾乎可以說不可或缺。IP地址池是指一定范圍內(nèi)可供分配的IP地址的集合。通過分配IP地址
    的頭像 發(fā)表于 12-27 10:41 ?899次閱讀

    CIDR的IP地址分配與管理

    傳統(tǒng)IP地址分類,也就是ABC類等。但是,有一種情況,“如果一個公司可能被分配了一個C類網(wǎng)絡地址,但是實際上,它僅需少量的IP地址?!倍鳦IDR的出現(xiàn)解決了這類問題,它提供了一種更靈活的IP
    的頭像 發(fā)表于 12-26 10:01 ?930次閱讀

    IP地址偽造和反偽造技術(shù)

    其他合法或非法的IP地址。在TCP/IP協(xié)議棧中,IP層負責數(shù)據(jù)包的傳輸和路由選擇,而對于源 IP 地址的真實性驗證就是相對較弱。 有哪些IP地址常見的偽造手段? 這里主要有兩種,分別是
    的頭像 發(fā)表于 12-20 10:12 ?972次閱讀

    MAC地址的作用范圍,MAC地址怎么申請?

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

    通過安卓手機查找IP地址步驟

    我們在使用安卓手機的時候,可以在設(shè)備上通過一些方法來查到IP地址,而IP地址也分為公網(wǎng)IP地址和私網(wǎng)IP地址,具體怎么查找可以看下面步驟。 一、如何在手機上查找私網(wǎng)IP
    的頭像 發(fā)表于 12-12 13:53 ?4459次閱讀
    通過安卓手機查找IP<b class='flag-5'>地址</b>步驟