Linux基礎——進程初識(一)

1. 硬件

①馮諾依曼體系

我們常見的計算機,如筆記本。我們不常見的計算機,如服務器,大部分都遵守馮諾依曼體系。其詳細結構如下圖所示

在這里有幾點要說明

1. 這里的儲存器實際上指的是內存

2. 輸入設備與輸出設備都屬于外設

常見的輸入設備如:鼠標,鍵盤,攝像頭,話筒,磁盤,網卡等

常見的輸出設備如:顯示器,播放器硬件,磁盤,網卡

3. 運算器與控制器都屬于中央控制器(即CPU)

運算器的功能是對我們的數據進行計算任務(算數運算,邏輯運算)

控制器的功能是對我們的計算硬件流程進行一定的控制

值得注意的是

1. 在不考慮緩存情況時,這里的CPU能且只能對內存進行讀寫,不能訪問外設(輸入或輸出設備)

2. 在馮諾依曼體系中每一個部件都是一個獨立個體

3.?外設(輸入或輸出設備)要輸入或者輸出數據,也只能寫入內存或者從內存中讀取

根據上面的情況,我們可以總結出一個結論:所有設備都只能直接和內存打交道?

在了解了馮諾依曼體系后,我們也可以解釋一些之前無法解釋的問題,如:

為什么一個程序要運行,必須要先加載到內存中?

答:因為馮諾依曼體系結構規定了必須這樣做。

在實現進度條小程序時,我們知道默認緩存的數據被儲存了起來,那么這些數據存儲在哪?

答:儲存器中。

②實際舉例

在這里我們舉一個實際例子

我們在使用QQ向朋友發送消息時,數據是如何流動的?

如果發送的是文件時,那么自己的輸入設備和朋友的輸出設備都應該是磁盤,朋友在收到文件后,采取的措施是將文件保存到本地磁盤中。?

2. 軟件

①什么是操作系統

任何計算機系統都包含一個基本的程序集合,稱為操作系統(OS)(operating?system)

內核(進程管理,內存管理,文件管理,驅動管理)
其他程序(例如函數庫,shell程序等等)

簡單來說,操作系統是一個對軟硬件資源進行管理的軟件。

計算機中有如上圖所示的層狀結構,在其中我們可以看到操作系統通過直接管理驅動程序來實現間接管理底層的硬件,在管理好軟硬件資源之后,操作系統為了保證自己數據安全,也為了保證給用戶能夠提供服務,操作系統以接口的方式給用戶提供調用的入口來獲取操作系統內部的數據,這就是系統調用,它是操作系統提供的用C語言實現的,自己內部的函數調用。所有訪問操作系統的行為,都只能通過系統調用來完成。那么操作系統存在的意義是什么呢?為什么我們需要操作系統呢?根據上面對層狀結構的解釋,我們可以有以下理解

1.操作系統幫助用戶,管理好下面的軟硬件資源
2.為了給用戶提供一個良好(穩定,高效,安全)的運行環境

即:操作系統通過管理好底層的軟硬件資源(手段),為用戶提供一個良好的執行環境(目的)?

在C語言中我們經常會調用系統庫,那么這個系統庫與系統調用又有何關系和

②操作系統如何進行管理

那么在知道了操作系統是什么之后,它是如何對軟硬件進行管理的呢?

首先我們要知道一般管理資源都分為決策者,執行者與被管理者,舉幾個例子,在大學中,校長就相當于決策者,輔導員是執行者,各個學生就是被管理者,在公司中,老板就相當于決策者,小組長是執行者,員工就是被管理者。在這些例子中,我們可以發現,管理者和被管理者是不需要見面的,既然如此,那么管理者在不見被管理者的情況下,如何做好的管理呢?——其實,只要能夠得到管理信息,就可以進行管理決策,由此我們也可以看到管理的本質——通過對數據的管理,達到對人的管理。既然管理者和被管理者面都不見,那怎么拿到對應的數據呢?——通過執行者。

管理者在決定好要收集到被管理者的什么數據之后,如:校長需要收集到學生的學院、專業、班級、學號、姓名、性別、身高、體重、籍貫、電話等數據,通知輔導員收集數據之后,再將其反饋到校長處,校長為了能夠更好的管理數據決定描述每一個學生的具體情況,將每個學生視作一個結構體的具體對象,對學生的描述可以如下圖所示

在描述好之后,為了將它們互相聯系起來,可以向Student結構體中添加struct Student* next來銜接下一個學生,這之后每有一個學生便實例化一個對象,并使它們鏈接起來,這樣就將對學生數據的管理轉換成了對鏈表的管理,這種方式就是操作系統管理資源的方式,即:在操作系統中,管理任何對象,最終都可以轉化成為對某種數據結構的增刪查改,這種管理資源的方式我們將其稱為“先描述,后組織”,即對于任何一個要管理的資源,都要先對其進行描寫(有什么屬性),這之后再使用一種數據結構來管理它們

3. 進程

①什么是進程

對于一個已經加載到內存中的程序,叫做進程,通俗一點來說,正在進行的程序,我們將其稱之為進程。

②進程的理解

因為操作系統是需要同時運行多個進程的,那么操作系統要如何管理進程呢?這在之前我們就提到過——先描述,后組織。對于任意一個進程,在磁盤將其加載到內存時,都是加載的代碼與數據進去,而操作系統想要管理它,就要先對一個進程作出相應的描述,為了描述這樣一個進程,操作系統有自己的描述進程的結構體對象,即——PCB(process control block),它是一個進程屬性的集合體,在這個結構體中包含了許多的進程屬性,然后操作系統會根據自己的PCB類型,為傳輸進來的代碼和數據創建相應的PCB對象。

操作系統為了管理這些進程,會將它們轉換為單鏈表方便管理。那么,我們就可以認為進程=操作系統對應的PCB+相應的代碼與數據。

③Linux中的進程

在了解了PCB后,Linux中的進程又是什么樣的呢?在LInux中,操作系統所使用的PCB為task_struct,其包含進程的所有屬性,且LInux是使用雙鏈表的形式來管理進程的。下面就讓我們來創建一個進程,其代碼如下

int main()
{while (1){printf("這是一個進程\n");sleep(1);}return 0;
}

然后我們可以使用

ps ajx | grep code1

來查看我們想要查看的進程屬性,運行有

在這里我們能夠看到除了我們想看到的自己的進程外還有一個auto code1進程,我們要想只顯示自己的進程可以添加一個過濾命令,即

ps ajx | grep code1 | grep -v grep

此外為了方便我們更好的了解進程屬性可以打印一個表頭出來,即

ps ajx | head -1 && ps ajx | grep code1 | grep -v grep

運行效果如下

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

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

相關文章

實現SQL server數據庫完整性

1.創建一個數據庫名為“erp” 主數據文件:初始容量為5MB,最大容量為50MB,遞增量為1MB,其余參數自設。事務日志文件:初始容量為3MB,最大容量為20MB,遞增量為10%,其余參數自設。 創建…

與脾氣不太好的領導,相處原則和相處技巧分享

前言 工作上我看到有的人擅長和各種類型領導相處,而有的人則和領導相處不愉快,不懂靈活變通的人 和領導相處出現沖突時則是當面懟領導,不給領導面子,之后被領導打壓,甚至有的人和領導相處 不和離開等等,…

多個HTML屬性

在HTML中&#xff0c;屬性用于提供有關HTML元素的附加信息。在這篇文章中你將學習多個HTML屬性&#xff0c;它們可以增強網站的視覺吸引力。 接下來開始吧&#xff01;&#x1f680; Accept 屬性 您可以將accept屬性與<input>元素&#xff08;僅用于文件類型&#xff…

SPECPOWER2008

一、前言# 1、軟件說明# 官網&#xff1a;SERT套件用戶指南2.0.5SPECpower介紹SPEC基準及工具SPECpower_ssj2008測試結果SPECpower_ssj2008-Design_ccs - SPEC# SPEC&#xff08;the Standard Performance Evaluation Corporation&#xff09;是一個由計算機硬件廠商、軟件公…

jsp頁面通過class或者id獲取a標簽上的屬性的值

要通過class和id兩種方式獲取a標簽上的某個屬性的值&#xff0c;或者給其賦值&#xff0c;可以使用JavaScript。以下是兩種方法的示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&q…

[ 藍橋杯Web真題 ]-Markdown 文檔解析

目錄 介紹 準備 目標 規定 思路 補充知識 解法參考 介紹 Markdown 因為其簡潔的語法大受歡迎&#xff0c;已經成為大家寫博客或文檔時必備的技能點&#xff0c;眾多博客平臺都提倡用戶使用 Markdown 語法進行文章書寫&#xff0c;然后再發布后&#xff0c;實時的將其轉化…

【Element-ui】Icon 圖標與Button 按鈕

文章目錄 前言一、Icon 圖標1.1 作用1.2 使用方法1.3 圖標集合 二、Button 按鈕2.1 基礎用法2.2 禁用狀態2.3 文字按鈕2.4 圖標按鈕2.5 按鈕組2.6 加載中2.7 不同尺寸 總結 前言 在前端開發中&#xff0c;界面的設計和交互是至關重要的一部分。一個直觀、易用的界面往往離不開…

AcGeLinearEnt2d::getPerpLine函數

AcGeLinearEnt2d::getPerpLine函數是AutoCAD圖形庫&#xff08;AutoCAD Geometry Library&#xff0c;即AcGe&#xff09;中的一個成員函數&#xff0c;用于獲取一個通過指定點且垂直于當前直線或線性實體的無限長直線。 函數的參數和返回值說明如下&#xff1a; const AcGeP…

js寫旋轉的時鐘動態

目錄 1、css代碼 2.html代碼 3.js代碼 1、css代碼 .box {position: relative;width: 600px;height: 600px;background: url(./images/clock.jpg) no-repeat center;}.hour,.minute,.second {position: absolute;left: 0;top: 0;width: 100%;height: 100%;}.hour {background…

上個月暴漲34.6%后,SoundHound AI股票現在還能買入嗎?

來源&#xff1a;猛獸財經 作者&#xff1a;猛獸財經 揭開SoundHound AI股價波動的原因 S&P Global Market Intelligence的數據顯示&#xff0c;在擺脫了10月份的大幅下跌后&#xff0c;SoundHound AI的股價在11月份實現了34.6%的漲幅。 原因是該公司公布了穩健的第三季…

英文論文查重復率網址

大家好&#xff0c;今天來聊聊英文論文查重復率網址&#xff0c;希望能給大家提供一點參考。 以下是針對論文重復率高的情況&#xff0c;提供一些修改建議和技巧&#xff1a; 英文論文查重復率網址 在撰寫英文論文時&#xff0c;查重是確保論文原創性和質量的重要環節快碼論文…

國產化, 海量數據庫 VastbaseG100 兼容適配

背景&#xff1a; 客戶是國內某家電龍頭企業&#xff0c;應國產化政策要求&#xff0c; 系統需要適配國產數據庫&#xff0c; Vastbase G100 遇到問題&#xff1a; 1. 數據庫連接&#xff1a; Vastbase 是基于 postgresql 進行封裝&#xff0c; 所以理論上是兼容的&#…

Efficient physics-informed neural networks using hash encoding

論文閱讀&#xff1a;Efficient physics-informed neural networks using hash encoding Efficient physics-informed neural networks using hash encoding簡介方法PINN哈希編碼具有哈希編碼的 PINN 實驗Burgers 方程Helmholtz 方程N-S 方程訓練效率對比 總結 Efficient physi…

容器資源視圖隔離 —— 筑夢之路

先做個記錄&#xff0c;抽空再整理 K8s 部署 Lxcfs 準入控制器&#xff0c;實現容器中資源單獨可見 - 「Johny」PlayGround Kubernetes 中利用 LXCFS 控制容器資源可見性 - 碼農教程 容器資源可視化隔離的實現方法_51CTO博客_容器隔離技術 Lxcfs在容器集群中的使用-騰訊云開…

06 JQuery調用接口

文章目錄 一、Qs.js庫介紹1. Qs簡介2. Qs.parse3. Qs.stringify 二、jQuery調用接口1. 增加&#xff08;Create&#xff09;2. 刪除&#xff08;Delete&#xff09;3. 讀取&#xff08;Read&#xff09;4. 更新&#xff08;Update&#xff09; 三、示例 一、Qs.js庫介紹 1. Qs…

代碼隨想錄算法訓練營 --- 第五十九天

今天同樣是單調棧&#xff0c;第二題很重要。 第一題&#xff1a; 簡介&#xff1a; 本題可以說和上一題很是相似&#xff0c;只是有一點不同&#xff0c;數組是循環的。本題有兩種巧妙地解法&#xff0c;都不難。 第一種方法&#xff08;也是第一個想出來的方法&#xff09…

創建自定義Docker鏡像:一步步指南

當創建自定義Docker鏡像時&#xff0c;Dockerfile是關鍵的一環。這篇博客將詳細介紹如何編寫一個Dockerfile&#xff0c;其中包含創建自定義應用程序所需的步驟和示例。讓我們開始吧&#xff1a; 創建自定義Docker鏡像&#xff1a;一步步指南 1. 了解Dockerfile Dockerfile是…

我的acer電腦U盤裝系統前BIOS設置及裝系統過程中的操作

1、開機長按F2進入BIOS設置 2、使能F12 3、調整boot順序&#xff0c;使USB啟動的優先級最高 4、按F10保存退出 5、插入U盤開機&#xff0c;boot選擇界面無需操作&#xff0c;等待幾秒&#xff0c;默認進入U盤系統 由于既使能了F12&#xff0c;又將U盤的優先級進調整到了最高&…

OpenVINS學習1——數據集配置與運行

前言 OpenVINS是基于MSCKF的開源VIO算法&#xff0c;有非常詳細的官網文檔可以學習使用&#xff0c;將來一段時間的主要實踐工作&#xff0c;就是深度掌握這份開源代碼。 https://docs.openvins.com/ 一、環境配置與Euroc數據集運行 我的環境是Ubuntu20.04&#xff0c;ROS1&a…

vue3中實現el-tree通過ctrl或shift批量選擇節點并高亮展示

一、看效果&#xff1a; 按住ctrl鍵實現單個多選 按住shift實現區間范圍多選 二、代碼&#xff1a; vue頁面 <template><el-treeclass"w100%":data"$.treeData"ref"treeTab…