大廠面試復(fù)習(xí)打卡第1天---計(jì)算機(jī)組成

我看了面經(jīng)和個(gè)人經(jīng)歷發(fā)現(xiàn)大廠面試到計(jì)算機(jī)基礎(chǔ)知識(shí)這一塊內(nèi)存攒盈,硬盤旁瘫,cpu這一塊比較多,比如內(nèi)存的分段非竿,分頁原理等等蜕着。所以這一塊也是給大家講這方面的知識(shí)。好了話不多說進(jìn)入主題吧:熘承匣!這篇是參考《計(jì)算機(jī)組成與結(jié)構(gòu)》

? ?一個(gè) 完整 的 計(jì)算機(jī) 系統(tǒng) 由 硬件 和 軟件 兩大 部分 組成。 硬件 是指 看得見锤悄、 摸 得 著 的 物理 設(shè)備韧骗, 包括 運(yùn)算器、 控制器零聚、 存儲(chǔ)器袍暴、 輸入 設(shè)備 和 輸出 設(shè)備 等,如下圖所示隶症。


計(jì)算機(jī)系統(tǒng)的硬件組成

? ? ? ? ? ?計(jì)算機(jī) 系統(tǒng) 各 硬件 設(shè)備 是 如何 協(xié)同 工作 的 呢政模? 無論是 進(jìn)行 復(fù)雜 數(shù)據(jù) 計(jì)算 還是 進(jìn)行 大 范圍 數(shù)據(jù) 查詢, 或者 實(shí)現(xiàn) 一個(gè) 自動(dòng)控制 過程蚂会, 整個(gè) 系統(tǒng) 都 必須 按 步驟 來 處理淋样。 首先, 必須 使用 編程 語言 事先 編寫 源程序胁住。 源程序 是 不 能被 計(jì)算機(jī) 直接 執(zhí)行 的趁猴, 計(jì)算機(jī) 只 執(zhí)行 機(jī)器 指令。 指令彪见。 每一 條 指令 規(guī)定了 計(jì)算機(jī) 從 哪里 獲取 數(shù)據(jù)躲叼, 進(jìn)行 何種 操作, 以及 操作 結(jié)果 送到 什么地方 去 等 步驟企巢。 因此, 在 運(yùn)行 程序 之前让蕾, 必須 把 源程序 轉(zhuǎn)換 為 指令 序列浪规, 并將 這些 指令 序列 按 一定 順序 存放 在 存儲(chǔ)器 的 各個(gè) 地址 單元 中或听。 在 運(yùn)行 程序 時(shí), 控制器 先 從 存儲(chǔ)器 中 取出 第 1 條 指令笋婿, 并 根據(jù) 這條 指令 的 含義 發(fā)出 相應(yīng) 的 操作 命令誉裆, 以 執(zhí)行 該 指令。 如果 需要 從 存儲(chǔ)器 中 取出 操作 數(shù)( 例如 執(zhí)行 一條 加法 指令)缸濒, 則 先 從 存儲(chǔ) 單元 中 讀取 操作 數(shù)足丢, 送入 運(yùn)算器橡娄, 再由 運(yùn)算器 進(jìn)行 指定 的 算術(shù) 運(yùn)算 和 邏輯 操作 等 加工提鸟, 最后 把 運(yùn)算 結(jié)果 送回 存儲(chǔ)器 中。 接下來炒瘸, 讀取 后續(xù) 指令捞慌, 在 控制器 的 指揮 下 完成 規(guī)定 操作耀鸦, 依此 進(jìn)行 下去, 直到 遇到 停止 指令啸澡。 在 程序 的 執(zhí)行 過程中袖订, 如果 需要 輸入 數(shù)據(jù) 或 輸出 運(yùn)行 結(jié)果, 則在 控制器 的 控制下 通過 輸入 設(shè)備 所 輸入 的 數(shù)據(jù) 將 輸入 并 保存 到 存儲(chǔ)器 中嗅虏, 或者 通過 輸出 設(shè)備 將 程序 的 運(yùn)行 結(jié)果 輸出洛姑。

? ??????????馮· 諾 依 曼 計(jì)算機(jī) 根據(jù) 功能, 把 硬件 劃分 為 運(yùn)算器皮服、 控制器楞艾、 存儲(chǔ)器、 輸入 設(shè)備 和 輸出 設(shè)備 共 五大 部件冰更。 但 隨著 計(jì)算機(jī) 技術(shù) 的 發(fā)展产徊, 計(jì)算機(jī) 硬件 系統(tǒng) 的 組成 已發(fā) 生 許多 重大 變化, 例如蜀细, 將 運(yùn)算器 和 控制器 組合 為 一個(gè) 整體舟铜, 稱為 CPU( Central Processing Unit, 中央 處理器奠衔, 在 大中型 計(jì)算 機(jī)中 又叫 中央 處理機(jī))谆刨。

1、CPU

? ??????????微型機(jī) 的 CPU归斤, 又稱 微 處理器痊夭, 它是 整個(gè) 微型機(jī) 系統(tǒng) 的 核心, 其外 觀 如下圖所示脏里。 CPU 品質(zhì) 的 高低 直接 決定了 一個(gè) 計(jì)算機(jī) 系統(tǒng) 的 檔次她我。 反映 CPU 品質(zhì) 的 最重要的 指標(biāo) 是 主 頻 與 字長。 主 頻 是指 CPU 的 時(shí)鐘 頻率, 單位 通常 是 MHz( 兆赫茲)番舆。 主 頻 越高酝碳, CPU 的 運(yùn)算 速度 就 越快。 人們 通常 說 Intel Core i7 2600K- 3. 4GHz恨狈, 就 是指 該 CPU 的 時(shí)鐘 頻率 為 3. 4 吉 赫茲疏哗。


cpu

????????????CPU 的 內(nèi)部 通常 由 運(yùn)算 部件( ALU)、 寄存器 組禾怠、 控制器( EU) 等 部件 組成返奉, 如下圖所示。 這些 部件 通過 CPU 內(nèi)部 的 總線 相互 交換 信息吗氏。 CPU 的 主要 功能 包括 兩個(gè) 方面: 一是 完成 算術(shù) 運(yùn)算( 包括 定點(diǎn) 數(shù) 運(yùn)算芽偏、 浮點(diǎn) 數(shù) 運(yùn)算) 和 邏輯 運(yùn)算, 二 是 讀取牲证、 分析 和 執(zhí)行 指令哮针。


cpu內(nèi)部結(jié)構(gòu)

????????????CPU 的 運(yùn)算 部件( ALU) 負(fù)責(zé) 數(shù)據(jù) 的 加工 處理, 即對(duì) 來自 內(nèi)存 的 數(shù)據(jù) 進(jìn)行 算術(shù) 運(yùn)算 和 邏輯 運(yùn)算 處理坦袍, 以 實(shí)現(xiàn) 指令 所 規(guī)定 的 功能十厢。控制器( EU) 負(fù)責(zé) 指令 的 讀取捂齐、 分析 和 執(zhí)行蛮放, 產(chǎn)生 與 指令 相關(guān) 的 操作 信號(hào), 并把 各 操作 信號(hào) 按 順序( 稱為 微 命令 序列) 送往 相應(yīng) 的 部件奠宜, 從而 控制 這些 部件 按 指令 的 要求 執(zhí)行 動(dòng)作包颁, 包括 收集 各 部件 的 狀態(tài) 信息。

2压真、主 存儲(chǔ)器

? ? ? ? ? ??存儲(chǔ)器 的 種類 很多娩嚼, 按其 用途 可分 為主 存儲(chǔ)器 和 輔助 存儲(chǔ)器( 也稱 為 內(nèi) 存儲(chǔ)器 和 外 存儲(chǔ)器)。 內(nèi)存 一般 采用 半導(dǎo)體 存儲(chǔ) 器件 構(gòu)成 存儲(chǔ) 單元滴肿。 因?yàn)?RAM 是 內(nèi)存 中 最重要的 存儲(chǔ)器岳悟, 所以 通常 我們 直接 稱之為 內(nèi)存。 內(nèi)存 就是 存儲(chǔ) 欲 運(yùn)行 的 程序 和 數(shù)據(jù) 的 地方泼差。 如在 使用 WPS 處理 文稿 時(shí)贵少, 當(dāng)你 在 鍵盤 上 敲入 字符 時(shí), 所 輸入 的 字符 就被 存入 內(nèi)存 中堆缘; 當(dāng)你 要把 內(nèi)存 的 信息 進(jìn)行 保存 時(shí)滔灶, 內(nèi)存 中的 數(shù)據(jù) 才會(huì) 被 存入 磁盤( 如 硬盤 或 U 盤)。 RAM 既可以 從中 讀取 數(shù)據(jù)吼肥, 也可以 寫入 數(shù)據(jù)录平。 當(dāng)機(jī) 器 電源 關(guān)閉 時(shí)麻车, 存于 RAM 的 數(shù)據(jù) 就會(huì) 丟失。 我們 通常 購買 或 升級(jí) 的 內(nèi)存 條 就 用作 計(jì)算機(jī) 的 內(nèi)存萄涯。 內(nèi)存 條 就是 將 若干 RAM 集成 塊 集中 在一起 的 一 小塊 電路板绪氛。 它 插在 計(jì)算機(jī) 中的 內(nèi)存 插槽 上, 以 減少 RAM 集成 塊 占用 的 空間涝影。 目前 市 場上 單 根 內(nèi)存 條 的 容量 有 512 MB、 1 GB争占、 2 GB燃逻、 4 GB 等。 通常臂痕, 一般 計(jì)算機(jī) 系統(tǒng) 使用 的 隨機(jī) 存取 內(nèi)存( RAM) 可分 為 動(dòng)態(tài) 隨機(jī) 存取 內(nèi)存( DRAM) 與 靜態(tài) 隨機(jī) 存取 內(nèi)存( SRAM) 兩種伯襟。 這 兩種 RAM 的 差異 在于, DRAM 需要 由 存儲(chǔ)器 控制 電路 按 一定 周期 對(duì) 存儲(chǔ)器 刷新握童, 才能 維系 數(shù)據(jù) 保存姆怪; SRAM 的 數(shù)據(jù) 則 不需要 刷新 過程, 在上 電 期間澡绩, 數(shù)據(jù) 不會(huì) 丟失稽揭。 對(duì)于 在 指定 功能 或 應(yīng)用 軟件 之間 共享 的 存儲(chǔ)器 來說, 如果 一個(gè) 或 兩個(gè) 應(yīng)用 軟件占用 了 所有 存儲(chǔ)器 空間肥卡, 此時(shí) 將 無法 為 其他 應(yīng)用 軟件 分配 存儲(chǔ)器 空間溪掀。 例如, 日歷步鉴、 短 信息 和 電 話簿( 或 通信 錄) 可能 會(huì) 共享 移動(dòng) 設(shè)備 中的 動(dòng)態(tài) 存儲(chǔ)器揪胃。 動(dòng)態(tài) 存儲(chǔ)器 一般 采用 超 大 容量 的 存儲(chǔ) 技術(shù), 但是氛琢, 其 存儲(chǔ) 組件 要求 由 控制器 控制 其 刷新 周期喊递。 它與 靜態(tài) 存儲(chǔ)器 等 其他 存儲(chǔ) 技術(shù) 相比, 耗電量 相對(duì) 較高阳似。 與其 他 類型 的 存儲(chǔ)器 相比骚勘, 動(dòng)態(tài) 存儲(chǔ)器 的 優(yōu)點(diǎn) 是 每 GB 的 價(jià)格 最低。

? ? ?2.1? 按 存儲(chǔ)器 的 功能 劃分

? ??????????????(1) 主 存儲(chǔ)器:主 存儲(chǔ)器 是 CPU 能 編程 訪問 的 存儲(chǔ)器障般, 它 存放 當(dāng)前 CPU 正在 執(zhí)行 和 欲 執(zhí)行 的 程序 和 需要 處理 的 數(shù)據(jù)调鲸。 主 存儲(chǔ)器 與 CPU 共同 組成 計(jì)算機(jī) 的 主機(jī) 系統(tǒng), 因?yàn)?通常 安裝 在 主機(jī) 箱 之中挽荡, 故 又稱 內(nèi) 存儲(chǔ)器藐石, 簡稱 主 存 或 內(nèi)存。

? ??????????????(2) 輔助 存儲(chǔ)器:由于 主 存儲(chǔ)器 容量 有限( 主要 受 地址 線 位數(shù)定拟、 成本 和 存取 速度 等 因素 制約)于微, 在 計(jì)算機(jī) 系統(tǒng) 中 通過 配置 更大 容量 的 磁盤逗嫡、 光盤 和 U 盤 等 存儲(chǔ)器, 作為 對(duì) 主 存儲(chǔ)器 容量 不足 的 補(bǔ)充 和 后援株依。 這些 存儲(chǔ)器 就 統(tǒng)稱 為 輔助 存儲(chǔ)器驱证。 因?yàn)?它 位于 主機(jī) 的 邏輯 范疇 之外, 故 又稱為 外 存儲(chǔ)器恋腕, 簡稱 為輔 存 或 外存抹锄。 外存 包括 軟盤、 硬盤荠藤、 磁帶伙单、 光盤、 U 盤 等哈肖。

? ??????????????(3) 高速 緩存( Cache):CPU 與 主 存儲(chǔ)器 之間 存在 巨大 的 速度 差異吻育, 使得 CPU 發(fā)出 訪問 主 存儲(chǔ)器 的 請(qǐng)求 后, 可能 需要 等待 多個(gè) 時(shí)鐘 周期 才能 讀取 存儲(chǔ)器 的 內(nèi)容淤井。 為了 解決 速度 匹配 問題布疼, 可以 在 CPU 中 設(shè)置 高速 緩存( Cache)。 Cache 的 速度 基本上 接近 CPU 的 工作 速度币狠, 專門 存放 CPU 即將 使用 的 部分 程序 和 數(shù)據(jù)游两, 這些 程序 和 數(shù)據(jù) 是 主 存 中正 在 運(yùn)行 或 處理 的 程序 和 數(shù)據(jù) 的 副本。

當(dāng) CPU 訪問 主 存 時(shí)总寻, 同時(shí) 訪問 Cache 和 主 存器罐。 通過 對(duì) 地址 碼 的 分析, 可以 判斷 所 訪問 物理 地址 區(qū)間 的 內(nèi)容 是否 已 復(fù)制 在 Cache 中渐行。 如果 所要 訪問 的 內(nèi)容 已經(jīng) 復(fù)制 在 Cache 中( 稱為 Cache 命中)轰坊, 則 直接 從 Cache 中 快速 地 讀取祟印; 如果 沒有 在 Cache 中 找到 所需 的 程序 和 數(shù)據(jù)肴沫, 稱為 Cache 不 命中; 否則蕴忆, 從 主 存 中 讀取颤芬。

2.2??存儲(chǔ) 系統(tǒng) 的 層次 結(jié)構(gòu)

? ? ? ? ? ? ? ? 如下圖所示 的 是一 個(gè) 非常 典型的 三級(jí) 存儲(chǔ) 體系 結(jié)構(gòu), 分為 高速 緩沖 存儲(chǔ)器( Cache)套鹅、 主 存儲(chǔ)器站蝠、 外 存儲(chǔ)器 3 個(gè) 層次。 在這 種 分層 存儲(chǔ) 體系 結(jié)構(gòu) 中卓鹿, 對(duì)于 CPU 直接 訪問 的 存儲(chǔ)器菱魔, 其 速度 盡可能 快, 而 容量 相對(duì) 有限吟孙; 作為 后援 的 一級(jí)澜倦, 則 容量 要 大聚蝶, 而 其 速度 就可能 慢 些。 這樣 的 合理 搭配藻治, 對(duì) 用戶 來講碘勉, 整個(gè) 存儲(chǔ)器 系統(tǒng) 既可 提供 大 容量 的 存儲(chǔ) 空間, 又可 有 較快 的 存取 速度桩卵。

分層 存儲(chǔ) 體系 結(jié)構(gòu) 示意圖


? ? ? ? ?目前验靡, 計(jì)算機(jī) 存儲(chǔ) 技術(shù) 還在 不斷 飛速 發(fā)展中, 主要 呈現(xiàn) 如下 特征吸占,如下圖

計(jì)算機(jī) 存儲(chǔ) 部件 速度 與 容量 的 關(guān)系

? 存儲(chǔ)器 每位 的 價(jià)格 逐漸 降低晴叨;

?? 存儲(chǔ)容量 逐漸 增大;

?? 存取 速度 加快矾屯。


2.3??主 存儲(chǔ)器(內(nèi)存)

? ? ? ?ps: 關(guān)于硬件這塊我不打算介紹硬件的部分,我們程序員主要關(guān)注的是軟件部分的初厚,例如cpu怎么和內(nèi)存打交道件蚕,內(nèi)存的分頁機(jī)制等

內(nèi)存有兩個(gè)比較重要的概念,邏輯地址和物理地址

2.3.1??內(nèi)存地址:

? ? ? ?內(nèi)存的地址分為邏輯地址和?物理地址

? ? ? ? ?邏輯地址:CPU所生成的地址产禾。邏輯地址是內(nèi)部和編程使用的排作、并不唯一。例如亚情,你在進(jìn)行C語言指針編程中妄痪,可以讀取指針變量本身值(&操作),實(shí)際上這個(gè)值就是邏輯地址楞件,它是相對(duì)于你當(dāng)前進(jìn)程數(shù)據(jù)段的地址(偏移地址)衫生,不和絕對(duì)物理地址相干。

? ??????物理地址:加載到內(nèi)存地址寄存器中的地址土浸,內(nèi)存單元的真正地址罪针。

? ? ? ? 內(nèi)存 的 分配 管理 方式 有? 分區(qū)式, 分頁 式黄伊、 分 段式 和 段 頁 式 等泪酱,

2.3.2??分區(qū)管理

1、靜態(tài)重定位是在程序執(zhí)行之前進(jìn)行重定位还最,它根據(jù)裝配模塊將要裝入的內(nèi)存起始位置墓阀,直接修改裝配模塊中的有關(guān)使用地址的指令。

? ? ? ? ? 例如拓轻,MOV  AC斯撮,[500]

 ? ? ? 靜態(tài)重定位有著無需硬件支持的優(yōu)點(diǎn),但存在著如下的缺點(diǎn):一是程序重定位之后就不能在內(nèi)存中搬動(dòng)了悦即;二是要求程序的存儲(chǔ)空間是連續(xù)的吮成,不能把程序放在若干個(gè)不連續(xù)的區(qū)域內(nèi)橱乱。

?????????2、動(dòng)態(tài)重定位是指粱甫,不是在程序執(zhí)行之前而是在程序執(zhí)行過程中進(jìn)行地址重定位泳叠。更確切地說,是在CPU每次訪問內(nèi)存單元前才進(jìn)行地址變換茶宵。需硬件支持危纫。優(yōu)點(diǎn)是:(1)程序占用的內(nèi)存空間動(dòng)態(tài)可變,不必連續(xù)存放在一處乌庶。(2)比較容易實(shí)現(xiàn)幾個(gè)進(jìn)程對(duì)同一程序副本的共享使用种蝶。

????????????缺點(diǎn)是:需要附加的硬件支持,增加了機(jī)器成本瞒大,而且實(shí)現(xiàn)存儲(chǔ)管理的軟件算法比較復(fù)雜螃征。

????????????現(xiàn)在一般計(jì)算機(jī)系統(tǒng)中都采用動(dòng)態(tài)重定位方法。


分區(qū)管理

?對(duì)于分區(qū)管理我們只需要知道透敌,數(shù)據(jù)按照固定的連續(xù)區(qū)域裝載到內(nèi)存當(dāng)中去盯滚。如果數(shù)據(jù)太大了,內(nèi)存裝不下這么多了酗电,那要怎么辦呢魄藕?

?

分頁式和分段式(網(wǎng)上看到這個(gè)例子覺得比喻的很好,地址:https://www.cnblogs.com/jinhengyu/p/10257816.html

? ?? ??????打個(gè)比方撵术,比如說你去聽課背率,帶了一個(gè)紙質(zhì)筆記本做筆記。筆記本有100張紙嫩与,課程有語文寝姿、數(shù)學(xué)、英語三門蕴纳,對(duì)于這個(gè)筆記本的使用会油,為了便于以后復(fù)習(xí)方便,你可以有兩種選擇古毛。

? ? ????????第一種是翻翩,你從本子的第一張紙開始用,并且事先在本子上做劃分:第2張到第30張紙記語文筆記稻薇,第31到60張紙記數(shù)學(xué)筆記嫂冻,第61到100張紙記英語筆記,最后在第一張紙做個(gè)列表塞椎,記錄著三門筆記各自的范圍桨仿。這就是分段管理,第一張紙叫段表案狠。

? ? ????????第二種是服傍,你從第二張紙開始做筆記钱雷,各種課的筆記是連在一起的:第2張紙是數(shù)學(xué),第3張是語文吹零,第4張英語……最后呢罩抗,你在第一張紙做了一個(gè)目錄,記錄著語文筆記在第3灿椅、7套蒂、14、15張紙……茫蛹,數(shù)學(xué)筆記在第2操刀、6、8婴洼、9骨坑、11……,英語筆記在第4柬采、5卡啰、12……。這就是分頁管理警没,第一張紙叫頁表。你要復(fù)習(xí)哪一門課振湾,就到頁表里查尋相關(guān)的紙的編號(hào)杀迹,然后翻到那一頁去復(fù)習(xí)

兩者的優(yōu)缺點(diǎn):在段式存儲(chǔ)管理中,將程序的地址空間劃分為若干段(segment)押搪,如代碼段树酪,數(shù)據(jù)段,堆棧段大州;這樣每個(gè)進(jìn)程有一個(gè)二維地址空間续语,相互獨(dú)立,互不干擾厦画。段式管理的優(yōu)點(diǎn)是:沒有內(nèi)碎片(因?yàn)槎未笮】勺兇眩淖兌未笮硐齼?nèi)碎片)。但段換入換出時(shí)根暑,會(huì)產(chǎn)生外碎片(比如4k的段換5k的段力试,會(huì)產(chǎn)生1k的外碎片)? ? 在頁式存儲(chǔ)管理中,將程序的邏輯地址劃分為固定大小的頁(page)排嫌,而物理內(nèi)存劃分為同樣大小的頁框畸裳,程序加載時(shí),可以將任意一頁放入內(nèi)存中任意一個(gè)頁框淳地,這些頁框不必連續(xù)怖糊,從而實(shí)現(xiàn)了離散分離帅容。頁式存儲(chǔ)管理的優(yōu)點(diǎn)是:沒有外碎片(因?yàn)轫摰拇笮」潭ǎ珪?huì)產(chǎn)生內(nèi)碎片(一個(gè)頁可能填充不滿)

兩者的不同點(diǎn):(1) 分頁僅僅是由于系統(tǒng)管理的需要而不是用戶的需要伍伤。段則是信息的邏輯單位并徘,它含有一組其意義相對(duì)完整的信息。分段的目的是為了能更好地滿足用戶的需要嚷缭。

(2) 頁的大小固定且由系統(tǒng)決定饮亏,由系統(tǒng)把邏輯地址劃分為頁號(hào)和頁內(nèi)地址兩部分,是由機(jī)器硬件實(shí)現(xiàn)的阅爽,因而在系統(tǒng)中只能有一種大小的頁面路幸;而段的長度卻不固定,決定于用戶所編寫的程序付翁,通常由編譯程序在對(duì)源程序進(jìn)行編譯時(shí)简肴,根據(jù)信息的性質(zhì)來劃分。

(3) 分頁的作業(yè)地址空間是一維的百侧,即單一的線性地址空間砰识,程序員只需利用一個(gè)記憶符,即可表示一個(gè)地址佣渴;而分段的作業(yè)地址空間則是二維的辫狼,程序員在標(biāo)識(shí)一個(gè)地址時(shí),既需給出段名辛润,又需給出段內(nèi)地址膨处。

2.3.3? 分頁

頁 式 虛擬 存儲(chǔ)器 首先 將 虛擬 存儲(chǔ)器 空間 與 內(nèi)存 空間 都 劃分 為 若干 大小 相同 的 頁, 虛擬 存儲(chǔ) 空 間的 頁 稱為 虛 頁砂竖, 內(nèi)存 的 頁 稱為 實(shí) 頁真椿。 通常 頁 的 大小 為 512 B、 1 KB乎澄、 2 KB突硝、 4 KB 等。 注意置济, 頁 不能 分得 太大解恰, 否則 會(huì) 影響 換進(jìn) 換出 的 速度, 從而 導(dǎo)致 CPU 的 運(yùn)行 速度 減慢舟肉。 因此修噪, 一般 操作系統(tǒng) 中, 取 最大 頁 為 4 KB路媚, UNIX 操作系統(tǒng) 的 頁 為 512 B黄琼。

分頁管理中邏輯地址對(duì)于物理地址


2.3.4? 段式管理

在 段式 虛擬 存儲(chǔ)器 中, 將 用戶 程序 按其 邏輯 結(jié)構(gòu) 劃分 為 若干 段( 例如 程序 段、 數(shù)據(jù) 段脏款, 主 程序 段围苫、 子程序 段 等), 各 段 大小 不同撤师。 相應(yīng) 地剂府, 段式 虛擬 存儲(chǔ)器 也 隨 程序 的 需要 動(dòng)態(tài) 地 分段, 且 將 段 的 起始 地址 與 段 的 長度 填 到 段 表 之中剃盾。 編程 時(shí) 使 用的 虛 地址 分為 兩部分: 高位 是 段 號(hào)腺占, 低 位 是 段 內(nèi) 地址。 例如痒谴, Intel 80386 的 段 號(hào)為 16 位衰伯, 段 內(nèi) 地址 為 32 位, 可將 整個(gè) 虛擬 空間 分為 64K 段积蔚, 每 段 的 容量 最大 可達(dá) 4 GB意鲸, 使 用戶 有 足夠 大的 選擇 余地。

段式管理結(jié)構(gòu)


2.3.5 段頁存儲(chǔ)管理

????????由于 分頁 是 固定 的尽爆, 它是 面向 存儲(chǔ)器 本身 的怎顾, 計(jì)算機(jī) 系統(tǒng) 中 只有 一種 大 小的 頁。 程序 裝入 內(nèi)存 的 塊( 頁)漱贱, 可能 因?yàn)?某 一頁 裝 不滿 內(nèi)存 的 一塊 而 剩余 一部分 不能 利用( 稱為“ 頁 內(nèi) 零頭”)槐雾。 如果 頁 內(nèi) 零頭 太多, 就會(huì) 影響 內(nèi)存 的 利用率幅狮。 此外蚜退, 由于 頁 的 劃分 不能 反映 程序 的 邏輯 結(jié)構(gòu), 如果 離散 地 給 程序 分配 內(nèi)存 空間彪笼, 那么 一個(gè) 程序( 包括 數(shù)據(jù)) 必然 存放 在 不 相連 的 內(nèi)存 中, 這樣 可能 會(huì) 給 程序 的 執(zhí)行蚂且、 保護(hù) 和 共享 帶來 不方便配猫。?

????????段式 虛擬 存儲(chǔ)器 是 面向 程序 的 邏輯 結(jié)構(gòu) 分段 的, 一個(gè) 在 邏輯上 獨(dú)立 的 程序 模塊 可以 為 一個(gè) 段杏死, 這個(gè) 段 可大 可 小泵肄。 因此, 有利于 對(duì) 存儲(chǔ) 空間 的 編譯 處理淑翼、 執(zhí)行腐巢、 共享 與 保護(hù)。 由于 段 的 長度 比 頁 要 大 很多玄括, 不利于 存儲(chǔ)器 的 管理 和 調(diào)度冯丙。 一方面, 段 內(nèi)地 址 必須 連續(xù)遭京, 因 各 段 的 首胃惜、 尾 地址 沒有 規(guī)律泞莉, 地址 計(jì)算 比 頁 式 存儲(chǔ)器 管理 要 復(fù)雜。 另一方面船殉, 當(dāng) 一個(gè) 段 執(zhí)行 完畢 后鲫趁, 新 調(diào)入 的 程序 可能 小于 現(xiàn)在 內(nèi)存 段 的 大小, 這樣 也會(huì) 造成 零頭利虫。 為此挨厚, 把 頁 式 存儲(chǔ) 管理 和 段式 存儲(chǔ) 管理 結(jié)合 起來, 就 形 成了 段 頁 式 虛擬 存儲(chǔ) 管理 方式糠惫。 在這 種 方式 中疫剃, 先 將 程序 按 邏輯 分為 若干 段, 每個(gè) 段 再分 成 相同 大 小的 頁寞钥, 內(nèi)存 也 劃 分為 與 頁 大小 相同 的 塊慌申。 在 系統(tǒng) 中 建立 頁 表 和 段 表兵志, 分 兩級(jí) 查表 實(shí)現(xiàn) 虛擬 地址 與 物理 地址的 轉(zhuǎn)換姨裸。 在 多用戶 系統(tǒng) 中, 虛 地址 包括 基 號(hào)囚巴、 段 號(hào)您炉、 段 內(nèi) 頁號(hào)柒爵、 頁 內(nèi) 地址 等 信息。 其中赚爵, 基 號(hào)為 用戶 標(biāo)志 號(hào)棉胀, 用于 區(qū)別 每一個(gè) 用戶。

下圖給 出了 段 頁 式 虛擬 存儲(chǔ)器 地址 轉(zhuǎn)換 示意圖冀膝。 每 道 程序 有 自己的 段 表唁奢, 這些 段 表 的 起始 地址 在 段 表 基址 寄存器 組。 相應(yīng) 地窝剖, 虛 地址 中 每 道 用戶 程序 有 自己的 基 號(hào)麻掸。 根據(jù) 它 選取 相應(yīng) 的 段 表 基址 寄存器, 從中 獲得 自己的 段 表 起始 地址赐纱。 將 段 表 起始 地址 與 虛 地址 中的 段 號(hào) 合成脊奋, 得到 訪問 段 表 對(duì)應(yīng) 行的 地址。 從 段 表中 取出 該 段 的 頁 表 起始 地址疙描, 與 段 內(nèi) 頁號(hào) 合并诚隙, 形成 訪問 頁 表 對(duì)應(yīng) 行的 地址。 從 頁 表中 取出 實(shí) 頁號(hào)起胰, 與 頁 內(nèi)地 址 拼接久又, 形成 訪問 主 存 單元 的 實(shí) 地址。


段 頁 式 虛擬 存儲(chǔ)器 地址 轉(zhuǎn)換 示意圖


2.4? 虛擬 存儲(chǔ)器 的 工作 過程

? ??????由于 使用 了 虛擬 存儲(chǔ)器 系統(tǒng), 在 程序 執(zhí)行 的 任何 一個(gè) 時(shí)刻籽孙, 執(zhí)行 程序 的 某一 部分 被 存放 在 物理 存儲(chǔ)器 中烈评, 其余 部 分則 被 交換 到 磁盤( 一般 是 硬盤) 上。 當(dāng) 這個(gè) 程序 運(yùn)行時(shí)犯建, 它 還要 連續(xù)不斷 地 訪問 這個(gè) 程序 其他 部分 的 代碼 和 數(shù)據(jù)讲冠。 若 所 訪問 的 代碼 和 數(shù)據(jù) 在 物理 存儲(chǔ)器 中, 則 這個(gè) 程序 就會(huì) 連續(xù)不斷 地 執(zhí)行适瓦。 若 所 訪問 的 代碼 和數(shù) 據(jù) 不在 物理 存儲(chǔ)器 中竿开, 此時(shí) 操作系統(tǒng) 的 存儲(chǔ)器 管理 程序 就必須 給以 干預(yù), 進(jìn)行 適當(dāng) 的 控制玻熙, 把 訪問 的 代碼 和數(shù) 據(jù) 引導(dǎo) 到 物理 存儲(chǔ)器 中( 如果 需要否彩, 這時(shí) 還要 把 程序 的 某一 部分 交換 到 磁盤 上, 即 前面 提到 的“ 換進(jìn) 換出”)嗦随。 這樣列荔, 這個(gè) 應(yīng)用 程序 就可以 連續(xù)不斷 地 執(zhí)行。 在使 用 虛擬 存儲(chǔ)器 時(shí)枚尼, 必須 把 程序 分成 若干 小塊( 也稱 為 程序 段 或 頁)贴浙。 各個(gè) 程序 小塊 此時(shí) 不在 物理 存儲(chǔ)器 內(nèi), 就 一定 被 交換 到了 磁盤 上署恍。 這樣崎溃, 操作系統(tǒng) 的 存儲(chǔ)器 管理 子系統(tǒng) 對(duì) 每一個(gè) 程序 小塊 進(jìn)行 跟蹤。 通常盯质, 程序 可以 分段袁串, 也可以 分頁, 而 分頁 的 性能 比 分段 好呼巷。 大多數(shù) 商用 虛擬 存儲(chǔ)器 系統(tǒng) 提供 的 是 請(qǐng)求 分頁 虛擬 存儲(chǔ)器囱修。“ 請(qǐng)求 分頁” 就是 當(dāng) 需要 訪問 這些 頁 時(shí)王悍, 就把 這些 頁 引導(dǎo) 到 物理 存儲(chǔ)器 中蔚袍。 這與 預(yù)先 定 好的 頁 的 大小 不同, 在 這種 情況下配名, 虛擬 存儲(chǔ)器 系統(tǒng) 預(yù)期 需 要的 頁 總是 程序 將要 使 用的 頁。目前晋辆, 能 實(shí)現(xiàn) 虛擬 存儲(chǔ) 的 有 UNIX渠脉、 高 版本 的 Windows 等 操作系統(tǒng)。 早期 的 操作系統(tǒng)( 如 UNIX瓶佳、 OS/ 2 等) 也 支持 請(qǐng)求 分頁 虛擬 存儲(chǔ) 管理芋膘。 虛擬 存儲(chǔ)器 地址 轉(zhuǎn)換 的 詳細(xì) 過程 如下圖?


虛擬 存儲(chǔ)器 地址 轉(zhuǎn)換 的 詳細(xì) 過程


本章暫時(shí)先寫到這里,cpu沒有比較詳細(xì)的說明,重點(diǎn)寫在了存儲(chǔ)器方面为朋,后續(xù)會(huì)加上硬盤和cache相關(guān)的知識(shí)點(diǎn)臂拓,希望大家能多多包涵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末习寸,一起剝皮案震驚了整個(gè)濱河市胶惰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霞溪,老刑警劉巖孵滞,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鸯匹,居然都是意外死亡坊饶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門殴蓬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匿级,“玉大人,你說我怎么就攤上這事染厅《灰铮” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵糟秘,是天一觀的道長简逮。 經(jīng)常有香客問我,道長尿赚,這世上最難降的妖魔是什么散庶? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮凌净,結(jié)果婚禮上悲龟,老公的妹妹穿的比我還像新娘。我一直安慰自己冰寻,他們只是感情好须教,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斩芭,像睡著了一般轻腺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上划乖,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天贬养,我揣著相機(jī)與錄音,去河邊找鬼琴庵。 笑死误算,一個(gè)胖子當(dāng)著我的面吹牛仰美,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播儿礼,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼咖杂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蚊夫?” 一聲冷哼從身側(cè)響起诉字,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎这橙,沒想到半個(gè)月后奏窑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屈扎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年埃唯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹰晨。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墨叛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出模蜡,到底是詐尸還是另有隱情漠趁,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布忍疾,位于F島的核電站闯传,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卤妒。R本人自食惡果不足惜甥绿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望则披。 院中可真熱鬧共缕,春花似錦、人聲如沸士复。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阱洪。三九已至便贵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冗荸,已是汗流浹背承璃。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俏竞,地道東北人绸硕。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像魂毁,于是被迫代替她去往敵國和親玻佩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容