国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

這篇具有很好參考價值的文章主要介紹了【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一、進(jìn)程優(yōu)先級

?1、優(yōu)先級概念

?2、優(yōu)先級特點(diǎn)

?3、修改Linux下的優(yōu)先級

二、進(jìn)程切換

?1、進(jìn)程特性

?2、進(jìn)程切換

三、環(huán)境變量

?1、基本概念

?2、常見環(huán)境變量

?3、查看環(huán)境變量方法

?4、PATH環(huán)境變量

?5、和環(huán)境變量相關(guān)的命令

?6、環(huán)境變量的組織方式

?7、通過代碼如何獲取環(huán)境變量

?8、通過系統(tǒng)調(diào)用獲取或設(shè)置環(huán)境變量

?9、環(huán)境變量通常是具有全局屬性的


一、進(jìn)程優(yōu)先級

?1、優(yōu)先級概念

  • 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)對多任務(wù)環(huán)境的 Linux 很有用,可以改善系統(tǒng)性能;
  • 還可以把進(jìn)程運(yùn)行到指定的 CPU 上,這樣一來,把不重要的進(jìn)程安排到某個 CPU,可以大大改善系統(tǒng)整體性能.

?2、優(yōu)先級特點(diǎn)

  1. 進(jìn)程的優(yōu)先級和狀態(tài)一樣,本質(zhì)都是PCB里面的一個數(shù)字(也可能是多個數(shù)字),操作系統(tǒng)通過這些數(shù)字來辨別進(jìn)程的狀態(tài)和優(yōu)先級;
  2. 通過 ps -al 指令可以查看到進(jìn)程的詳細(xì)信息,PRI 和 NI 的值合并在一起代表 Linux 進(jìn)程的優(yōu)先級。PRI 其實就是最終優(yōu)先級,只不過它受 NI 值的調(diào)控。

輸入 ps -l 命令后,會顯示一下內(nèi)容

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

此時可以注意到其中幾個重要信息,有下:

  • UID : 代表執(zhí)行者的身份;
  • PID : 代表這個進(jìn)程的代號;
  • PPID :代表這個進(jìn)程是由哪個進(jìn)程發(fā)展衍生而來的,亦即父進(jìn)程的代號;
  • PRI :代表這個進(jìn)程可被執(zhí)行的優(yōu)先級,其值越小越早被執(zhí)行;
  • NI :代表這個進(jìn)程的 nice 值。
  • PRI 也還是比較好理解的,即進(jìn)程的優(yōu)先級,或者通俗點(diǎn)說就是程序被CPU執(zhí)行的先后順序,此值越小進(jìn)程的優(yōu)先級別越高。
  • 那NI呢?就是我們所要說的nice值了,其表示進(jìn)程可被執(zhí)行的優(yōu)先級的修正數(shù)值。
  • PRI值越小越快被執(zhí)行,那么加入nice值后,將會使得PRI變?yōu)椋?strong>PRI(new)=PRI(old)+nice。
  • 這樣,當(dāng)nice值為負(fù)值的時候,那么該程序?qū)?yōu)先級值將變小,即其優(yōu)先級會變高,則其越快被執(zhí)行。
  • 所以,調(diào)整進(jìn)程優(yōu)先級,在Linux下,就是調(diào)整進(jìn)程nice值,nice其取值范圍是-20至19,一共40個級別。

Linux 給我們提供了修改 進(jìn)程 優(yōu)先級的權(quán)限,目的就是讓我們對多任務(wù)運(yùn)行進(jìn)行合理處理,提高系統(tǒng)運(yùn)行效率。

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

注意:(1)進(jìn)程的nice值不是進(jìn)程的優(yōu)先級,他們不是一個概念,但是進(jìn)程nice值會影響到進(jìn)程的優(yōu)先級變化;(2)可以理解nice值是進(jìn)程優(yōu)先級的修正修正數(shù)據(jù)。

?3、修改Linux下的優(yōu)先級

先輸入top,進(jìn)入top后,按‘r’,然后輸入進(jìn)程PID,輸入nice值。

(1)輸入 top 指令

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

(2) 輸入 r?

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

(3) 輸入進(jìn)程的 id

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

(4)輸入 NI 值(例如:NI = -10)?

結(jié)果:PRI(新的) = PRI(舊的) + NI(-10) = 70?

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

注意:普通用戶無法直接修改NI的值,必須切換成root用戶或者使用sudo提權(quán)執(zhí)行top指令。

二、進(jìn)程切換

?1、進(jìn)程特性

  • 競爭性: 系統(tǒng)進(jìn)程數(shù)目眾多,而CPU資源只有少量,甚至1個,所以進(jìn)程之間是具有競爭屬性的。為了高 效完成任務(wù),更合理競爭相關(guān)資源,便具有了優(yōu)先級;
  • 獨(dú)立性: 多進(jìn)程運(yùn)行,需要獨(dú)享各種資源,多進(jìn)程運(yùn)行期間互不干擾;
  • 并行: 多個進(jìn)程在多個CPU下分別,同時進(jìn)行運(yùn)行,這稱之為并行;
  • 并發(fā): 多個進(jìn)程在一個CPU下采用進(jìn)程切換的方式,在一段時間之內(nèi),讓多個進(jìn)程都得以推進(jìn),稱之為并發(fā).

?2、進(jìn)程切換

(1) 一個CPU里面存在一套硬件寄存器,寄存器分為用戶可見的寄存器,用戶不可見的寄存器。

(2) 計算機(jī)調(diào)度某個進(jìn)程時,CPU 會把這個進(jìn)程的 PCB 地址加載到某個寄存器,也就是說,CPU內(nèi)有寄存器可以只找到進(jìn)程的PCB地址。

(3) CPU里有一個 eip 寄存器(PC指針),指向當(dāng)前執(zhí)行指令的下一條指令的地址。

(4) 當(dāng)進(jìn)程在運(yùn)行的時候,一定會產(chǎn)生非常多的臨時數(shù)據(jù),這些臨時數(shù)據(jù)只屬于當(dāng)前進(jìn)程,雖然CPU內(nèi)部只有一套寄存器硬件,但是寄存器里面保存的數(shù)據(jù)是屬于當(dāng)前進(jìn)程的,寄存器硬件和寄存器內(nèi)的數(shù)據(jù)是兩碼事

(5) 進(jìn)程在調(diào)度的時候占有CPU,但是卻不是一直占有到進(jìn)程結(jié)束,進(jìn)程都有自己的時間片!因為時間片的存在,進(jìn)程會出現(xiàn)沒有被執(zhí)行完就被拿下去的情況。

(6) 在進(jìn)程重新被CPU調(diào)度的時候,CPU必須知道上一次這個進(jìn)程運(yùn)行到哪,當(dāng)進(jìn)程被換下去的時候,進(jìn)程的運(yùn)行信息會被存在操作系統(tǒng)里面,以便下次CPU重新調(diào)度時進(jìn)程能夠正常運(yùn)行,這叫做進(jìn)程的上下文保護(hù)。當(dāng)進(jìn)程被CPU重新調(diào)度上來時,首先要做的第一件事情就是讀取操作系統(tǒng)中進(jìn)程運(yùn)行的相關(guān)數(shù)據(jù),這叫做進(jìn)程的上下文恢復(fù)。

三、環(huán)境變量

?1、基本概念

  • 環(huán)境變量一般是指在操作系統(tǒng)中用來指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù)。如:我們在編寫C/C++代碼的時候,在鏈接的時候,從來不知道我們的所鏈接的動態(tài)靜態(tài)庫在哪里,但 是照樣可以鏈接成功,生成可執(zhí)行程序,原因就是有相關(guān)環(huán)境變量幫助編譯器進(jìn)行查找;
  • 環(huán)境變量通常具有某些特殊用途,還有在系統(tǒng)當(dāng)中通常具有全局特性。

?2、常見環(huán)境變量

  • PATH : 指定命令的搜索路徑;
  • HOME : 指定用戶的主工作目錄(即用戶登陸到Linux系統(tǒng)中時,默認(rèn)的目錄;
  • SHELL : 當(dāng)前Shell,它的值通常是/bin/bash。

?3、查看環(huán)境變量方法

我們可以通過指令 echo $NAME 來查看當(dāng)前環(huán)境變量信息(NAME :環(huán)境變量名)

//查看用戶信息
echo $USER
//查看PATH環(huán)境變量
echo $PATH

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

?4、PATH環(huán)境變量

? (1)直接添加PATH環(huán)境變量

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

? (2)使用 export 命令添加

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

注意:我們不能直接寫成這樣:export PATH=/home/xqh/dir,這樣會導(dǎo)致把系統(tǒng)默認(rèn)的環(huán)境變量PATH覆蓋掉,我們默認(rèn)的那些指令就不能直接使用了,只能通過指定路徑的方式來使用(關(guān)掉Xshell,重新打開,就恢復(fù)了)。

?5、和環(huán)境變量相關(guān)的命令

  1. echo: 顯示某個環(huán)境變量值;
  2. export: 設(shè)置一個新的環(huán)境變量;
  3. env: 顯示所有環(huán)境變量;
  4. unset: 清除環(huán)境變量;
  5. set: 顯示本地定義的shell變量和環(huán)境變量。

? 1、查看所有的環(huán)境變量:env 指令

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

? 2、也可以通過set 指令來查看環(huán)境變量表,不過還會多很多信息,包括本地環(huán)境變量等。?

? 環(huán)境變量?具有全局屬性,可以供所有子進(jìn)程共享,倘若我們不想讓 環(huán)境變量 被共享,可以設(shè)置本地變量。

$ TEST=private? //可以直接在命令行中添加本地變量。

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量?

現(xiàn)在的 TEST 環(huán)境變量是不被子進(jìn)程共享的。

$ unset TEST? //移除已設(shè)置的本地環(huán)境變量

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

想讓 TEST 進(jìn)入 環(huán)境變量表,只用加上 export 關(guān)鍵字。

$ export TEST=public? ? ?// 此時環(huán)境變量已經(jīng)加入到環(huán)境變量表中。

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

?6、環(huán)境變量的組織方式

? 環(huán)境變量表是以指針數(shù)組的形式存儲的。

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

?7、通過代碼如何獲取環(huán)境變量

? 我相信大家心中想的 main 函數(shù)是無參的形式,實際上main函數(shù)是可以傳參的,并且最多可以傳 3 個參數(shù)。

int argc, char *argv[], char *env[]

  • 我們可以通過上面的3個參數(shù)來獲取環(huán)境變量。
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char* argv[], char* env[])
{
	int i = 0;
	for (; env[i]; i++) 
    {
		printf("%s\n", env[i]);
	}
	return 0;
}

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

  • ? 還可以通過第三方變量 environ 獲取
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
	extern char** environ;
	int i = 0;
	for (; environ[i]; i++) 
    {
		printf("%s\n", environ[i]);
	}
	return 0;
}

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

注意:libc 中定義的全局變量 environ 指向環(huán)境變量表,environ 沒有包含在任何頭文件中,所以在使用時要用 extern 聲明。

?8、通過系統(tǒng)調(diào)用獲取或設(shè)置環(huán)境變量

  • getenv
  • putenv

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char* env = getenv("PATH");
	printf("%s\n", env);
	return 0;
}

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量
? 通過以上運(yùn)行,可以看到既可以用函數(shù) getenv() 來獲取,也可以使用 echo $環(huán)境變量名 來獲取。

?9、環(huán)境變量通常是具有全局屬性的

  • 環(huán)境變量通常具有全局屬性,可以被子進(jìn)程繼承下去。
#include <stdio.h>
#include <stdlib.h>
int main()
{
	char* env = getenv("MYENV");
	if (env) 
    {
		printf("%s\n", env);
	}
	return 0;
}

運(yùn)行如下:?

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

直接查看,發(fā)現(xiàn)沒有結(jié)果,說明該環(huán)境變量根本不存在。

然后,導(dǎo)出環(huán)境變量?export MYENV="hello world" ,此時再次運(yùn)行程序,發(fā)現(xiàn)有結(jié)果了!

說明:環(huán)境變量是可以被子進(jìn)程繼承下去的!

?文章來源地址http://www.zghlxwxcb.cn/news/detail-500382.html


本文要是有不足的地方,歡迎大家在下面評論,我會在第一時間更正。

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

老鐵們,記著點(diǎn)贊加關(guān)注!!!???

【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量

?

到了這里,關(guān)于【Linux】進(jìn)程優(yōu)先級 && 進(jìn)程切換 && 環(huán)境變量的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】進(jìn)程優(yōu)先級 + 環(huán)境變量

    【Linux】進(jìn)程優(yōu)先級 + 環(huán)境變量

    在學(xué)完進(jìn)程狀態(tài)之后,本章我們將來學(xué)習(xí)一下環(huán)境變量,還有進(jìn)程優(yōu)先級等??????…… 本文實驗系統(tǒng): CentOS 7.6 ~ 優(yōu)先級是權(quán)限嗎? 在之前我們講解過什么是權(quán)限:?? 傳送門 我們這里講的優(yōu)先級并不是權(quán)限,那么優(yōu)先級到底是什么呢? 如果我們說權(quán)限是能不能的問題的

    2024年02月05日
    瀏覽(27)
  • 【Linux】環(huán)境變量和進(jìn)程優(yōu)先級

    【Linux】環(huán)境變量和進(jìn)程優(yōu)先級

    目錄 環(huán)境變量 什么是環(huán)境變量 系統(tǒng)結(jié)構(gòu) 系統(tǒng)接口 深度解析 命令行參數(shù) 進(jìn)程優(yōu)先級 優(yōu)先級查看 優(yōu)先級修改 進(jìn)程間的概念 ??平時在使用? Linux? 的時候,總會使用? ls? 、 pwd? 這類的命令,我們也都知道這些命令也是? C? 語言寫的,但是為什么我們自己寫的可執(zhí)行程序需

    2023年04月27日
    瀏覽(20)
  • 【Linux】進(jìn)程優(yōu)先級 && 命令行參數(shù) && 環(huán)境變量

    【Linux】進(jìn)程優(yōu)先級 && 命令行參數(shù) && 環(huán)境變量

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 目錄 文章目錄 前言 一、進(jìn)程優(yōu)先級 1.1、進(jìn)程優(yōu)先級的基本概念 1.2、優(yōu)先級 VS 權(quán)限 1.3、為什么要有優(yōu)先級? 1.4、Linux的優(yōu)先級的特點(diǎn) 查看方式 1.5、PRI and NI 1.6、用top命令更改已存在進(jìn)程的nice 1.7、其

    2024年03月25日
    瀏覽(19)
  • 【Linux】環(huán)境變量與進(jìn)程優(yōu)先級知識點(diǎn)

    【Linux】環(huán)境變量與進(jìn)程優(yōu)先級知識點(diǎn)

    環(huán)境變量(environment variables)一般是指在操作系統(tǒng)中用來指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù)。 PATH : 指定命令的搜索路徑 HOME : 指定用戶的主工作目錄(即用戶登陸到Linux系統(tǒng)中時,默認(rèn)的目錄) SHELL : 當(dāng)前Shell,它的值通常是/bin/bash USER:記錄了當(dāng)前登錄的用戶是誰 主要以PATH進(jìn)行學(xué)習(xí)

    2023年04月23日
    瀏覽(90)
  • 【Linux】探索Linux進(jìn)程優(yōu)先級 | 環(huán)境變量 |本地變量 | 內(nèi)建命令

    【Linux】探索Linux進(jìn)程優(yōu)先級 | 環(huán)境變量 |本地變量 | 內(nèi)建命令

    最近,我發(fā)現(xiàn)了一個超級強(qiáng)大的人工智能學(xué)習(xí)網(wǎng)站。它以通俗易懂的方式呈現(xiàn)復(fù)雜的概念,而且內(nèi)容風(fēng)趣幽默。我覺得它對大家可能會有所幫助,所以我在此分享。點(diǎn)擊這里跳轉(zhuǎn)到網(wǎng)站。 ??博客主頁:小智_x0___0x_ ??歡迎關(guān)注:??點(diǎn)贊??收藏??留言 ??系列專欄:Linux入門

    2024年02月04日
    瀏覽(83)
  • 【Linux進(jìn)行時】環(huán)境變量and進(jìn)程優(yōu)先級

    【Linux進(jìn)行時】環(huán)境變量and進(jìn)程優(yōu)先級

    ?首先一個問題:我寫的代碼(這個代碼很簡單,不用管)編譯之后運(yùn)行的時候為什么要帶./ ? 或者說我怎么才可以讓我不用帶./ ? ??.代表當(dāng)前文件下,/是文件分隔符,這是用相對路徑的方式來訪問,所以我們也可以用絕對路徑 myproc和ls都是指令,ls可以直接輸入,但是我

    2024年02月08日
    瀏覽(26)
  • 【探索Linux】—— 強(qiáng)大的命令行工具 P.8(進(jìn)程優(yōu)先級、環(huán)境變量)

    【探索Linux】—— 強(qiáng)大的命令行工具 P.8(進(jìn)程優(yōu)先級、環(huán)境變量)

    前面我們講了C語言的基礎(chǔ)知識,也了解了一些數(shù)據(jù)結(jié)構(gòu),并且講了有關(guān)C++的一些知識,也學(xué)習(xí)了一些Linux的基本操作,也了解并學(xué)習(xí)了有關(guān)Linux開發(fā)工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代碼也相信大家都掌握的不錯,上一篇文章我們了解了關(guān)于進(jìn)程的基本概念,今

    2024年02月09日
    瀏覽(26)
  • 2.【Linux】(進(jìn)程的狀態(tài)||深入理解fork||底層剖析||task_struct||進(jìn)程優(yōu)先級||并行和并發(fā)||詳解環(huán)境變量)

    2.【Linux】(進(jìn)程的狀態(tài)||深入理解fork||底層剖析||task_struct||進(jìn)程優(yōu)先級||并行和并發(fā)||詳解環(huán)境變量)

    Linux把所有進(jìn)程通過雙向鏈表的方式連接起來組成任務(wù)隊列,操作系統(tǒng)和cpu通過選擇一個task_struct執(zhí)行其代碼來調(diào)度進(jìn)程。 1.運(yùn)行態(tài):pcb結(jié)構(gòu)體在運(yùn)行或在運(yùn)行隊列中排隊。 2.阻塞態(tài):等待非cpu資源就緒(硬盤,網(wǎng)卡等資源) 3.掛起態(tài):一個進(jìn)程對應(yīng)的代碼和數(shù)據(jù)被操作系統(tǒng)因

    2024年01月22日
    瀏覽(23)
  • 【Linux】進(jìn)程狀態(tài)、進(jìn)程優(yōu)先級和進(jìn)程切換

    【Linux】進(jìn)程狀態(tài)、進(jìn)程優(yōu)先級和進(jìn)程切換

    作者簡介:?舊言~,目前大二,現(xiàn)在學(xué)習(xí)Java,c,c++,Python等 座右銘:松樹千年終是朽,槿花一日自為榮。 目標(biāo):了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng),掌握Linux的進(jìn)程 毒雞湯:一花凋零荒蕪不了整個春天,一次挫折也荒廢不了整個人生。 望小伙伴們點(diǎn)贊??收藏?加關(guān)注喲??

    2024年02月04日
    瀏覽(22)
  • 【Linux】詳談進(jìn)程優(yōu)先級&&進(jìn)程調(diào)度與切換

    【Linux】詳談進(jìn)程優(yōu)先級&&進(jìn)程調(diào)度與切換

    ???????? 進(jìn)程要訪問某種資源,進(jìn)程通過一定的方式排隊,確認(rèn)享受資源的優(yōu)先順序。計算機(jī)中資源過少,所以進(jìn)程訪問某種資源時需要排隊。 ???????? 進(jìn)程的優(yōu)先級其實就是PCB中的一個整形變量(int PRI)。Linux中進(jìn)程的默認(rèn)優(yōu)先級是80,這個默認(rèn)優(yōu)先級是可以被修改

    2024年03月22日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包