目錄
一:馮諾依曼體系結構
?1.五大組件
2.存儲器存在的意義
3.幾個問題
二:操作系統
接下來的日子會順順利利,萬事勝意,生活明朗-----------林辭憂
一:馮諾依曼體系結構
我們當代的計算機的基本構成都是由馮諾依曼體系結構來進行構成計算機的基本單元,所以計算機就是由一個個的硬件組成的?
?1.五大組件
1.存儲器:具體指的是內存
2.輸入設備:指鼠標,鍵盤,攝像頭,話筒,磁盤,網卡等
3.輸出設備:指顯示器,播放器硬件,磁盤,網卡等
4.運算器:對我們的數據進行計算任務(算術運算,邏輯運算)
5.控制器:對我們的計算硬件流程進行一定的控制
輸入設備和輸出設備共同組成外部設備(外設),控制器和運算器組成cpu
對于五大組件,每個都是一個獨立的個體,因此對于計算機來說每個硬件單元都必須用線聯系起來
?對于這里的線就是總線,分為系統總線(cpu與內存之間相互交互的線)和IO總線(外設與內存之間相互交互的線)
2.存儲器存在的意義
1.對于在馮諾依曼體系結構中的數據的流向
數據先從輸入設備加載到存儲器中,,然后cpu從存儲器中讀取數據,經過cpu計算過后,再將數據再次寫入存儲器中,最后將數據從存儲器刷新到輸出設備
2.對于上述的過程,可能初識覺得過于復雜了,想直接將數據從輸入設備交到cpu中去執行計算,再將計算后的數據直接交到輸出設備,我們想如果直接這樣的話,豈不會簡單很多,省去存儲器這一中間介質的轉換,但事實上不會這樣做的,這是因為外設與cpu的存儲速度差距非常大,下面是計算機的存儲體系結構
這張圖可以看出存儲是分級的,而對于cpu的存儲速度是納秒級別的,內存是微秒級別的,外設則是毫秒級別的
所以根據木桶原理,如果cpu直接與外設相連的話,計算機整體的存儲效率就會以外設為主,這勢必會使計算機整體的存儲速度和效率變得低下
所以引入存儲器去適配cpu與外設之間的存儲速度差,這是計算機整體的存儲效率就以存儲器為主,比上述過程存儲速度和效率會提升很多
但這時我們也會想,有存儲器的參與,但相互之間的存儲速度和效率差仍然很大,并且是串聯的形式,似乎并沒有快多少,但其實不然,操作系統會將所有的數據先緩存到對應的內存中,等cpu執行完上一輪計算后,會直接從內存中讀取數據進行計算,在cpu讀取計算數據的過程中,操作系統會再次預先加載其他的數據,這樣計算機整體的存儲速度和效率是有很大提升的
3.幾個問題
1.對于一個程序在執行執行之前,必須要先加載到內存當中運行,這是為什么?
這是因為在程序中會有大量的數據要在cpu中進行計算,而cpu只會從內存中讀取數據,所以程序必須先加載到內存當中,這也是馮諾依曼體系結構所規定的
2.對于前面寫的進度條,默認顯示的數據,是可能會緩存起來的,那么在哪緩存呢?
當沒有強制刷新或者'\n'時,這是數據就會緩存到存儲器當中,所以存儲器就是一個硬件級別的緩存空間,并且在馮諾依曼體系結構中是處于核心地位的
對于現實中的每一臺設備都可以看作是一個馮諾依曼體系結構
二:操作系統
1.操作系統是一款做管理的軟件,管理的是相應的硬件和軟件
2.概念:任何計算機系統都包含一個基本的程序集合,稱為操作系統,廣義的操作系統是包括內核(進程管理,內存管理,文件管理,驅動管理)和其他程序(例如函數庫,shell外殼等),俠義上的操作系統主要指內核
3.設計操作系統的目的
操作系統會幫助用戶管理好下面的軟硬件資源,并且為用戶提供一個良好(安全,穩定,高效)的運行環境,總結起來就是操作系統通過管理好底層的軟硬件資源(手段),為用戶提供一個良好的運行環境(目的)
4.計算機的層狀體系結構
對于底層硬件是以馮諾依曼體系結構為基礎,把 硬件之間互相用總線連接起來的
所有的硬件要被軟件訪問的話,就得有它所匹配的驅動程序的參與,如果沒有的話,則訪問不了
用戶是不能直接訪問硬件的,而是要經過操作系統來完成訪問硬件的操作
在操作系統里面會有各種的數據,可是操作系統不相信任何用戶,所以用戶是不能直接訪問操作系統內部的數據的
于是操作系統為了保證自己的數據安全,也為了保證給用戶提供服務,操作系統是以接口的方式給用戶提供調用的入口,來獲取操作系統內部的數據。 對于這里的接口是用c來實現的,由操作系統來提供的自己內部的函數調用
所以所有訪問操作系統的行為,都只能通過系統調用來完成
5.關于操作系統是如何做管理的
首先從生活來說管理者和被管理者是不需要見面的,就像員工與老板是不需要見面的,那么在不見面的情況下,管理者是如何做管理的呢?? 其實管理者只要得到被管理者的管理信息,就可以在未來進行管理決策---------------管理的本質就是通過對數據的管理,達到對人的管理
那么既然管理者與被管理者是不見面的,那么管理者的管理信息是怎么得到的呢------通過執行者
比如在公司當中員工人數是龐大的,當要管理員工就要對員工的數據進行統計整理,一般的會整理為excel表格,在表格當中填入員工的相關數據(如姓名,年齡,入職時間,工資卡賬號,所屬部門,工號等),當要查詢某個員工的數據時,就得采用一個個遍歷的方式來查找
但這樣的話對于管理者去管理查詢數據的話,仍是很大的工作量,因此可以采用c語言結構的方式,將相關數據用結構體struct描述起來,將每個員工定義為一個struct結構體對象并用自己的數據進行初始化,但每個員工都是一個獨立的結構體對象,因此每個結構體對象當中應該還包括struct people* next的結構體指針,將每個結構體對象連接起來,形成一張員工的單鏈表,這就叫建模組織的過程? ? ? ?------------這種方法就叫做先描述再組織
因此對于管理者來說,只要管理好這張員工鏈表就可以,將對于員工的管理工作轉換為對這張單鏈表的增刪改查
所以在操作系統中,管理任何對象的操作都可以轉化為對某種數據結構的增刪改查
?對于在計算機層狀體系當中,操作系統和硬件并不直接見面,只需要操作系統能獲取到硬件的狀態數據就能夠進行管理的操作,但操作系統系統是不能直接獲取硬件的數據的,而是通過由驅動程序來獲取硬件的數據,再從驅動程序交到操作系統當中
詳細的來說就是,操作系統要管理不同的設備,包括內存,進程,文件和驅動,如操作系統要對硬件做管理,其實在操作系統內部就需要描述這一個個的硬件設備,對于每個硬件設備都使用同樣的struct結構體來描述,不同的設備填上不同的屬性值,然后給這個設備構建出相應的結構體對象,把每個構建的結構體對象用一種數據結構管理起來,當操作系統要檢測某個設備的狀態,做出相應的操作,就轉換為在操作系統內部對特定設備所維護的數據結構的增刪改查
5.計算機管理硬件
? 先用struct結構體描述起來,再用鏈表或者其他高效的數據結構組織起來
6.系統調用和庫函數
在開發角度。操作系統對外會表現為一個整體,但是會暴露自己的部分接口,供上層開發使用,這部分由操作系統提供的接口,就叫做系統調用
系統調用在使用上,功能比較基礎,對用戶的要求也比較高,所以有些開發者對部分系統調用進行了部分的封裝,從而形成了庫,有了庫,就很有利于更上層用戶或開發者進行開發
所以庫函數和系統調用屬于上下層的調用和被調用的關系
7.總結來說,在操作系統內部對被管理對象進行建模,形成對應的某種數據結構,對對象的管理就轉化為對某種數據結構的增刪改查