亚洲天堂av网_久久精品欧美一区二区三区不卡_亚洲欧美一级_欧美成人合集magnet

知名百科  > 所屬分類  >  其他科技   

邏輯地址

邏輯地址也稱為相對地址,是編譯器根據規則生成的程序的內部地址,在加載或執行時通過地址映射將其轉換為物理內存地址。邏輯地址分為兩部分:段基址和偏移量。在16位地址空間中,這兩個值的范圍是從0到0~FFFFH。最初,計算機的邏輯地址與物理地址相同。20世紀60年代以后,隨著多程序的廣泛應用,為了防止一個程序的修改和更改影響其他程序,出現了基地址的方法,邏輯地址和物理地址不再一致。當計算機處理源程序時,它必須經歷編譯、鏈接、加載和運行等步驟。在這個過程中,需要生成一個邏輯地址,并實現從邏輯地址到物理地址的映射過程,從而將用戶源程序轉換為可在內存中執行的程序。其中,需要尋址,并且已經開發了各種尋址方法。在地址映射的過程中,邏輯地址還涉及存儲管理系統中的各種管理方法。

在現代計算機系統中,邏輯地址在許多方面都起著重要作用,例如閃存管理和實驗數據提取。與邏輯地址相關的概念還包括物理地址、虛擬地址和線性地址。這些地址類型在計算機系統中都起著重要的作用,它們共同支持程序的運行和內存的有效管理。

目錄

概念定義 編輯本段

存儲單元的真實地址稱為物理地址,它是可識別的、實際存在的和可尋址的。物理地址是一個20位的數字,它定義了空間中的每個內存位置。在微處理器中,物理地址以段基和段基偏移量的形式出現。

在編程中,很難確定物理地址,因此采用邏輯地址。邏輯地址不需要預生成代碼在內存中的具體位置,只需給出一個標簽作為邏輯地址即可。程序輸入計算機后,由機器自動轉換成物理地址。在邏輯地址中,段基址是段寄存器(CS、ss、DS或ES)中的值,偏移量存儲在通用寄存器中,以此基址為參考。在16位地址空間中,這兩個值必須在0到65535(FFFFH)的范圍內。

發展歷史 編輯本段

早期計算機系統

在原始計算機中,程序員編譯的用戶程序和數據在主存中的存儲位置由程序員確定和指示,它們的邏輯地址與主存的實際地址相同,由邏輯地址組成的邏輯地址空間(程序空間)與主存的實際地址組成的物理地址空間(實際內存空間)相同。

匯編程序和編譯器的出現

隨著匯編程序、編譯程序和操作系統的出現,主存中至少有兩個程序,即系統程序和用戶程序。此時,源程序不是由機器指令代碼和主存儲器中的指令和數據尋址的,而是由運算符、符號、標量和數據描述編寫的。這些符號形成的空間稱為符號命名空間或命名空間。機器通過編譯程序來處理源程序。在這個階段,命名空間不會直接轉換為物理地址空間,而只是轉換為邏輯地址空間,即編譯后的輸出是從零地址開始尋址的目標程序,然后加載程序將目標程序的邏輯地址空間轉換為目標程序的物理地址空間來執行程序的定位。在多道程序系統中,多個用戶作業同時存儲在主存中。每次轉入運行時,操作系統都會根據主存的使用情況為用戶分配主存空間,用戶程序中使用的地址是邏輯地址。

多道程序系統的發展

20世紀60年代初,隨著多程序的廣泛應用,一個程序可能被多個用戶程序共享。此時修改指令地址碼不方便。例如,當用戶程序調用此程序修改地址碼時,如果地址碼糾正錯誤,不僅會影響此程序,還會使其他程序出錯。這種指令(包括地址碼)允許修改,阻礙了程序重入的實現,不利于診斷和程序調試,給采用重疊和流水線技術帶來困難。

引入基址尋址和保護機制

20世紀60年代以后,不再允許修改指令地址碼。此時,在加載程序時,除了將程序加載到主存儲器中之外,還需要將程序在主存儲器中的起始地址添加到程序的相應地址碼中(一般用“A”表示)。基于這一思想,出現了基地址法。當一個程序訪問主存時,它需要將存儲在基址寄存器中的程序基點地址相加,形成一個物理地址后才能訪問主存。

相關技術 編輯本段

當計算機處理源程序時,它必須經過與邏輯地址相關的編譯、鏈接、加載和運行等步驟,從而將用戶源程序變成可在內存中執行的程序。在整個過程中,涉及到邏輯地址,這需要程序員在程序中寫入邏輯地址或將邏輯地址轉換為其他地址形式。

編譯:編譯的過程就是把用高級語言編寫的源程序翻譯成機器能識別的目標程序。編譯器將源程序的每個模塊編譯成相應的目標模塊,每個目標模塊中的地址從0開始尋址。一些相關的目標模塊鏈接后,形成一個完整的目標模塊,其地址也從0開始。這些地址空間被稱為邏輯地址空間。

互連:鏈接的作用是將編譯后生成的多個目標模塊鏈接成一個完整的目標模塊。在這個過程中,要解決兩個問題:一是因為鏈接之前有很多模塊,每個模塊都有自己的地址空間和邏輯地址,所以要先修改邏輯地址,使鏈接成為一個地址空間;其次,由于模塊之間原來的調用關系是通過函數調用語句實現的,而鏈接之后只有一個模塊,因此需要將調用語句改為跳轉語句。實現鏈接的方式有三種:靜態鏈接、加載時動態鏈接和運行時動態鏈接。

包裝:在早期,編譯、鏈接、加載和運行的步驟是依次進行的。隨著計算機技術的發展,為了提高內存的利用率,引入了動態加載模式,將上述步驟交織在一起。程序加載方法分為絕對加載方法、可重定位加載方法和動態運行時加載方法。

絕對加載模式:編譯時,如果你知道程序將駐留在內存中的什么位置,編譯器將生成帶有絕對地址的目標代碼。絕對裝入程序根據裝入模塊中的地址將程序和數據裝入內存。加載模塊加載到內存后,由于程序中的邏輯地址與實際內存地址完全相同,因此無需修改程序和數據的地址。程序中使用的絕對地址可以在編譯或匯編時給出,也可以由程序員直接給出。

浮動裝載模式:一般來說,作業加載到內存時分配的存儲空間與其地址空間不一致,因此作業要訪問的指令和數據的物理地址與地址空間中的邏輯地址不同。當加載或執行作業時,需要在程序中調整相關的地址部分并轉換地址。這種將邏輯地址轉換為物理地址的過程稱為地址重定位,也稱為地址映射或地址轉換。因為這種地址轉換只在加載時完成一次,以后不會再更改,所以稱為靜態重定位。

動態運行時加載模式:動態運行時加載程序在將加載模塊加載到內存中后,不會立即將加載模塊中的邏輯地址轉換為物理地址,而是將這種地址轉換推遲到程序實際執行時進行。此時,加載到內存后的所有地址仍然是邏輯地址。這種地址轉換方法稱為動態重定位。在程序執行過程中,每當訪問一條指令或數據時,要訪問的程序或數據的邏輯地址就被轉換成物理地址。動態重定位的實現依賴于硬件地址轉換結構。

運行:在一維邏輯地址空間中,每個作業的邏輯地址空間的大小是不同的,但邏輯地址從0開始。在二維邏輯地址空間中,每個用戶的作業被分成幾個段,每個段被賦予一個名稱,每個邏輯地址被表示為段號和單元號。地址中的段名表示要訪問的目標段,單元號表示要訪問的段的目標單元。

當運行一個寫在邏輯地址的程序時,首先編譯或匯編幾個目標代碼,然后鏈接不同模塊中的同類型段,最后形成一個可執行程序的存儲鏡像文件,將其加載到內存中運行。

選址方式 編輯本段

尋址模式是指確定此指令的數據(操作數)地址和下一條要執行的指令的地址的方法。

指令尋址模式:由于現代計算機使用PC來跟蹤程序的執行并知道要執行的指令的地址,因此當程序開始運行時,程序的起始地址通常由系統程序直接給出并發送給PC。當程序執行時,PC的值可以以順序方式或跳過方式改變,以完成對下一條要執行的指令的尋址。

按序方式:順序模式是通過PC增量形成下一個指令地址。增量取決于下一條指令占用的存儲單元數量。當指令地址被順序尋址時,CPU可以根據PC的內容依次從存儲器中讀取指令。

跳躍模式:跳過模式是在程序傳輸時根據指令的傳輸目標地址修改PC的內容。當程序需要轉移時,轉移指令生成轉移目標地址并發送給PC,從而可以轉移程序。這個過程也稱為程序跳轉。

操作數尋址模式:操作數尋址是指找到操作數地址的方法。關于操作數的來源和目的地以及指令中的地址排列有多種情況。不同的指令使用不同數量、不同來源、不同用途的操作數,因此地址碼字段的編碼靈活多樣,需要尋址時根據編碼原理采用不同的尋址方式。

存儲管理 編輯本段

虛擬內存由一部分主存和輔存組成,它彌補了實際物理內存的不足,為系統提供了比物理內存大得多的容量,解決了程序運行時計算機系統性能差的問題。

計算機中運行的程序通常存儲在磁盤上。當程序運行時,CPU使用虛擬地址訪問內存。計算機系統由硬件和軟件組成,完成邏輯地址和真實地址之間的轉換,從而達到訪問內存的目的。

分段管理:段管理是將分配的內存組織成段,存儲單元的地址由兩部分組成:段地址和段內偏移量。任何內存單元的物理地址都是段地址和偏移量的線性組合,操作系統為應用程序分配和管理段地址。這樣,應用程序只涉及段內的偏移地址,即程序的邏輯地址。

應用程序編譯或匯編后得到的程序代碼實際上是程序執行時的內存映像,可能會留下大量的相對地址。在將這些相對地址加載到內存的過程中,操作系統會完全填充這些相對地址,以便它們可以順利執行。在分段管理模式下,同一應用程序可以在不同的計算機上運行。

頁面管理:計算機通常可以同時運行多個應用程序。這些應用程序是操作系統的任務,它們的代碼占用大量存儲空間。在這個過程中,需要不斷地管理邏輯地址。操作系統需要將當前使用邏輯地址數據加載到物理存儲器中,并將暫時未使用的邏輯地址數據保存到外部存儲器中。

為此,內存需要分成幾頁,如Windows操作系統,4KB內存為一頁。程序代碼中的地址可以是邏輯地址,并且該邏輯地址的容量可以遠遠大于物理地址的可訪問范圍。在運行時,頁面管理機制將邏輯地址映射到物理地址。如果CPU訪問的頁面已經在物理內存中,則可以正常運行;當CPU訪問的頁面不在物理內存中時,就會發生缺頁異常。CPU執行操作系統的異常處理代碼,將暫時不用的頁面保存到硬盤上的虛擬內存中,然后將當前請求的頁面轉移到內存中,以便應用程序可以繼續執行。

段頁面管理:分頁系統可以有效地提高邏輯地址的內存利用率,分段系統可以很好地滿足用戶的需求。將兩者結合起來的“段-頁管理”具有兩者的優點。逐頁管理的基本原理是將用戶程序分成幾個段,然后將每個段分成幾個頁面,并給每個段取一個段名。在分段頁面系統中,其地址結構由段號、段內頁碼和頁內地址組成。

邏輯地址邏輯地址

每個段都分配有相同頁數的內存塊,內存塊可以是連續的也可以是不連續的。系統為每個段建立一個頁表以記錄每個頁對應塊的信息,還為程序建立一個段表以記錄每個段對應的頁表。

存儲保護:在多任務運行環境中,任務之間以及任務與操作系統之間都涉及到邏輯地址的管理,需要進行隔離保護。例如,任務A的代碼段不能執行任何旨在破壞任務B的指令,反之亦然,更不用說破壞操作系統的運行環境了。存儲保護的目的是防止用戶程序之間地址映射過程中的相互干擾。通常的保護方式有越界保護和越權保護。

跨境保護:跨境保護有兩種方法。一種方法是硬件為分配給應用程序的每個連續主內存空間設置上限和下限寄存器,它們分別指向內存空間的上限和下限。另一種方法是使用基址和有限長度寄存器。基址寄存器存儲當前正在執行的進程的地址空間所占用的分區的起始地址。地址空間的長度存儲在長度限制寄存器中。在操作期間,生成的邏輯地址與長度限制寄存器的內容進行比較,如果超過長度限制,則會發送越界中斷信號。

越權保護:越權保護可以防止不同程序在映射邏輯地址和物理地址時相互干擾。越權保護就是讀寫屬于自己區域的信息;允許在公共區域共享的信息或授權使用的信息可以被讀取且不能被修改;未授權使用的信息不可讀、不可寫,只能執行;其他人,什么都不做。

主要應用 編輯本段

閃存轉換層(FTL):閃存轉換層(TFL)是固態硬盤的核心組件,其功能之一是實現邏輯地址到物理地址的映射。根據映射規模,FTL映射方法分為塊映射、頁映射和混合映射。地址映射過程可以分為兩級:第一級映射用于平衡內存塊的磨損,第二級映射用于處理壞塊問題。TFL的中間邏輯地址是串聯的第一和第二層映射關系的中間地址。當沒有壞塊時,中間邏輯地址等于物理地址。

近代物理實驗的數據提取:現代應用物理學中的多單元翻轉(Multi-cell flip,MCU)是指入射到存儲器件上的單個粒子通過在多個敏感單元中沉積能量而導致多個存儲單元同時翻轉的現象。在這個過程中,隨著存儲器件特征尺寸的減小,MCU的頻率顯得越來越高,這將影響微電子存儲器件的可靠性。從SEU數據中提取MCU信息時,主要問題是缺少物理地址和邏輯地址之間的映射關系。解決這一問題的常用方法是通過逆向工程獲得芯片的內部布局,并進一步分析芯片的物理地址和邏輯地址之間的映射關系。還有一種基于概率統計提取物理地址和邏輯地址映射關系的方法,也可以解決這個問題。

附件列表


0

詞條內容僅供參考,如果您需要解決具體問題
(尤其在法律、醫學等領域),建議您咨詢相關領域專業人士。

如果您認為本詞條還有待完善,請 編輯

上一篇 NFC移動支付    下一篇 Adobe Photoshop設計軟件

標簽

同義詞

暫無同義詞