【Linux】系統初識之馮諾依曼體系結構與操作系統

👀樊梓慕:個人主頁

?🎥個人專欄:《C語言》《數據結構》《藍橋杯試題》《LeetCode刷題筆記》《實訓項目》《C++》《Linux》

🌝每一個不曾起舞的日子,都是對生命的辜負


目錄

前言

1.馮諾依曼體系結構

2.操作系統(OS)

(1)用戶到操作系統再到底層是如何組織的?

(2)計算機是如何管理軟硬件資源的?


前言

本篇文章主要與大家說明硬件層面與軟件層面上計算機運行的一些機制。

  • 硬件上主要帶大家認識馮諾依曼體系結構
  • 軟件層面對應操作系統的相關概念

本篇文章也是為后面學習系統其他知識打基礎,有關系統的學習大家需要翻越三座大山:進程周邊、文件周邊以及線程周邊


歡迎大家📂收藏📂以便未來做題時可以快速找到思路,巧妙的方法可以事半功倍。

=========================================================================

GITEE相關代碼:🌟fanfei_c的倉庫🌟

=========================================================================


1.馮諾依曼體系結構

我們知道計算機的產生是為了解決人的問題,也就意味著計算機要有人機交互的功能,即輸入與輸出,人類發明計算機其實就如上面圖片所表達的意思一樣:人輸入一個數據,經過計算機的處理,讓我們得到一個結果數據,即輸出。?

計算機通過輸入設備得到數據,數據在計算機當中進行一系列的算術運算和邏輯運算后,并且經過控制(何時從輸入設備獲取數據,何時輸出數據到輸出設備等),最終通過輸出設備進行輸出。

算邏運算和控制的過程是由中央處理器完成的,也就是我們俗稱的CPU。

計算機的誕生是為了計算龐大的數據,但是對于數據的傳輸不同的存儲器又具備不同的效率,數據的傳輸過程,即拷貝的整體速度,是決定計算機效率的重要指標,在未提出馮諾依曼體系結構之前,我們往往需要造價高昂的寄存器來組成整個計算機,來達到高速運算的目的。

但是,現在的計算機我們發現早已進入千家萬戶,已然不是曾經的“奢侈品”,這一切就要歸功于馮諾依曼體系結構,如今的計算機大部分都遵守馮諾依曼體系結構。


馮諾依曼體系結構是如何降低成本的呢?

中央處理器顯然是需要高速計算的,所以中央處理器內部就是由各種寄存器構成,所以CPU的價格一般很高。

當然寄存器不僅存在于CPU中,其他設備中也可能存在寄存器。

來看下物理存儲金字塔:

可以總結為:

  • 靠近CPU的存儲單元(寄存器),效率高,造價貴,單體容量小;
  • 遠離CPU的存儲單元(服務器),效率低,造價低,單體容量大;?

輸入設備與輸出設備對于數據的處理很慢,如果直接與CPU相連,根據木桶效應,整個計算機的運行速度會被輸入輸出設備所拖累,那就不讓輸入輸出設備與CPU直接交互,馮諾依曼引入了內存的概念,在CPU與輸入輸出設備之間設計了一個存儲器,即內存。

內存有個特點就是,比輸入設備和輸出設備要快很多,但是比CPU又要慢。現在內存就處于慢設備和快設備之間,是一個不快也不慢的設備,能夠在該體系結構當中就起到一個緩沖的作用。

從此以后,CPU只能對內存進行讀寫,不能直接訪問外設。

外設要輸入或輸出數據時,也只能寫入內存或者從內存中讀取。


總結一下現在整個數據流動的過程

用戶輸入的數據先放到內存當中,CPU讀取數據的時候就直接從內存當中讀取,CPU處理完數據后又寫回內存當中,然后內存再將數據輸出到輸出設備當中,最后由輸出設備進行輸出顯示。


疑問:數據的流動過程中多了一個內存,不應該更慢了么?

局部性原理:根據統計學原理,當一個數據正在被訪問時,那么下一次有很大可能會訪問其周圍的數據。所以當CPU需要獲取某一行數據時,內存可以將該行數據之后的數據一同加載進來,而CPU處理數據和內存加載數據是可以同時進行的,這樣下次CPU就可以直接從內存當中獲取數據。

輸出數據的時候也一樣,CPU處理完數據后直接將數據放到內存當中,當輸出設備需要時再在內存當中獲取即可,這也就有了我們平常所說的緩沖區的概念。

例如,緩沖區滿了才將數據打印到屏幕上,使用fflush函數將緩沖區當中的數據直接輸出,都是將內存當中的數據直接拿到輸出設備當中進行顯示輸出。


2.操作系統(OS)

操作系統是進行軟硬件資源管理的軟件。

當我們開機時,計算機第一個加載的軟件就是操作系統。

我們可以將操作系統抽象理解為管理者。

那在現實生活中一個好的管理者必須具有如下素質:管理好下屬,服務好客戶。

映射到操作系統:

  • 對下管理好軟硬件資源
  • 對上提供良好(穩定、高效、安全)的運行環境

(1)用戶到操作系統再到底層是如何組織的?

首先我們從操作系統層向下研究:?

如圖,很顯然校長不會直接對你進行管理,一般在你和校長之間還有一層甚至幾層的次級管理者,比如輔導員。

那映射到計算機也是同樣的:

在操作系統與底層硬件之間存在著驅動程序,由驅動程序來控制硬件的一些操作,并且驅動程序一般都是由硬件的生產商提供,這樣在硬件的操作方式改變時,我們只需要對驅動程序進行相應的更改,而無需對操作系統進行重新設計。


然后我們向上研究:

在用戶與操作系統之間又存在怎樣的設計呢?

首先用戶一定是好人么,操作系統我們可以抽象為金庫,當用戶需要取錢時,我們可以讓用戶自己到金庫中取么,當然不能,群眾中有壞人怎么辦?

所以操作系統為了保護自己,隔絕用戶的危險操作,設計出了系統調用接口

但普通用戶怎么知道如何使用這些接口呢,因為要使用系統調用前提條件是你得對系統有一定了解。

所以在系統調用接口之上又構建出了一批庫,例如libc和libc++,我們可以稱之為用戶操作接口

實際上在語言級別上使用的各種庫,就是封裝了系統調用接口的,我們就是通過調用這些庫當中的各種函數(例如printf和scanf)進行各種程序的編寫。


(2)計算機是如何管理軟硬件資源的?

首先什么是管理?

校長管理你需要和你見面么?

答案當然是不需要,因為管理的本質不是對人進行管理,而是對信息的管理

描述

那你的信息如何用計算機語言來描述呢?

在C語言中,我們一般使用結構體。

在C++、JAVA這種面向對象的高級語言中,我們使用類和對象。

組織

那當學生數量很多的時候,校長就需要將這些學生用某種數據結構(STL容器)組織起來。

  • 所以管理我們可以總結為:先描述,再組織。?

所有的計算機語言都遵循這一規則。

那計算機是如何管理軟硬件資源的呢?

我相信大家肯定已經猜到了,一樣的道理,我們可以把軟硬件資源也描述為一個結構體或者類和對象,然后利用某種數據結構將他們組織起來,就在計算機層面上實現了對軟硬件資源的管理。


=========================================================================

如果你對該系列文章有興趣的話,歡迎持續關注博主動態,博主會持續輸出優質內容

🍎博主很需要大家的支持,你的支持是我創作的不竭動力🍎

🌟~ 點贊收藏+關注 ~🌟

=========================================================================

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

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

相關文章

Springboot項目實現簡單的文件服務器,實現文件上傳+圖片及文件回顯

文章目錄 寫在前面一、配置1、application.properties2、webMvc配置3、查看效果 二、文件上傳 寫在前面 平常工作中的項目,上傳的文件一般都會傳到對象存儲云服務中。當接手一個小項目,如何自己動手搭建一個文件服務器,實現圖片、文件的回顯…

一篇文章帶你了解并使用mybatis框架

mybatis簡介: MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO(P…

JavaScript中的發布訂閱和觀察者模式:如何優雅地處理事件和數據更新

?🌈個人主頁:前端青山 🔥系列專欄:JavaScript篇 🔖人終將被年少不可得之物困其一生 依舊青山,本期給大家帶來JavaScript篇專欄內容:JavaScript-訂閱觀察者模式 目錄 說說你對發布訂閱、觀察者模式的理解?…

用生命做事,無人能超越

今天看了《藝術人生——紅樓夢劇組20年再聚首》,然后搜索了一下里面的核心人物及其經歷。實話說,看完后我內心無法平靜,涌動著各種思緒。一是20多年前這群青澀演員的人生際遇,讓我感慨。很多人,用這樣的機會&#xff0…

‘ChatGLMTokenizer‘ object has no attribute ‘tokenizer‘解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

Linux系統---簡易伙伴系統

顧得泉:個人主頁 個人專欄:《Linux操作系統》 《C/C》 《LeedCode刷題》 鍵盤敲爛,年薪百萬! 一、題目要求 1.采用C語言實現 2.伙伴系統采用free_area[11]數組來組織。要求伙伴內存最小為一個頁面,頁面大小為4KB…

我在Vscode學OpenCV 圖像處理二(濾除噪聲干擾)

圖像處理二 濾除噪聲干擾三、噪聲3.1圖像噪聲3.2 濾波3.2.1均值濾波(1)錨點(2)中心點(下面第3小點會詳細解釋)(3)核的大小奇偶數的區別(1)舉例奇偶的例子&…

【工具使用-JFlash】如何使用Jflash擦除和讀取MCU內部指定扇區的數據

一,簡介 在調試的過程中,特別是在調試向MCU內部flash寫數據的時候,我們常常要擦除數據區的內容,而不想擦除程序取。那這種情況就需要擦除指定的扇區數據即可。本文介紹一種方法,可以擦除MCU內部Flash中指定扇區的數據…

六級高頻詞匯1

目錄 高頻詞匯 參考連接 高頻詞匯 1. alter v. 改變,改動,變更 2. burst vi. n. 突然發生,爆裂 3. dispose vi. 除掉;處置;解決;處理(of) 4. blast n. 爆炸;氣流 vi. 炸,炸掉 …

【win10用vim開發stm32】二、vimspector的單片機調試

▲ 我的vim配置倉庫: gitee,vim相關優先在gitee更新,博客vim專欄作為部分補充和使用說明 ▲ 本文提供vimspector調試的一個示例,和keil的調試功能比當然還是有很大差距,不過簡單的調試功能如單步、復位、運行這些都跑通了&#xf…

Unity打包到Webgl平臺以及遇到的問題

Unity打包到Webgl平臺以及遇到的問題 參考網站 Unity打包WebGL的全過程及在打包和使用過程中會遇到的問題(本地測試)-CSDN博客 unity打包到Webgl 并配置能正常運行 這里我用的是Unity2022.3.3f1c1版本 有兩種方法 1、配置本地web服務 2、安裝vsCode>添加插件LiveServe…

AI仿寫軟件大全,當然熱門的仿寫軟件

在創作過程中,往往需要大量的靈感和原創性,而AI仿寫軟件便提供了一種高效、智能的解決方案。本文旨在專心分享AI仿寫軟件有哪些,并為大家解析哪幾款好用的AI仿寫軟件。 AI仿寫的使用 隨著互聯網的快速發展,內容創作需求不斷增長&…

Rellax.js,一款超酷的 JavaScript 滾動效果庫

嗨,大家好,歡迎來到猿鎮,我是鎮長,lee。 又到了和大家見面的時間,今天和大家分享一款輕松實現視差滾動效果的 JavaScript 庫——Rellax.js。無需大量的配置,即可為你的網站增色不少。 什么是Rellax.js&am…

奧威亞教學視頻應用云平臺 VideoCover任意文件上傳漏洞復現

0x01 產品簡介 廣州市奧威亞電子科技有限公司教學視頻應用云平臺是一個專門為教育機構和個人教師設計的在線學習平臺。該平臺提供豐富的教學資源和功能,旨在提升教學效果和學習體驗。 0x02 漏洞概述 奧威亞教學視頻應用云平臺 VideoCover.aspx接口處存在任意文件上傳漏洞,未…

數字邏輯電路基礎-組合邏輯電路之4位先行進位加法器

文章目錄 一、問題描述二、verilog源碼三、仿真結果一、問題描述 前面介紹4位行波進位全加器(串行加法器)的原理及verilog實現,但是它是一種串行加法器,當位數多時,比如32位的二進制數相加,由于進位逐位從低位向高位傳遞,這會造成相當大的延遲。對于需要快速加法運算的…

shell基本知識

Linux 系統中 shell 的基本知識 1 什么是 shell Shell 是一種命令行解釋器,它為用戶提供了一個向 Linux 內核發送請求以便運行程序的界面系統級程序。用戶可以用 shell 來啟動、掛起、停止甚至是編寫一些程序。 2 Linux 啟動過程 Linux 系統的啟動過程可以概括為…

tomcat篇---第四篇

系列文章目錄 文章目錄 系列文章目錄前言一、為什么我們將tomcat稱為Web容器或者Servlet容器 ?二、tomcat是如何處理Http請求流程的?三、tomcat結構目錄有哪些?前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站,這…

【深度挖掘Java性能調優】「底層技術原理體系」深入挖掘和分析如何提升服務的性能以及執行效率(性能三大定律)

深入挖掘和分析如何提升服務的性能以及執行效率 前提介紹知識要點 性能概述教你看懂程序的性能案例介紹性能指標性能的參考指標性能瓶頸(木桶原理) 性能分析三大定律Amdahl定律計算公式參數解釋案例分析定律總結 Gustafson定律與Amdahl定律相對立Gustafs…

有理函數的積分

1.多項式相除法: 2.分子分母次數帶來的解題思路差異: 1.總體目的:降次 2.分子次數高于分母,采用多項式相除 3.分子次數等于分母,分離常數 4.最終形式:分子次數低分母次數高 3.不同形式的計算方法 4.按類拆…

51單片機數碼管的使用

IO的使用2–數碼管 本文主要涉及51單片機的數碼管的使用 文章目錄 IO的使用2--數碼管一、數碼管的定義與類型1.1 數碼管的原理圖二、 舉個栗子2.1 一個數碼管的底層函數2.2 調用上面的底層函數顯示具體數字 一、數碼管的定義與類型 數碼管是一種用于數字顯示的電子元件&#x…