【Linux進程】馮·諾依曼體系結構以及操作系統的深入理解


📙 作者簡介 :RO-BERRY
📗 學習方向:致力于C、C++、數據結構、TCP/IP、數據庫等等一系列知識
📒 日后方向 : 偏向于CPP開發以及大數據方向,歡迎各位關注,謝謝各位的支持


目錄

  • 1.馮·諾依曼體系結構
    • 特點
    • 組成剖析
    • 為什么要有內存?
  • 2.操作系統
    • 為什么要有操作系統?


1.馮·諾依曼體系結構

馮·諾依曼體系結構,也被稱為普林斯頓結構,是一種將程序指令存儲器和數據存儲器合并在一起的存儲器結構。在這種結構中,程序指令和數據在內存中是沒有區別的,它們都是內存中的數據。當EIP指針指向哪CPU就加載那段內存中的數據,如果是不正確的指令格式,CPU就會發生錯誤中斷。在現在CPU的保護模式中,每個內存段都有其描述符,這個描述符記錄著這個內存段的訪問權限(可讀,可寫,可執行)。這就變相的指定了哪些內存中存儲的是指令哪些是數據。指令和數據都可以送到運算器進行運算,即由指令組成的程序是可以修改的。

特點

馮·諾依曼體系結構還包括以下特點:

  1. 存儲器是按地址訪問的線性編址的一維結構,每個單元的位數是固定的。
  2. 指令由操作碼和地址組成。操作碼指明本指令的操作類型,地址碼指明操作數和地址。操作數本身無數據類型的標志,它的數據類型由操作碼確定。
  3. 通過執行指令直接發出控制信號控制計算機的操作。指令在存儲器中按其執行順序存放,由指令計數器指明要執行的指令所在的單元地址。指令計數器只有一個,一般按順序遞增,但執行順序可按運算結果或當時的外界條件而改變。
  4. 以運算器為中心,I/O設備與存儲器間的數據傳送都要經過運算器。
  5. 數據以二進制表示。馮·諾依曼提出的計算機制造的三個基本原則,即采用二進制邏輯、程序存儲執行以及計算機由五個部分組成(運算器、控制器、存儲器、輸入設備、輸出設備),這套理論被稱為馮·諾依曼體系結構。

組成剖析

在這里插入圖片描述

cpu:運算器&&控制器
輸入設備:話筒、攝像頭、鍵盤、鼠標、磁盤等
輸出設備:聲卡、顯卡網卡、磁盤、顯示器、打印機等
存儲器:內存—掉電易失

手機制造商們把CPU、內存、網絡通信,乃至攝像頭芯片,都封裝到一個芯片,然后再嵌入到手機主板上,即SoC,System on a Chip(系統芯片)。但無論是PC/服務器/手機都遵循馮·諾依曼體系結構(Von Neumann architecture),也叫存儲程序計算機,意味著“可編程”、“存儲”計算機。

計算機由各種門電路組成完成計算程序。一旦需要修改功能,就要重新組裝電路。這樣的話,計算機就是“不可編程”的,因為程序在計算機硬件層面是“寫死”的。最常見的就是老式計算器,電路板設好了加減乘除,做不了任何計算邏輯固定之外的事情。

再看“存儲”計算機。程序存儲在計算機內存,可通過加載不同程序解決不同問題。

不能存儲程序的計算機
早年“Plugboard”這種插線板計算機,在板子上不同的插頭或者接口的位置插入線路實現不同功能。這樣的計算機“可編程”,但編寫好的程序不能存儲下來供下一次加載使用,不得不每次要用到和當前不同的“程序”的時候,重新插板子,重新“編程”。

為了效率,有了“存儲程序計算機”。馮基于在秘密開發的EDVAC寫了一篇報告First Draft of a Report on the EDVAC,描述了一臺計算機什么樣。

  1. 包含處理器單元(Processing Unit):

算術邏輯單元(Arithmetic Logic Unit,ALU)
處理器寄存器(Processor Register)
完成各種算術和邏輯運算。

因為它能夠完成各種數據的處理或者計算工作,因此也有人把這個叫作數據通路(Datapath)或者運算器。

  1. 包含控制器單元(Control Unit/CU):

指令寄存器(Instruction Reigster)
程序計數器(Program Counter)
控制程序的流程,通常就是不同條件下的分支和跳轉。
算術邏輯單元和控制器單元組成CPU。

關于馮諾依曼,必須強調幾點:

這里的存儲器指的是內存
不考慮緩存情況,這里的CPU能且只能對內存進行讀寫,不能訪問外設(輸入或輸出設備)
外設(輸入或輸出設備)要輸入或者輸出數據,也只能寫入內存或者從內存中讀取。
一句話,所有設備都只能直接和內存打交道

為什么要有內存?

內存,也稱為內存儲器,是計算機系統中用于暫時存放CPU中的運算數據以及與硬盤等外部存儲器交換的數據的硬件組件。內存的存在主要有以下幾個原因:

  1. 速度匹配:CPU的速度非常快,通常以GHz為單位,而硬盤的傳輸速度相對較慢,通常不到200MB/s。內存的速度介于CPU緩存和硬盤之間,能夠快速地與CPU交換數據,從而提高系統的整體性能。
  2. 容量擴展:CPU的緩存空間有限,無法存儲大量的數據。內存提供了更大的存儲容量,使得操作系統和應用程序能夠臨時存儲更多的數據,以便快速地與CPU交換,從而提高系統的運行效率。
  3. 數據管理:內存中存儲的數據包括程序的全局變量、局部變量等,這些數據對程序的運行至關重要。內存管理是編程中的一個重要話題,它涉及到數據的組織、存儲和處理,對于程序的正確運行至關重要。
  4. 系統穩定性:內存的運行也決定了計算機的穩定運行。如果內存不足,CPU需要從硬盤中讀取數據,這會導致系統卡頓,甚至可能出現黑屏或游戲跳出的情況。
    綜上所述,內存的存在是為了解決CPU與外部存儲器之間速度和容量的矛盾,提高系統的運行效率和穩定性。

2.操作系統

計算機是一臺機器,它按照用戶的要求接收信息、存儲數據、處理數據,然后再將處理結果輸出(文字、圖片、音頻、視頻等)。計算機由硬件和軟件組成:

硬件是計算機賴以工作的實體,包括顯示器、鍵盤、鼠標、硬盤、CPU、主板等;
軟件會按照用戶的要求協調整臺計算機的工作,比如 Windows、Linux、Mac OS、Android 等操作系統,以及 Office、QQ、迅雷、微信等應用程序。

操作系統(Operating System,OS)是軟件的一部分,它是硬件基礎上的第一層軟件,是硬件和其它軟件溝通的橋梁(或者說接口、中間人、中介等)。

操作系統會控制其他程序運行,管理系統資源,提供最基本的計算功能,如管理及配置內存、決定系統資源供需的優先次序等,同時還提供一些基本的服務程序,例如:

  1. 文件系統
    提供計算機存儲信息的結構,信息存儲在文件中,文件主要存儲在計算機的內部硬盤里,在目錄的分層結構中組織文件。文件系統為操作系統提供了組織管理數據的方式。
  2. 設備驅動程序
    提供連接計算機的每個硬件設備的接口,設備驅動器使程序能夠寫入設備,而不需要了解執行每個硬件的細節。簡單來說,就是讓你能吃到雞蛋,但不用養一只雞。
  3. 用戶接口
    操作系統需要為用戶提供一種運行程序和訪問文件系統的方法。如常用的 Windows 圖形界面,可以理解為一種用戶與操作系統交互的方式;智能手機的 Android 或 iOS 系統,也是一種操作系統的交互方式。
  4. 系統服務程序
    當計算機啟動時,會自啟動許多系統服務程序,執行安裝文件系統、啟動網絡服務、運行預定任務等操作。

打個比方,操作系統就好像是一個政府,其它軟件都會被它管控;操作系統在給其他軟件提供各種便利的同時,還會約束其他軟件不能為所欲為。
目前流行的服務器和 PC 端操作系統有 Linux、Windows、UNIX 等,手機操作系統有 Android、iOS、Windows Phone(簡稱 WP),嵌入式操作系統有 Windows CE、PalmOS、eCos、uClinux 等。

我們宏觀地看待從用戶到底層硬件的交互如下圖
在這里插入圖片描述

為什么要有操作系統?

操作系統在計算機系統中扮演著至關重要的角色。它不僅管理著計算機硬件資源的分配和調度,而且為上層應用軟件提供了方便的接口,確保了計算機系統的安全和穩定。具體來說:

  1. 資源管理:操作系統負責協調計算機的各個資源,確保程序能夠有效地使用硬件資源,同時避免資源沖突和資源浪費。
  2. 接口提供:操作系統提供了一系列的底層接口和上層標準,使得不同硬件平臺上的軟件能夠互通,減少了軟件開發者的工作量,因為它們只需關注操作系統的標準接口。
  3. 硬件封裝:操作系統向下封裝了硬件的細節,向上提供給用戶和應用程序一個簡潔、易于使用的接口,使得用戶和應用程序員無需了解復雜的硬件細節。
  4. .安全與穩定:操作系統通過防火墻、監測程序和補丁等方式,保護計算機免受惡意程序和電腦病毒的侵害,確保了系統的運行穩定。
  5. 商業考量:操作系統通常由商業公司提供,這些公司可能會通過操作系統提供增值服務或進行商業變現,如蘋果的App Store和微軟的Windows Store。
    綜上所述,操作系統的存在是為了簡化用戶和應用程序員的操作,提高計算機系統的資源利用率,確保系統的安全性和穩定性,以及為商業公司提供盈利的機會。

那么操作系統如何對它們進行管理呢?首先,對一個事務進行管理,我們首先要對它進行建模,即先描述,再組織;先描述,就要先對它的屬性進行分析,重要屬性的分析就代表這個事務;所以,操作系統要管理某個資源,就要先對它描述,即分析它的屬性,對它建模,再進行組織,組織后進行管理。假設操作系統要管理某一個資源,可以將它描述成一個鏈表,那么就可以看成操作系統對這個鏈表進行資源管理。

總結,計算機管理硬件/操作系統管理資源

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

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

相關文章

kafka和ZK的關系

zk相當于是kafka的一個基礎設施 Kafka是一種高吞吐量、可擴展的分布式發布訂閱消息系統,ZooKeeper是一個分布式協調服務,用于管理和協調分布式系統中的各種資源 Zookeeper:管理broker,consumer 創建broker后,向zk注冊…

適用于生物行業的樣本管理系統

在生物樣本管理系統的應用中,我們首先需要了解生物樣本的特點和要求。生物樣本具有多樣性和易變性,需要被妥善保存和跟蹤,以確保其質量和可用性。 因此,一個有效的生物樣本管理系統需要具備以下特點: 全面性&#xff1…

Spring Event的原理以及缺陷

原理:Spring 事件監聽機制及原理分析 - Admol - 博客園 (cnblogs.com) 使用bug:Spring Event 別瞎用!從我司的悲劇中,我總結了6 條最佳實踐!-騰訊云開發者社區-騰訊云 (tencent.com)

2024最新任推邦邀請碼是什么

任推邦是一款非常受歡迎的推廣APP,任推邦邀請碼是【222222】獲得現金獎勵和提成獎勵用戶可以通過邀請好友加入來獲取收益。2024最新的任推邦邀請碼是【222222】,小編已經給大家整理好了他趣許多的邀請碼,想要領取獎勵的小伙伴快來和小編一起了…

聚合函數()不要隨意加空格

報錯:1630 - FUNCTION link.SUM does not exist. Check the Function Name Parsing and Resolution section in the Reference Manual 解決方法:count、avg、sum等函數后緊隨的()之間不能加空格,去掉這個空格即可,因為count()、a…

js 監聽元素是否出現在可視區域--IntersectionObserver

觀察者模式監聽判斷dom元素是否在可視區域內 本項目是使用vue3的寫法。 1.IntersectionObserver IntersectionObserver可以用來自動監聽元素是否進入了設備的可視區域之內,而不需要頻繁的計算來做這個判斷。由于可見(visible)的本質是&…

融中穿刺路徑角度評估的C++技術實現

消融模型的三維渲染 我們以肝部為例,通常肝部在做消融手術規劃時有幾個步驟。 一三維重建: 對器官進行圖像分割; 對腫瘤的原發區域GTV進行勾畫。 二穿刺路徑的規劃: 路徑規劃當中有幾個約束:穿刺深度、危及器官的…

OpenAI推出首個AI視頻模型Sora:重塑視頻創作與體驗

鏈接:華為OD機考原題附代碼 Sora - 探索AI視頻模型的無限可能 隨著人工智能技術的飛速發展,AI視頻模型已成為科技領域的新熱點。而在這個浪潮中,OpenAI推出的首個AI視頻模型Sora,以其卓越的性能和前瞻性的技術,引領著…

SpringBoot快速整合Thymeleaf實現文件上傳案例

SpringBoot快速整合Thymeleaf實現文件上傳案例 文章目錄 SpringBoot快速整合Thymeleaf實現文件上傳案例1. 創建工程2. pom.xml文件2. application.yml 配置3. 前端fileupload.html4. 后端Controller 本案例環境: SpringBoot: 2.3.0.RELEASEJDK: 1.8前端模板: thymel…

【PHP進階】Redis批處理緩存

大家好,我是程序員若風,又到了技術分享時刻。 概要 在某些場景下,我們需要頻繁的使用到緩存,比如需要獲取多個key值,如果采用單個拿緩存的辦法,會造成網絡IO極大的浪費,所以我們需要用戶Redis…

Leetcode3036. 匹配模式數組的子數組數目 II

Every day a Leetcode 題目來源:3036. 匹配模式數組的子數組數目 II 解法1:KMP 設數組 nums 的長度為 m,數組 pattern 的長度為 n。 遍歷數組 nums 的每個長度是 n1 的子數組并計算子數組的模式,然后與數組 pattern 比較&…

JavaScript 設計模式之觀察者模式

觀察者模式 觀察者模式又被稱為發布-訂閱模式,使用一個對象來收集訂閱者,在發布時遍歷所有訂閱者,然后將信息傳遞給訂閱者,可以這樣來實現一個簡單的模式 const Observable (function () {let __messages {}return {register:…

win系統下安裝mysql5.7并配置環境變量、設置root用戶和服務啟動的詳細操作教程

本篇文章主要講解:win系統下安裝mysql5.7并配置環境變量、設置root用戶和服務啟動的詳細操作教程 日期:2024年2月22日 作者:任聰聰 一、mysql5.7版本的下載 官方下載地址:https://downloads.mysql.com/archives/community/ 步驟…

服務器生信環境配置腳本

服務器生信環境配置腳本的重要性在于它為生物信息學的數據分析提供了一個統一和標準化的計算環境。通過自動化的配置腳本,可以快速地在服務器上部署和設置生物信息學的軟件和依賴庫,確保分析的可重復性和準確性。這樣,生物信息學家和研究人員…

【鴻蒙 HarmonyOS 4.0】狀態管理

一、介紹 資料來自官網:文檔中心 在聲明式UI編程框架中,UI是程序狀態的運行結果,用戶構建了一個UI模型,其中應用的運行時的狀態是參數。當參數改變時,UI作為返回結果,也將進行對應的改變。這些運行時的狀…

Stable Diffusion 模型的概念、類型、下載、安裝、使用

本文收錄于《AI繪畫從入門到精通》專欄,專欄總目錄:點這里。 大家好,我是水滴~~ 我們在《Stable Diffusion WebUI 界面介紹》 時,第一個就講到了 Stable Diffusion 模型,那么這個模型是什么?該從哪兒下載&…

多輸入分類|GWO-CNN-LSTM|灰狼算法優化的卷積-長短期神經網絡分類預測(Matlab)

目錄 一、程序及算法內容介紹: 基本內容: 亮點與優勢: 二、實際運行效果: 三、算法介紹: 灰狼優化算法: 卷積神經網絡-長短期記憶網絡: 四、完整程序下載: 一、程序及算法內容…

【EI會議征稿通知】第五屆人工智能與機電自動化國際學術會議(AIEA 2024)

第五屆人工智能與機電自動化國際學術會議(AIEA 2024) 2024 5th International Conference on Artificial Intelligence and Electromechanical Automation 優秀評選已啟動,設置優秀論文、優秀報告及優秀海報多個獎項,豐厚獎金等…

【Java程序設計】【C00280】基于Springboot的校友社交系統(有論文)

基于Springboot的校友社交系統(有論文) 項目簡介項目簡介項目獲取開發環境項目技術運行截圖 項目簡介 項目簡介 這是一個基于Springboot的校友社交系統 本系統分為系統功能模塊、管理員功能模塊以及用戶功能模塊。 系統功能模塊:在系統首頁…

數據結構與算法——排序算法

目錄 文章目錄 前言 一.排序的基本概念 1.什么是就地排序 2.什么是內部排序和外部排序 3.什么是穩定排序 4.判定一個排序算法的是穩定的 二.插入排序算法 1.直接插入排序 1.1基本思想 1.2復雜度 1.3穩定性 1.4代碼演示 2.折半插入排序 2.1基本思想 2.2性能 3.…