??專欄導(dǎo)讀
??作者簡介:花想云 ,在讀本科生一枚,C/C++領(lǐng)域新星創(chuàng)作者,新星計劃導(dǎo)師,阿里云專家博主,CSDN內(nèi)容合伙人…致力于 C/C++、Linux 學(xué)習(xí)。
??專欄簡介:本文收錄于 Linux從入門到精通,本專欄主要內(nèi)容為本專欄主要內(nèi)容為Linux的系統(tǒng)性學(xué)習(xí),專為小白打造的文章專欄。
??相關(guān)專欄推薦:C語言初階系列、C語言進(jìn)階系列 、C++系列、數(shù)據(jù)結(jié)構(gòu)與算法。
??文章導(dǎo)讀
從本章開始,我們將進(jìn)入Linux進(jìn)程
的學(xué)習(xí)。但是在進(jìn)程學(xué)習(xí)之前,我們必須得對計算機(jī)的底層知識以及操作系統(tǒng)做一些了解,方便我們之后更好的學(xué)習(xí)。本章我們將認(rèn)識什么是馮諾依曼體系結(jié)構(gòu)
與操作系統(tǒng)
相關(guān)概念。
??計算機(jī)之父——馮·諾依曼
計算機(jī)的世界有兩尊大神,一位是馮·諾依曼
,另一位是阿蘭·圖靈
。作為計算機(jī)的受用者,我想我們有必要認(rèn)識一下這兩位前輩。
??馮·諾依曼
-
約翰·馮·諾依曼
(John von Neumann)是一位著名的數(shù)學(xué)家、計算機(jī)科學(xué)家、物理學(xué)家,是20世紀(jì)最重要的數(shù)學(xué)家之一。他還是是現(xiàn)代計算機(jī)、博弈論、核武器和生化武器等領(lǐng)域內(nèi)的科學(xué)全才之一,被后人稱為“現(xiàn)代計算機(jī)之父
”、“博弈論之父
”。馮諾依曼體系結(jié)構(gòu)便是它的經(jīng)典理論,從我們經(jīng)常所能見到的計算機(jī)到當(dāng)前最先進(jìn)的計算機(jī)都采用的是馮諾依曼體系結(jié)構(gòu)
。所以馮諾依曼是當(dāng)之無愧的數(shù)字計算機(jī)之父。
??阿蘭·圖靈
-
艾倫·麥席森·圖靈
(Alan Mathison Turing),英國數(shù)學(xué)家、邏輯學(xué)家,被稱為計算機(jī)科學(xué)之父
,人工智能之父。圖靈對于人工智能的發(fā)展有諸多貢獻(xiàn),提出了一種用于判定機(jī)器是否具有智能的試驗方法,即著名的圖靈試驗
,每年都有試驗的比賽。此外,圖靈提出的著名的圖靈機(jī)模型為現(xiàn)代計算機(jī)的邏輯工作方式奠定了基礎(chǔ)。
??馮諾依曼體系結(jié)構(gòu)
我想你一定在某時某刻某地見過這樣一幅圖片:
要想理解這幅圖片的含義,首先我們的清楚幾個概念:
-
磁盤并不等同于內(nèi)存
; -
輸入設(shè)備于輸出設(shè)備都叫作外設(shè)
; -
在數(shù)據(jù)層面,CPU不直接與外設(shè)溝通,而至于內(nèi)存打交道
; -
外設(shè)也只會與內(nèi)存進(jìn)行溝通
;
接下來我們談?wù)劄槭裁础?/p>
??木桶效應(yīng)
什么是木桶效應(yīng)
?一桶水最多能裝多少水,并不是看竹板中最長的那個,而是取決于最短的那塊板
。
同理,計算機(jī)一直追求的是極致的計算速度。我們知道CPU
的計算速度是非??斓?,但是計算機(jī)的速度并不能由CPU
決定。
CPU
的計算速度飛快,但是如果數(shù)據(jù)的供應(yīng)跟不上,那么CPU
只能說是徒有一身本領(lǐng)卻無處施展
。我們要知道,外設(shè)
(以磁盤為例)的訪問速度是非常慢的,因而,盡管磁盤的容量非常大,例如幾G或幾百G的硬盤也就幾十塊錢。如果CPU
直接從磁盤讀取數(shù)據(jù),那么它們整體的速度就會很慢。
我們可能聽說過一個概念——一個程序在運行前都會先加載到內(nèi)存中
,為什么呢?內(nèi)存
相對于磁盤來說讀取速度非常的快,所以有了內(nèi)存
的存在,我們可以將要讀與的程序預(yù)加載
到內(nèi)存中,因為內(nèi)存的讀取速度非常快,所以CPU
直接從內(nèi)存中拿數(shù)據(jù)就好了。
因為內(nèi)存的讀取速度很快,所以價格較為昂貴。盡管它能存儲的數(shù)據(jù)很少,但卻非常的重要。
??總結(jié)——
- 在數(shù)據(jù)層面,CPU不直接與外設(shè)溝通,而至于內(nèi)存打交道。
??操作系統(tǒng)(Operator System)
??如何理解操作系統(tǒng)
任何計算機(jī)系統(tǒng)都包含一個基本的程序集合,稱為操作系統(tǒng)(OS)
。 那么什么操作系統(tǒng)是什么?又有什么用呢?
??OS是什么
首先,操作系統(tǒng)是一款軟件
,是一款搞管理
的軟件。管理的對象是所有的軟硬件資源
。
??為什么要管理
上一小節(jié)我們談到了馮諾依曼體系結(jié)構(gòu),它反映的是硬件與硬件之間的交互方式。計算機(jī)包含各種各樣的硬件設(shè)施,它們之間進(jìn)行各種的交互。用戶使用計算機(jī)是要完成某一項任務(wù)的,于是需要對這些硬件做指揮來完成這個任務(wù)。但是,我們用戶不能直接和硬件溝通,因為語種都不同。所以,我們需要某種工具,將這些硬件管理或組織起來進(jìn)行運作從而完成某件事,這個工具就叫做操作系統(tǒng)
。它做管理的目的就是為用戶提供(或用戶所寫的程序)提供一個良好的執(zhí)行環(huán)境
。
??如何做管理
一句話——先描述,再組織
。就像校長管理學(xué)生,先對每個學(xué)生對象都先作描述,在意某種數(shù)據(jù)結(jié)構(gòu)將學(xué)生對象的信息保存起來。例如:
生成一個包含學(xué)生相關(guān)信息的結(jié)構(gòu)體
;
struct student
{
int code; // 學(xué)號
char* name; // 名字
char* sge // 年齡
//...
再將每個學(xué)生所對應(yīng)的結(jié)構(gòu)體作為一個結(jié)點進(jìn)行鏈接,生成鏈表
一樣的數(shù)據(jù)結(jié)構(gòu);
當(dāng)校長
想要開除某個學(xué)生
時,他并不會直接找到學(xué)生本人說“你現(xiàn)在被開除啦,趕緊回家去吧!”,而是刪除了該學(xué)生信息所對應(yīng)的結(jié)點
,然后將通知該學(xué)生的任務(wù)下達(dá)給輔導(dǎo)員
。
輔導(dǎo)員
也不會問為什么,你給我任務(wù),我就執(zhí)行
。于是輔導(dǎo)員便找到學(xué)生并通知他,你被開除了。
操作系統(tǒng)
扮演的角色就如同校長
,它只負(fù)責(zé)作決策
。而決策由誰來執(zhí)行呢?答案是硬件驅(qū)動
,如同輔導(dǎo)員
,所以硬件驅(qū)動的角色是一位決策執(zhí)行者
。而軟硬件資源
就如同學(xué)生,是被管理者
。
??總結(jié)——
計算機(jī)管理硬件
-
先描述
起來,用struct
結(jié)構(gòu)體; -
再組織
起來,用鏈表或其他高效的數(shù)據(jù)結(jié)構(gòu)
;
從用戶到硬件的管理通常是層狀的:
??系統(tǒng)調(diào)用和庫函數(shù)概念
??系統(tǒng)調(diào)用
- 在開發(fā)角度,操作系統(tǒng)對外會表現(xiàn)為一個整體,但是會暴露自己的
部分接口
,供上層開發(fā)使用,這部分由操作系統(tǒng)提供的接口,叫做系統(tǒng)調(diào)用
。
那么我們之前有沒有使用過系統(tǒng)調(diào)用呢?答案是肯定是有的。當(dāng)我們寫下printf("hello world")
這樣的代碼,運行起來之后就會在屏幕上顯示hello world
的字符。其實你以為你寫下這句代碼,計算機(jī)就會在屏幕上打印內(nèi)容是你的功勞,但其實,這是編譯器在底層做了系統(tǒng)調(diào)用,你確實沒有直接使用系統(tǒng)調(diào)用,因為這是編譯器幫你完成的。
??庫函數(shù)
- 系統(tǒng)調(diào)用在使用上,功能比較基礎(chǔ),對用戶的要求相對也比較高,所以,有心的開發(fā)者可以
對部分系統(tǒng)調(diào)用進(jìn)行適度封裝
,從而形成庫
,有了庫
,就很有利于更上層用戶或者開發(fā)者進(jìn)行二次開發(fā)。
我們對庫已經(jīng)不是第一次認(rèn)識了,C語言、C++等語言都有自己的庫。庫就是對具有某些相似功能的函數(shù)作封裝方便用戶直接調(diào)用,從而提高開發(fā)的效率。
本章的內(nèi)容就到這里了,下一章我們就將進(jìn)入進(jìn)程的學(xué)習(xí),本章的內(nèi)容是為下一章的學(xué)習(xí)做鋪墊,當(dāng)我們對底層做了足夠的了解,才能更好的明白上層開發(fā)所做的某些事的意義。
文章來源:http://www.zghlxwxcb.cn/news/detail-422030.html
點擊下方個人名片,可添加博主的個人QQ,交流會更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓文章來源地址http://www.zghlxwxcb.cn/news/detail-422030.html
到了這里,關(guān)于『Linux從入門到精通』第 ? 期 -深入了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng)(Operator System)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!