深入理解计算机系统(1.3)---金字塔形的存储设备、操作系统的抽象概念
本文轉(zhuǎn)載地址:http://www.cnblogs.com/zuoxiaolong/p/computer3.html
?
? ? ? ? ? ?上一章LZ給各位展示了一下hello程序的簡(jiǎn)單執(zhí)行過(guò)程,可以看出在這一過(guò)程當(dāng)中,系統(tǒng)在數(shù)據(jù)的傳輸上花費(fèi)了大量的時(shí)間。硬件開(kāi)發(fā)商為了減少這種數(shù)據(jù)傳輸?shù)臅r(shí)間成本,采用一種高速緩存的技術(shù)去減少這種時(shí)間成本。
? ? ? ? ? ?高速緩存被置放于處理器當(dāng)中,與處理器中的寄存器文件直接進(jìn)行數(shù)據(jù)交換,這樣大大減少了數(shù)據(jù)傳輸?shù)臅r(shí)間成本,使得程序的運(yùn)行速度可以得到數(shù)倍的提升。而作為一個(gè)程序猿,如果可以適當(dāng)?shù)睦酶咚倬彺嫒ゴ娣乓恍┏绦蜻\(yùn)行過(guò)程中可能會(huì)經(jīng)常使用的數(shù)據(jù),可以將程序的運(yùn)行速度提高數(shù)倍甚至數(shù)個(gè)數(shù)量級(jí)。
? ? ? ? ? ?由此就可見(jiàn)高速緩存的重要性,下圖展示了硬件分布中,高速緩存的位置。
存儲(chǔ)設(shè)備的金字塔
?
? ? ? ? ? ?當(dāng)今的計(jì)算機(jī)系統(tǒng)當(dāng)中,基本上全部都置入了各種各樣的存儲(chǔ)設(shè)備,這些存儲(chǔ)設(shè)備呈明顯的層次結(jié)構(gòu),它們的特點(diǎn)是容量越大,速度越慢。因此如果按照容量和速度將它們以圖示的方式呈現(xiàn)的話(huà),則看起來(lái)就像是一個(gè)金字塔,如下所示。
? ? ? ? ? ?不過(guò)這個(gè)圖是英文版的,LZ稍微解釋下,有些特別明顯的LZ就不解釋了,如果有哪位猿友實(shí)在不明白,可以到LZ的群里提問(wèn)。
? ? ? ? ? ?左邊的意思是更小更快更貴的存儲(chǔ)設(shè)備,包括寄存器以及L1-L3的高速緩存,以及更大更慢更便宜的存儲(chǔ)設(shè)備,包括主存、本地磁盤(pán)以及遠(yuǎn)程存儲(chǔ)設(shè)備。通常意義下,我們將上一層的存儲(chǔ)設(shè)備作為當(dāng)前存儲(chǔ)設(shè)備的高速緩存,比如L1的高速緩存是寄存器,L2的高速緩存是L1,以此類(lèi)推。
?
操作系統(tǒng)是硬件的manager
?
? ? ? ? ? ?操作系統(tǒng)是幫我們操控硬件的軟件,它就像是應(yīng)用程序與硬件的中間者,在兩者之間扮演一個(gè)協(xié)調(diào)、管理的角色。它們的關(guān)系如下圖。
? ? ? ? ? 操作系統(tǒng)提供了幾個(gè)我們熟悉的概念去表示硬件設(shè)備,比如進(jìn)程、虛擬存儲(chǔ)器、文件。它們表示的硬件設(shè)備如下圖所示。
? ? ? ? ? 可以看出文件是對(duì)I/O設(shè)備的抽象描述,而虛擬存儲(chǔ)器是對(duì)主存和I/O設(shè)備的統(tǒng)稱(chēng),最后,一個(gè)進(jìn)程在此基礎(chǔ)上又加入了處理器。
?
進(jìn)程
?
? ? ? ? ? ?進(jìn)程是操作系統(tǒng)對(duì)一個(gè)正在運(yùn)行的程序的抽象。操作系統(tǒng)會(huì)記錄每一個(gè)進(jìn)程的狀態(tài),這些狀態(tài)就稱(chēng)作進(jìn)程的上下文。這些狀態(tài)主要包括了PC,寄存器以及主存的當(dāng)前內(nèi)容。當(dāng)操作系統(tǒng)在進(jìn)程間切換的時(shí)候,也會(huì)切換相應(yīng)的上下文,從而保證進(jìn)程恢復(fù)到之前的狀態(tài)。
? ? ? ? ? ?在進(jìn)程當(dāng)中,又被計(jì)算機(jī)界的大神們引入了線(xiàn)程的概念,這些線(xiàn)程可以共享進(jìn)程級(jí)的代碼與數(shù)據(jù),這種共享一般比進(jìn)程間的共享更加高效。
?
虛擬存儲(chǔ)器
?
? ? ? ? ? ?虛擬存儲(chǔ)器是一種抽象描述,從物理上講,它包含了I/O設(shè)備以及主存。在邏輯上講,虛擬存儲(chǔ)器被描述為虛擬地址空間。下圖為進(jìn)程的虛擬地址空間表示。
?
? ? ? ? ? ?這里的地址自下向上依次增大,可以看出,圖中標(biāo)注了起始地址,分別為0x08048000(32位)以及0x00400000(64位),然后向上分別是只讀代碼和數(shù)據(jù)、讀寫(xiě)數(shù)據(jù)、運(yùn)行時(shí)堆、共享庫(kù)的內(nèi)存映射區(qū)間、用戶(hù)棧以及內(nèi)核虛擬內(nèi)存區(qū)域。
? ? ? ? ? ?看完這個(gè)圖,LZ有一個(gè)疑問(wèn),就是這兩個(gè)32位和64位的起始地址是從何而來(lái),于是小小的簡(jiǎn)單探索了一下。
? ? ? ? ? ?LZ在32位的linux系統(tǒng)上做了個(gè)測(cè)試,我們隨便寫(xiě)一個(gè)C程序,然后使用GCC加上參數(shù)-Wl,--verbose去編譯這個(gè)文件,于是我們便可以在鏈接器腳本里看到這些內(nèi)容。如下圖所示。
? ? ? ? ? ?在里面我們可以看到0x08048000這個(gè)內(nèi)存地址,__executable_start表面看來(lái)的意思是可執(zhí)行的起始位置。具體這個(gè)數(shù)字的來(lái)由LZ沒(méi)有找到,我們可以先存著這個(gè)疑問(wèn),或許在書(shū)中后面的內(nèi)容會(huì)解答這個(gè)疑問(wèn)。(小提示:有些東西一時(shí)搞不明白,不要沉迷于此,會(huì)得不償失)
? ? ? ? ? ?從這個(gè)地址向上則分了大致五個(gè)存儲(chǔ)區(qū)域。
? ? ? ? ? ?程序代碼和數(shù)據(jù):這些內(nèi)容的起始地址就是0x08048000,首先是代碼,然后是一些全局變量。
? ? ? ? ? ?堆:是運(yùn)行時(shí)可以動(dòng)態(tài)擴(kuò)展的一部分內(nèi)存區(qū)域,它可以由malloc和free這樣的標(biāo)準(zhǔn)庫(kù)函數(shù)操作。
? ? ? ? ? ?共享庫(kù):用于存放共享庫(kù)的代碼和數(shù)據(jù)。
? ? ? ? ? ?棧:在用戶(hù)虛擬地址空間的頂部是棧,這部分區(qū)域與函數(shù)的執(zhí)行有密切的關(guān)系。
? ? ? ? ? ?內(nèi)核虛擬存儲(chǔ)區(qū)域:內(nèi)核是操作系統(tǒng)的一部分,就LZ粗淺的理解,內(nèi)核也可以看做是一個(gè)進(jìn)程,它在計(jì)算機(jī)運(yùn)行期間總是在運(yùn)行著,因此這部分內(nèi)存區(qū)域?qū)τ脩?hù)程序是不可見(jiàn)的,通俗的說(shuō)就是不能用。
?
文件
?
? ? ? ? ? 文件是I/O設(shè)備邏輯上的概念,它其實(shí)就是字節(jié)序列,也就是1和0組成的一些信息。因此所有的I/O設(shè)備,包括磁盤(pán)、鍵盤(pán)、鼠標(biāo)、顯示器都可以看成是文件。
?
網(wǎng)絡(luò)
?
? ? ? ? ? 前面說(shuō)了,所有的I/O設(shè)備其實(shí)都是文件這一抽象概念的具體表現(xiàn),那么網(wǎng)絡(luò)其實(shí)也是文件的一種,因?yàn)檎f(shuō)到底,它也可以被看做是一系列的字節(jié)序列。網(wǎng)絡(luò)適配器的作用就是給計(jì)算機(jī)輸入一堆被傳送過(guò)來(lái)的字節(jié)序列,這里面可能包括圖片、文字,甚至可能是代碼等等。
?
文章小結(jié)
?
? ? ? ? ? 本文主要介紹存儲(chǔ)設(shè)備的層次以及操作系統(tǒng)中的三個(gè)抽象概念,下一章是并發(fā)與并行的簡(jiǎn)單介紹,也是計(jì)算機(jī)簡(jiǎn)介的最后一章。
版權(quán)聲明
?
作者:zuoxiaolong(左瀟龍)
出處:博客園左瀟龍的技術(shù)博客--http://www.cnblogs.com/zuoxiaolong
您的支持是對(duì)博主最大的鼓勵(lì),感謝您的認(rèn)真閱讀。
本文版權(quán)歸作者所有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
轉(zhuǎn)載于:https://www.cnblogs.com/hthuang/articles/4626418.html
總結(jié)
以上是生活随笔為你收集整理的深入理解计算机系统(1.3)---金字塔形的存储设备、操作系统的抽象概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: struts 文件下载
- 下一篇: (原创)用讯飞语音实现人机交互的功能