二、全面認識作業系統
總結硬體——深入理解馮諾依曼體系結構
軟體——全面認識作業系統
2023年美籍匈牙利科學家馮·諾依曼提出儲存程式原理,把程式本身當作資料來對待,程式和該程式處理的資料用同樣的方式儲存,並確定了儲存程式計算機的五大組成部分和基本工作方法。
半個多世紀以來,計算機製造技術發生了巨大變化,但馮諾依曼體系結構仍然沿用至今,人們把馮諾依曼稱為「計算機鼻祖」。
1.為什麼輸入/輸出裝置的資料,不直接給cpu,反而給記憶體呢?
[這裡引入儲存分級(儲存金字塔)概念]
是因為,外設和cpu的速度相差太大。
在輸入裝置在接收輸入資料的時候,cpu只能等。如果沒有儲存器,cpu將會長時間處於等待狀態,這樣的話,效率其實是很低的,輸出同理。
所以,如果允許外設把它的資料直接和cpu進行互動,那麼整個計算機的效率將會以外設為主(木桶原理——效率由短板決定),會變得非常慢。
在認識層面上,可以認為記憶體整體是外設和cpu的「快取」(快的裝置給慢的裝置做快取)。那麼整個計算機的效率就以記憶體為主了,變得快起來。
2.為什麼程式執行的時候,要先載入進記憶體?
對資料進行了預載入,把程式快取起來了。cpu讀取這個程式效率就會高了。
3.儲存器是如何起到快取作用的?
只要有了儲存器,就能對資料進行預載入和預寫入,解決了cpu和外設之間的效率相差過大而導致cpu長時間處於等待的問題。
預載入:是把輸入裝置的資料載入到儲存器。
預寫入:把cpu處理完的資料,來不及放到輸出裝置中的,先寫入儲存器。
總結:
站在資料層面上,cpu不和外設打交道,直接和記憶體打交道。
站在外設角度,資料不和cpu打交道,直接和記憶體打交道。
記憶體:是計算機資料的核心。
場景一:給朋友發一條訊息
鍵盤(我)—> 寫入儲存器 —> cpu(封包)—> 寫回儲存器 —> 我的網絡卡(具備從網路中接收資料的能力)—> 朋友的網絡卡 —> 寫入儲存器 —> cpu(解包)—> 寫回儲存器 —> 顯示器(朋友)
場景二:拖拽檔案 資料流走向
把硬碟上的檔案(本身也是資料)放在記憶體當中,經過封包解包,寫回記憶體,再經過網絡卡傳出去,對方網絡卡接收,放入儲存器,再進行封包解包,寫回儲存器,最後放到對方的硬碟。
作業系統是一款做軟硬體管理的軟體。
硬體:馮諾依曼中的所有裝置。
軟體:1.安裝軟體,解除安裝軟體 2.在系統層面,檔案,程序,驅動等都屬於軟體範疇
管理:真正的管理是要有「決策權」。重要的是,區分「決策」和「執行」。
把作業系統比喻成一所封閉的學校:
那麼在學校中,
底層硬體、部分軟體:學生(被管理者)
驅動程式:導員,宿管,教師等
作業系統:校長(管理者,有真正的決策權)
管理者和被管理者從來都沒有見過面,如何進行管理?
可以通過「資訊」管理
驅動層可以幫管理者拿到資料
當「資訊量」特別大的時候,資訊就需要被組織起來。
所以第一步要先把角色描述起來,
struct stu
struct stu s1,s2,…; //可以用鍊錶的形式把這些結點連線起來,那麼我們就將其組織起來了。所以對學生的管理,就變成了對鍊錶結點的管理。
所以作業系統是如何進行底層的硬體管理呢?
在作業系統啟動之時,通過中間的驅動程式,拿到底層的硬體資訊,對其資料進行管理和決策。
也就是,先描述,再組織。
使用作業系統有難度且有風險,所以作業系統一般是被封裝起來的。對外提供少量的介面(函式),要使用好系統呼叫介面,也需要一定的背景知識,且也要有一定的成本。
所以可以把系統呼叫介面封裝成某些庫函式。
庫函式 和 系統呼叫的關係:具有上下級的關係,庫函式(使用者級別的庫)可能呼叫系統呼叫
在一套系統中,必須一定要有管理者進行統籌。
對上,給使用者乙個穩定高效的執行環境;
對下,管理好軟硬體資源,提供穩定的軟硬體環境。
shell英譯漢:外殼。
從技術角度, shell的最簡單定義:命令列直譯器。
主要包含:將使用者的命令翻譯給核心(kernel)處理。在認識了作業系統的管理的概念後,我們知道,管理的本質是為了讓使用者使用成本更小,使用方便。同時,將核心的處理結果翻譯給使用者
兩種常見降低使用成本方案(本質相似,都是為了解決使用者使用計算機的成本,只不過解決的程度不同罷了):
包裹軟體外殼shell,給作業系統封裝一層軟體層,我們可以通過命令列的形式,直接操作計算機——linux
包裹圖形介面gui——windows
什麼是shell外殼:包裹在作業系統外層的軟體層,方便使用者和作業系統進行溝通。
shell作用:
(1)互動:接受使用者的輸入,交給os執行,得到結果反饋給使用者。(為了對使用者遮蔽核心的複雜性)
(2)保護作業系統:如果使用者輸入了一些錯誤或非法的指令,在外層直接就拒絕掉了。(為了保護核心以免使用者誤操作造成損害)
shell和bash:shell是所有外殼程式的統稱,bash是具體的一款shell。
1. 馮諾依曼體系中的儲存器指的是記憶體。
2. 不考慮快取情況,這裡的cpu能且只能對記憶體進行讀寫,不能訪問外設(輸入或輸出裝置)。外設(輸入或輸出裝置)要輸入或者輸出資料,也只能寫入記憶體或者從記憶體中讀取。
3. 所有裝置都只能直接和記憶體打交道。
4. 作業系統是一款搞軟硬體管理的軟體。
5. 管理最重要的是要有決策權。
6. 如何進行管理:先描述,再組織。
7. linux使用c語言編寫,c語用struct描述物件。
資料結構表示的是資料的組織方式,組織方式決定結構,結構決定演算法。
8.shell是包裹在作業系統外層的軟體層,方便使用者和作業系統進行溝通。
馮諾依曼體系結構
cui 馮諾依曼體系機構 說到計算機的發展,就不能不提到德國科學家馮諾依曼。從20世紀初,物理學和電子學科學家們就在爭論製造可以進行數值計算的機器應該採用什麼樣的結構。人們被十進位制這個人類習慣的計數方法所困擾。所以,那時以研製模擬計算機的呼聲更為響亮和有力。20世紀30年代中期,德國科學家馮諾依曼...
馮諾依曼體系結構
馮 諾依曼結構也稱普林斯頓結構,是一種將程式指令儲存器和資料儲存器合併在一起的儲存器結構。程式指令儲存位址和資料儲存位址指向同乙個儲存器的不同物理位置,因此程式指令和資料的寬度相同,如英特爾公司的8086 處理器的程式指令和資料都是16位寬。美籍匈牙利數學家馮 諾依曼於1946年提出儲存程式原理,把...
馮 諾依曼體系結構
一.馮 諾依曼結構 von neumann architecture 馮 諾依曼結構也稱作普林斯頓結構,是一種將程式 指令序列的集合 和資料存放在同一儲存器的不同位址的電腦設計概念結構。這是建立在馮 諾依曼原理,即程式可看做一種特殊的 資料 同樣地可以被處理和儲存,故兩者可存放在同一儲存器中,採用單...