???~~~~~~歡迎光臨知星小度博客空間~~~~~~???
???零星地變得優秀~也能拼湊出星河~???
???我們一起努力成為更好的自己~???
???如果這一篇博客對你有幫助~別忘了點贊分享哦~???
???如果有什么問題可以評論區留言或者私信我哦~???
??????個人主頁??????
? ? ? ? 前面我們已經學習了Linux的基礎指令和基礎開發工具,這一篇博客我們從宏觀上來看看計算機——馮諾依曼模型與操作系統的管理藝術 !準備好了嗎~我們發車去探索計算機的奧秘啦~🚗🚗🚗🚗🚗🚗
目錄
馮諾依曼體系結構😜
概念😀
🖥? 五大組成部分
🔁 兩大核心特點
? 數據流動原則
實例說明:QQ聊天與文件發送🙃
操作系統😝
操作系統是什么?😁
操作系統的設計目的😄
操作系統的核心功能(內核負責)😋
操作系統如何實現“管理”?😍
操作系統如何提供服務?—— 系統調用與庫函數?
總結?
馮諾依曼體系結構😜
概念😀
????????馮諾依曼體系結構(Von Neumann Architecture)是現代計算機系統的理論基礎,由數學家約翰·馮·諾依曼于1945年提出。我們常用的計算機如筆記本,我們不常用的計算機如服務器,大部分都遵守了馮諾依曼體系結構。該體系結構明確了計算機的基本組成和工作方式~
🖥? 五大組成部分
? ? 輸入設備(Input Unit)
? ? ? ? 例如:鍵盤、鼠標、掃描儀、攝像頭、麥克風、網卡等。
? ? ? ? 功能:將外部數據或指令輸入到計算機中。
? ? 存儲器(Memory)
? ? ? ? 特指內存(RAM),是CPU直接訪問的存儲區域。
? ? ? ? 所有輸入/輸出設備的數據必須通過內存進行中轉。
? ? 運算器(Arithmetic Logic Unit, ALU)
? ? ? ? 負責執行所有的算術運算(如加減乘除)和邏輯運算(如與或非)。
? ? 控制器(Control Unit)
? ? ? ? 指揮協調各部件工作,解析并執行指令(如程序代碼),進行邏輯控制。?
運算器與控制器合稱為中央處理器(CPU)
? ? 輸出設備(Output Unit)
? ? ? ? 例如:顯示器、打印機、音響、網卡等。
? ? ? ? 功能:將處理結果輸出給用戶或外部設備。
🔁 兩大核心特點
? ? 1、存儲程序原理
? ? ? ? 程序和數據都以二進制形式存儲在內存中,CPU按順序讀取并執行指令。
? ? 2、以運算器為中心
? ? ? ? 所有設備通過內存與CPU交互,CPU不直接訪問外設,外設也不和CPU直接打交道。
? 數據流動原則
????????所有設備只能直接與內存交換數據,CPU不直接操作外設~外設輸入數據時,先寫入內存;CPU從內存讀取數據運算,結果寫回內存;輸出設備從內存讀取結果并輸出~
? ? ? ? 換言之,內存的本質是CPU和外設的緩存,數據流動的本質就是拷貝,計算機整體效率本質上就是設備間拷貝的效率~
????????內存是核心中轉站,協調高速CPU與低速外設之間的速度差異~
????????效率層次:CPU > 內存 > 外設(如硬盤、鍵盤等)~
????????內存的引入使得計算機在成本和效率之間取得了良好的平衡,讓用戶能夠以相對較低的成本獲得一臺性能不錯的計算機,從而提升了計算機的“性價比”。
實例說明:QQ聊天與文件發送🙃
1. 發送文字消息:
? ? 輸入:鍵盤輸入字符 → 數據存入內存。
? ? CPU處理:從內存讀取數據,進行編碼、打包等操作。
? ? 輸出:數據從內存經網卡發送到網絡 → 對方接收后存入其內存 → 對方CPU處理 → 結果顯示在對方屏幕上。
2. 發送文件:
? ? 輸入:文件從硬盤讀入內存(外設→內存)。
? ? CPU處理:對文件數據分包、加密等。
? ? 輸出:數據包經網卡發送 → 對方接收后存入內存 → 寫入硬盤(內存→外設)。
????????馮諾依曼體系結構通過“存儲程序”和“集中式內存訪問”機制,奠定了現代計算機的基礎。通過理解這一模型有助于深入理解軟件與硬件的交互方式,尤其是數據流如何在不同設備間通過內存進行協調與傳輸。
操作系統😝
操作系統是什么?😁
操作系統是計算機系統中最基本、最核心的系統軟件。
從組成上看:
? ? ? ? 狹義的操作系統:特指其內核(Kernel),這是操作系統的核心部分,直接負責管理硬件和核心資源。
? ? ? ? 廣義的操作系統:除了內核外,還包括一系列必要的程序集合,例如:外殼(Shell):提供用戶與內核交互的界面(命令行或圖形界面);函數庫(如glibc):將復雜的系統調用封裝成更易用的函數;其他系統級軟件。
從定位上看:
? ? ? ? 它是一款純正的 “搞管理”的軟件【軟硬件管理】。在整個計算機軟硬件架構中,它處于承上啟下的關鍵位置。
操作系統的設計目的😄
? ? 對下(管理硬件):與硬件交互,統籌管理所有的軟硬件資源(如CPU、內存、硬盤、網卡等),這是它實現的手段。
? ? 對上(服務應用/用戶):為用戶程序(應用程序)提供一個穩定、安全、高效的執行環境,這是它追求的目的。
????????用戶通過應用程序使用計算機硬件,而這些資源是有限的。操作系統的必要性就在于它作為公正的“管理者”,避免了應用程序對資源的無序爭搶,保證了整個系統的有序和高效。
操作系統的核心功能(內核負責)😋
內核主要包含四大管理功能:
? ? 進程管理:管理正在運行的程序(進程/任務/線程),負責CPU資源的分配和調度。
? ? 內存管理:負責內存的分配、回收、以及虛擬內存等,保證各個進程能安全地使用內存。
? ? 文件管理:管理硬盤上的文件和目錄,提供文件系統供用戶和程序讀寫數據。
? ? 驅動管理:管理和控制所有的硬件設備(如鍵盤、顯示器),為上層提供統一的接口。
操作系統如何實現“管理”?😍
操作系統管理方法可以概括為:“先描述,再組織”~管理本質上是對被管理對象有效數據的管理~
先描述(Description)
? ? ? ? 做法:使用數據結構(在C語言中主要是 struct 結構體) 來抽象一個被管理對象的所有關鍵信息。
? ? ? ? 例子:
? ? ? ? ? ?管理進程?就定義一個 struct task_struct,包含進程ID、狀態、優先級、內存指針等。
? ? ? ? ? ? 管理文件?就定義一個 struct file,包含文件大小、路徑、權限等。
? ? ? ? ? ? 管理硬件?就定義一個 struct hard_device,包含設備類型、狀態、容量等。
? ? ? ? 結論:管理的本質不是管理實體本身,而是管理描述這些實體的數據,操作系統內核中充滿了大量的數據結構。
再組織(Organization)
? ? ? ? 做法:將這些描述好的結構體實例,通過高效的數據結構(如鏈表、樹、隊列等) 組織起來。
? ? ? ? 例子:所有進程的 task_struct 通過指針連接成各種隊列(就緒隊列、等待隊列);所有設備結構體被鏈成一個 device_list。
? ? ? ? 目的:管理者(OS)要執行操作(如分配CPU、查找文件),就變成了對這些數據結構進行增刪改查,這就是為什么學習數據結構和算法對理解OS至關重要。
通俗類比:校長【操作系統】管理學生【硬件】,不需要認識每個學生,他只需要一份包含所有學生信息(學號、成績、班級)的花名冊【有效信息】(描述),并將這些信息按班級或成績排序(組織)。管理學校,其實就是管理這份花名冊,同時還有輔導員【驅動程序】的存在進行分學院管理~
操作系統如何提供服務?—— 系統調用與庫函數?
? ? 系統調用(System Call):操作系統會將部分內核功能以接口形式暴露給上層開發者,這些接口稱為系統調用,它們功能基礎但強大,是用戶程序訪問硬件和內核服務的唯一入口。
? ? 庫函數(Library Function):系統調用使用復雜,因此開發者會對它們進行封裝,形成更易用的庫(如C標準庫)。我們日常編程使用的 printf()、fopen() 等函數,其底層最終都會調用相應的系統調用,所以庫函數和系統調用也是上下層的關系。
????????
總結?
????????操作系統是計算機系統的“大管家”。它位于硬件之上,應用之下,通過“先描述(用struct),再組織(用鏈表等數據結構)”的科學方法,將對CPU、內存、磁盤、設備等物理資源的管理,轉化為對數據的管理。它通過系統調用對外提供服務,并最終為用戶提供一個穩定、高效、安全的計算環境。
???本篇博客內容結束,期待與各位優秀程序員交流,有什么問題請私信???
???如果這一篇博客對你有幫助~別忘了點贊分享哦~???
??????個人主頁??????