文章目錄
- 前言
- 馮諾依曼體系結構(硬件)
- 操作系統(軟件)
- 總結
前言
馮諾依曼體系結構(硬件)
上圖就是馮諾依曼體系結構圖,主要包括輸入設備,輸出設備,存儲器,運算器,控制器。
每一個模塊都是獨立的。
我們分別詳細介紹一下這幾個模塊
CPU:運算器和控制器組成。
存儲器:本質就是內存。
輸入設備:主要用于輸入,包括鍵盤,鼠標等等
輸出設備:主要用于輸出,包括顯示器,話筒,聲卡等等。
對于這些硬件設備來說,有的只做輸入,有得只做輸出,有得二者兼顧。
這幾個模塊是通過一個叫做總線的東西連接起來的
我們連接起來有什么用呢??
主要是為了數據的流動,也就是數據之間的來回拷貝。
數據之間拷貝的效率就成為計算機效率的一大指標
內存
我們詳細看一下內存。
如果我們沒有內存是否可以呢??
輸入輸出設備直接與CPU進行聯系,在早期的時候就是這么做的。
我們都知道CPU運行是非常快的,但是輸入輸出輸出設備是比較慢的,根據木桶效用。
這相關的速度就是按照輸入輸出的速度來的。
我們介紹一下CPU的緩存。
距離CPU越近,單體容量越小,造價越高,效率越高。
距離CPU越遠,單體容量越大,造價越低,效率越低。
如果我們把電腦上配件都設計成寄存器的,那不就非常快了!!!
但是,這樣造價確實十分貴的。
如果我們在二者之間加入一個內存呢??
輸入輸出設備與內存相連,內存與CPU相連。
內存的速度介于二者之間,使二者盡量達到一種平衡。
最終的效率就以內存的效率為主了。
一切設備都只和內存打交道
內存可以把輸入的一些資源加載到內存,進行預先加載。CPU如果要用,就直接從內存讀取就可以。
CPU將讀取的數據放在內存中,進行緩存,最后交給輸出設備。
內存可以看作一個非常大的緩存,介于設備和CPU之間
操作系統(軟件)
我們在打開電腦的時候,首先需要進行加載一段時間,這個加載的軟件就叫做操作系統。
操作系統是一款進行軟硬件資源管理的軟件。
我們首先理解一下管理。
管理的人叫做決策者,被管理的人叫做執行者,
我們通過這張圖片來理解一下相關概念。
我們首先看一下操作系統以及一下部分。
底層硬件就是我們上面介紹的馮諾依曼體系。
每一款硬件都包括對應的驅動程序,驅動程序是控制底層硬件的,我們通過驅動程序就可以知道這個硬件是讀的還是寫的,還有相關狀態信息等等。驅動程序都是需要被安裝到計算機上的,比如我們的鼠標,需要先插入到電腦上,等待幾秒鐘才可以被使用。
電腦上很多驅動程序都已經進行內置了,比如顯示器,鍵盤等等。
相關系統會將驅動程序和底層硬件進行打包,交給操作系統,方便操作系統對硬件進行管理。
我們可以通過一個例子進一步理解一下這三層。
操作系統就是做決策的,學生就是進行執行的人。
我們在學校上學,我們幾乎沒有見過校長,但是校長卻把我的大學生活安排的明明白白的。
校長并不是對你這個人進行管理,而是對相關的數據做管理,比如你是幾年級的,學號是什么,上那些課程等等。
在相關計算機上也是同樣的,操作系統和底層硬件不需要見面,操作系統只需要知道相關硬件的相關數據就可以對硬件進行管理。
驅動程序就相當于輔導員,輔導員的任務就是保證校長的任務順利的執行。
但是學校有很多學生,就相當于計算機有很多硬件,校長如何快速,高效的管理好這些學生呢???
每個學生都有基本的屬性信息,建立一個結構體,把相關的數據填充上,用鏈表進行連接,我們之后就方便對這些學生進行管理了。在新增一些關于鏈表增刪查改的操作,我們對學生的管理就變成了對鏈表的增刪查改。
對于相關的硬件,也要有一個結構體,里面存放著這個硬件的信息等等,還包括一個指向下一個硬件的指針,方便操作系統就行管理。
我們把上面的過程稱為先描述,在組織
我們這種原理放到語言層面也是適用的,比如c++.
c++是面向對象的語言,每一個對象我們就要先進行描述它,再通過相關的STL容器進行管理。
先描述:struct結構體
在組織:相關的數據結構
我們再來看一下操作系統及以上
我們為什么要有操作系統呢??
操作系統要對軟硬件資源做管理,這樣就是為了向上提供良好的運行環境。
這個良好如何理解呢??高效,安全,穩定。
我們先看一下系統調用接口,我們為什么會存在這個呢??用戶為什么不能對操作系統的數據直接進行訪問呢??
我們出于安全的角度,不能讓用戶直接對操作系統數據進行訪問,這很不安全。這就像在銀行取錢,要取多少錢直接去金庫拿就行,誰知道這個人會不會多拿呢!!!這個系統調用接口就相當于銀行的柜臺,要取錢,通過銀行柜臺,再通過相關人員進行取錢。
系統調用接口是操作系統提供的,如何設計也是有操作系統進行設置的。這個本質就是相關的函數。
用戶操作接口
系統調用接口是不方便普通人進行使用的,所以為了方便用戶。把系統調用接口進行再一次封裝,方便使用,這也就是相關的庫。這就相當于老年人去銀行辦業務,用戶操作接口就相當于大堂經理,專門為這些人服務。我們可以認為每個人都是這個老年人,都不太熟悉流程。
我們也不能用戶直接繞過操作系統去訪問硬件資源,這樣操作系統的管理工作就會很難受。
我們使用這個用戶操作接口也可以屏蔽庫函數底層差異。
只要涉及相關硬件的使用,必須經過系統調用,比如scanf,printf。
我們使用printf在linux和wins等等各種平臺下都可以正常使用,這是因為在庫層面就屏蔽了底層差異,這也就是我們常說的語言的跨平臺性,可移植性。
總結
以上就是今天要講的內容,本文僅僅詳細介紹了馮諾依曼體系結構以及操作系統相關的知識。希望對大家的學習有所幫助,僅供參考 如有錯誤請大佬指點我會盡快去改正 歡迎大家來評論~~ 😘 😘 😘