三、內(nèi)存管理(一)存儲(chǔ)器管理-創(chuàng)新互聯(lián)

目錄

為沙市等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及沙市網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都做網(wǎng)站、沙市網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

1.1程序運(yùn)行的基本過程

1.1.1 編輯、編譯、鏈接、裝入

1.1.2鏈接的三種方式

1.1.3裝入的三種方式

1.2內(nèi)存管理基本概念?

1.2.1內(nèi)存保護(hù)

1.2.2內(nèi)存空間擴(kuò)充

1.2.3地址轉(zhuǎn)換功能

1.2.4內(nèi)存空間的分配與回收

1.2.4.1連續(xù)分配管理方式

1.2.4.1.1單一連續(xù)分配

1.2.4.1.2固定分區(qū)分配

1.2.4.1.3動(dòng)態(tài)分區(qū)分配

1.2.4.2基本分頁存儲(chǔ)管理

1.2.4.2.1基本地址變換機(jī)構(gòu)

1.2.4.2.2具有快表的地址變換機(jī)構(gòu)?

1.2.4.2.3二級(jí)頁表

1.2.4.3基本分段存儲(chǔ)管理

1.2.4.3.1基本地址變換機(jī)構(gòu)

1.2.4.3.2段的共享與保護(hù)?

1.2.4.4段頁式管理??

1.2.4.4.1基本地址變換機(jī)構(gòu)?

1.2.4.5三種離散分配方式對(duì)比


1.1程序運(yùn)行的基本過程 1.1.1 編輯、編譯、鏈接、裝入

  • 形成完整邏輯地址的階段是鏈接。 形成物理地址的階段是裝入。
  • 邏輯地址又稱相對(duì)地址,物理地址又稱絕對(duì)地址。
1.1.2鏈接的三種方式
  • 靜態(tài)鏈接:裝入前鏈接成一個(gè)完整裝入模塊以后不再拆開。
  • 裝入時(shí)動(dòng)態(tài)鏈接:運(yùn)行前邊裝入邊鏈接,便于修改和實(shí)現(xiàn)對(duì)目標(biāo)模塊的共享。
  • 運(yùn)行時(shí)動(dòng)態(tài)鏈接:邊運(yùn)行邊鏈接,加快程序的裝入過程,還可節(jié)省大量?jī)?nèi)存空間。
1.1.3裝入的三種方式
  • 絕對(duì)裝入:只適合于單道程序環(huán)境。編譯程序?qū)a(chǎn)生絕對(duì)地址(物理地址)的目標(biāo)代碼。裝入程序按照裝入模塊中的地址,將程序和數(shù)據(jù)裝入內(nèi)存。
  • 靜態(tài)重定位(可重定位裝入):在多道程序環(huán)境下,根據(jù)內(nèi)存的當(dāng)前情況,將裝入模塊裝入內(nèi)存的適當(dāng)位置。在裝入時(shí)對(duì)目標(biāo)程序中指令和數(shù)據(jù)地址的修改過程稱為重定位,其地址變換通常是在進(jìn)程裝入時(shí)一次完成的,故稱為靜態(tài)重定位。
  • 動(dòng)態(tài)重定位(動(dòng)態(tài)運(yùn)行時(shí)裝入):裝入內(nèi)存后所有的地址仍然是邏輯地址,把地址轉(zhuǎn)換推遲到程序真正要執(zhí)行時(shí)才進(jìn)行。這種方式需要一個(gè)重定位寄存器的支持。允許程序在內(nèi)存中移動(dòng)。

1.2內(nèi)存管理基本概念?

1.2.1內(nèi)存保護(hù)
  • 設(shè)置一對(duì)上、下限寄存器,存放進(jìn)程的上、下限地址。進(jìn)程的指令要訪問某個(gè)地址時(shí),CPU檢查是否越界。
  • 采用重定位寄存器(又稱基址寄存器)和界地址寄存器(又稱限長(zhǎng)寄存器)進(jìn)行越界檢查。重定位寄存器中存放的是進(jìn)程的起始物理地址。界地址寄存器中存放的是進(jìn)程的大邏輯地址。

系統(tǒng)中只需設(shè)置一個(gè)重定位寄存器,只需在切換程序執(zhí)行時(shí)重置寄存器內(nèi)容。?

1.2.2內(nèi)存空間擴(kuò)充

這里覆蓋與交換大綱已刪,虛擬存儲(chǔ)技術(shù)將在下一小節(jié)重點(diǎn)學(xué)習(xí)。

1.2.3地址轉(zhuǎn)換功能

  • 絕對(duì)裝入 ,單道程序階段,無操作系統(tǒng)
  • 靜態(tài)重定位,早期多道批處理階段。
  • 動(dòng)態(tài)重定位,現(xiàn)代操作系統(tǒng)。
1.2.4內(nèi)存空間的分配與回收

為了能夠?qū)⒂脩舫绦蜓b入內(nèi)存,必須為它分配一定大小的內(nèi)存空間。這就引出了存儲(chǔ)管理方式。

存儲(chǔ)管理方式隨著操作系統(tǒng)的發(fā)展而發(fā)展。在操作系統(tǒng)由單道向多道發(fā)展時(shí),存儲(chǔ)管理方式便由單一連續(xù)分配發(fā)展為固定分區(qū)分配。為了能更好地適應(yīng)不同大小的程序要求,又從固定分區(qū)分配發(fā)展為動(dòng)態(tài)分區(qū)分配。

為了更好地提高內(nèi)存的利用率,進(jìn)而從以上的連續(xù)分配方式發(fā)展到以下的離散分配方式——頁式存儲(chǔ)管理。為了滿足用戶在編程和使用方面的要求,又引入了分段存儲(chǔ)管理。而段頁式存儲(chǔ)管理集中了分頁管理和分段管理的優(yōu)點(diǎn)。

1.2.4.1連續(xù)分配管理方式 1.2.4.1.1單一連續(xù)分配

內(nèi)存被分為系統(tǒng)區(qū)和用戶區(qū)。系統(tǒng)區(qū)通常位于內(nèi)存的低地址部分,用于存放操作系統(tǒng)相關(guān)數(shù)據(jù);用戶區(qū)用于存放用戶進(jìn)程相關(guān)數(shù)據(jù)。內(nèi)存中只能有一道用戶程序,用戶程序獨(dú)占整個(gè)用戶區(qū)空間。

優(yōu)點(diǎn):無外部碎片;可以采用覆蓋技術(shù)擴(kuò)充內(nèi)存;不一定需要采取內(nèi)存保護(hù)。

缺點(diǎn):只能用于單用戶、單任務(wù)的操作系統(tǒng)中;有內(nèi)部碎片;存儲(chǔ)器利用率極低。

1.2.4.1.2固定分區(qū)分配

  • 無外部碎片,會(huì)產(chǎn)生內(nèi)部碎片。
1.2.4.1.3動(dòng)態(tài)分區(qū)分配

又稱可變分區(qū)分配。這種分配方式不會(huì)預(yù)先劃分內(nèi)存分區(qū),而是在進(jìn)程裝入內(nèi)存時(shí),根據(jù)進(jìn)程的大小動(dòng)態(tài)地建立分區(qū),并使分區(qū)的大小正好適合進(jìn)程的需要。因此系統(tǒng)分區(qū)的大小和數(shù)目是可變的。?

1.2.4.2基本分頁存儲(chǔ)管理

引入頁面和頁框?

分頁管理不會(huì)產(chǎn)生外部碎片,每個(gè)進(jìn)程平均只產(chǎn)生半個(gè)塊大小的內(nèi)部碎片。

內(nèi)存空間:頁框=頁幀=內(nèi)存塊=物理塊=物理頁面。

進(jìn)程的邏輯地址空間:頁=頁面。

給它們編號(hào)之后它們的編號(hào)也是對(duì)應(yīng)的。

操作系統(tǒng)以頁框?yàn)閱挝粸楦鱾€(gè)進(jìn)程分配內(nèi)存空間。進(jìn)程的每個(gè)頁面分別放入一個(gè)頁框中。進(jìn)程的頁面和內(nèi)存的頁框有一一對(duì)應(yīng)的關(guān)系。各個(gè)頁面不必連續(xù)存放,可以放到不相鄰的各個(gè)頁框中,這正是離散分配方式的特點(diǎn)。?

地址結(jié)構(gòu)?

在計(jì)算機(jī)內(nèi)部,地址是用二進(jìn)制表示的,如果頁面大小剛好是2的整數(shù)冪,則計(jì)算機(jī)硬件可以很快速地把邏輯地址拆分成頁號(hào)和頁內(nèi)偏移量(頁內(nèi)地址)。?

頁面大小=物理塊大小=頁內(nèi)地址位數(shù)=邏輯地址結(jié)構(gòu)=頁內(nèi)偏移量位數(shù)?!?”的意思在這里是這些概念是可以互相求得的。

當(dāng)然下面這兩個(gè)公式在頁面大小不是2的整數(shù)冪時(shí)也是適用的:

然后通過頁號(hào)查詢頁表,可知頁面在內(nèi)存中的起始地址。

頁面在內(nèi)存中的起始地址+頁內(nèi)偏移量=實(shí)際的物理地址。

引入頁表

引入頁表這一數(shù)據(jù)結(jié)構(gòu)來找到進(jìn)程的每個(gè)頁面在內(nèi)存中的位置。每個(gè)進(jìn)程都有一張頁表且存在于內(nèi)存中。

即頁表的作用是實(shí)現(xiàn)從頁號(hào)到物理塊號(hào)的地址映射。

頁表的頁號(hào)是隱藏(類似數(shù)組),所以存儲(chǔ)頁表時(shí)不用考慮頁號(hào)。

而內(nèi)存塊大小=頁面大小,假設(shè)內(nèi)存塊大小為2^20,由于計(jì)算機(jī)以字節(jié)分配地址空間,我們至少需要3B=24位即2^24來表示塊號(hào)。因此每個(gè)頁表項(xiàng)占3B。

那么我們已經(jīng)有了頁表初始地址時(shí)如何在內(nèi)存中找到想要的頁號(hào)呢?頁號(hào) i 的地址= F?+ 3 * i。(F為頁表在內(nèi)存中的初始地址,3為每個(gè)頁表項(xiàng)占3個(gè)字節(jié)空間)。

我們有了塊號(hào)J之后如何在內(nèi)存中找到想要的內(nèi)存塊地址呢??jī)?nèi)存塊J的地址=J*內(nèi)存塊大?。撁娲笮。?/p>

對(duì)頁表項(xiàng)長(zhǎng)度的進(jìn)一步討論

為了使i號(hào)頁表項(xiàng)地址=頁表在內(nèi)存中始地址F+3*i這個(gè)公式成立,整個(gè)頁表的頁表項(xiàng)必須是在內(nèi)存中地址連續(xù)地存儲(chǔ)。但實(shí)際上可能會(huì)發(fā)生下面這種情況:

解決方法是讓每個(gè)頁框正好存放整數(shù)個(gè)頁表項(xiàng),所以可以讓頁表項(xiàng)長(zhǎng)度為4B。

頁表項(xiàng)長(zhǎng)度和頁面大小辨析

  • 上圖紅色整體是一個(gè)頁表
  • 黃色為其中一個(gè)頁表項(xiàng)
  • 頁表項(xiàng)長(zhǎng)度為頁表項(xiàng)所占的存儲(chǔ)空間的大小,上圖為2^5
  • 頁表長(zhǎng)度表示頁表總共有幾個(gè)頁,上圖為3
  • 頁面大小=物理塊大小為一個(gè)頁占存儲(chǔ)空間的大小。

注:頁面大小和頁表項(xiàng)長(zhǎng)度容易混淆,頁面大小是根據(jù)進(jìn)程的平均大小、頁表長(zhǎng)度等因素劃分的。頁表項(xiàng)長(zhǎng)度是用來指示“頁面對(duì)應(yīng)的物理塊”在內(nèi)存中的編號(hào)。

1.2.4.2.1基本地址變換機(jī)構(gòu)

通常會(huì)在系統(tǒng)中設(shè)置一個(gè)頁表寄存器(PTR),存放頁表在內(nèi)存中的起始地址F和頁表長(zhǎng)度M。進(jìn)程未執(zhí)行時(shí),頁表的始址和頁表長(zhǎng)度放在PCB中,當(dāng)進(jìn)程被調(diào)度時(shí),操作系統(tǒng)內(nèi)核會(huì)把它們放到PTR中。

1.2.4.2.2具有快表的地址變換機(jī)構(gòu)?

快表,又稱聯(lián)想寄存器(TLB,translation lookaside buffer),是一種cache,用來存放最近訪問的頁表項(xiàng)的副本,加快地址變換的速度。與此對(duì)應(yīng),內(nèi)存中的頁表稱為慢表。

1.2.4.2.3二級(jí)頁表

問題一:頁表必須連續(xù)存放,因此當(dāng)頁表很大時(shí),需要占用很多個(gè)連續(xù)的頁框。

根據(jù)對(duì)分頁管理方式的思想將原來的較長(zhǎng)的頁表進(jìn)行分頁。?

補(bǔ)充:若采用多級(jí)頁表機(jī)制,各級(jí)頁表的大小不能超過一個(gè)頁面。

問題二:沒有必要讓整個(gè)頁表常駐內(nèi)存,因?yàn)檫M(jìn)程在一段時(shí)間內(nèi)可能只需要訪問某幾個(gè)特定的頁面。

可以在需要訪問頁面時(shí)才把頁面調(diào)入內(nèi)存(虛擬存儲(chǔ)技術(shù))??梢栽陧摫眄?xiàng)中增加一個(gè)標(biāo)志位,用于表示該頁面是否已經(jīng)調(diào)入內(nèi)存。

1.2.4.3基本分段存儲(chǔ)管理

分段?

進(jìn)程的地址空間:按照程序自身的邏輯關(guān)系劃分為若干個(gè)段,每個(gè)段都有一個(gè)段名(在低級(jí)語言中,程序員使用段名來編程),每段從0開始編址。

內(nèi)存分配規(guī)則:以段位單位進(jìn)行分配,每個(gè)段在內(nèi)存中占據(jù)連續(xù)空間,但各段之間可以不相鄰。

  • 段號(hào)的位數(shù)決定了每個(gè)進(jìn)程最多可以分幾個(gè)段。
  • 段內(nèi)地址位數(shù)決定了每個(gè)段的大長(zhǎng)度是多少。

段表?

  • 每個(gè)段對(duì)應(yīng)一個(gè)段表項(xiàng),其中記錄該段在內(nèi)存中的起始位置(又稱基址)和段的長(zhǎng)度。注:頁表項(xiàng)中記錄的是塊號(hào),并且不記錄段的長(zhǎng)度。
  • 各個(gè)段表項(xiàng)的長(zhǎng)度是相同的。
  • 段號(hào)可以是隱含的,不占存儲(chǔ)空間。?
1.2.4.3.1基本地址變換機(jī)構(gòu)

第一次訪存,查內(nèi)存中的段表,第二次訪存,訪問目標(biāo)內(nèi)存單元。

1.2.4.3.2段的共享與保護(hù)?

分段比分頁更容易實(shí)現(xiàn)信息的共享和保護(hù)。

不能被修改的代碼稱為純代碼或可重入代碼(不屬于臨界資源),這樣的代碼是可以共享的??尚薷牡拇a是不能共享的(比如,有一個(gè)代碼段中有很多變量,各進(jìn)程并發(fā)地同時(shí)訪問可能造成數(shù)據(jù)不一致)

1.2.4.4段頁式管理?
  • 段號(hào)的位數(shù)決定了每個(gè)進(jìn)程最多可以分幾個(gè)段
  • 頁號(hào)位數(shù)決定了每個(gè)段大有多少頁(即大段長(zhǎng))。
  • 頁內(nèi)偏移量決定了頁面大小=內(nèi)存塊大小是多少

段頁式管理中,“分段”對(duì)用戶是可見的,程序員編程時(shí)需要顯式地給出段號(hào)、段內(nèi)地址。而將各段“分頁”對(duì)用戶是不可見的。系統(tǒng)會(huì)根據(jù)段內(nèi)地址自動(dòng)劃分頁號(hào)和頁內(nèi)偏移量。因此段頁式管理的地址結(jié)構(gòu)是二維的。?

1.2.4.4.1基本地址變換機(jī)構(gòu)?

注意這里的段表和段式管理方式的段表的不同。?

第一次訪存,查段表;第二次訪存,查頁表;第三次訪存,訪問目標(biāo)內(nèi)存單元。

頁表和段表同樣存儲(chǔ)在內(nèi)存中,系統(tǒng)提供給用戶的物理地址空間為總空間大小減去頁表或段表所占空間大小。?

1.2.4.5三種離散分配方式對(duì)比

頁是信息的物理單位,對(duì)用戶是不可見的。

段是信息的邏輯單位,對(duì)用戶是可見的。?

分頁的用戶進(jìn)程地址空間是一維的。

分段的用戶進(jìn)程地址空間是二維的。

段頁式的用戶進(jìn)程地址空間是二維的

在不引入快表和多級(jí)頁表時(shí):

分頁二次訪存,分段二次訪存,段頁式三次訪存。


總結(jié):學(xué)習(xí)存儲(chǔ)管理方式時(shí)要注意以下問題:邏輯地址;表項(xiàng)結(jié)構(gòu);尋址過程。此外還有快表和多級(jí)頁表的引入目的。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

新聞名稱:三、內(nèi)存管理(一)存儲(chǔ)器管理-創(chuàng)新互聯(lián)
鏈接分享:http://muchs.cn/article30/pgipo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、服務(wù)器托管網(wǎng)站維護(hù)、全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站建設(shè)、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司