?????作者: @情話0.0
??專欄:《Linux從入門到放棄》
??個(gè)人簡介:一名雙非編程菜鳥,在這里分享自己的編程學(xué)習(xí)筆記,歡迎大家的指正與點(diǎn)贊,謝謝!
前言
??在學(xué)習(xí)linux的過程中,有一個(gè)特別重要的知識點(diǎn)就是關(guān)于進(jìn)程的學(xué)習(xí),那么在學(xué)習(xí)進(jìn)程之前,首先對硬件做一些了解,然后再學(xué)習(xí)軟件,在軟硬件都學(xué)完之后再取去了解進(jìn)程的概念。
一、馮諾依曼體系結(jié)構(gòu)
??我們常見的計(jì)算機(jī),如筆記本;或者我們不常見的計(jì)算機(jī),如服務(wù)器,大部分都遵守馮諾依曼體系。
1.1 馮諾依曼體系組成部分
- 輸入設(shè)備:計(jì)算機(jī)是對數(shù)據(jù)做處理的,那么前提條件就是要先將數(shù)據(jù)給到計(jì)算機(jī),就要通過輸入設(shè)備來完成這個(gè)操作,而輸入設(shè)備一般指的是鍵盤、鼠標(biāo)、話筒、攝像頭、網(wǎng)卡、磁盤等。
- 輸出設(shè)備:計(jì)算機(jī)本質(zhì)是給人提供服務(wù)的,在將數(shù)據(jù)計(jì)算完畢之后要將結(jié)果呈現(xiàn)給用戶,這就需要通過輸出設(shè)備來呈現(xiàn)給用戶,輸出設(shè)備一般指的是顯示器、磁盤、網(wǎng)卡、聲卡、音響等。
輸入設(shè)備和輸出設(shè)備統(tǒng)稱為外圍設(shè)備,簡稱外設(shè),它們的數(shù)據(jù)處理速度相對于內(nèi)存來說是慢一點(diǎn)的,而CPU是整個(gè)結(jié)構(gòu)中速度最快的。
- 存儲器:也成為內(nèi)存,輸入設(shè)備先將數(shù)據(jù)給到內(nèi)存,然后CPU再與內(nèi)存溝通拿數(shù)據(jù)。
- CPU(中央處理器):計(jì)算機(jī)中最核心的功能塊,完成數(shù)據(jù)的處理工作。含運(yùn)算器和寄存器等。
1.2 若內(nèi)存不存在
??我們都知道,計(jì)算機(jī)是從輸入設(shè)備處采集數(shù)據(jù),在CPU處完成處理工作,然后再將處理結(jié)果給到輸出設(shè)備,那么我們不要這個(gè)內(nèi)存可以不,當(dāng)然可以。但是,外設(shè)的數(shù)據(jù)處理速度是特別慢的,而CPU的處理速度又特別的快,這就可以提到 “木桶原理” ,表達(dá)的意思就是這個(gè)桶能乘多少水不取決于最長的木板長度,而是最短的木板長度。也就表明了整個(gè)計(jì)算機(jī)的處理效率就以外設(shè)的處理效率為主的。
??所以,這就需要內(nèi)存來起到一個(gè)中間過渡的作用,緩解 “木桶原理” 帶來的效率下降的問題。外設(shè),內(nèi)存,CPU它們?nèi)齻€(gè)之間的數(shù)據(jù)處理速度是不一致的,有一定的差距。但是內(nèi)存有一個(gè)特點(diǎn):可以臨時(shí)存數(shù)據(jù),并且速度還不慢,那么就可以在CPU處理A任務(wù)的時(shí)候,將外設(shè)中關(guān)于B任務(wù)的數(shù)據(jù)搬到內(nèi)存當(dāng)中,當(dāng)A任務(wù)被處理完畢之后就可以直接從內(nèi)存當(dāng)中拿到B任務(wù)進(jìn)行處理。因?yàn)橛辛藘?nèi)存的存在,可以對數(shù)據(jù)進(jìn)行預(yù)加載,CPU以后在進(jìn)行數(shù)據(jù)計(jì)算的時(shí)候不需要訪問外設(shè)了,直接從內(nèi)存中拿數(shù)據(jù)即可。
結(jié)論1: 在數(shù)據(jù)層面,一般CPU不和外設(shè)直接溝通而是直接只和內(nèi)存打交道。
1.3 硬件層面,單機(jī)與跨主機(jī)之間的數(shù)據(jù)流向
1.3.1 單機(jī)
??比如說:我們打開視頻APP要看電視劇,首先要將這個(gè)客戶端軟件加載到內(nèi)存中,然后這個(gè)軟件就可以被CPU執(zhí)行,然后我們就可以看到這個(gè)軟件的客戶端界面,當(dāng)點(diǎn)擊播放的時(shí)候它就從網(wǎng)絡(luò)中將關(guān)于這個(gè)視頻資源的數(shù)據(jù)先拿到內(nèi)存中,再進(jìn)行數(shù)據(jù)計(jì)算,比如該視頻是收費(fèi)的,在免費(fèi)播放了五分鐘之后就強(qiáng)制關(guān)閉了,或者在10分鐘的時(shí)候加一段30s的廣告等等。最終將計(jì)算結(jié)果給到內(nèi)存然后再給到輸出設(shè)備(顯示器)。
1.3.2 跨主機(jī)
你和你的朋友微信聊天,你發(fā)送一個(gè)干啥著呢?那么整個(gè)信息是如何在體系結(jié)構(gòu)中流動(dòng)的?(不考慮網(wǎng)絡(luò)的情況,即發(fā)出去就可以收到)
- 你通過鍵盤輸入“干啥著呢?”到內(nèi)存中,然后數(shù)據(jù)要做計(jì)算(因?yàn)閿?shù)據(jù)在發(fā)送時(shí)可不止一條或者你的數(shù)據(jù)很私密,所以要進(jìn)行加密),然后將計(jì)算之后的結(jié)果寫回到內(nèi)存中,然后再將該數(shù)據(jù)顯示到輸出設(shè)備(將數(shù)據(jù)刷新到本地的顯示器中,同時(shí)將該數(shù)據(jù)發(fā)送到網(wǎng)卡中,對應(yīng)你朋友的輸入設(shè)備)
- 同樣先從網(wǎng)卡中獲取到數(shù)據(jù)交到內(nèi)存中,在CPU拿到數(shù)據(jù)之后進(jìn)行解密操作,把數(shù)據(jù)又給到內(nèi)存,然后再將數(shù)據(jù)刷新到輸出設(shè)備中(你朋友的顯示器)
結(jié)論2: 外設(shè)只和內(nèi)存打交道(數(shù)據(jù)層面)
二、操作系統(tǒng)
2.1 概念
??操作系統(tǒng)是一款進(jìn)行軟硬件資源管理的軟件。
2.2 如何理解操作系統(tǒng)對硬件做管理
??談到管理,舉個(gè)簡單例子:比如在學(xué)校這樣的場景下,有三種角色:校長,導(dǎo)員,學(xué)生,很明顯學(xué)生是充當(dāng)被管理者的角色,而管理者是誰呢?校長還是導(dǎo)員呢?按道理來說作為一個(gè)大學(xué)生來說,四年下來基本上見不到校長的面,那么導(dǎo)員應(yīng)該是管理者,對不對呢?
??在日常生活中,我們每一個(gè)人既是決策者也是執(zhí)行者,比如:我今天中午要吃什么飯(決策),然后就去吃了(執(zhí)行)。而作為管理者,大部分工作是擁有決策的能力,而非執(zhí)行。
??那么很明顯校長是決策者,關(guān)于學(xué)校的一些指令都是校長下發(fā)的,而導(dǎo)員只是按照校長的指令行事。
職業(yè) | 職能 |
---|---|
校長 | 決策 |
導(dǎo)員 | 決策并執(zhí)行 |
學(xué)生 | 參與執(zhí)行 |
2.3 決策者和執(zhí)行者的關(guān)系
注意:以下所有的場景都是在舉例。
??比如說在學(xué)校里面,一個(gè)學(xué)生基本上很難見到校長的面,但是為什么校長能把學(xué)生管理的如此之好,不管是每天在那間教室上課,在哪個(gè)宿舍睡覺,亦或是哪些學(xué)生掛科了等等。由此可以間接說明:作為管理者和被管理者,其實(shí)是不需要直接溝通的,當(dāng)然溝通也是沒什么問題的。
??管理者和被管理者沒有直接溝通,那么它們之間是如何管理的呢?
??在學(xué)校里面校長和學(xué)生不直接溝通,但是校長他能夠知道你名字是什么,電話號碼是什么,學(xué)號是多少,專業(yè)是哪個(gè),科目已經(jīng)修了多少等等,亦或是在公司里你為這個(gè)公司這一年做了多少貢獻(xiàn),遲到或早退了多少次,加班了多長時(shí)間等等。
??在上大學(xué)之前,你家長每天都照顧著你的一切,你早都不耐煩了,于是上了大學(xué)之后你感覺自己終于掙脫了束縛,但是假設(shè)說你家長可以知道你每天干了什么,他們就可以打電話問候你的一切,關(guān)心亦或是指責(zé)。
??其實(shí)根據(jù)上面這幾個(gè)例子就可以說明:管理的本質(zhì)——管理者對被管理者的數(shù)據(jù)進(jìn)行管理。
??那么管理者是如何拿到被管理者的數(shù)據(jù)呢?根據(jù)學(xué)校的例子很清晰,通過導(dǎo)員(中間人)。
??比如說,校長安排每個(gè)導(dǎo)員把自己所管理的每個(gè)學(xué)生的信息都統(tǒng)計(jì)起來發(fā)給他,因?yàn)樾iL要對所有人做管理,如果說要是將所有的信息都放在表格里,那就太復(fù)雜了,所以校長就按照結(jié)構(gòu)體的形式(下例)將所有學(xué)生的信息都統(tǒng)計(jì)起來,再按照鏈表的方式將每個(gè)結(jié)構(gòu)體對象鏈接起來。
??假設(shè)某個(gè)學(xué)生成績太差要將其退學(xué),難道只讓他離校就可以了嗎?當(dāng)然不行,還得在這樣的學(xué)生鏈表中將這個(gè)學(xué)生對象剔除掉;或者學(xué)校又轉(zhuǎn)來一個(gè)學(xué)生,同樣也是在鏈表中將該學(xué)生的信息形成一個(gè)結(jié)構(gòu)體對象并添在其中,總之來說,校長要對學(xué)生做管理,都是在該鏈表上操作。
struct stu
{
姓名,
年齡,
專業(yè),
成績,
電話,
struct stu* next;
]
總結(jié):上面舉的所有例子都是在對管理的動(dòng)作進(jìn)行建模(將具體的一些場景轉(zhuǎn)化為計(jì)算機(jī)語言)。
2.4 管理的本質(zhì)
??先描述,再組織
??那么在計(jì)算機(jī)中,校園中的三種角色對應(yīng)的是什么呢?
??校長——操作系統(tǒng);導(dǎo)員——硬件驅(qū)動(dòng);學(xué)生——硬件(軟件)
??硬件驅(qū)動(dòng)主要負(fù)責(zé)就是與硬件的交流溝通,拿到硬件的數(shù)據(jù)后交給操作系統(tǒng)做決策,然后在將決策后的結(jié)果交給驅(qū)動(dòng)來執(zhí)行。操作系統(tǒng)來做決策,驅(qū)動(dòng)來執(zhí)行。每一個(gè)硬件(鍵盤、鼠標(biāo)、磁盤、網(wǎng)卡)基本對應(yīng)一個(gè)硬件驅(qū)動(dòng)。
2.5 操作系統(tǒng)為什么對軟硬件做管理?
??操作系統(tǒng)對下通過管理好軟硬件資源(手段),對上給用戶提供良好(安全、高效、穩(wěn)定、功能豐富等)的執(zhí)行環(huán)境(目的)。
??操作系統(tǒng)目的是為了給用戶提供良好的服務(wù),但是操作系統(tǒng)信任用戶嗎?
??就拿銀行的例子來講,它有著一些底層的硬件設(shè)施:電腦、服務(wù)器;桌椅板凳;金庫;員工宿舍。再往上看分別有不同的部門角色管理下面的設(shè)施。同時(shí)在銀行里有著不同的員工給用戶提供不同的服務(wù),當(dāng)然也有行長這樣的角色。作為一個(gè)行長,他肯定要將整個(gè)銀行系統(tǒng)合理的管理起來, 他不僅要把這些員工管理好(根據(jù)表現(xiàn)獎(jiǎng)懲),而且也要管理好底層硬件設(shè)施,但是行長不可能親自去管理那些硬件,而是就通過驅(qū)動(dòng)這樣的角色去管理。
??因此,這也就說明了行長其實(shí)就是擔(dān)當(dāng)著操作系統(tǒng)這樣的角色,即管理好下層硬件設(shè)施,也管理好每一位員工。行長和員工都是人,人可以管理硬件設(shè)施,也可以管理人。而操作系統(tǒng)是軟件,它既管理軟件,同時(shí)也管理硬件。
??行長對下將員工和硬件管理的如此之好,目的就是為了對上給用戶提供良好的服務(wù)。但是,銀行它相信你嗎?
??很明顯,你是信任銀行的,要不然你不會(huì)去銀行辦業(yè)務(wù),但是銀行是不信任你的,在現(xiàn)實(shí)生活中你要存一萬元,銀行柜員不可能給你說你怎么怎么走到了金庫把錢放到那里,然后出來填個(gè)表即可。對應(yīng)的是操作系統(tǒng)給我們提供良好的服務(wù),并不代表這操作系統(tǒng)會(huì)相信我們,反而操作系統(tǒng)不相信任何人,害怕群眾中有壞人對自己造成傷害。就像是在銀行里給你提供服務(wù),但是為了保證自己(銀行)的安全,它給用戶提供窗口式的服務(wù)。
??這也就說明了在計(jì)算機(jī)硬件體系結(jié)構(gòu)中,用戶是不可能直接進(jìn)到操作系統(tǒng)里面對操作系統(tǒng)里面的內(nèi)容數(shù)據(jù)進(jìn)行訪問和修改呢?當(dāng)然不是。操作系統(tǒng)為了保護(hù)自己和給用戶提供服務(wù),于是將自己的特定功能以接口的方式給用戶提供出來,而這些接口在操作系統(tǒng)層面被稱為系統(tǒng)調(diào)用(操作系統(tǒng)設(shè)計(jì)的C函數(shù))。
??但是有時(shí)候操作系統(tǒng)調(diào)用接口使用成本特別高,因?yàn)橐恍┎僮髂闶堑枚僮飨到y(tǒng)的。就一些大佬基于這些接口做了二次軟件開發(fā),于是就有了圖形化界面、shell和工具集、部分指令。
文章來源:http://www.zghlxwxcb.cn/news/detail-512890.html
總結(jié)
??以上就是在學(xué)習(xí)進(jìn)程之前該了解的一些知識,主要明白操作系統(tǒng)管理的本質(zhì),而這個(gè)本質(zhì)也是始終貫穿于Linux的整個(gè)學(xué)習(xí)。文章來源地址http://www.zghlxwxcb.cn/news/detail-512890.html
到了這里,關(guān)于【Linux從入門到放棄】馮諾依曼體系機(jī)構(gòu)、操作系統(tǒng)及管理的本質(zhì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!