文章導(dǎo)讀:
操作系統(tǒng)存儲(chǔ)器,如何對(duì)存儲(chǔ)器進(jìn)行有效的管理,直接影響著存儲(chǔ)器的利用率和系統(tǒng)性能。
主要分為幾個(gè)階段:
1、存儲(chǔ)器的層次結(jié)構(gòu)
2、程序的裝入和鏈接
3、連續(xù)分配存儲(chǔ)管理方式
4、分頁存儲(chǔ)管理方式
5、分段存儲(chǔ)管理方式
重點(diǎn)掌握:
內(nèi)部碎片和外部碎片
邏輯地址和物理地址
內(nèi)存分配策略
分頁的地址變換,頁表的使用
分頁和分段的優(yōu)缺點(diǎn)
本文解決問題:
1、存儲(chǔ)的層次結(jié)構(gòu)

這個(gè)圖不怎么看的清,總體是三個(gè)部分:存儲(chǔ)器的層次結(jié)構(gòu)、程序的裝入和鏈接、連續(xù)分配存儲(chǔ)管理方式

====================
存儲(chǔ)管理的功能:
(1)內(nèi)存分配——為每個(gè)進(jìn)程分配一定的內(nèi)存空間
(2)地址映射——把程序中所用的相對(duì)地址轉(zhuǎn)換成內(nèi)存的物理地址
(3)內(nèi)存保護(hù)——檢查地址的合法性,防止越界訪問
(4)內(nèi)存擴(kuò)充——解決“求大于供”的問題,采用虛擬存儲(chǔ)技術(shù)
內(nèi)存分配
內(nèi)存分配的主要任務(wù)是:為每一道程序分配內(nèi)存空間,使它們“各得其所”;當(dāng)程序撤消時(shí),則收回它占用的內(nèi)存空間。分配時(shí)注意提高存儲(chǔ)器的利用率。
地址映射
目標(biāo)程序所訪問的地址是邏輯地址集合的地址空間,而內(nèi)存空間是內(nèi)存中物理地址的集合,在多道程序環(huán)境下,這兩者是不一致的,因此,存儲(chǔ)管理必須提供地址映射功能,用于把程序地址空間中的邏輯地址轉(zhuǎn)換為內(nèi)存空間中對(duì)應(yīng)的物理地址。
內(nèi)存保護(hù)
內(nèi)存保護(hù)的任務(wù)是確保每道程序都在自己的內(nèi)存空間運(yùn)行,互不干擾。保護(hù)系統(tǒng)程序區(qū)不被用戶侵犯(有意或無意的),不允許用戶程序讀寫不屬于自己地址空間的數(shù)據(jù)(系統(tǒng)區(qū)地址空間,其他用戶程序的地址空間)。
內(nèi)存擴(kuò)充
內(nèi)存擴(kuò)充的任務(wù)是從邏輯上來擴(kuò)充內(nèi)存容量,使用戶認(rèn)為系統(tǒng)所擁有的內(nèi)存空間遠(yuǎn)比其實(shí)際的內(nèi)存空間(硬件RAM)大的多。
回到正題:
=======1、我們的操作系統(tǒng),首先觀察它的存儲(chǔ)結(jié)構(gòu),以下圖進(jìn)行詮釋:
輔存很好理解:相當(dāng)于外存,硬盤。(高級(jí)計(jì)算機(jī)分為六層)

================2、開始介紹各個(gè)層次結(jié)構(gòu)含義:
【緩存都在其使用的工具之前,目的是為了減少訪問次數(shù)】
2.1 主存儲(chǔ)器

主存儲(chǔ)器是計(jì)算機(jī)系統(tǒng)中的一個(gè)主要部件,用于保存進(jìn)程運(yùn)行時(shí)的程序和數(shù)據(jù),CPU的控制部件只能從主存儲(chǔ)器中取得指令和數(shù)據(jù),數(shù)據(jù)能夠從主存儲(chǔ)器中讀取并將他們裝入到寄存器中,或者從寄存器存入到主存儲(chǔ)器,CPU與外圍設(shè)備交換的信息一般也依托于主存儲(chǔ)器地址空間。但是,主存儲(chǔ)器的訪問速度遠(yuǎn)低于CPU執(zhí)行指令的速度,于是引入了寄存機(jī)和告訴緩沖。
2.2 寄存器
寄存器訪問速度最快,能與CPU協(xié)調(diào)工作,價(jià)格昂貴,容量不大,寄存器用于加速存儲(chǔ)器的訪問速度,如用寄存器存放操作數(shù),或用作地址寄存器加快地址轉(zhuǎn)換速度等。
2.3 高速緩存
高速緩存容量大于或遠(yuǎn)大于寄存器,但小于內(nèi)存,訪問速度高于主內(nèi)存器,根據(jù)程序局部性原理,將主存中一些經(jīng)常訪問的信息存放在高速緩存中,減少訪問主存儲(chǔ)器的次數(shù),可大幅度提高程序執(zhí)行速度。通常,進(jìn)程的程序和數(shù)據(jù)存放在主存,每當(dāng)使用時(shí),被臨時(shí)復(fù)制到高速緩存中,當(dāng)CPU訪問一組特定信息時(shí),首先檢查它是否在高速緩存中,如果已存在,則直接取出使用,否則,從主存中讀取信息。有的計(jì)算機(jī)系統(tǒng)設(shè)置了兩級(jí)或多級(jí)高速緩存,一級(jí)緩存速度最高,容量小,二級(jí)緩存容量稍大,速度稍慢。
2.4 磁盤緩存
磁盤的IO速度遠(yuǎn)低于對(duì)主存的訪問速度,因此將頻繁使用的一部分磁盤數(shù)據(jù)和信息暫時(shí)存放在磁盤緩存中,可減少訪問磁盤的次數(shù),磁盤緩存本身并不是一種實(shí)際存在的存儲(chǔ)介質(zhì),它依托于固定磁盤,提供對(duì)主存儲(chǔ)器空間的擴(kuò)充,即利用主存中的存儲(chǔ)空間,來暫存從磁盤中讀出或?qū)懭氲男畔?,主存可以看做是輔存的高速緩存,因?yàn)?,輔存中的數(shù)據(jù)必須復(fù)制到主存方能使用,反之,數(shù)據(jù)也必須先存在主存中,才能輸出到輔存。
============
【升級(jí)理解:看官請(qǐng)注意】
主存儲(chǔ)器與寄存器:
主存儲(chǔ)器簡(jiǎn)稱主存或內(nèi)存, 用于保存程序運(yùn)行時(shí)的指令和數(shù)據(jù).
寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和地址.
通常, 處理機(jī)從指存中讀出數(shù)據(jù)放入指令寄存器, 這一時(shí)間段我們稱之為取指周期; 處理機(jī)從數(shù)存中讀取數(shù)據(jù)放入數(shù)據(jù)寄存器, 再流入運(yùn)算器, 這一時(shí)間段我們稱之為執(zhí)行周期.
高速緩存和磁盤緩存:
高速緩沖存儲(chǔ)器是介于寄存器和存儲(chǔ)器之間的存儲(chǔ)器, 主要用于備份主存中較常用的數(shù)據(jù), 用來減少處理機(jī)對(duì)主存儲(chǔ)器的訪問次數(shù), 提高運(yùn)行效率.
磁盤緩存主要用于暫時(shí)存放頻繁使用的一部分磁盤數(shù)據(jù)和信息, 以減少訪問磁盤的次數(shù).
程序在系統(tǒng)中若想成為可執(zhí)行程序, 通常需要經(jīng)歷以下三個(gè)階段:
編譯 : 由編譯程序?qū)υ闯绦蜻M(jìn)行編譯, 形成若干個(gè)目標(biāo)模塊
鏈接 : 由鏈接程序?qū)⑷舾赡繕?biāo)模塊以及所需庫函數(shù)連接在一起, 形成一個(gè)完成的裝入模塊
轉(zhuǎn)入 : 由裝入程序?qū)⒀b入模塊裝入內(nèi)存