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