linux_進程概念——理解馮諾依曼體系結構

? ? ? ? 前言: 本篇內容是為了讓友友們較好地理解進程的概念, 而在真正了解進行概念之前, 要先了解一下馮諾依曼體系結構。 所以博主會先對馮諾伊曼體系結構進行解釋, 然后再講解進程的概念。?

? ? ? ? ps: 本篇內容適合了解一些linux指令地友友們進行觀看

目錄

馮諾依曼體系結構硬件

馮諾依曼的存儲

存儲等級?

存儲器的作用

馮諾依曼的數據流動??

程序的運行

數據的打印

網絡交互數據的流動


馮諾依曼體系結構硬件

下面是整個馮諾依曼體系結構

????????儲存器: 友友們第一眼看到儲存器, 可能認為儲存器就是我們電腦上面的內存、磁盤、u盤這種存儲設備, 但是其實存儲器其實只是電腦上面的內存。 而磁盤, u盤這種其實是輸入輸出設備。?

????????輸入輸出設備:計算機是為了幫助人們進行計算的, 而我們要進行某個數據地計算, 就要能夠將這個數據寫入計算機的內存中, 然后計算機還能將結果反饋給我們。但是我們的計算機只能夠認識0101這種二進制文字, 而我們人是不能夠識別這些文字的。 所以我們就很難直接訪問內存, 必須要借助一些輸入輸出設備。 通過這些設備將我們人的文字轉化為二進制文字輸入給計算機,然后通過輸出設備將這些二進制文字轉化為人的文字反饋給我們。?

? ? ? ? 常見的輸入設備有:鍵盤、鼠標、磁盤、u盤、網卡、攝像頭、話筒等等

? ? ? ? 常見的輸出設備有: 顯示器、播放器硬件、磁盤、網卡等等

? ? ? ? 通過上面的輸入輸出設備我們可以發現, 有的硬件是純的輸入設備, 有的硬件是純的輸出設備。有的硬件既是輸入設備, 又是輸出設備。?

? ? ? ? 比如說網卡和磁盤, 我們有時候需要從磁盤中讀取數據進行計算, 那么它就是輸入設備。 當我們需要從磁盤中輸出數據進行計算, 那么他就是輸出設備;又比如網卡, 我們需要從網絡中獲取資源時, 那么網卡就是輸入設備。?我們需要在網絡中發送資源時,那么網卡就是輸出設備。??

? ? ? ? 運算器:運算器是計算機中對數據進行計算的, 計算分為兩種——算術運算和邏輯運算。?

? ? ? ? 控制器:對于計算機來說, 什么時候將輸入設備的數據放入到存儲器。 什么時候將存儲器的數據放到運算器。 什么時候將運算器的數據取出再放回到存儲器中, 是由控制器控制的。

? ? ? ? 注: 上面的輸入輸出設備被稱為外設。 上面的運算器和控制器也就是中央處理器被稱為cpu。?

? ? ? ? 我們也要知道, 計算機的本質就是一堆硬件的集合, 并且這些硬件之間有協同的能力。?

? ? ? ? 硬件也就是組件, 組件和組件之間需要使用某種方式傳遞信號, 當代計算機的組成, 都是由馮諾依曼體系結構構成的。?

? ? ? ??

? ? ? ? 上面那些硬件——存儲器、輸入輸出設備、運算器、控制器等都是獨立的個體, 但是各個硬件單元必須要用“線”連接起來, 這些線叫做總線。 總線分為兩類——IO總線、系統總線。

? ? ? ? 其中cpu和存儲器, 也就是和內存中進行交互的叫做系統總線。 外設和存儲器交互的叫做IO總線。

馮諾依曼的存儲

注意, 是存儲, 不是存儲器。

存儲等級?

? ? ?首先這里要對上面這張圖進行解釋。 對于計算機整個結構來說, 一共有這么多層存儲結構。 第一層是寄存器, 然后是一級存儲,二級存儲, 三級存儲, 內存以及磁盤。 這些存儲結構, 從上到下容量越來越大, 速度越來越慢, 價格越來越低。?

? ? ? ?對于寄存器和內存以及磁盤的存儲速度來說: 寄存器的速度可以達到納秒級別, 然后內存的速度可以達到微妙級別, 外存的速度可以達到毫秒級別。 也就是說, 三個存儲結構的相差級次達到了10的三次方。?? ? ??

存儲器的作用

? ? ? ? 那么進入主題, 我們思考一下對于馮諾依曼體系結構來說, 不能將存儲器直接去掉。 讓輸入設備直接通向中央處理器再前往輸出設備, 這是為什么?答案是因為輸入輸出設備的速度和cpu的差距太大了。下面對細節進行解釋:?

? ? ? ? 首先木桶原理告訴我們,木桶的存水量由最短的那個短板所決定。 那么對于計算機來說, 寄存器的存儲速度最快。而磁盤也就是輸入輸出設備的存儲速度最慢。那么也就是說, 磁盤決定了整個馮諾依曼體系的運行速率。 那么去掉存儲器也就是內存后, 整個計算機體系的運行速率仍然由輸入和輸出設備進行決定。 那么去掉存儲器的意義就不會太大。

????????那么友友們就會疑惑了, 那么既然去掉存儲器和不去掉存儲器。?根據木桶效應計算機體系的效率都是由輸入輸出設備進行決定, 那么為什么還要加存儲器增加計算機的成本呢?

? ? ? ? 這個問題很重要很重要, 為什么? 原因就是“緩存原理”——這個詞不是官方, 這個詞是博主為了好理解, 自己說的。 佬們笑一笑就好。

? ? ? ? 首先我們要知道, 內存的存儲空間一般都在1g到32g(目前一般的電腦都在16g, 有可能有的電腦更多, 而且也很少有1, 2g的電腦了)。 那么我們的內存就可以在cpu沒有工作的時候, 先將輸入輸出設備的數據預緩存到自己里面。等到cpu開始工作的時候, 就將這些預先緩存好的數據再放到cpu中解析與處理。 這個時候內存還能基于預緩存輸入輸出設備輸送過來的其他數據。 這就是IO, 系統兩條總線并行。 可以大大加快整個系統的工作效率。??

? ? ? ? 那么, 有的友友可能又會問。 博主, 那既然cpu里面的存儲那么快, 為什么不將計算機的內存, 磁盤, 這些存儲設備都換成cpu這樣的呢?

? ? ? ? 對于這個問題, 首先我們要重新知道, cpu的存儲空間, 其實就是寄存器。 那么我們知道, 寄存器的造價非常昂貴, 可使用的內存非常小。 要想造出一臺幾百個g寄存器的計算機, 成本非常高。 一般群眾用不起——要知道, 計算機造出來, 就是要給群眾使用的, 計算機之所以能發展的這么好, 就是因為它還算便宜。 如果一臺計算機幾十幾百萬, 那么沒有多少人會用。 當然有人會用, 但是還是在少數。 所以, 現在有一套成本低, 效率不錯的計算機體系結構——馮諾依曼, 為什么不用。 所以, 馮諾依曼, 我們的現在的計算機還在使用它。?

馮諾依曼的數據流動??

程序的運行

? ? ? 那么, 關于為什么不去掉存儲器的問題我們想清楚后, 再來思考一個問題:一個程序要運行, 為什么要加載到內存中呢?(這里可能有點友友不知道程序要運行必須加載到內存中, 這里記住就可以

? ? ? ?那么, 我們就要知道, 對于內存來說, 內存是一個斷電易丟失數據的存儲空間。 那么一個程序我們能夠長久地保存在計算機中, 那么它勢必是存儲在磁盤中。也就是說, 程序是放到輸入設備中的, 而cpu只從內存中拿數據。 所以, 一個程序想要被cpu計算, 那么這個程序就要被放到內存中。 所以, 程序在運行之前, 一定要先將程序緩存到內存中, 然后cpu再從內存中拿到數據。 這個過程, 是由馮諾依曼體系決定的。所以, 軟件在執行的時候, 必須遵守硬件的規則。 硬件就是底層和下限, 軟件就是上層和天花板。?

數據的打印

????????第二個問題:為什么對于打印一行的數據來說, 默認的數據, 是可能被緩存起來的?在哪里緩存呢?

? ? ? ? 首先, 數據是默認緩存到內存的某個區域, 如果這時緩存區沒有滿或者沒有換行符, 那么這個緩存區就不會刷新, 只有刷新后, 那么才會將緩沖區的數據全都打印出來。 這就是為什么我們經常看到一行一行的打印數據。?

網絡交互數據的流動

????????第三個問題, 我們在網絡上發送文件, 發送消息聊天的時候。 數據是怎么流動的呢?

現在我們有張三和李四兩個人, 兩個都登錄了qq,?并且兩個人還在聊天。

????????那么假如張三給李四發了一條消息。 首先, 張三從鍵盤上輸入, 然后輸入的內容進入到了存儲器之中進行緩存, 然后這些內容有傳送到了cpu之中進行計算, 然后返回到內存之中, 又從內存之中輸送到張三的顯卡之中。?李四的電腦上面的網卡接收到張三網卡中傳送過來的信息后, 將數據緩存到內存中, 然后放到cpu中進行計算放回內存, 最后從內存取出放到李四的顯示屏上。 這就是聊天時的數據流動。?

? ? ? ? 那么發送文件是類似的。 假如張三給李四發了一個文件, 首先, 張三的電腦要從磁盤里拿到這個文件放到存儲器中進行緩存, 然后內存中的文件放到cpu中進行解析和計算。 完成之后放回存儲區, 然后輸送到網卡中, 進而輸送到李四的網卡中。 那么李四的網卡接受到文件之后就將文件放到存儲區, 然后經過cpu的解析與計算放回存儲區, 再從存儲區輸送到李四電腦的磁盤中。 這就是傳送文件時的流動。?

綜上, 我們其實可以發現, 在馮諾依曼體系中的數據傳送, 歸根結底就是就是兩臺馮諾依曼依靠輸入輸出設備, 網卡等硬件,將數據進行傳送的過程。?

????????

--------------------------------------------------

以上, 就是本節全部內容, 下面是本節的筆記

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

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

相關文章

openfoam生成的非均勻固體Solid數據分析、VTK數據格式分析、以及paraview官方用戶指導文檔和使用方法

一、openfoam生成的非均勻固體Solid數據分析 對于Solid/dealii-output文件,固體的數據文件, # vtk DataFile Version 3.0 #This file was generated by the deal.II library on 2024/7/10 at 9:46:15 ASCII DATASET UNSTRUCTURED_GRIDPOINTS 108000 do…

go1.21版本后,文件加載順序

總結 顯式引入: 同一個文件顯式引入一個包,按照頁面代碼執行的函數的先后,來執行該函數的文件,不按照包內的文件首字母順序 隱式引入: 同一個文件內隱式引入一個包,包內的多個文件會按照文件首字母順序執行…

移動端 圖片優化

項目場景: 在移動端開發,加載圖片并保持圖片不變形是非常重要的,也是一名前端必備和經常打交道的內容。以下是自己對圖片加載是變形的處理? 問題和解決方法 移動端加載圖片,不同的手機,圖片的展示不一樣&…

二分查找理論及例題

二分查找(Binary Search)是一種常用的搜索算法,用于在有序數組中快速查找目標值。以下是二分查找的詳細理論知識、優缺點以及適用場景: 理論知識: 基本原理:二分查找通過比較目標值與數組的中間元素&#x…

Qt(五)網絡編程

文章目錄 一、QTcpServer類(一)使用(二)示例1. 服務端2. 客戶端: 二、 一、QTcpServer類 QTcpServer類用于監聽客戶端的連接,每當有一個客戶端連接到服務端,都會生成一個新的QTcpSocket對象與客…

【每日一練】python面對對象的基本概念和用法(附實例)

面向對象編程(OOP)是一種程序設計方法,其基本概念包括對象、類、繼承和封裝。 對象:對象是系統中的基本單位,用于描述客觀事物。每個對象包含一組屬性和對這些屬性進行操作的方法。對象是類的一個實例,具有…

Spark SQL----NULL語義

Spark SQL----NULL語義 一、比較運算符中的空處理二、邏輯運算符中的空處理三、表達式中的空處理3.1 null-intolerant表達式中的空處理3.2 可以處理空值操作數的空處理表達式3.3 內置聚合表達式中的空處理 四、WHERE、HAVING和JOIN子句中的條件表達式的空處理五、在GROUP BY和D…

Camera Raw:直方圖

Camera Raw 的直方圖 Histogram面板不僅提供了照片亮度和色彩分布信息,還具備多項實用功能,輔助評估和調整照片。 ◆ ◆ ◆ 直方圖的構成 直方圖是一個二維坐標系統,橫坐標表示不同程度的像素亮度,從左到右通常對應的是 0 ~ 255…

升級springboot3.2集成shiro的問題

由于之前的springcloud相關版本太久,很多新功能無法使用,所以打算抽時間把代碼的版本做一下升級。使用最新版的springboot3.2,發現shiro過濾器無效。經檢查發現原因: springboot3.x使用的是JDK17,從jdk8以后javax.serv…

視頻智能解析:Transformer模型在視頻理解的突破性應用

視頻智能解析:Transformer模型在視頻理解的突破性應用 隨著人工智能技術的飛速發展,視頻理解已成為計算機視覺領域的一個熱點問題。Transformer模型,以其在處理序列數據方面的強大能力,已經被廣泛應用于視頻理解任務中。本文將深…

Github 2024-07-11 Go開源項目日報 Top10

根據Github Trendings的統計,今日(2024-07-11統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Go項目10Solidity項目1Python項目1frp: 一個開源的快速反向代理 創建周期:2946 天開發語言:Go協議類型:Apache License 2.0Star數量:75872 …

Spring的bean的生命周期——bean的創建與銷毀

1、生成類信息map 掃描包,用asm技術獲取類信息,打了ComponentScancomponentservice等注解的類會放入map。key是類名,value是beanDefinition類的基本信息 2、加載類 context.getBean("userService") 從類信息map中獲取beanDefin…

SSRF漏洞深入利用與防御方案繞過技巧

文章目錄 前言SSRF基礎利用1.1 http://內網資源訪問1.2 file:///讀取內網文件1.3 dict://探測內網端口 SSRF進階利用2.1 Gopher協議Post請求2.2 Gopher協議文件上傳2.3 GopherRedis->RCE2.4 JavaWeb中的適用性? SSRF防御繞過3.1 Url黑名單檢測的繞過3.2 Url白名單…

對controller層進行深入學習

目錄 1. controller層是干什么的?1.1 controller原理圖1.2 controller層為什么要存在?1.2.1 分離關注點1.2.2 響應HTTP請求1.2.3 數據處理與轉換1.2.4 錯誤處理與狀態管理1.2.5 流程控制1.2.6 依賴注入與測試 1.3 controller層的優點1.3.1 多端支持1.3.2…

Gin框架自定義路由

Gin框架是一個用Go語言(Golang)編寫的Web框架,它提供了靈活且高效的路由系統。在Gin框架中,自定義路由是一個基礎且重要的操作,它允許開發者定義應用程序如何處理不同的HTTP請求。以下是自定義路由的詳細步驟和方法&am…

Linux虛擬化大師:使用 KVM 和 QEMU 進行高級虛擬化管理

Linux 虛擬化大師:使用 KVM 和 QEMU 進行高級虛擬化管理 虛擬化技術是現代數據中心的核心技術之一,它可以將一臺物理服務器分割成多個虛擬機,從而提高資源利用率,降低成本,并增強系統的靈活性和可擴展性。KVM&#xf…

C++ | Leetcode C++題解之第225題用隊列實現棧

題目&#xff1a; 題解&#xff1a; class MyStack { public:queue<int> q;/** Initialize your data structure here. */MyStack() {}/** Push element x onto stack. */void push(int x) {int n q.size();q.push(x);for (int i 0; i < n; i) {q.push(q.front());…

C++ 【 Open3D 】 點云按高程進行賦色

一、 Open3D中根據點云的高程度信息為點云中的每個點附上顏色&#xff0c;并保存顏色渲染結果&#xff01; #include<iostream> #include<open3d/Open3D.h>using namespace std;int main() {//-------------------------------讀取點云--------------------------…

nasa數據集——1 度網格單元的全球月度土壤濕度統計數據

AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Averages V005 (AMSRE_AVRMO) at GES DISC GES DISC 的 AMSR-E/Aqua 第 3 級全球地表土壤水分月平均值 V005 (AMSRE_AVRMO) AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Standard Deviation V005 (…

優化 .NET Core 應用程序的安全性和性能以應對高負載

一. .NET Core 中的安全措施 1. 身份驗證和授權 實施強大的身份驗證和授權機制是保護應用程序資源的基礎。.NET Core 內置支持各種身份驗證方案&#xff0c;例如 JWT&#xff08;JSON Web 令牌&#xff09;、OAuth 和 OpenID Connect。通過配置身份驗證中間件并定義授權策略&…