文章導(dǎo)讀:
操作系統(tǒng)存儲(chǔ)器,如何對(duì)存儲(chǔ)器進(jìn)行有效的管理,直接影響著存儲(chǔ)器的利用率和系統(tǒng)性能幻林。
主要分為幾個(gè)階段:
1贞盯、存儲(chǔ)器的層次結(jié)構(gòu)
2、程序的裝入和鏈接
3沪饺、連續(xù)分配存儲(chǔ)管理方式
4邻悬、分頁(yè)存儲(chǔ)管理方式
5、分段存儲(chǔ)管理方式
重點(diǎn)掌握:
內(nèi)部碎片和外部碎片
邏輯地址和物理地址
內(nèi)存分配策略
分頁(yè)的地址變換随闽,頁(yè)表的使用
分頁(yè)和分段的優(yōu)缺點(diǎn)
本文解決問(wè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ù)——檢查地址的合法性魏滚,防止越界訪問(wèn)
(4)內(nèi)存擴(kuò)充——解決“求大于供”的問(wèn)題,采用虛擬存儲(chǔ)技術(shù)
內(nèi)存分配
內(nèi)存分配的主要任務(wù)是:為每一道程序分配內(nèi)存空間坟漱,使它們“各得其所”鼠次;當(dāng)程序撤消時(shí),則收回它占用的內(nèi)存空間芋齿。分配時(shí)注意提高存儲(chǔ)器的利用率腥寇。
地址映射
目標(biāo)程序所訪問(wèn)的地址是邏輯地址集合的地址空間,而內(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ū)不被用戶侵犯(有意或無(wú)意的),不允許用戶程序讀寫(xiě)不屬于自己地址空間的數(shù)據(jù)(系統(tǒng)區(qū)地址空間释移,其他用戶程序的地址空間)叭披。
內(nèi)存擴(kuò)充
內(nèi)存擴(kuò)充的任務(wù)是從邏輯上來(lái)擴(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)于外存皱坛,硬盤(pán)。(高級(jí)計(jì)算機(jī)分為六層)
================2豆巨、開(kāi)始介紹各個(gè)層次結(jié)構(gòu)含義:
【緩存都在其使用的工具之前剩辟,目的是為了減少訪問(wèn)次數(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ǔ)器的訪問(wèn)速度遠(yuǎn)低于CPU執(zhí)行指令的速度,于是引入了寄存機(jī)和告訴緩沖艇棕。
2.2 寄存器
寄存器訪問(wèn)速度最快蝌戒,能與CPU協(xié)調(diào)工作,價(jià)格昂貴沼琉,容量不大北苟,寄存器用于加速存儲(chǔ)器的訪問(wèn)速度,如用寄存器存放操作數(shù)打瘪,或用作地址寄存器加快地址轉(zhuǎn)換速度等友鼻。
2.3 高速緩存
高速緩存容量大于或遠(yuǎn)大于寄存器,但小于內(nèi)存闺骚,訪問(wèn)速度高于主內(nèi)存器彩扔,根據(jù)程序局部性原理,將主存中一些經(jīng)常訪問(wèn)的信息存放在高速緩存中葛碧,減少訪問(wèn)主存儲(chǔ)器的次數(shù)借杰,可大幅度提高程序執(zhí)行速度。通常进泼,進(jìn)程的程序和數(shù)據(jù)存放在主存蔗衡,每當(dāng)使用時(shí),被臨時(shí)復(fù)制到高速緩存中乳绕,當(dāng)CPU訪問(wèn)一組特定信息時(shí)绞惦,首先檢查它是否在高速緩存中,如果已存在洋措,則直接取出使用济蝉,否則,從主存中讀取信息菠发。有的計(jì)算機(jī)系統(tǒng)設(shè)置了兩級(jí)或多級(jí)高速緩存王滤,一級(jí)緩存速度最高,容量小滓鸠,二級(jí)緩存容量稍大雁乡,速度稍慢。
2.4 磁盤(pán)緩存
磁盤(pán)的IO速度遠(yuǎn)低于對(duì)主存的訪問(wèn)速度糜俗,因此將頻繁使用的一部分磁盤(pán)數(shù)據(jù)和信息暫時(shí)存放在磁盤(pán)緩存中踱稍,可減少訪問(wèn)磁盤(pán)的次數(shù)曲饱,磁盤(pán)緩存本身并不是一種實(shí)際存在的存儲(chǔ)介質(zhì),它依托于固定磁盤(pán)珠月,提供對(duì)主存儲(chǔ)器空間的擴(kuò)充扩淀,即利用主存中的存儲(chǔ)空間,來(lái)暫存從磁盤(pán)中讀出或?qū)懭氲男畔⑵】妫鞔婵梢钥醋鍪禽o存的高速緩存驻谆,因?yàn)椋o存中的數(shù)據(jù)必須復(fù)制到主存方能使用庆聘,反之旺韭,數(shù)據(jù)也必須先存在主存中,才能輸出到輔存掏觉。
============
【升級(jí)理解:看官請(qǐng)注意】
主存儲(chǔ)器與寄存器:
主存儲(chǔ)器簡(jiǎn)稱主存或內(nèi)存, 用于保存程序運(yùn)行時(shí)的指令和數(shù)據(jù).
寄存器是有限存貯容量的高速存貯部件,它們可用來(lái)暫存指令值漫、數(shù)據(jù)和地址.
通常, 處理機(jī)從指存中讀出數(shù)據(jù)放入指令寄存器, 這一時(shí)間段我們稱之為取指周期; 處理機(jī)從數(shù)存中讀取數(shù)據(jù)放入數(shù)據(jù)寄存器, 再流入運(yùn)算器, 這一時(shí)間段我們稱之為執(zhí)行周期.
高速緩存和磁盤(pán)緩存:
高速緩沖存儲(chǔ)器是介于寄存器和存儲(chǔ)器之間的存儲(chǔ)器, 主要用于備份主存中較常用的數(shù)據(jù), 用來(lái)減少處理機(jī)對(duì)主存儲(chǔ)器的訪問(wèn)次數(shù), 提高運(yùn)行效率.
磁盤(pán)緩存主要用于暫時(shí)存放頻繁使用的一部分磁盤(pán)數(shù)據(jù)和信息, 以減少訪問(wèn)磁盤(pán)的次數(shù).
程序在系統(tǒng)中若想成為可執(zhí)行程序, 通常需要經(jīng)歷以下三個(gè)階段:
編譯 : 由編譯程序?qū)υ闯绦蜻M(jìn)行編譯, 形成若干個(gè)目標(biāo)模塊
鏈接 : 由鏈接程序?qū)⑷舾赡繕?biāo)模塊以及所需庫(kù)函數(shù)連接在一起, 形成一個(gè)完成的裝入模塊
轉(zhuǎn)入 : 由裝入程序?qū)⒀b入模塊裝入內(nèi)存