一、進(jìn)程優(yōu)先級(jí)
1.基本概念
cpu 資源分配的先后順序,就是指進(jìn)程的優(yōu)先權(quán)(priority) .優(yōu)先權(quán)高的進(jìn)程有優(yōu)先執(zhí)行權(quán)利。配置進(jìn)程優(yōu)先權(quán)對(duì)多任務(wù)環(huán)境的 Linux 很有用,可以改善系統(tǒng)性能。還可以把進(jìn)程運(yùn)行到指定的 CPU 上,這樣一來,把不重要的進(jìn)程安排到某個(gè) CPU,可以大大改善系統(tǒng)整體性能。
2.查看以及修改系統(tǒng)進(jìn)程的優(yōu)先級(jí)
在 Linux 或者 unix 系統(tǒng)中,用ps –al命令則會(huì)類似輸出以下幾個(gè)內(nèi)容, 其中:
UID : 代表執(zhí)行者的身份
PID : 代表這個(gè)進(jìn)程的代號(hào)
PPID :代表這個(gè)進(jìn)程是由哪個(gè)進(jìn)程發(fā)展衍生而來的,亦即父進(jìn)程的代號(hào)
PRI :代表這個(gè)進(jìn)程可被執(zhí)行的優(yōu)先級(jí),其值越小越早被執(zhí)行
NI :代表這個(gè)進(jìn)程的 nice 值,其表示進(jìn)程可被執(zhí)行的優(yōu)先級(jí)的修正數(shù)值。
我們看到我們現(xiàn)在有兩個(gè)進(jìn)程 bash ps 它們的進(jìn)程優(yōu)先級(jí)都是 80,如果我們要修改它們的優(yōu)先級(jí)就要用到 NI 的 nice 值了。
從這個(gè)公式中我們知道 新的 PRI = 老的 PRI + nice 值,但是這個(gè)老的 PRI 的值是指 PRI 最初的默認(rèn)值,例如上面的bash ps 是 80,那么這個(gè) PRI 以后不論怎么改老的 PRI 都是 80,當(dāng)然大多數(shù)進(jìn)程默認(rèn)的 PRI 都是 80。
此外 nice 是有范圍的!其取值范圍是 - 20 至 19,一共 40 個(gè)級(jí)別。于是下面我們?nèi)L試去更改processC進(jìn)程的優(yōu)先級(jí)。
注意:將進(jìn)程優(yōu)先級(jí)調(diào)高(即將 nice 值設(shè)置為負(fù)數(shù))需要 root 用戶進(jìn)行操作!
3.修改進(jìn)程優(yōu)先級(jí)的 Linux 指令
- top命令
- 進(jìn)入top后按 “r” -> 輸入進(jìn)程 PID -> 輸入 nice 值
按下 “r”
輸入 -20
再次[查看進(jìn)程]的相關(guān)信息:
我們發(fā)現(xiàn)進(jìn)程的優(yōu)先級(jí)確實(shí)改變了,但是我們能改變進(jìn)程優(yōu)先級(jí)有限[ ? 20 , 19 ] [-20,19][?20,19],因?yàn)檎{(diào)度器不允許我們將一個(gè)進(jìn)程設(shè)置的優(yōu)先級(jí)太高,進(jìn)而導(dǎo)致其他進(jìn)程難以被調(diào)度。
4.一些其他的關(guān)于進(jìn)程優(yōu)先級(jí)的指令和函數(shù)調(diào)用
- nice指令,nice 命令的功能是用于調(diào)整進(jìn)程的優(yōu)先級(jí),合理分配系統(tǒng)資源。-n 參數(shù)是 nice 值的優(yōu)先級(jí)別
以 nice 值為 -5 的方式執(zhí)行指定程序
查看進(jìn)程優(yōu)先級(jí)
- renice命令可以修改正在運(yùn)行的進(jìn)程的調(diào)度優(yōu)先級(jí)
renice [-n] priority [-gpu] identifier
renice更改一個(gè)或多個(gè)進(jìn)程的調(diào)度優(yōu)先級(jí)。第一個(gè)參數(shù)是要使用的優(yōu)先級(jí)值,另一個(gè)參數(shù)被表示為進(jìn)程標(biāo)識(shí)信息。
-g, 后面加組的 pgid, 改變一個(gè)組的進(jìn)程優(yōu)先級(jí)
-u, 后面加 user name 或 uid,改變一個(gè)用戶所擁有的進(jìn)程優(yōu)先級(jí)。
-p, 后面加 pid ,改變一個(gè)進(jìn)程的進(jìn)程優(yōu)先級(jí)。
使用renice命令
- 函數(shù)調(diào)用
在 Linux 中關(guān)于改變進(jìn)程優(yōu)先級(jí)函數(shù)調(diào)用主要有兩個(gè):getpriority() 與setpriority()。
5.一些其他的關(guān)于進(jìn)程優(yōu)先級(jí)的指令和函數(shù)調(diào)用
- 競(jìng)爭(zhēng)性: 系統(tǒng)進(jìn)程數(shù)目眾多,而 CPU 資源只有少量,甚至 1 個(gè),所以進(jìn)程之間是具有競(jìng)爭(zhēng)屬性的。為了高效完成任務(wù),更合理競(jìng)爭(zhēng)相關(guān)資源,便具有了優(yōu)先級(jí)
- 獨(dú)立性: 多進(jìn)程運(yùn)行,需要獨(dú)享各種資源,多進(jìn)程運(yùn)行期間互不干擾。
- 并行: 多個(gè)進(jìn)程在多個(gè) CPU 下,分別同時(shí)進(jìn)行運(yùn)行,這稱之為并行
- 并發(fā): 多個(gè)進(jìn)程在一個(gè) CPU 下采用進(jìn)程切換的方式,在一段時(shí)間之內(nèi),讓多個(gè)進(jìn)程都得以推進(jìn),稱之為并發(fā)
二、環(huán)境變量
1.基本概念
環(huán)境變量 (environment variables) 一般是指在操作系統(tǒng)中用來指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù),環(huán)境變量通常具有某些特殊用途,在系統(tǒng)當(dāng)中通常具有全局特性。
2.和環(huán)境變量相關(guān)的命令
- env: 顯示所有環(huán)境變量
-
echo: 顯示的變量值 (需要帶上 $ 符號(hào))
-
export: 設(shè)置一個(gè)新的環(huán)境變量,或者將本地[變量提升]成環(huán)境變量
-
unset: 清除環(huán)境變量
-
-
set: 顯示本地定義的 shell 變量和環(huán)境變量
3.Linux 中的常見環(huán)境變量介紹
- PATH : 指定命令的搜索路徑
例如我們使用的 Linux 中 ls pwd命令,其實(shí)就是一個(gè)個(gè) C 語言寫的一個(gè)個(gè)小程序,為什么我們運(yùn)行自己寫的程序就要用./ + 自己的程序名 ,而我們運(yùn)行l(wèi)s pwd 從來不加./,這就和環(huán)境變量 PATH 有關(guān)了!
我們查看環(huán)境變量可以使用echo $環(huán)境變量命令:
默認(rèn)情況下我們使用的 Linux 指令會(huì)去 PATH 路徑下尋找源程序,由于ls指令的路徑位置就在 PATH 的環(huán)境變量中所以我們可以不用加./
我們現(xiàn)在嘗試將我們的路徑添加到 PATH 環(huán)境變量里面,來讓我們的程序也不需要加./,這時(shí)我們就需要使用一個(gè)新的指令了:export
export令可以將本地變量提升成環(huán)境變量,于是我們將我們的路徑添加到 PATH 中就可以這樣寫:
export PATH=$PATH:你要添加的路徑
當(dāng)然我們使用export命令是暫時(shí)將本地變量提升為環(huán)境變量,當(dāng)我們退出云服務(wù)器或關(guān)機(jī)重啟都會(huì)消除export暫時(shí)提升的環(huán)境變量,想要真正的修改我們要修改相應(yīng)的配置文件。
當(dāng)然我們還可以將我們寫的程序拷貝到 Linux 的 PATH 默認(rèn)路徑下,這樣我們也不用使用./了,在 Linux 中,把可執(zhí)行程序,拷貝到系統(tǒng)默認(rèn)路徑下,讓我們可以直接訪問的方式,相當(dāng)于 Linux 下軟件的安裝!
- 環(huán)境變量的組織方式以及在 C 代碼中如何獲取環(huán)境變量
在 Shell 內(nèi)部,環(huán)境變量其實(shí)是以環(huán)境變量表的方式進(jìn)行維護(hù)的!
此外環(huán)境變量還具有全局性,我們知道我們?cè)?bash 下運(yùn)行的程序其父進(jìn)程都是 bash, 那么 bash 就可以將自己的環(huán)境變量傳遞給子進(jìn)程,并在子進(jìn)程中發(fā)揮作用!
- 不同用戶的環(huán)境變量是怎么形成的
對(duì)于不同的用戶其環(huán)境變量也并不相同
環(huán)境變量本質(zhì)就是一個(gè)內(nèi)存級(jí)的一張表,這張表由用戶在登陸會(huì)統(tǒng)的時(shí)候,給特定用戶形成屬于自己的環(huán)境變量表。
在我們的家目錄下有兩個(gè)文件叫 .bashrc .bash_profile 在根目錄下有一個(gè)bashrc的文件
打開這些文件看看!
感謝良許老師的公眾號(hào),每天理解一點(diǎn)linux知識(shí)文章來源:http://www.zghlxwxcb.cn/news/detail-481619.html
來自:入門小站文章來源地址http://www.zghlxwxcb.cn/news/detail-481619.html
到了這里,關(guān)于【Linux進(jìn)程篇-----進(jìn)程優(yōu)先級(jí)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!