Linux操作系統從入門到實戰(十六)馮諾依曼體系結構,操作系統與系統調用和庫函數概念

Linux操作系統從入門到實戰(十六)馮諾依曼體系結構,操作系統與系統調用和庫函數概念

  • 前言
  • 一、馮諾依曼體系結構
    • 1. 馮諾依曼體系是什么?
    • 2. 核心部件有哪些?
    • 3. 數據是怎么跑的?
    • 4. 發文件的流程也一樣
    • 5. 為什么程序(比如C/C++寫的軟件)必須先加載到內存才能運行?
  • 二、操作系統
    • 1. 什么是操作系統?
    • 2. 為什么要設計操作系統?
    • 3. 操作系統的核心功能:
    • 4. 怎么理解“管理”?
  • 三、系統調用和庫函數概念
    • 1. 先回憶個前提
    • 2. 什么是系統調用?
    • 3. 系統調用的特點
    • 4. 庫函數又是什么?
    • 5. 系統調用和庫函數的關系


前言

在前文中,我們圍繞 Linux 環境,系統講解了 Git 版本控制系統的核心知識,也展開了 GDB/CGDB 調試器的全方位使用詳解

  • 本篇博客將聚焦于馮·諾依曼體系結構與操作系統概念

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482

一、馮諾依曼體系結構

在這里插入圖片描述

1. 馮諾依曼體系是什么?

簡單說,現在我們用的筆記本、公司的服務器,幾乎都在遵循一個“規矩”——馮諾依曼體系。這個規矩規定了:電腦要干活,得靠幾個核心部件配合,而且它們的“溝通方式”是固定的

2. 核心部件有哪些?

馮諾依曼體系主要有3類核心部件

  1. 輸入單元:負責把我們的操作“告訴”電腦。比如鍵盤(敲字)、鼠標(點圖標)、掃描儀(掃文件),都是輸入設備——你操作它們,數據就進電腦了。

  2. 中央處理器(CPU):電腦的“大腦”,負責真正干活。里面有兩個關鍵角色:

    • 運算器:算數學題、比較大小(比如1+1=2,判斷“a和b誰大”);
    • 控制器:指揮其他部件干活(比如“讓鍵盤把輸入的字送過來”“讓顯示器顯示結果”)。
  3. 輸出單元:負責把電腦的結果“告訴”我們。比如顯示器(顯示畫面、文字)、打印機(打印文件),都是輸出設備——電腦處理完,結果通過它們給我們看。

馮諾依曼體系里,有個絕對不能破的規矩,也是理解的核心

  • 所有部件(輸入、輸出、CPU)都不能直接“私聊”,必須通過一個“中間人”——內存(存儲器)

具體說:

  • CPU(大腦),只認內存。它要讀數據、寫數據,只能找內存,絕對不直接碰鍵盤、鼠標、顯示器這些外設(輸入/輸出設備)。
  • 外設(鍵盤、顯示器等)也一樣,想給電腦傳數據(比如你敲的字),或者想顯示電腦的結果,只能先把數據放到內存里,或者從內存里拿數據,不能直接找CPU。

3. 數據是怎么跑的?

光說規矩太抽象,我們拿“用QQ和朋友聊天”來看看數據是怎么按這個規矩流動的——

  1. 你發消息時

    • 你在鍵盤上敲字(輸入單元工作),敲的內容先傳到內存;
    • CPU從內存里拿你敲的字,處理一下,處理完再放回內存;
    • 內存再把處理好的消息傳給網絡設備(也算外設),通過網絡發給朋友。
  2. 朋友收到消息時

    • 朋友的電腦通過網絡設備(外設)收到消息,先存到他電腦的內存;
    • 他電腦的CPU從內存里拿消息,處理一下(比如“顯示在聊天窗口”),再放回內存;
    • 內存把消息傳給顯示器(輸出單元),朋友就看到你的消息了。

4. 發文件的流程也一樣

比如你給朋友發一個Word文檔:

  • 文檔本來存在你的硬盤里(硬盤也是外設),發文件時,硬盤先把文檔數據讀到內存(給前臺);
  • CPU處理一下(比如“打包文件”“標記收件人”),再放回內存;
  • 內存通過網絡設備把文件發出去;
  • 朋友收到后,文件數據先到他的內存,CPU處理后,再從內存寫到他的硬盤(存起來),或者直接在顯示器上打開

5. 為什么程序(比如C/C++寫的軟件)必須先加載到內存才能運行?

  • 因為CPU只認內存
    程序平時是存在硬盤里的(硬盤是外設),就像文件存在抽屜里

CPU要“執行”程序,必須讓程序先到內存里——就像你要讀抽屜里的文件,得先拿到桌面上(內存)才能看。這是馮諾依曼體系的硬性規定

二、操作系統

1. 什么是操作系統?

在這里插入圖片描述

你可以把操作系統(簡稱OS)理解成電腦/手機里的“大管家”

  • 任何電腦、手機、甚至智能手表,都得有這么個“管家”才能正常干活。

這個“管家”主要由兩部分組成

  • 內核:相當于管家的“大腦”,管著最核心的事兒,比如:

    • 進程管理:同時開著微信、瀏覽器、游戲,內核得協調它們誰先占用電腦的“算力”(CPU),別打架;
    • 內存管理:電腦的“臨時倉庫”(內存)就那么大,內核得分配好空間,保證每個程序都有地方放數據,用完了還能及時收回來;
    • 文件管理:我們存的照片、文檔、視頻,內核得給它們“編好號、分好類”,讓我們想找的時候一點就能打開(比如Windows的文件夾、手機的文件管理);
    • 驅動管理:電腦外接的打印機、鼠標,手機連的耳機、充電器,內核得懂它們的“語言”(通過驅動程序),不然設備插了也用不了。
  • 其他程序:相當于管家的“助手”,幫著內核干活,比如:

    • 函數庫:一些現成的“工具包”,比如計算、畫圖的基礎功能,手機APP或電腦軟件可以直接拿來用,不用自己從零開發;
    • Shell程序:我們和操作系統溝通的“翻譯官”,比如Windows的命令提示符(輸入dir看文件)、蘋果的終端,你輸入指令,它傳給內核去執行。

在這里插入圖片描述

2. 為什么要設計操作系統?

簡單說,就是為了“上下討好”:

  • 對下(管硬件):電腦里的CPU、內存、硬盤、顯卡,手機里的芯片、攝像頭、電池,這些硬件本身“很笨”,不知道該干啥。操作系統就負責指揮它們:“CPU,你先處理一下微信消息;硬盤,把這張照片存到D盤去”,讓所有硬件高效配合,不亂跑。
  • 對上(服務軟件和用戶):我們用的微信、王者榮耀,或者電腦里的Excel,這些應用程序不想操心“怎么調用CPU”“怎么存文件”——操作系統就提供一個“舒適的環境”,應用程序只需要告訴操作系統“我要干啥”,剩下的交給操作系統處理就行。

3. 操作系統的核心功能:

  • 操作系統它就干一件事:管理

就像學校里的教務處,不管上課、不管改作業,但負責排課表、管教室、安排考試——讓老師能好好教書,學生能好好上課。

操作系統也一樣,管好硬件資源,讓應用程序能順利運行,用戶能用得舒服

4. 怎么理解“管理”?

  • 被管理的對象:比如學校里的學生(對應電腦里的“資源”,像運行的程序、內存空間、文件等)。
  • 怎么管理?
    1. 描述對象:先得知道每個學生的情況——比如記下來“張三,高一2班,成績A”(對應操作系統里的“數據結構”,記錄每個程序的狀態、內存用了多少、文件存在哪);
    2. 組織對象:把學生分好類、排好序——比如按班級分組,按學號排隊(對應操作系統里的“調度”,比如給程序排個運行順序,給文件分個文件夾);
    3. 協調對象:輔導員(對應操作系統的具體模塊,比如進程管理器)負責日常管理,校長(對應內核)統籌全局,確保整個學校(電腦)有序運行。

三、系統調用和庫函數概念

1. 先回憶個前提

  • 前面說過,操作系統(OS)是管理電腦所有硬件(CPU、內存、硬盤等)的“大管家”

  • 硬件這東西很“金貴”,不能隨便讓外面的程序(比如微信、瀏覽器)直接碰——萬一程序亂操作,可能把硬盤里的文件刪了,或者占滿內存讓電腦卡崩。

  • 所以,所有想操作硬件的需求,都得經過操作系統同意,由操作系統來“代勞”。那程序怎么跟操作系統“溝通”呢?這就要用到“系統調用”了

2. 什么是系統調用?

系統調用可以理解成:操作系統給上層程序(比如APP、軟件)開的“官方接口”

  • 就像你想讓物業幫你修水管,不能直接闖進物業辦公室瞎指揮,得通過物業提供的“報修電話”(官方接口)才行。
  • 程序想讓操作系統幫忙做一些底層操作(比如讀硬盤里的文件、申請內存空間、打印東西),也得通過這些“官方接口”——也就是系統調用。

舉個例子:

當你用記事本寫了一段話,點“保存”的時候,記事本程序不會自己直接去操作硬盤(它也沒這權限),而是會通過一個系統調用,告訴操作系統:“請幫我把這些數據寫到硬盤的XXX位置”。操作系統收到請求后,會自己去操作硬盤完成保存,然后告訴程序“搞定了”。

3. 系統調用的特點

  • 系統調用是操作系統直接提供的,功能很基礎、很底層,能完成所有核心操作(比如讀寫文件、管理進程)。
  • 但它有個缺點:對使用者(程序員)要求比較高

比如你想通過系統調用讀一個文件,可能需要自己處理很多細節:先檢查文件是否存在、申請內存緩沖區、處理讀寫錯誤(比如文件被刪了)……步驟多,容易出錯。

4. 庫函數又是什么?

  • 庫函數可以理解成:程序員對系統調用做的“封裝和優化”,目的是讓開發者用起來更方便。

就像物業的“報修電話”雖然能解決問題,但步驟繁瑣(要報地址、報問題、等確認),于是有人專門做了個“便民報修小程序”,把這些步驟簡化成“選地址+選問題+提交”,你用起來就簡單多了。這個“小程序”就相當于“庫函數”。

舉個例子

C語言里有個庫函數叫fopen(打開文件),它的底層其實就是調用了系統調用。但fopen幫你處理了很多細節:比如自動檢查文件是否存在、默認申請了內存緩沖區、出錯了會返回統一的錯誤碼……程序員用fopen打開文件,比直接用系統調用簡單10倍。

5. 系統調用和庫函數的關系

簡單說:很多庫函數是基于系統調用實現的,是系統調用的“升級版”

  • 系統調用是“底層基礎”,是操作系統直接提供的“官方接口”,功能全但繁瑣;
  • 庫函數是“上層工具”,是對系統調用的封裝,更易用、更適合日常開發。

承上啟下:和進程管理的關系

  • 前面說過,操作系統管理進程的邏輯是“先描述,再組織”(用結構體描述進程,用鏈表組織進程)。
    • 那程序怎么創建一個新進程、結束一個進程呢?其實也是通過系統調用!比如操作系統會提供“創建進程”的系統調用,程序通過它告訴操作系統“幫我建個新進程”,操作系統就會用結構體描述這個新進程,再把它加到鏈表中管理。后面學進程的時候,我們會具體看到這些系統調用是怎么工作的

以上就是這篇博客的全部內容,下一篇我們將繼續探索Linux的更多精彩內容

我的個人主頁

歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482

非常感謝您的閱讀,喜歡的話記得三連哦

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92811.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92811.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92811.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

廣東省省考備考(第七十二天8.10)——言語理解與表達、判斷推理(強化訓練)

小模考(言語、常識) 錯題解析 本題可從第二空入手。轉折前后語意相反,轉折前指出“投資對經濟拉動只能發揮短期的作用”,故轉折后應表達“最終消費對經濟拉動才能發揮長期的作用”。A項“持久”、D項“長期”均符合文意&#xff0…

數據庫刪除術:邏輯刪除 vs 物理刪除,選錯毀所有

你以為刪除數據就是點個按鈕?背后藏著數據安全的生死抉擇! 本文揭秘兩種刪除方式的本質區別,用真實案例教你避免災難性數據丟失。一、刪除的本質:數據消失的兩種方式 🧪 #mermaid-svg-pVylRd9e5p4VE5G0 {font-family:"trebuc…

【Python 小腳本·大用途 · 第 3 篇】

1. 痛點 100 字 硬盤里散落著 IMG_2024(1).jpg、IMG_2024(1) (1).jpg、下載目錄里同名但大小不同的視頻…… 手動比對既耗時又容易誤刪。今天用 30 行 Python 腳本,基于「內容哈希」一鍵找出并刪除重復文件,支持多目錄遞歸、白名單、空目錄清理。2. 腳本…

【網絡與爬蟲 52】Scrapyd-k8s集群化爬蟲部署:Kubernetes原生分布式爬蟲管理平臺實戰指南

關鍵詞: Scrapyd-k8s, Kubernetes爬蟲部署, 容器化爬蟲管理, 云原生數據采集, 分布式爬蟲集群, Docker爬蟲, K8s工作負載, Scrapy部署自動化 摘要: 本文深入解析Scrapyd-k8s這一革命性的Kubernetes原生爬蟲管理平臺,通過費曼學習法從傳統部署痛點出發,詳…

Spring WebSocket安全認證與權限控制解析

一、認證架構設計 1.1 WebSocket安全認證流程 #mermaid-svg-23pyTyZe6teZy3Hg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-23pyTyZe6teZy3Hg .error-icon{fill:#552222;}#mermaid-svg-23pyTyZe6teZy3Hg .error-t…

復現論文《多無人機協同任務分配算法設計與實現》

1. 論文標題 多無人機協同任務分配算法設計與實現 The Design and Implementation of Multi-UAVs Cooperative Task Assignment Algorithm 2. 內容概括 該論文針對異構多無人機協同執行多目標多類型任務時的分配問題展開研究。首先提出“兩階段”任務分配結構:第一階段通過…

MCU-基于TC397的啟動流程

TC397的啟動流程(Start Sequence) 整體啟動流程包括固件啟動(Boot Firmware)和 Bootloader 和軟件啟動(Application start-up software)三個階段。 1. Boot Firmware:是芯片上電后最開始執行的代碼,代碼由英飛凌供應商固化在BootRom中的,不可編程,沒辦法對BootRom中的…

單片機畢業設計模板|畢設答辯|畢業設計項目|畢設設計|單片機物聯網畢業設計|基于STM32單片機的紗管圖像識別系統設計

畢業設計題目:基于STM32單片機的紗管圖像識別系統設計1. 需求分析目標用戶:紡織行業,自動化生產線,質量檢測等。核心功能:實時識別和檢測紗管的外觀缺陷(如破損、色差等)。提供數據記錄和報告功…

谷歌DeepMind發布Genie 3:通用型世界模型,可生成前所未有多樣化的交互式虛擬環境

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

202506 電子學會青少年等級考試機器人二級理論綜合真題

更多內容和歷年真題請查看網站:【試卷中心 -----> 電子學會 ----> 機器人技術 ----> 二級】 網站鏈接 青少年軟件編程歷年真題模擬題實時更新 2025年6月 青少年等級考試機器人理論真題二級 第 1 題 如圖,這是中國古代發明的指南車模型&am…

【YOLO11改進 - C3k2融合】C3k2融合EBlock(Encoder Block):低光增強編碼器塊,利用傅里葉信息增強圖像的低光條件

YOLOv11目標檢測創新改進與實戰案例專欄 文章目錄: YOLOv11創新改進系列及項目實戰目錄 包含卷積,主干 注意力,檢測頭等創新機制 以及 各種目標檢測分割項目實戰案例 專欄鏈接: YOLOv11目標檢測創新改進與實戰案例 文章目錄YOLOv11目標檢測創…

MACBOOK M1安裝達夢8數據庫

前提已安裝好了docker 然后通過docker-compose安裝 version: 2.1 services:DM8:image: qinchz/dm8-arm64:8.1.8.128container_name: dm8ports:- "52330:5236"mem_limit: 2gmemswap_limit: 2genvironment:- TZAsia/Shanghai- LANGen_US.UTF-8volumes:- /Users/a1/dock…

2013年考研數學(二)真題

一、選擇題(1)考點:低階無窮小定義、高階無窮小定義、同階無窮小定義、等階無窮小定義、移項變形/極限存在并且分母→0時則分子也→0方法一:方法二:(2)考點:說不清楚的思路/湊導數定義式、洛必達法則、隱函數求導方法一&#xff1…

WinForm 復合控件(用戶控件):創建與使用指南

目錄 添加流程示意圖 復合控件的核心價值 與自定義控件的區別 創建步驟 建好的示例控件 ?使用方法(代碼示例) 設計原則 添加流程示意圖 點擊添加 添加成功 每更新一次復合控件的內容,就需要生成一次 ↓ 添加好復合控件后點這里更新一…

隨機向量正交投影定理(Orthogonal Projection Theorem, OPT)_學習筆記

前言 隨機向量正交投影定理(Orthogonal Projection Theorem, OPT) 是理解和推導卡爾曼了濾波(Kalman Filtrering, KF) 重要理論工具,簡化卡爾曼最優濾波方程推導過程并提供數學嚴密性。本文介紹該定理內容及證明過程&a…

11-netty基礎-手寫rpc-支持多序列化協議-03

netty系列文章: 01-netty基礎-socket02-netty基礎-java四種IO模型03-netty基礎-多路復用select、poll、epoll04-netty基礎-Reactor三種模型05-netty基礎-ByteBuf數據結構06-netty基礎-編碼解碼07-netty基礎-自定義編解碼器08-netty基礎-自定義序列化和反序列化09-n…

艾體寶產品 | 從“被看見”到“被信任”:GWI 協助洞察消費者,重構品牌認知

簡介:本文介紹了基于消費者洞察構建品牌認知策略的核心方法。通過深度理解受眾,GWI Spark 快速獲取真實洞察,指導信息與渠道選擇。GWI 幫助追蹤情感與認知效果,避免無效曝光陷阱,最終幫助品牌實現從“被看見”到“被信…

Redis高級

目錄 一、Redis主從 1. 主從集群結構 2. 主從同步原理 2.1 全量同步 2.2 增量同步 3. 主從同步優化 4. 總結 二、Redis哨兵 1. 哨兵工作原理 1.1 哨兵作用 1.2 狀態監控 1.3 選舉新的master節點 2. 總結 三、Redis分片集群 1. 散列插槽 2. 故障轉移 四、Redis…

正點原子esp32s3探測土壤濕度

開發板使用&#xff1a;正點原子ATK_DNESP32S3 V1.3 IDE: VSCODE PLATFORMIO 土壤濕度檢測傳感器模塊如下圖&#xff1a; 引腳&#xff1a; 傳感器VCC --> ESP32[3.3V] 傳感器GND --> ESP32[GND] 傳感器A0 --> ESP32[GPIO20] 代碼如下&#xff1a; #include <…

一篇文章解決 Win10 同時部署多個版本的Tomcat

文章目錄所用到的文件夾Tomcat服務端口修改Tomcat參數修改環境變量配置驗證環境是否配置成功可能遇到的問題問題一&#xff1a;startup.bat閃退問題二&#xff1a;startup.bat成功啟動&#xff0c;但仍打不開服務器總結最近在學習JavaWeb的時候&#xff0c;想安裝新版本的Tomca…