Linux修煉之路之馮系結構,操作系統

目錄

一:馮諾依曼體系結構

?1.五大組件

2.存儲器存在的意義

3.幾個問題

二:操作系統

接下來的日子會順順利利,萬事勝意,生活明朗-----------林辭憂

一:馮諾依曼體系結構

我們當代的計算機的基本構成都是由馮諾依曼體系結構來進行構成計算機的基本單元,所以計算機就是由一個個的硬件組成的?

?1.五大組件

1.存儲器:具體指的是內存

2.輸入設備:指鼠標,鍵盤,攝像頭,話筒,磁盤,網卡等

3.輸出設備:指顯示器,播放器硬件,磁盤,網卡等

4.運算器:對我們的數據進行計算任務(算術運算,邏輯運算)

5.控制器:對我們的計算硬件流程進行一定的控制

輸入設備和輸出設備共同組成外部設備(外設),控制器和運算器組成cpu

對于五大組件,每個都是一個獨立的個體,因此對于計算機來說每個硬件單元都必須用線聯系起來

?對于這里的線就是總線,分為系統總線(cpu與內存之間相互交互的線)和IO總線(外設與內存之間相互交互的線)

2.存儲器存在的意義

1.對于在馮諾依曼體系結構中的數據的流向

數據先從輸入設備加載到存儲器中,,然后cpu從存儲器中讀取數據,經過cpu計算過后,再將數據再次寫入存儲器中,最后將數據從存儲器刷新到輸出設備

2.對于上述的過程,可能初識覺得過于復雜了,想直接將數據從輸入設備交到cpu中去執行計算,再將計算后的數據直接交到輸出設備,我們想如果直接這樣的話,豈不會簡單很多,省去存儲器這一中間介質的轉換,但事實上不會這樣做的,這是因為外設與cpu的存儲速度差距非常大,下面是計算機的存儲體系結構

這張圖可以看出存儲是分級的,而對于cpu的存儲速度是納秒級別的,內存是微秒級別的,外設則是毫秒級別的

所以根據木桶原理,如果cpu直接與外設相連的話,計算機整體的存儲效率就會以外設為主,這勢必會使計算機整體的存儲速度和效率變得低下

所以引入存儲器去適配cpu與外設之間的存儲速度差,這是計算機整體的存儲效率就以存儲器為主,比上述過程存儲速度和效率會提升很多

但這時我們也會想,有存儲器的參與,但相互之間的存儲速度和效率差仍然很大,并且是串聯的形式,似乎并沒有快多少,但其實不然,操作系統會將所有的數據先緩存到對應的內存中,等cpu執行完上一輪計算后,會直接從內存中讀取數據進行計算,在cpu讀取計算數據的過程中,操作系統會再次預先加載其他的數據,這樣計算機整體的存儲速度和效率是有很大提升的

3.幾個問題

1.對于一個程序在執行執行之前,必須要先加載到內存當中運行,這是為什么?

這是因為在程序中會有大量的數據要在cpu中進行計算,而cpu只會從內存中讀取數據,所以程序必須先加載到內存當中,這也是馮諾依曼體系結構所規定的

2.對于前面寫的進度條,默認顯示的數據,是可能會緩存起來的,那么在哪緩存呢?

當沒有強制刷新或者'\n'時,這是數據就會緩存到存儲器當中,所以存儲器就是一個硬件級別的緩存空間,并且在馮諾依曼體系結構中是處于核心地位的

對于現實中的每一臺設備都可以看作是一個馮諾依曼體系結構

二:操作系統

1.操作系統是一款做管理的軟件,管理的是相應的硬件和軟件

2.概念:任何計算機系統都包含一個基本的程序集合,稱為操作系統,廣義的操作系統是包括內核(進程管理,內存管理,文件管理,驅動管理)和其他程序(例如函數庫,shell外殼等),俠義上的操作系統主要指內核

3.設計操作系統的目的

操作系統會幫助用戶管理好下面的軟硬件資源,并且為用戶提供一個良好(安全,穩定,高效)的運行環境,總結起來就是操作系統通過管理好底層的軟硬件資源(手段),為用戶提供一個良好的運行環境(目的)

4.計算機的層狀體系結構

對于底層硬件是以馮諾依曼體系結構為基礎,把 硬件之間互相用總線連接起來的

所有的硬件要被軟件訪問的話,就得有它所匹配的驅動程序的參與,如果沒有的話,則訪問不了

用戶是不能直接訪問硬件的,而是要經過操作系統來完成訪問硬件的操作

在操作系統里面會有各種的數據,可是操作系統不相信任何用戶,所以用戶是不能直接訪問操作系統內部的數據的

于是操作系統為了保證自己的數據安全,也為了保證給用戶提供服務,操作系統是以接口的方式給用戶提供調用的入口,來獲取操作系統內部的數據。 對于這里的接口是用c來實現的,由操作系統來提供的自己內部的函數調用

所以所有訪問操作系統的行為,都只能通過系統調用來完成

5.關于操作系統是如何做管理的

首先從生活來說管理者和被管理者是不需要見面的,就像員工與老板是不需要見面的,那么在不見面的情況下,管理者是如何做管理的呢?? 其實管理者只要得到被管理者的管理信息,就可以在未來進行管理決策---------------管理的本質就是通過對數據的管理,達到對人的管理

那么既然管理者與被管理者是不見面的,那么管理者的管理信息是怎么得到的呢------通過執行者

比如在公司當中員工人數是龐大的,當要管理員工就要對員工的數據進行統計整理,一般的會整理為excel表格,在表格當中填入員工的相關數據(如姓名,年齡,入職時間,工資卡賬號,所屬部門,工號等),當要查詢某個員工的數據時,就得采用一個個遍歷的方式來查找

但這樣的話對于管理者去管理查詢數據的話,仍是很大的工作量,因此可以采用c語言結構的方式,將相關數據用結構體struct描述起來,將每個員工定義為一個struct結構體對象并用自己的數據進行初始化,但每個員工都是一個獨立的結構體對象,因此每個結構體對象當中應該還包括struct people* next的結構體指針,將每個結構體對象連接起來,形成一張員工的單鏈表,這就叫建模組織的過程? ? ? ?------------這種方法就叫做先描述再組織

因此對于管理者來說,只要管理好這張員工鏈表就可以,將對于員工的管理工作轉換為對這張單鏈表的增刪改查

所以在操作系統中,管理任何對象的操作都可以轉化為對某種數據結構的增刪改查

?對于在計算機層狀體系當中,操作系統和硬件并不直接見面,只需要操作系統能獲取到硬件的狀態數據就能夠進行管理的操作,但操作系統系統是不能直接獲取硬件的數據的,而是通過由驅動程序來獲取硬件的數據,再從驅動程序交到操作系統當中

詳細的來說就是,操作系統要管理不同的設備,包括內存,進程,文件和驅動,如操作系統要對硬件做管理,其實在操作系統內部就需要描述這一個個的硬件設備,對于每個硬件設備都使用同樣的struct結構體來描述,不同的設備填上不同的屬性值,然后給這個設備構建出相應的結構體對象,把每個構建的結構體對象用一種數據結構管理起來,當操作系統要檢測某個設備的狀態,做出相應的操作,就轉換為在操作系統內部對特定設備所維護的數據結構的增刪改查

5.計算機管理硬件

? 先用struct結構體描述起來,再用鏈表或者其他高效的數據結構組織起來

6.系統調用和庫函數

在開發角度。操作系統對外會表現為一個整體,但是會暴露自己的部分接口,供上層開發使用,這部分由操作系統提供的接口,就叫做系統調用

系統調用在使用上,功能比較基礎,對用戶的要求也比較高,所以有些開發者對部分系統調用進行了部分的封裝,從而形成了庫,有了庫,就很有利于更上層用戶或開發者進行開發

所以庫函數和系統調用屬于上下層的調用和被調用的關系

7.總結來說,在操作系統內部對被管理對象進行建模,形成對應的某種數據結構,對對象的管理就轉化為對某種數據結構的增刪改查

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

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

相關文章

Kubernetes 容器編排

應用程序部署演變 主要有三個演變: 傳統部署:互聯網早期,會直接將應用程序部署在物理機上 優點:簡單,不需要其它技術的參與 缺點:不能為應用程序定義資源使用邊界,很難合理地分配計算資源&…

【開源】多語言大型語言模型的革新:百億參數模型超越千億參數性能

大型人工智能模型,尤其是那些擁有千億參數的模型,因其出色的商業應用表現而受到市場的青睞。但是,直接通過API使用這些模型可能會帶來數據泄露的風險,尤其是當模型提供商如OpenAI等可能涉及數據隱私問題時。私有部署雖然是一個解決…

PY32F003+RTL8710(AT) 實現獲取天氣情況

一、RTL8710主要AT指令 1、ATSR:模塊重啟 2、ATSE1:開啟回顯 3、ATPW1:station模式 4、ATPNssid,password,,:連接到AP 5、ATPK1:設置自動接收 6、ATPC0,v1.yiketianqi.com,80:與網站建立TCP連接 7、ATPT125…

關于pytorch加載模型報錯問題

load_net[“params”] 報keyerror 加載模型后查看對應參數是什么 model2 torch.load(m1_path "xxx.pth") print(model1.keys())若輸出如下: 已經有相應參數不需要執行 load_net[“params”]若輸出如下 則需要load_net[“params”]

Linux-命令上

at是一次性的任務,crond是循環的定時任務 如果 cron.allow 文件存在,只有在文件中出現其登錄名稱的用戶可以使用 crontab 命令。root 用戶的登錄名必須出現在 cron.allow 文件中,如果這個文件存在的話。系統管理員可以明確的停止一個用戶&am…

3D 生成重建014-Bidiff使用二維和三維先驗的雙向擴散

3D 生成重建014-Bidiff使用二維和三維先驗的雙向擴散 文章目錄 0 論文工作1 論文方法2 效果 0 論文工作 大多數三維生成研究集中在將二維基礎模型向上投影到三維空間中,要么通過最小化二維評分蒸餾采樣(SDS)損失,要么通過對多視圖…

判斷變量是否為數組的幾種方法

1、isArray 方法 isArray() 方法用于判斷一個對象是否為數組。如果對象是數組返回 true,否則返回 false。 Array.isArray(arr); // true 1 2、對象原型 通過原型鏈判斷是否具有和數組同一原型鏈的頂端。 arr.__proto__ Array.prototype; // true 1 3、instanceof…

[數據結構] -- 雙向循環鏈表

🌈 個人主頁:白子寰 🔥 分類專欄:C打怪之路,python從入門到精通,數據結構,C語言,C語言題集👈 希望得到您的訂閱和支持~ 💡 堅持創作博文(平均質量分82)&#…

一文理清database/sql包的使用場景和宕機查詢流程

一文理清database/sql包你可能遇到的問題 那么database/sql包實現了什么功能呢?建立數據庫連接檢測連接是否能ping通通過連接進行具體的sql查詢查詢完將連接進行關閉當數據庫宕掉重啟后再次查詢 database/sql包創建的db連接 對于數據庫宕掉后重啟是否仍然有效&#…

AI繪畫工具:創意與技術的完美融合

隨著人工智能技術的飛速發展,我們見證了無數領域的革新與變革。其中,AI繪畫工具的出現,無疑為藝術界帶來了一股清新的風潮。這些工具以其獨特的魅力,吸引了無數藝術家和創意人士的目光,成為他們表達自我、探索未知的重…

Compose在xml中使用滑動沖突處理

一、背景 在現有Android項目中使用Compose可能存在滑動沖突問題,例如 SmartRefreshLayoutCoordinatorLayoutComposeView(ComposeView這里又是一個LazyColumn) 二、解決方案 官方介紹:https://developer.android.google.cn/develop/ui/compose/touch-inp…

huggingface 筆記:device_map

1 基本映射方法 設計設備映射時,可以讓Accelerate庫來處理設備映射的計算通過設置device_map為支持的選項之一("auto"、 "balanced"、 "balanced_low_0"、 "sequential");或者如果想更精…

golang的context和chan 的使用

1. context 作用 context包的context的接口,主要是控制協程執行上下文的時間,以及取消程序的執行,以及上下文中傳遞數據等作用,golang中耗時或者需要協同的操作都會見到context的身影。 context有幾個常用的方法 1.1 context.B…

用爬山算法解決離散的優化問題

爬山算法,也稱為梯度上升算法或局部搜索算法,是一種簡單有效的優化算法,常用于解決連續或離散的優化問題。爬山算法的基本思想是從一個隨機的初始點開始,通過迭代地向局部最優的方向移動,逐步逼近全局最優解。 爬山算…

git管理Codeup云效平臺

HTTPS方式實現Git命令 1.進入項目路徑,如 cd demo,與此同時,在Codeup平臺創建一個空倉庫repo,獲取空倉庫的https協議地址,例如 https://codeup.aliyun.com/xxxx/xxxx/xxx.git。 2.在demo項目下執行 git init命令初始化…

從反向傳播(BP)到BPTT:詳細數學推導【原理理解】

從反向傳播到BPTT:詳細推導與問題解析 在本文中,我們將從反向傳播算法開始,詳細推導出反向傳播通過時間(Backpropagation Through Time, BPTT)算法。重點討論BPTT中的梯度消失和梯度爆炸問題,并解釋如何解…

采用LoRA方法微調llama3大語言模型

文章目錄 前言一、Llama3模型簡介1.下載llama3源碼到linux服務器2.安裝依賴3.測試預訓練模型Meta-Llama-3-8B4.測試指令微調模型Meta-Llama3-8B-Instruct5.小結 二、LoRA微調Llama31.引入庫2.編寫配置文件3.LoRA訓練的產物 三、測試新模型效果1.編寫配置文件2.運行配置文件&…

QT教程-一,初識QT

目錄 一,QT是什么?能夠使用它做什么? 二,Qt 能夠使用的語言 三,Qt主要用于什么領域? 四,Qt開發的軟件 一,QT是什么?能夠使用它做什么? Qt是一個跨平臺的 C 開發庫,主…

全球最高點贊記錄,世界點贊第一名是誰?世界點贊第一人名字的由來

世界點贊第一人名字的由來: 起源與概念提出: 二十一世紀東方偉大的思想家哲學家教育家顏廷利教授,一位在中國21世紀早期便以其非凡才華和創新精神著稱的學者,早在互聯網尚未普及的20世紀90年代,就已經提出了“點贊”的…

算法提高之最大數

算法提高之最大數 核心思想&#xff1a;線段樹 添加數 看作原本的數組有數(0) 現在將他修改成另一個值 詢問后l個數的最大值query函數具體實現 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 200010;typed…