【Linux 學習計劃】-- 馮諾依曼體系 | 操作系統的概念與定位,以及其如何管理軟件

目錄

馮諾依曼體系結構

操作系統是干什么的?

理解操作系統中的管理

對OS(操作系統)宏觀、整體的分析

總結

結語


馮諾依曼體系結構

首先我們來看這樣一張圖,這就是大名鼎鼎的馮諾依曼體系

在日常生活中,所有的計算機都是遵循馮諾依曼體系結構的

其中這里面有很多都是我們日常生活中耳熟能詳的

比如輸入設備:鍵盤,麥克風攝像頭等等,輸出設備:顯示器,聲卡,網卡等等

還有像CPU和存儲器(其實就是內存),這些我們在日常生活中都是很常見的

同時,我們的數據也必須是在這個體系中流動的,比如你要敲鍵盤,然后數據要在顯示器中顯示出來,而數據流動的本質就是復制,所以這就要求馮諾依曼體系中的每一個結構都有一定的存儲能力:存儲器不必多說,CPU中有寄存器等等

但是,為什么要有存儲器呢?直接輸入設備鏈接CPU鏈接輸出設備不就好了嗎?

這時我們就需要引入一個概念了,叫做木桶效應,也就是說,計算機整體的效率是由最慢的那個決定的

而我們效率的主要矛盾是什么?CPU的計算速度非常快,這肯定不是主要矛盾,所以最關鍵的就是數據流動的速度,也就是數據復制的速度

同樣的,我們的CPU很快,但是輸入和輸出設備非常慢,所以導致我們的整體效率就被拖垮了,這也就是為什么我們需要一個內存作為中間橋梁的原因

因為內存中可以預先加載大量數據,CPU不必等數據全部從輸入設備中來了才去計算,只需要從內存中讀取即可,甚至還能在輸入設備傳輸數據給內存的同時,CPU直接計算好順帶將數據返回給內存順便給輸出設備,這樣我們的效率就提升了好幾個量級

而同時,馮諾依曼體系結構規定:

CPU之和內存打交道,不和外設打交道

外設的數據只會交給內存,然后再交給CPU處理,最后再給回內存

所以,我們以前學習的時候,可能很疑惑,為什么代碼一定要先加載到內存中才能跑起來

現在我們明白了,這時馮諾依曼體系結構要求這么干的,而我們的程序在沒有跑起來之前,被放在了磁盤,也就是外設,只有加載到內存里面了,才能交給CPU然后跑起來

最后我們來說一下,為什么馮諾依曼體系結構那么偉大

大家看到這里其實還是比較無感的,認為這就是一個普通的知識點,而這時我們又需要引入一個概念了,叫做存儲金字塔:

我們因為需要提升電腦的效率,所以有了存儲器

如果你是一個土豪,你當然可以直接用各種寄存器充當內存只為追求極致的效率

但是這樣的電腦,可能就需要成百上千萬,根本不是老百姓消費得起的

而內存,沒那么貴,但是卻能夠給我們老百姓提供一臺效率相對不錯的電腦,而老百姓買得起了,才會有那么多的網民,才能養活這么多的互聯網公司,才有了如今的互聯網時代,這也就是為什么說馮諾依曼體系結構是偉大的

最后舉一個例子來演示一下馮諾依曼體系現實中的樣子:

比如有兩個人此時在wechat上面想聊天,那么左邊的人,就需要通過鍵盤(輸入設備)輸入消息,然后消息加載到內存,通過CPU執行操作(比如說加密),最后傳輸給網卡(輸出設備),中間網卡之間消息互傳的部分,比如說tcp/ip這里就不講了,最后消息就給到了右邊的人

右邊的人拿網卡(這時是輸入設備)接收到了消息,然后消息加載到內存,交給CPU操作(比如說解密),最后給到右邊的人的顯示器(輸出設備)

至此,兩個人之間就能夠互傳消息了

操作系統是干什么的?

操作系統的作用就是:對系統中的軟硬件資源進行管理

我們來舉個例子(這張圖并不全,這里只講解硬件部分):

外設,是有很多種類的,還有不同的廠商,都是完全不一樣的,所以我們的操作系統是不能直接對硬件進行管理的

比如說:市面上有很多游戲,現在廠商來了,說你要玩我這個游戲,你就自己去找資源,自己找地方買吧,這個時候,我們甚至可能買到盜版的,而這個過程是一個非常不好的體驗

而這時來了一個steam,他把游戲全部都管理起來,就對玩家說,要玩?來我這里買,里面的付款啊,下載安裝啊等等程序我都幫你處理好了,然后只給你提供對應的按鈕,你點擊就可以付款下載安裝了

而steam這個角色在我們今天這個情景里,就是中間紫色的驅動程序

所有的驅動程序都是廠商自己寫的,然后當我們硬件連接系統的時候自動安裝(比如有些鼠標,我們剛接上電腦的時候沒反應,過一小會聽見“噔”一下,然后右下角說什么驅動程序已安裝完畢)

而驅動程序都是文件,所以我們的操作系統只需要將這些文件管理好,就能將硬件管理好了

而這里我們只是以硬件為例子,而其他軟件也是殊途同歸

由此我們就能大概了解,為什么說OS(操作系統)是對軟硬件進行資源管理的了

理解操作系統中的管理

你,是一個校長,今天你需要管理你學校里的學生

但是你并不需要直接和每一個學生都見面,你只需要得知每一個同學的數據,就能管理起來了

而你在當校長之前,你還是一個寫c語言的程序員,你就想到,可以用struct創建一個學生類型,只要將學生的數據填進去即可

如果要管理起來,就在struct stu里面加上一個指向同樣類型的指針,把每一個類型都連接起來,形成一個單鏈表

這樣,我們對學生的管理就變成了對這個單鏈表的增刪查改

比如今天我要找績點最高的同學,好好表揚一下,那就是在這個鏈表中找到績點那個數據最大的那個對應的同學,如果有個同學犯事了,要開除,那也就是把對應節點刪掉而已

所以,管理的本質就是先描述,再組織

接下來我們再回到我們最開始講的OS與硬件和驅動程序之間的關系

我們的硬件自帶了驅動程序,而我們的OS就是校長,將所有的驅動程序當成對應的類,填充對應的數據,就能夠用數據結構管理起來,所以對硬件本身的管理,就轉變成了對特定數據結構的增刪查改,也就是先描述再組織

對OS(操作系統)宏觀、整體的分析

現在再來看這張圖,其實就親切很多了

OS,對下要管理好各種硬件,對上,要給用戶提供各種接口,管理好各種軟件

總的目的就是:為用戶提供一個良好、穩定、安全、高效的系統

對下我們前文講過了,就是通過對硬件提供的驅動程序,進行先描述再組織,從而將硬件的管理轉換成對特定數據結構的增刪查改,從而管理硬件

對上我們現在來講

首先,我們用戶是不能直接管理硬件的,也不能進入操作系統內部

試想一下,銀行會允許用戶直接走到倉庫里面存錢,然后自己輸入存了多少錢嗎?當然不會。同樣的,萬一用戶操作不當,把OS搞fei了,那不就完damn了嘛

所以對上,OS會提供很多的接口給用戶使用,也就是上圖中的(system call)系統調用接口

對應的例子可以是銀行前臺的各種窗口:

你把錢和信息給對應的工作人員,讓他們通過這些窗口幫你處理各種業務即可

但是銀行中可能還有一些老大爺老大媽,他們甚至都不認識字,所以銀行中就有比如客戶經理,你不會寫字我幫你寫,資料什么的我幫你處理好轉接,這也就是最上面的用戶操作接口

而在過去,我們所有人都是老大爺老大媽,因為用戶操作接口中有一個叫做 lib,也就是庫函數

我們之前敲代碼用的stdio.h就是這里面的東西

總結

馮諾依曼體系結構是計算機中約定俗成的一種結構,其中,輸入輸出設備都會直接也只會和內存進行聯系,而CPU也是只會和內存進行聯系,因為內存可以預先加載大量數據,從而提升計算機的整體效率(因為計算機效率的主要矛盾點就是數據的復制)

到了操作系統章節,操作系統可以用結構體將所要管理的東西描述起來,可能是驅動文件,可能是后面要講到的進程等等,接著再用對應的數據結構管理起來,將對對應對象的管理轉變成對對應數據結構的管理

而操作系統通過這些管理,最終達成對下管理好各種硬件,對上能為用戶提供各種調用接口并管理好各種軟件,最終為用戶提供一個良好、穩定、安全、高效的操作系統

結語

這篇文章到這里就結束啦!!~( ̄▽ ̄)~*

如果覺得對你有幫助的,可以多多關注一下喔

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

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

相關文章

新消息!阿里云ACP大模型認證有變化!

阿里云ACP認證是阿里云認證中的高級工程師,ACP認證方向有云計算、大數據、人工智能、大模型等多個,大家都知道,阿里云ACP考試題量共100題,其中70道單選題30道多選題,每題一分,滿分100分,80分合格…

MySQL 數據遷移Postgresql(openGuass) 之 pg_chameleon

1 pg_chameleon 介紹 pgchameleon 是一款MySQL 到 PostgreSQL/openGuass 的復制工具。 pg_chameleon 使用場景: 1)分析 2)遷移 3)對多個MySQL 數據庫進行數據聚合 操作系統信息 (myenv) rootu24-pg-60:~# cat /etc/issue Ubuntu …

Spark 中,map和foreach的區別

在 Spark 中,map和foreach是兩種不同用途的轉換操作,主要區別在于: 1. 操作類型與返回值 map:是轉換操作(Transformation),返回一個新的 RDD。foreach:是行動操作(Acti…

More SQL(Focus Subqueries、Join)

目錄 Subqueries Subqueries That Return One Tuple Subqueries and Self Connection The IN Operator The Exists Operator The Operator ANY The Operator ALL Union, Intersection, and Difference(交并差) Bag Semantics Controlling Dupl…

OpenGL Chan視頻學習-4 Vertex Buffers and Drawing a Triangle in OpenGL

一、視頻鏈接 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 二、相關網站 docs.gl 三、代碼整理 c #include <GL/glew.h> #include <GLFW/glfw3.h>#include<iostream>int…

WSL中ubuntu通過Windows帶代理訪問github

WSL中ubuntu通過Windows帶代理訪問github 前言: WSL是Windows下的ubuntu訪問工具&#xff0c;目前無法訪問外網&#xff0c;因此需要配置一下。 步驟一 代理中進行如下設置: 步驟二 ubuntu22.04中修改配置 使用如下命令獲取IP地址&#xff1a; ip route | grep default | aw…

為(FramePack)的視頻生成添加首尾幀功能

文章目錄 &#xff08;一&#xff09;前言&#xff08;二&#xff09;可選的尾幀&#xff08;三&#xff09;測試&#xff08;四&#xff09;例子 &#xff08;一&#xff09;前言 前提是這個&#xff1a;《筆記本6GB本地可跑的圖生視頻項目&#xff08;FramePack&#xff09;…

C語言中:遞歸問題的深入研究

C語言中&#xff1a;遞歸問題的深入研究 函數的遞歸有兩個限制條件&#xff1a; 1.遞歸存在限制條件&#xff0c;當滿?這個限制條件的時候&#xff0c;遞歸便不再繼續。 2.每次遞歸調?之后越來越接近這個限制條件。 例子&#xff1a; #include <stdio.h> int main…

《C++20新特性全解析:模塊、協程與概念(Concepts)》

引言&#xff1a;C20——現代C的里程碑 C20是繼C11之后最具革命性的版本&#xff0c;它通過模塊&#xff08;Modules&#xff09;、協程&#xff08;Coroutines&#xff09;和概念&#xff08;Concepts&#xff09;三大核心特性&#xff0c;徹底改變了C的代碼組織方式、并發模…

xcode卡死問題,無論打開什么程序xcode總是在轉菊花,重啟電腦,卸載重裝都不行

很可能是因為我們上次沒有正常關閉Xcode&#xff0c;而Xcode保留了上次錯誤的一些記錄&#xff0c;而這次打開Xcode依然去加載錯誤的記錄&#xff0c;所以必須完全刪除這些記錄Xcode才能加載正常的項目。 那么也就是說&#xff0c;我們是不是只需要刪除這部分錯誤記錄文件就可以…

華為云Flexus+DeepSeek征文|華為云Flexus云服務器X實例上部署Dify:打造高效的開源大語言模型應用開發平臺

目錄 前言 1 Dify與華為云部署概述 1.1 什么是 Dify 1.2 華為云與 Flexus 云服務器的優勢 2 云服務器部署 Dify 的步驟詳解 2.1 模板選擇 2.2 參數配置 2.3 資源棧設置 2.4 確認部署信息并執行 3 部署成功后的操作與平臺使用指南 3.1 訪問平臺 3.2 設置管理員賬號 …

物流項目第九期(MongoDB的應用之作業范圍)

本項目專欄&#xff1a; 物流項目_Auc23的博客-CSDN博客 建議先看這期&#xff1a; MongoDB入門之Java的使用-CSDN博客 需求分析 在項目中&#xff0c;會有兩個作業范圍&#xff0c;分別是機構作業范圍和快遞員作業范圍&#xff0c;這兩個作業范圍的邏輯是一致的&#xf…

網絡拓撲如何跨網段訪問

最近領導讓研究下跟甲方合同里的&#xff0c;跨網段訪問怎么實現&#xff0c;之前不都是運維網工干的活么&#xff0c;看來裁員裁到動脈上了碰到用人的時候找不到人了&#xff0c; 只能趕鴨子上架讓我來搞 IP 網絡中&#xff0c;不同網段之間的通信需要通過路由器&#xff0c;…

【前端】PWA

目錄 概述實戰vue項目問題匯總 PWA&#xff08;漸進式 Web 應用&#xff0c;Progressive Web App&#xff09; 2015提出 概述 PWA 是一種提升 Web 應用體驗的技術&#xff0c;使其具備與原生應用相似的功能和性能。PWA不僅能夠在網頁上運行&#xff0c;還能在手機或桌面上像傳…

湖北理元理律師事務所:從法律合規到心靈契合的服務升維

債務優化不僅是數字游戲&#xff0c;更是信任重建的過程。湖北理元理律師事務所在實踐中發現&#xff1a;68%的債務糾紛中存在溝通斷裂。為此&#xff0c;機構構建了“三維信任修復機制”。 維度一&#xff1a;信息透明的技術實現 區塊鏈存證艙&#xff1a;客戶手機實時查看律…

香橙派3B學習筆記2:Vscode遠程SSH登錄香橙派_權限問題連接失敗解決

Vscode下載插件&#xff0c;ssh遠程登錄香橙派。 ssh &#xff1a; orangepi本地ip 密碼 &#xff1a; orangepi 安裝 Remote - SSH 擴展SSH插件&#xff1a; SSH遠程連接&#xff1a; ssh usernameremote_host ssh -p port_number usernameremote_host默認22端口號就用第一行…

VMware安裝Ubuntu實戰分享大綱

深入解析快速排序 一、分治策略分解 分解階段&#xff1a; 選擇基準元素 $pivot$將數組劃分為三個子集&#xff1a; $$ left {x | x < pivot} $$ $$ equal {x | x pivot} $$ $$ right {x | x > pivot} $$ 遞歸排序&#xff1a; 對 left 和 right 子集遞歸調用快速排…

AI 讓無人機跟蹤更精準——從視覺感知到智能預測

AI 讓無人機跟蹤更精準——從視覺感知到智能預測 無人機跟蹤技術正在經歷一場前所未有的變革。曾經,我們只能依靠 GPS 或簡單的視覺識別來跟蹤無人機,但如今,人工智能(AI)結合深度學習和高級視覺算法,正讓無人機的跟蹤變得更加智能化、精準化。 尤其是在自動駕駛、安防監…

GATED DELTA NETWORKS : IMPROVING MAMBA 2 WITH DELTA RULE

TL;DR 2024 年 Nvidia MIT 提出的線性Transformer 方法 Gated DeltaNet&#xff0c;融合了自適應內存控制的門控機制&#xff08;gating&#xff09;和用于精確內存修改的delta更新規則&#xff08;delta update rule&#xff09;&#xff0c;在多個基準測試中始終超越了現有…

Laravel單元測試使用示例

Date: 2025-05-28 17:35:46 author: lijianzhan 在 Laravel 框架中&#xff0c;單元測試是一種常用的測試方法&#xff0c;它是允許你測試應用程序中的最小可測試單元&#xff0c;通常是方法或函數。Laravel 提供了內置的測試工具PHPUnit&#xff0c;實踐中進行單元測試是保障代…