一、馮諾依曼體系結(jié)構(gòu)
現(xiàn)代計(jì)算機(jī)設(shè)計(jì)大都遵守馮·諾依曼體系結(jié)構(gòu):
截至目前,我們所認(rèn)識的計(jì)算機(jī),都是由一個個的硬件組件組成
-
輸入單元:包括鍵盤, 鼠標(biāo),掃描儀, 磁盤,網(wǎng)卡等
-
存儲器:內(nèi)存(提高數(shù)據(jù)讀寫速度,降低硬件成本)
-
中央處理器(CPU):含有運(yùn)算器(算數(shù)運(yùn)算,邏輯運(yùn)算)和控制器(分析指令并發(fā)出相應(yīng)的控制信號)等
-
輸出單元:顯示器,打印機(jī), 磁盤,網(wǎng)卡等
關(guān)于馮諾依曼,必須強(qiáng)調(diào)幾點(diǎn):
- 不考慮緩存情況,這里的CPU能且只能對內(nèi)存進(jìn)行讀寫,不能直接訪問外設(shè)(輸入或輸出設(shè)備)
- 外設(shè)(輸入或輸出設(shè)備)要輸入或者輸出數(shù)據(jù),也只能寫入內(nèi)存或者從內(nèi)存中讀取。
- 一句話,所有設(shè)備都只能直接和內(nèi)存打交道。
二、操作系統(tǒng)(Operating System)
2.1 基本概念
任何計(jì)算機(jī)系統(tǒng)都包含一個基本的程序集合,稱為操作系統(tǒng)(OS)。廣義上,操作系統(tǒng)包括:
-
內(nèi)核(進(jìn)程管理,內(nèi)存管理,文件管理,驅(qū)動管理)
-
其他程序(例如函數(shù)庫,shell程序等等)
設(shè)計(jì)OS的目的
- 硬件交互,管理所有的軟硬件資源
- 為用戶程序(應(yīng)用程序)提供一個良好的執(zhí)行環(huán)境
操作系統(tǒng)如何管理軟硬件
- 先描述:用struct結(jié)構(gòu)體收錄其所有的屬性。(Linux內(nèi)核是用C語言寫的)
- 再組織:用鏈表或其他高效的數(shù)據(jù)結(jié)構(gòu)將這些結(jié)構(gòu)體組織起來,通過增刪查改算法對軟硬件進(jìn)行管理。
定位
在整個計(jì)算機(jī)軟硬件架構(gòu)中,操作系統(tǒng)的定位是:一款純正的“搞管理”的軟件
2.2 系統(tǒng)調(diào)用及用戶操作接口
系統(tǒng)調(diào)用
- 在開發(fā)角度,操作系統(tǒng)對外會表現(xiàn)為一個整體,但是會暴露自己的部分接口,供上層開發(fā)使用,這部分由操作系統(tǒng)提供的接口,叫做系統(tǒng)調(diào)用(system call)。系統(tǒng)調(diào)用是操作系統(tǒng)向上層提供的用于訪問內(nèi)核特定功能的接口。
- 系統(tǒng)調(diào)用在使用上功能比較基礎(chǔ),對用戶的要求相對也比較高,所以,有心的開發(fā)者可以對部分系統(tǒng)調(diào)用進(jìn)行適度封裝,從而形成庫和shell程序。
- 系統(tǒng)調(diào)用把應(yīng)用程序的請求傳遞給系統(tǒng)內(nèi)核執(zhí)行
- 系統(tǒng)調(diào)用的運(yùn)行過程是在內(nèi)核態(tài)完成的
- 系統(tǒng)調(diào)用屏蔽了設(shè)備的訪問細(xì)節(jié)
- 系統(tǒng)調(diào)用保護(hù)了一些只能在內(nèi)核執(zhí)行的操作指令
提示:Linux內(nèi)核是使用C語言寫的,system call實(shí)際上就是用C語言寫的函數(shù)。
用戶調(diào)用接口
- 為了方便基本操作,將部分系統(tǒng)調(diào)用封裝成shell程序或圖形用戶界面,使用戶通過簡單的指令或動作就可以對計(jì)算機(jī)的軟硬件進(jìn)行操作。
- 為了方便編程開發(fā),對部分系統(tǒng)調(diào)用進(jìn)行適度封裝,從而形成庫,有了庫,就很有利于更上層用戶或者開發(fā)者進(jìn)行二次開發(fā)。
2.3 shell——命令行解釋器
外殼程序
- Linux嚴(yán)格意義上說的是一個操作系統(tǒng),我們稱之為“核心(kernel)“ ,但我們一般用戶,不能直接使用kernel。而是通過kernel的“外殼”程序,也就是所謂的shell,來與kernel溝通。
- Windows系統(tǒng)也同樣由 內(nèi)核 + 外殼程序(Windows GUI) 構(gòu)成。對比windows GUI,我們操作windows 不是直接操作windows內(nèi)核,而是通過圖形接口(GUI),進(jìn)行移動鼠標(biāo)點(diǎn)擊等動作,從而完成我們的操作(比如進(jìn)入D盤的操作,我們通常是雙擊D盤盤符.或者運(yùn)行起來一個應(yīng)用程序)。
- shell 對于Linux,有相同的作用,主要是對我們的指令進(jìn)行解析,解析指令給Linux內(nèi)核。內(nèi)核運(yùn)行出結(jié)果再通過shell解析給用戶。
廣義上,Linux系統(tǒng) = Linux內(nèi)核(kernel)+外殼程序(shell)
狹義上,Linux系統(tǒng) = Linux內(nèi)核(kernel)
命令行解釋器:shell
在Linux系統(tǒng)中接受用戶輸入并顯示運(yùn)行結(jié)果的程序是shell。shell即命令行解釋器是Linux操作系統(tǒng)的外殼程序,他的功能如下:文章來源:http://www.zghlxwxcb.cn/news/detail-507673.html
- 傳遞請求,讓內(nèi)核執(zhí)行命令;將內(nèi)核處理的結(jié)果翻譯給使用者。
- 保護(hù)內(nèi)核
- 創(chuàng)建子進(jìn)程來執(zhí)行具有風(fēng)險的事情。
centos系統(tǒng)中的命令行解釋器:bash文章來源地址http://www.zghlxwxcb.cn/news/detail-507673.html
- shell是命令行解釋器的統(tǒng)稱,而bash只是其中之一。
- bash本身在系統(tǒng)中就是一個進(jìn)程。
到了這里,關(guān)于【Linux】操作系統(tǒng)的基本概念 {馮諾依曼體系結(jié)構(gòu),操作系統(tǒng)的基本概念,系統(tǒng)調(diào)用及用戶操作接口,shell程序}的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!