柚子快報激活碼778899分享:運維 【Linux】進程序言
柚子快報激活碼778899分享:運維 【Linux】進程序言
這里是阿川的博客,祝您變得更強
? 個人主頁:在線OJ的阿川 ?文章專欄:Linux入門到進階 ?代碼倉庫:
寫在開頭
現(xiàn)在您看到的是我的結論或想法,但在這背后凝結了大量的思考、經驗和討論
目錄
1. 馮.諾伊曼體系結構2. 操作系統(tǒng)3. 計算機層狀結構4. 進程概念5.展望一下
1. 馮.諾伊曼體系結構
在計算機硬件中,大部分都遵守馮諾依曼體系結構,具體如圖1所示:
圖1 馮諾依曼體系結構
存儲器:內存
外設:
輸入設備: 鼠標、鍵盤、攝像頭、話筒、磁盤、網卡…輸出設備: 顯示器、播放器、硬件、磁盤、網卡… 有的設備既是輸出又是輸入設備
中央處理器(即CPU):
運算器: 對我們的數(shù)據(jù)進行計算任務(算術運算,邏輯運算)控制器: 對我們的計算硬件流程進行一定的控制
運算器: 處理數(shù)據(jù) 控制器: 處理代碼 各個硬件單元必須用"總線"(主要為系統(tǒng)總線、IO總線)連接起來
通過馮諾伊曼體系結構可知道一個程序要運行,必須先加載到內存中運行才可以,這是因為輸入設備和輸出設備處理時間為秒,而中央處理器處理時間為微秒,差距過于明顯。 如果沒有存儲器作為中介則計算機整體運行效率低下。而有了存儲器之后,輸入設備的數(shù)據(jù)會先緩存到存儲器中,積累一定的量之后中央處理器開始處理,而在緩存的過程中,中央處理器可以處理其他的任務(例如檢查計算機狀態(tài),釋放各種各樣的資源,定期刷新數(shù)據(jù)等等),恰好存儲器的運行效率處于輸入輸出設備與中央處理器之間,相較于沒有存儲器而言,提高了整體計算機運行效率。
2. 操作系統(tǒng)
為了更好地控制硬件,而創(chuàng)建了操作系統(tǒng)
操作系統(tǒng)(即OS): 是一款為了給用戶提供一個良好(穩(wěn)定、高效、安全)的運行環(huán)境,而對硬件和軟件管理的軟件 操作系統(tǒng)包括:
內核: 進程管理,內存管理,文件管理,驅動管理其他程序: 例如函數(shù)庫,shell程序等等
在開發(fā)角度,操作系統(tǒng)對外會表現(xiàn)為一個整體,但是會暴露自己的部分接口,供上層開發(fā)使用,這部分用操作系統(tǒng)提供的接口叫做系統(tǒng)調用 但系統(tǒng)調用在使用上,功能比較基礎,對用戶的要求也比較高,所以部分有能力的開發(fā)者對部分系統(tǒng)調用進行適度封裝,從而形成了庫,有了庫,就有利于更上層用戶或者開發(fā)者進行二次開發(fā),甚至一些人在操作系統(tǒng)之上弄出來了開發(fā)語言,供開發(fā)人員編寫程序。
3. 計算機層狀結構
計算機層狀結構,具體如圖2所示:
圖2 計算機層狀結構
4. 進程概念
操作系統(tǒng)的管理,實際上是通過對數(shù)據(jù)的管理,從而達到對軟硬件資源的管理。而對數(shù)據(jù)進行管理則都是先描述,再組織,最終可以轉化成對某種數(shù)據(jù)結構的增刪查改,因此操作系統(tǒng)中一定會存在著大量的數(shù)據(jù)結構,這也是為什么要學數(shù)據(jù)結構這本書的原因所在。
進程: 一個已經加載到內存的程序
操作系統(tǒng)可以同時運行多個進程,但形成真正進程時,操作系統(tǒng)要先創(chuàng)建描述進程(即進程的屬性)的結構體對象【即PCB(全稱process ctrl block —進程控制塊】
進程(也稱為task)= 內存PCB數(shù)據(jù)結構對象(即這個進程的所有屬性值)+ 自己代碼和數(shù)據(jù)(code&date) 大致如圖3所示:
圖3 進程大致結構圖
Linux當中的PCB實現(xiàn): 在Linux中描述進程的結構體叫做task _struct。task_struct是Linux內核的一種數(shù)據(jù)結構,它會被裝載到RAM(即內存)里并且包含著進程的信息。 task_struct內容包含著:
標志符:描述本進程的唯一標識符,用來區(qū)別其他進程。狀態(tài):任務狀態(tài),退出代碼,退出信號等。優(yōu)先級:相對于其他進程的優(yōu)先級。程序計數(shù)器:程序中即將被執(zhí)行的下一條指令的地址內存指針:包括程序代碼和進程相關數(shù)據(jù)的指針,還有和其他進程共享的內存塊的指針上下文數(shù)據(jù):進程執(zhí)行時,處理器的寄存器中的數(shù)據(jù)[休學例子,要加圖CPU,寄存器]I/O狀態(tài)信息:包括顯示的I/O請求,分配給進程的I/O設備和被進程使用的文件列表記賬信息:可能包括處理器時間總和,使用的時鐘數(shù)總和,時間限制,記賬號等其他信息
Linux內核中組織進程,最基本的組織進程task_struct的方式,采用雙向鏈表組織
5.展望一下
計算機中這些可以好好看下: 操作系統(tǒng)(必學) 計算機網絡(必學) 計算機組成 編譯原理(本質:算法)
C/C++語言的最終表現(xiàn)形式:一套的編譯器、頭文件、庫文件(輔助C/C++教材)
6. 夾帶私貨
若你能看到看到這篇文章且能看到這,則說明你我有緣,留個關注吧,后面還會接著計算機408、底層原理、開源項目、以及數(shù)據(jù)、后端研發(fā)相關、實習、筆試/面試、秋招/春招、各種競賽相關、簡歷相關、考研、學術相關……,祝你我變得更強
好的,到此為止啦,祝您變得更強 7.想說的話
實不相瞞,寫的每篇博客都要寫五六個小時(加上自己學習和紙質筆記,共八九小時吧),很累,希望大佬支持
道阻且長 行則將至個人主頁:在線OJ的阿川大佬的支持和鼓勵,將是我成長路上最大的動力
柚子快報激活碼778899分享:運維 【Linux】進程序言
好文推薦
本文內容根據(jù)網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。