日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

OS- -请求分页系统、请求分段系统和请求段页式系统(一)

發(fā)布時(shí)間:2024/4/11 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OS- -请求分页系统、请求分段系统和请求段页式系统(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OS- -請求分頁系統(tǒng)、請求分段系統(tǒng)和請求段頁式系統(tǒng)(一)

文章目錄

  • OS- -請求分頁系統(tǒng)、請求分段系統(tǒng)和請求段頁式系統(tǒng)(一)
    • 一、內(nèi)存管理的概念
    • 二、內(nèi)存空間的擴(kuò)充
      • 覆蓋與交換
    • 三、內(nèi)存空間的分配和回收
        • 連續(xù)分配管理方式
        • 非連續(xù)分配管理方式
    • 四、基本分頁存儲(chǔ)管理
      • 1.頁框和頁面
      • 2.地址轉(zhuǎn)換的實(shí)現(xiàn)
        • 頁號和頁內(nèi)偏移量
        • 頁表
        • 基本地址變換機(jī)構(gòu)
        • 具有快表的地址變換機(jī)構(gòu)
        • 兩級頁表

  • 進(jìn)程應(yīng)該放在內(nèi)存的哪里?

  • 操作系統(tǒng)如何記錄哪些內(nèi)存區(qū)域已經(jīng)被分配了, 哪些還空閑?

  • 當(dāng)進(jìn)程運(yùn)行結(jié)束之后, 如何將進(jìn)程占用的內(nèi)存空間釋放?

一、內(nèi)存管理的概念

  • 操作系統(tǒng)負(fù)責(zé)內(nèi)存空間的分配與回收
  • 操作系統(tǒng)需要提供某種技術(shù)從邏輯上對內(nèi)存空間進(jìn)行擴(kuò)充
  • 操作系統(tǒng)需要實(shí)現(xiàn)地址轉(zhuǎn)換功能, 負(fù)責(zé)程序的邏輯地址和物理地址的轉(zhuǎn)換
  • 操作系統(tǒng)需要提供內(nèi)存保護(hù)功能, 保證各進(jìn)程在各自存儲(chǔ)空間內(nèi)運(yùn)行, 互不干擾

實(shí)現(xiàn)內(nèi)存保護(hù)的兩種方法:

  • 在CPU設(shè)置一對上, 下限寄存器, 存放進(jìn)程的上, 下限地址. 進(jìn)程的指令要訪問某個(gè)地址時(shí), CPU檢查是否越界
  • 采用重定位寄存器(又叫基地址寄存器) 和界地址寄存器(又叫限長寄存器) 進(jìn)行越界檢查. 重定位寄存器中存放的是進(jìn)程的起始物理地址, 界地址寄存器中存放的是進(jìn)程的最大邏輯地址.

二、內(nèi)存空間的擴(kuò)充

覆蓋與交換

  • 覆蓋, 交換, 虛擬存儲(chǔ)技術(shù)常用于實(shí)現(xiàn)內(nèi)存空間的擴(kuò)充

😊覆蓋技術(shù)的思想 : 將程序分為多個(gè)段, 常用的段常駐內(nèi)存, 不常用的段在需要的時(shí)候調(diào)入內(nèi)存

  • 內(nèi)存中分為一個(gè)"固定區(qū)" 和若干個(gè)"覆蓋區(qū)", 常用的段放在固定區(qū), 不常用的段放在覆蓋區(qū)

  • 缺點(diǎn) : 必須由程序員聲明覆蓋結(jié)構(gòu), 對用戶不透明, 增加了用戶的編程負(fù)擔(dān), 覆蓋技術(shù)只用于早期的操作系統(tǒng)中.

  • 😊交換技術(shù)的思想 : 內(nèi)存空間緊張時(shí), 系統(tǒng)將內(nèi)存中某些進(jìn)程暫時(shí)換出外存, 把外存中某些已具備運(yùn)行條件的進(jìn)程換入內(nèi)存(即進(jìn)程在內(nèi)存與磁盤間動(dòng)態(tài)調(diào)度)

三、內(nèi)存空間的分配和回收

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

  • 單一連續(xù)分配

  • 在單一連續(xù)分配的方式中, 內(nèi)存被分為系統(tǒng)區(qū)和用戶區(qū), 系統(tǒng)區(qū)用于存放操作系統(tǒng)的相關(guān)數(shù)據(jù), 用戶區(qū)用于存放用戶進(jìn)程的相關(guān)數(shù)據(jù),內(nèi)存中只能有一道用戶程序, 用戶程序獨(dú)占整個(gè)用戶區(qū)空間.

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

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

  • 內(nèi)部碎片 : 分配給某進(jìn)程的內(nèi)存區(qū)域有一部分沒有用上, 即存在" 內(nèi)部碎片 ".

  • 外部碎片 : 內(nèi)存中的某些空閑分區(qū)由于太小而難以利用

  • 固定分區(qū)分配

  • 在產(chǎn)生了支持多道程序的系統(tǒng)后, 為了能在內(nèi)存中裝入多道程序而互相之間不產(chǎn)生干擾,將整個(gè)用戶區(qū)劃分為若干個(gè)固定大小的分區(qū)(分區(qū)大小可以相等也可以不相等),在每個(gè)分區(qū)中只能裝入一道作業(yè),形成了最早的可運(yùn)行多道程序的內(nèi)存管理方式.

  • 操作系統(tǒng)建立一個(gè)數(shù)據(jù)結(jié)構(gòu)----分區(qū)說明表, 來實(shí)現(xiàn)各個(gè)分區(qū)的分配和回收, 每個(gè)表對應(yīng)一個(gè)分區(qū), 通常按分區(qū)大小排列. 每個(gè)表項(xiàng)包括對應(yīng)分區(qū)的大小, 起始地址, 狀態(tài)

  • 優(yōu)點(diǎn) : 實(shí)現(xiàn)簡單, 無外部碎片;

  • 缺點(diǎn) : 有內(nèi)部碎片; 存儲(chǔ)器利用率不高;

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

  • 動(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)程的需要.

幾個(gè)問題 :

  • 系統(tǒng)用什么數(shù)據(jù)結(jié)構(gòu)記錄內(nèi)存的使用情況?
  • 當(dāng)多個(gè)空閑分區(qū)都滿足需求應(yīng)該選擇哪個(gè)分區(qū)進(jìn)行分配?
  • 如何進(jìn)行分區(qū)的分配和回收操作?

四種動(dòng)態(tài)分配的算法:

  • 首次適應(yīng)算法:每次都從低地址開始查找, 找到第一個(gè)能滿足大小的空閑分區(qū)
    • 實(shí)現(xiàn) : 把空閑分區(qū)按地址遞增的次序排列.

    • 每次分配內(nèi)存時(shí)順序地查找空閑分區(qū)鏈, 找到大小能滿足要求的第一個(gè)空閑分區(qū).

  • 最佳適應(yīng)算法 :優(yōu)先使用小的空閑分區(qū)
    • 實(shí)現(xiàn) : 空閑分區(qū)按容量遞增次序鏈接.

    • 每次分配內(nèi)存時(shí)順序查找空閑分區(qū)鏈, 找到大小能滿足要求的第一個(gè)空閑分區(qū)

    • 缺點(diǎn) : 每次都選擇最小的分區(qū)進(jìn)行分配, 會(huì)留下越來越多的容量很小難以利用的內(nèi)存塊, 即產(chǎn)生很多的外部碎片

  • 最壞適應(yīng)算法 :優(yōu)先使用大的空閑分區(qū)
    • 實(shí)現(xiàn) : 空閑分區(qū)按容量遞減次序鏈接

    • 缺點(diǎn) : 每次都選用最大的分區(qū)進(jìn)行分配, 當(dāng)較大的連續(xù)空閑區(qū)被小號之后, 如果有大進(jìn)程到來則沒有內(nèi)存分區(qū)可以利用

  • 鄰近適應(yīng)算法 :在首次適應(yīng)算法的基礎(chǔ)上, 每次都從上次查找結(jié)束的位置開始查找空閑分區(qū)鏈(表), 找到大小能滿足的第一個(gè)空閑分區(qū)
    • 缺點(diǎn) : 鄰近適應(yīng)算法導(dǎo)致無論低地址還是高地址的空閑分區(qū)都有相同的概率被使用, 也就導(dǎo)致了高地址部分的大分區(qū)更可能被使用劃分為小分區(qū), 最后導(dǎo)致沒有大分區(qū)可用

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

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

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

    1.頁框和頁面

    • 思想 : 把內(nèi)存分為一個(gè)個(gè)相等的小分區(qū), 再按照分區(qū)大小把進(jìn)程拆分成一個(gè)個(gè)小部分.
    • 注意區(qū)分頁框和頁面的概念, 頁框是針對內(nèi)存的, 頁面是針對進(jìn)程的

    2.地址轉(zhuǎn)換的實(shí)現(xiàn)

    • 特點(diǎn) : 頁面離散存放, 但是頁面內(nèi)部連續(xù)存放
    • 訪問邏輯地址A :
    • 確定邏輯地址A的 " 頁號 " P
    • 找到P號頁面在內(nèi)存中的起始地址 ( 需要查找頁表 )
    • 確定邏輯地址A的 " 頁內(nèi)偏移 " W
    • 邏輯地址 A的物理地址 = P號頁面在內(nèi)存中的起始地址 + 頁內(nèi)偏移量W

    頁號和頁內(nèi)偏移量

    • 為了方便計(jì)算頁號和頁內(nèi)偏移量, 頁面大小一般設(shè)置為2的整數(shù)冪????

    • 厲害了我的哥

    頁表

    • tips : 頁表中的頁號是"隱含"的, 可以不占用存儲(chǔ)空間

    e.g:

    • 假設(shè)某系統(tǒng)物理內(nèi)存大小為 4GB, 頁面大小為 4KB, 則 每個(gè)頁表項(xiàng)至少應(yīng)該為多少字節(jié)?

    • 內(nèi)存塊大小=頁面大小=4KB= 212B

    • 4GB 的內(nèi)存總共會(huì)被分為232212=220個(gè)內(nèi)存塊

    • 內(nèi)存塊號的范圍應(yīng)該是 0 ~ 220?1

    • 內(nèi)存塊號至少要用 20 bit 來表示

    • 至少要用3B來表示塊號(3*8=24bit)

    (但是, 為了方便頁表的查詢, 常常會(huì)讓一個(gè)頁表項(xiàng)占更多的字節(jié), 使得每個(gè)頁面恰好可以裝得下整數(shù)個(gè)頁表項(xiàng))

    • 如何理解 “頁號是隱含的” :

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

    • 步驟總結(jié) :

    • 根據(jù)邏輯地址計(jì)算出頁號和頁內(nèi)偏移量

    • 判斷頁號是否越界

    • 查詢頁表, 找到頁號對應(yīng)的頁表項(xiàng), 確定頁面存放的內(nèi)存塊號

    • 用內(nèi)存塊號和頁內(nèi)偏移量得到物理地址 ( 頁表長度*物理塊號 + 頁內(nèi)偏移 = 物理地址 ( 計(jì)算機(jī)直接采用拼接物理塊號和頁內(nèi)偏移的方式得到物理地址 ) )

    • 訪問目標(biāo)單元

    😊( 一共需要訪問兩次內(nèi)存 : 第一次用來查頁表, 第二次用于訪問目標(biāo)內(nèi)存單元 )

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

    • 局部性原理

    • 時(shí)間局部性

    • 如果執(zhí)行了程序中的某條指令, 那么不久之后這條指令很有可能再次執(zhí)行; 如果某個(gè)數(shù)據(jù)被訪問過, 不久之后該數(shù)據(jù)很可能再次被訪問

    • ( 程序中存在大量的循環(huán) )

    • 空間局部性
    • 一旦程序訪問了某個(gè)存儲(chǔ)單元, 在不久之后, 其附近的存儲(chǔ)單元也很有可能被訪問到

    ( 很多數(shù)據(jù)在內(nèi)存中連續(xù)存放 )

    • 快表(TLB)
    • 快表又成為聯(lián)想寄存器(TLB), 是一種訪問速度比內(nèi)存快很多的高速緩沖存儲(chǔ)器, 用來存放當(dāng)前訪問的若干頁表項(xiàng), 以加速地址變換的過程. 與此對應(yīng)的, 內(nèi)存中的頁表常稱為慢表.

    • 步驟總結(jié) :
    • 快表與基本地址變換機(jī)構(gòu)的比較 :

    tips : TLB 和 普通 Cache 的區(qū)別——TLB 中只有頁表項(xiàng)的副本, 而普通 Cache 中可能會(huì)有其他各種數(shù)據(jù)的副本

    兩級頁表

    • 單級頁表存在的問題 :

    1.由于頁號隱式表示, 所以要根據(jù)頁號查詢頁表需要 :

    • K 號頁對應(yīng)的頁表項(xiàng)存放位置 = 頁表始址 + K * 4
    • 要在所有的頁表項(xiàng)都連續(xù)存放的基礎(chǔ)上才能用這種方法找到頁表項(xiàng)

    2.同時(shí), 由局部性原理可知, 很多時(shí)候, 進(jìn)程在一段時(shí)間內(nèi)只需要訪問某幾個(gè)頁面就可以正常運(yùn)行了, 因此沒有必要讓整個(gè)頁表都常駐內(nèi)存

    • 解決 : 把頁表再分頁并離散存儲(chǔ), 然后再建立一張頁表記錄頁表各個(gè)部分的存放位置, 稱為頁目錄表, 或稱外層頁表, 或稱頂層頁表.


    • 關(guān)于頁表常駐內(nèi)存的解決 – ( 虛擬存儲(chǔ)技術(shù) ) , 在頁表項(xiàng)中增加一個(gè)標(biāo)志位, 用于表示該頁面是否已經(jīng)調(diào)入內(nèi)存

    • 注意:

    • 如果采用多級頁表機(jī)制, 各級頁表不能超過一個(gè)頁面

    • 兩級頁表的訪存次數(shù)分析 :

    • n級頁表訪存次數(shù)為n+1次: ( 以2級頁表為例 )

    • 訪問內(nèi)存中的頁目錄表 ( 頂級頁表 )

    • 訪問內(nèi)存中的二級頁表 訪問目標(biāo)內(nèi)存單元

    總結(jié)

    以上是生活随笔為你收集整理的OS- -请求分页系统、请求分段系统和请求段页式系统(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。