📙 作者簡介 :RO-BERRY
📗 學習方向:致力于C、C++、數據結構、TCP/IP、數據庫等等一系列知識
📒 日后方向 : 偏向于CPP開發以及大數據方向,歡迎各位關注,謝謝各位的支持
目錄
- 1.馮·諾依曼體系結構
- 特點
- 組成剖析
- 為什么要有內存?
- 2.操作系統
- 為什么要有操作系統?
1.馮·諾依曼體系結構
馮·諾依曼體系結構,也被稱為普林斯頓結構,是一種將程序指令存儲器和數據存儲器合并在一起的存儲器結構。在這種結構中,程序指令和數據在內存中是沒有區別的,它們都是內存中的數據。當EIP指針指向哪CPU就加載那段內存中的數據,如果是不正確的指令格式,CPU就會發生錯誤中斷。在現在CPU的保護模式中,每個內存段都有其描述符,這個描述符記錄著這個內存段的訪問權限(可讀,可寫,可執行)。這就變相的指定了哪些內存中存儲的是指令哪些是數據。指令和數據都可以送到運算器進行運算,即由指令組成的程序是可以修改的。
特點
馮·諾依曼體系結構還包括以下特點:
- 存儲器是按地址訪問的線性編址的一維結構,每個單元的位數是固定的。
- 指令由操作碼和地址組成。操作碼指明本指令的操作類型,地址碼指明操作數和地址。操作數本身無數據類型的標志,它的數據類型由操作碼確定。
- 通過執行指令直接發出控制信號控制計算機的操作。指令在存儲器中按其執行順序存放,由指令計數器指明要執行的指令所在的單元地址。指令計數器只有一個,一般按順序遞增,但執行順序可按運算結果或當時的外界條件而改變。
- 以運算器為中心,I/O設備與存儲器間的數據傳送都要經過運算器。
- 數據以二進制表示。馮·諾依曼提出的計算機制造的三個基本原則,即采用二進制邏輯、程序存儲執行以及計算機由五個部分組成(運算器、控制器、存儲器、輸入設備、輸出設備),這套理論被稱為馮·諾依曼體系結構。
組成剖析
cpu:運算器&&控制器
輸入設備:話筒、攝像頭、鍵盤、鼠標、磁盤等
輸出設備:聲卡、顯卡網卡、磁盤、顯示器、打印機等
存儲器:內存—掉電易失
手機制造商們把CPU、內存、網絡通信,乃至攝像頭芯片,都封裝到一個芯片,然后再嵌入到手機主板上,即SoC,System on a Chip(系統芯片)。但無論是PC/服務器/手機都遵循馮·諾依曼體系結構(Von Neumann architecture),也叫存儲程序計算機,意味著“可編程”、“存儲”計算機。
計算機由各種門電路組成完成計算程序。一旦需要修改功能,就要重新組裝電路。這樣的話,計算機就是“不可編程”的,因為程序在計算機硬件層面是“寫死”的。最常見的就是老式計算器,電路板設好了加減乘除,做不了任何計算邏輯固定之外的事情。
再看“存儲”計算機。程序存儲在計算機內存,可通過加載不同程序解決不同問題。
不能存儲程序的計算機
早年“Plugboard”這種插線板計算機,在板子上不同的插頭或者接口的位置插入線路實現不同功能。這樣的計算機“可編程”,但編寫好的程序不能存儲下來供下一次加載使用,不得不每次要用到和當前不同的“程序”的時候,重新插板子,重新“編程”。
為了效率,有了“存儲程序計算機”。馮基于在秘密開發的EDVAC寫了一篇報告First Draft of a Report on the EDVAC,描述了一臺計算機什么樣。
- 包含處理器單元(Processing Unit):
算術邏輯單元(Arithmetic Logic Unit,ALU)
處理器寄存器(Processor Register)
完成各種算術和邏輯運算。
因為它能夠完成各種數據的處理或者計算工作,因此也有人把這個叫作數據通路(Datapath)或者運算器。
- 包含控制器單元(Control Unit/CU):
指令寄存器(Instruction Reigster)
程序計數器(Program Counter)
控制程序的流程,通常就是不同條件下的分支和跳轉。
算術邏輯單元和控制器單元組成CPU。
關于馮諾依曼,必須強調幾點:
這里的存儲器指的是內存
不考慮緩存情況,這里的CPU能且只能對內存進行讀寫,不能訪問外設(輸入或輸出設備)
外設(輸入或輸出設備)要輸入或者輸出數據,也只能寫入內存或者從內存中讀取。
一句話,所有設備都只能直接和內存打交道
為什么要有內存?
內存,也稱為內存儲器,是計算機系統中用于暫時存放CPU中的運算數據以及與硬盤等外部存儲器交換的數據的硬件組件。內存的存在主要有以下幾個原因:
- 速度匹配:CPU的速度非常快,通常以GHz為單位,而硬盤的傳輸速度相對較慢,通常不到200MB/s。內存的速度介于CPU緩存和硬盤之間,能夠快速地與CPU交換數據,從而提高系統的整體性能。
- 容量擴展:CPU的緩存空間有限,無法存儲大量的數據。內存提供了更大的存儲容量,使得操作系統和應用程序能夠臨時存儲更多的數據,以便快速地與CPU交換,從而提高系統的運行效率。
- 數據管理:內存中存儲的數據包括程序的全局變量、局部變量等,這些數據對程序的運行至關重要。內存管理是編程中的一個重要話題,它涉及到數據的組織、存儲和處理,對于程序的正確運行至關重要。
- 系統穩定性:內存的運行也決定了計算機的穩定運行。如果內存不足,CPU需要從硬盤中讀取數據,這會導致系統卡頓,甚至可能出現黑屏或游戲跳出的情況。
綜上所述,內存的存在是為了解決CPU與外部存儲器之間速度和容量的矛盾,提高系統的運行效率和穩定性。
2.操作系統
計算機是一臺機器,它按照用戶的要求接收信息、存儲數據、處理數據,然后再將處理結果輸出(文字、圖片、音頻、視頻等)。計算機由硬件和軟件組成:
硬件是計算機賴以工作的實體,包括顯示器、鍵盤、鼠標、硬盤、CPU、主板等;
軟件會按照用戶的要求協調整臺計算機的工作,比如 Windows、Linux、Mac OS、Android 等操作系統,以及 Office、QQ、迅雷、微信等應用程序。
操作系統(Operating System,OS)是軟件的一部分,它是硬件基礎上的第一層軟件,是硬件和其它軟件溝通的橋梁(或者說接口、中間人、中介等)。
操作系統會控制其他程序運行,管理系統資源,提供最基本的計算功能,如管理及配置內存、決定系統資源供需的優先次序等,同時還提供一些基本的服務程序,例如:
- 文件系統
提供計算機存儲信息的結構,信息存儲在文件中,文件主要存儲在計算機的內部硬盤里,在目錄的分層結構中組織文件。文件系統為操作系統提供了組織管理數據的方式。 - 設備驅動程序
提供連接計算機的每個硬件設備的接口,設備驅動器使程序能夠寫入設備,而不需要了解執行每個硬件的細節。簡單來說,就是讓你能吃到雞蛋,但不用養一只雞。 - 用戶接口
操作系統需要為用戶提供一種運行程序和訪問文件系統的方法。如常用的 Windows 圖形界面,可以理解為一種用戶與操作系統交互的方式;智能手機的 Android 或 iOS 系統,也是一種操作系統的交互方式。 - 系統服務程序
當計算機啟動時,會自啟動許多系統服務程序,執行安裝文件系統、啟動網絡服務、運行預定任務等操作。
打個比方,操作系統就好像是一個政府,其它軟件都會被它管控;操作系統在給其他軟件提供各種便利的同時,還會約束其他軟件不能為所欲為。
目前流行的服務器和 PC 端操作系統有 Linux、Windows、UNIX 等,手機操作系統有 Android、iOS、Windows Phone(簡稱 WP),嵌入式操作系統有 Windows CE、PalmOS、eCos、uClinux 等。
我們宏觀地看待從用戶到底層硬件的交互如下圖:
為什么要有操作系統?
操作系統在計算機系統中扮演著至關重要的角色。它不僅管理著計算機硬件資源的分配和調度,而且為上層應用軟件提供了方便的接口,確保了計算機系統的安全和穩定。具體來說:
- 資源管理:操作系統負責協調計算機的各個資源,確保程序能夠有效地使用硬件資源,同時避免資源沖突和資源浪費。
- 接口提供:操作系統提供了一系列的底層接口和上層標準,使得不同硬件平臺上的軟件能夠互通,減少了軟件開發者的工作量,因為它們只需關注操作系統的標準接口。
- 硬件封裝:操作系統向下封裝了硬件的細節,向上提供給用戶和應用程序一個簡潔、易于使用的接口,使得用戶和應用程序員無需了解復雜的硬件細節。
- .安全與穩定:操作系統通過防火墻、監測程序和補丁等方式,保護計算機免受惡意程序和電腦病毒的侵害,確保了系統的運行穩定。
- 商業考量:操作系統通常由商業公司提供,這些公司可能會通過操作系統提供增值服務或進行商業變現,如蘋果的App Store和微軟的Windows Store。
綜上所述,操作系統的存在是為了簡化用戶和應用程序員的操作,提高計算機系統的資源利用率,確保系統的安全性和穩定性,以及為商業公司提供盈利的機會。
那么操作系統如何對它們進行管理呢?首先,對一個事務進行管理,我們首先要對它進行建模,即先描述,再組織;先描述,就要先對它的屬性進行分析,重要屬性的分析就代表這個事務;所以,操作系統要管理某個資源,就要先對它描述,即分析它的屬性,對它建模,再進行組織,組織后進行管理。假設操作系統要管理某一個資源,可以將它描述成一個鏈表,那么就可以看成操作系統對這個鏈表進行資源管理。
總結,計算機管理硬件/操作系統管理資源