中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站開發(fā)的小結(jié)騰訊營銷平臺

網(wǎng)站開發(fā)的小結(jié),騰訊營銷平臺,馬蹄室內(nèi)設(shè)計(jì)官網(wǎng),基于html5的旅游網(wǎng)站的設(shè)計(jì)Content 一、什么是進(jìn)程1. 進(jìn)程的概念2. 進(jìn)程的描述 - 進(jìn)程控制塊(PCB)3. Linux下的進(jìn)程 二、進(jìn)程狀態(tài)1. 教科書中的進(jìn)程狀態(tài)運(yùn)行狀態(tài)阻塞狀態(tài)掛起狀態(tài) 2. Linux下的進(jìn)程狀態(tài)R(running)- 運(yùn)行狀態(tài)S(sleeping) - 睡眠狀…

Content

    • 一、什么是進(jìn)程
      • 1. 進(jìn)程的概念
      • 2. 進(jìn)程的描述 - 進(jìn)程控制塊(PCB)
      • 3. Linux下的進(jìn)程
    • 二、進(jìn)程狀態(tài)
      • 1. 教科書中的進(jìn)程狀態(tài)
        • 運(yùn)行狀態(tài)
        • 阻塞狀態(tài)
        • 掛起狀態(tài)
      • 2. Linux下的進(jìn)程狀態(tài)
        • R(running)- 運(yùn)行狀態(tài)
        • S(sleeping) - 睡眠狀態(tài)
        • D(disk sleep)- 磁盤休眠狀態(tài)
        • T(stopped)- 停止?fàn)顟B(tài)
        • t(tracing stop)- 追蹤暫停狀態(tài)
        • X(dead)- 死亡狀態(tài)
        • > 兩種特殊的進(jìn)程 <
          • 1. 僵尸進(jìn)程
          • 2. 孤兒進(jìn)程
    • 三、進(jìn)程的優(yōu)先級
      • 1. 什么是優(yōu)先級
      • 2. 為什么要有優(yōu)先級
      • 3. Linux中優(yōu)先級的特點(diǎn)
    • 四、進(jìn)程的其他概念

[!abstract] 進(jìn)程的學(xué)習(xí)

  • 認(rèn)識馮諾依曼系統(tǒng)
  • 操作系統(tǒng)概念與定位
  • 深入理解進(jìn)程概念,了解PCB
  • 學(xué)習(xí)進(jìn)程狀態(tài),學(xué)會創(chuàng)建進(jìn)程,掌握僵尸進(jìn)程和孤兒進(jìn)程,及其形成原因和危害
  • 了解進(jìn)程調(diào)度,Linux進(jìn)程優(yōu)先級,理解進(jìn)程競爭性與獨(dú)立性,理解并行與并發(fā)
  • 理解環(huán)境變量,熟悉常見環(huán)境變量及相關(guān)指令, getenv/setenv函數(shù)
  • 理解C內(nèi)存空間分配規(guī)律,了解進(jìn)程內(nèi)存映像和應(yīng)用程序區(qū)別, 認(rèn)識地址空間
  • 學(xué)習(xí)進(jìn)程創(chuàng)建,fork/vfork
  • 學(xué)習(xí)到進(jìn)程等待
  • 學(xué)習(xí)到進(jìn)程程序替換, 微型shell,重新認(rèn)識shell運(yùn)行原理
  • 學(xué)習(xí)到進(jìn)程終止,認(rèn)識$?

一、什么是進(jìn)程

1. 進(jìn)程的概念

  • 課本概念:進(jìn)程就是被加載到內(nèi)存中的程序,或者被運(yùn)行起來的程序就叫做進(jìn)程
  • 操作系統(tǒng)內(nèi)核觀點(diǎn):進(jìn)程=可執(zhí)行程序+進(jìn)程控制塊(PCB)。

2. 進(jìn)程的描述 - 進(jìn)程控制塊(PCB)

進(jìn)程控制塊PCB (Process Control Block),是操作系統(tǒng)中用于描述進(jìn)程的工具,其中包含的是進(jìn)程屬性的集合。

Linux操作系統(tǒng)下的PCB是 task_struct,它是Linux內(nèi)核的一種數(shù)據(jù)結(jié)構(gòu),其內(nèi)容可以分為如下幾類:

  • 標(biāo)示符: 描述本進(jìn)程的唯一標(biāo)示符,用來區(qū)別其他進(jìn)程。
  • 狀態(tài): 任務(wù)狀態(tài),退出代碼,退出信號等。
  • 優(yōu)先級: 相對于其他進(jìn)程的優(yōu)先級。
  • 程序計(jì)數(shù)器: 程序中即將被執(zhí)行的下一條指令的地址。
  • 內(nèi)存指針: 包括程序代碼和進(jìn)程相關(guān)數(shù)據(jù)的指針,還有和其他進(jìn)程共享的內(nèi)存塊的指針上下文數(shù)據(jù): 進(jìn)程執(zhí)行時處理器的寄存器中的數(shù)據(jù)。
  • I/O狀態(tài)信息: 包括顯示的I/O請求,分配給進(jìn)程的I/O設(shè)備和被進(jìn)程使用的文件列表。
  • 記賬信息: 可能包括處理器時間總和,使用的時鐘數(shù)總和,時間限制,記賬號等。
  • 其他信息

3. Linux下的進(jìn)程

  1. 描述起來,用結(jié)構(gòu)體(struct)
struct task_struct 
{     //進(jìn)程的所有屬性... ...//進(jìn)程對應(yīng)的代碼和數(shù)據(jù)的地址... ...//下一個進(jìn)程的地址struct task_struct* next;
};

在 Linux 系統(tǒng)中,進(jìn)程控制塊(Process Control Block,簡稱 PCB)通常是用 C 語言中的 struct 結(jié)構(gòu)體來實(shí)現(xiàn)的。這個結(jié)構(gòu)體包含了與進(jìn)程相關(guān)的各種信息,比如進(jìn)程狀態(tài)、進(jìn)程 ID、優(yōu)先級、CPU 寄存器值、內(nèi)存映射信息等。在 Linux 源代碼中,這個描述進(jìn)程的結(jié)構(gòu)體通常被命名為 task_struct。

  • 課本上稱之為PCB(process control block)
  • Linux操作系統(tǒng)下的PCB是: task_struct

task_struct 是 PCB 的一種

  1. 組織起來,用鏈表或其他高效的數(shù)據(jù)結(jié)構(gòu)
    在 Linux 中,所有進(jìn)程都通過一個 task_list 雙向循環(huán)鏈表來連接。每個 task_struct 結(jié)構(gòu)體都有一個 tasks 成員(通常是 list_head 類型),該成員用于將它插入到全局的 task_list 鏈表中。
/** Simple doubly linked list implementation.** Some of the internal functions ("__xxx") are useful when* manipulating whole lists rather than single entries, as* sometimes we already know the next/prev entries and we can* generate better code by using them directly rather than* using the generic single-entry routines.*/struct list_head 
{struct list_head *next, *prev;
};

進(jìn)程=可執(zhí)行程序 (exe) + task_struct對象(內(nèi)核對象)


二、進(jìn)程狀態(tài)

1. 教科書中的進(jìn)程狀態(tài)

請?zhí)砑訄D片描述

在普適的操作系統(tǒng)層面,即站在操作系統(tǒng)學(xué)科的角度來說,進(jìn)程狀態(tài)可能有如下幾種:運(yùn)行、掛起、阻塞、新建、就緒、等待、掛機(jī)、死亡;其中最重要也是最難理解的幾種狀態(tài)分別是:運(yùn)行、阻塞、掛起

運(yùn)行狀態(tài)

操作系統(tǒng)為了合理分配CPU以及各種硬件資源,也為了更好的調(diào)度各個進(jìn)程,會為CPU創(chuàng)建一個進(jìn)程隊(duì)列,為每一個硬件都創(chuàng)建一個等待隊(duì)列;而讓某一個進(jìn)程處于運(yùn)行狀態(tài)本質(zhì)上就是將該進(jìn)程對應(yīng)的PCB放入CPU的運(yùn)行隊(duì)列中,然后再將PCB中維護(hù)進(jìn)程狀態(tài)的變量修改為相應(yīng)的值,比如0;

因?yàn)檫M(jìn)程PCB里面有進(jìn)程的各種屬性,以及進(jìn)程對應(yīng)的代碼和數(shù)據(jù)的地址,所以CPU從運(yùn)行隊(duì)列中取出PCB后,可以根據(jù)該P(yáng)CB來得到進(jìn)程的各種數(shù)據(jù)和指令,然后執(zhí)行相應(yīng)運(yùn)算;

所以進(jìn)程處于運(yùn)行狀態(tài)并不一定意味著該進(jìn)程此刻正在被運(yùn)行,只要該進(jìn)程處于CPU的運(yùn)行隊(duì)列中即可。所以,運(yùn)行狀態(tài)就是進(jìn)程處于執(zhí)行中,或者在運(yùn)行隊(duì)列中等待執(zhí)行。(注:CPU是納秒級的芯片,運(yùn)算速度非???#xff0c;所以只要進(jìn)程處于CPU的運(yùn)行隊(duì)列中,我們就可以認(rèn)為該進(jìn)程正在被運(yùn)行)

阻塞狀態(tài)

和CPU一樣,我們計(jì)算機(jī)中的各種硬件也是十分有限的,但是需要使用這些硬件資源的進(jìn)程卻有很多,比如很多進(jìn)程都需要向磁盤中寫入數(shù)據(jù),又或者要通過網(wǎng)卡發(fā)送數(shù)據(jù);但是一個磁盤或者一個網(wǎng)卡在同一個時刻只能為一個進(jìn)程提供服務(wù),那么如果此時有其他運(yùn)行中的進(jìn)程需要使用該硬件資源,操作系統(tǒng)就會將該進(jìn)程的PCB放入硬件的等待隊(duì)列中,等待硬件來為我提供服務(wù)。

上面這種由于訪問某種硬件需要進(jìn)行等待的狀態(tài)就被稱為阻塞狀態(tài),阻塞狀態(tài)本質(zhì)上就是將進(jìn)程的PCB從CPU的運(yùn)行隊(duì)列中剝離出來,放入硬件的等待隊(duì)列中,然后將PCB中維護(hù)進(jìn)程狀態(tài)的變量修改為相應(yīng)的值,比如1;待該進(jìn)程獲得對應(yīng)的對應(yīng)的硬件資源以后,再將該進(jìn)程放入CPU的運(yùn)行隊(duì)列中。

(注:并不是只有等待硬件資源進(jìn)程才會處于阻塞狀態(tài),一個進(jìn)程等待另一個進(jìn)程就緒、一個進(jìn)程等待某種軟件資源就緒等都會處于阻塞狀態(tài)。)

掛起狀態(tài)

上面我們學(xué)習(xí)了阻塞狀態(tài),處于阻塞狀態(tài)的進(jìn)程由于需要等待某種資源,所以它對應(yīng)的代碼和數(shù)據(jù)在短期內(nèi)并不會被執(zhí)行,此時它們?nèi)源嬖谠趦?nèi)存中就相當(dāng)于浪費(fèi)了內(nèi)存資源;而如果當(dāng)前操作系統(tǒng)處于高IO的情況下,內(nèi)存空間不足,操作系統(tǒng)就會選擇將這些處于阻塞狀態(tài)的進(jìn)程對應(yīng)的代碼和數(shù)據(jù)拷貝一份存放到磁盤中,然后釋放內(nèi)存中那一份,從而節(jié)省出內(nèi)存空間;

上面這種由于內(nèi)存空間不足,操作系統(tǒng)將在等待資源的進(jìn)程對應(yīng)的代碼數(shù)據(jù)放到磁盤中以節(jié)省內(nèi)存空間的狀態(tài)就被稱為掛起狀態(tài);掛起狀態(tài)不會移動進(jìn)程的PCB,只會移動進(jìn)程對應(yīng)的代碼和數(shù)據(jù)。

(注:掛起進(jìn)程并不是釋放進(jìn)程,因?yàn)樵撨M(jìn)程對應(yīng)的PCB仍然處于某硬件的等待隊(duì)列中,當(dāng)該進(jìn)程獲得對應(yīng)的資源以后,操作系統(tǒng)仍然可以將該進(jìn)程對應(yīng)的代碼和數(shù)據(jù)從磁盤加載到內(nèi)存中來繼續(xù)運(yùn)行,其本質(zhì)是對內(nèi)存數(shù)據(jù)的喚入喚出;同時阻塞不一定掛起,掛起也不一定阻塞,也可能是新建掛起、就緒掛起,甚至是運(yùn)行掛起。)

[!attention] 阻塞和掛起的區(qū)別:
與阻塞(等待)狀態(tài)不同,在掛起狀態(tài)下,進(jìn)程通常不是在等待某種資源或條件的滿足,而是被顯式地暫停了,可以通過相應(yīng)的信號(例如,在Linux中的 SIGCONT)來繼續(xù)執(zhí)行。


區(qū)別:

  1. 觸發(fā)原因:

    • 阻塞通常是因?yàn)檫M(jìn)程在等待某些系統(tǒng)資源或事件。
    • 掛起通常是由用戶或管理員明確要求的。
  2. 可控性:

    • 阻塞狀態(tài)通常是自動的,由系統(tǒng)內(nèi)核管理。
    • 掛起狀態(tài)通常是可以被用戶或管理員控制的。
  3. 可中斷性:

    • 阻塞狀態(tài)可能是可中斷或不可中斷的。
    • 掛起狀態(tài)總是可以通過 SIGCONT 信號來解除的。
  4. 持續(xù)時間:

    • 阻塞狀態(tài)持續(xù)到所等待的條件得到滿足。
    • 掛起狀態(tài)持續(xù)到進(jìn)程收到一個 SIGCONT 信號。

[!quote] 總結(jié)
進(jìn)程狀態(tài)改變的本質(zhì)是進(jìn)程對應(yīng)的 PCB (task_struct 對象) 處于不同設(shè)備的運(yùn)行隊(duì)列/等待隊(duì)列中。

2. Linux下的進(jìn)程狀態(tài)

Linux內(nèi)核源代碼中對進(jìn)程狀態(tài)的定義如下:

/*
* The task state array is a strange "bitmap" of
* reasons to sleep. Thus "running" is zero, and
* you can test for combinations of others with
* simple bit tests.
*/
static const char * const task_state_array[] = 
{"R (running)", /* 0 */"S (sleeping)", /* 1 */"D (disk sleep)", /* 2 */"T (stopped)", /* 4 */"t (tracing stop)", /* 8 */"X (dead)", /* 16 */"Z (zombie)", /* 32 */
};
R(running)- 運(yùn)行狀態(tài)

它表明進(jìn)程PCB在運(yùn)行隊(duì)列里,雖然在運(yùn)行隊(duì)列并不意味著進(jìn)程一定在運(yùn)行中,但是因?yàn)镃PU非常快,所以只要進(jìn)程處于CPU的運(yùn)行隊(duì)列中,我們就可以認(rèn)為該進(jìn)程正在被運(yùn)行。請?zhí)砑訄D片描述

S(sleeping) - 睡眠狀態(tài)

味著進(jìn)程在等待事件完成(這里的睡眠有時候也叫做可中斷睡眠(interruptible sleep)),Linux下的睡眠狀態(tài)其實(shí)就是我們上面所說的阻塞狀態(tài)。
請?zhí)砑訄D片描述

注:我們使用 ps axj 指令查看進(jìn)程狀態(tài)只能查看進(jìn)程某一時刻的狀態(tài),而外設(shè)的速度是要遠(yuǎn)遠(yuǎn)低于CPU的,所以我們可以發(fā)現(xiàn),雖然 process 也在執(zhí)行加法運(yùn)算,但是我們每次查詢時進(jìn)程基本都處于阻塞狀態(tài),因?yàn)檫M(jìn)程99%的時間都在等待硬件資源就緒,只有1%的時間在進(jìn)行加法運(yùn)算以及執(zhí)行打印代碼。

D(disk sleep)- 磁盤休眠狀態(tài)

有時候也叫不可中斷睡眠狀態(tài)(uninterruptible sleep),在這個狀態(tài)的進(jìn)程通常會等待IO的結(jié)束。
上面我們提到,當(dāng)內(nèi)存空間不足的時候,操作系統(tǒng)會將一部分進(jìn)程掛起來節(jié)省資源;但是如果內(nèi)存空間嚴(yán)重不足,掛起已經(jīng)解決不了問題的時候,操作系統(tǒng)就會主動殺掉某些進(jìn)程;

那么這里就出現(xiàn)了一個問題,萬一操作系統(tǒng)把某些非常重要的進(jìn)程殺掉了怎么辦?比如,當(dāng)前有一個進(jìn)程需要向磁盤寫入一批數(shù)據(jù),這批數(shù)據(jù)是10萬名用戶一年的轉(zhuǎn)賬記錄,非常重要;該進(jìn)程訪問磁盤,讓磁盤幫它寫入數(shù)據(jù),在磁盤寫數(shù)據(jù)的時間段內(nèi),該進(jìn)程是屬于阻塞狀態(tài)的,因?yàn)樗却疟P返回給它一個結(jié)果,即是否寫入成功;而一旦該進(jìn)程被操作系統(tǒng)殺掉,且恰好磁盤寫入失敗了,磁盤將寫入結(jié)果反饋給該進(jìn)程發(fā)現(xiàn)無人應(yīng)答,磁盤就只能將該部分?jǐn)?shù)據(jù)丟棄然后為其他進(jìn)程提供服務(wù);此時,這部分十分重要的用戶數(shù)據(jù)就丟了。

為了防止這種情況的發(fā)生,Linux設(shè)計(jì)出了深度睡眠 (D) 狀態(tài),處于深度睡眠狀態(tài)的進(jìn)程既不能被用戶殺掉,也不能被操作系統(tǒng)殺掉,只能通過斷電,或者等待進(jìn)程自己醒來。

注:深度睡眠一般只會在高IO的情況發(fā)生下,且如果操作系統(tǒng)中存在多個深度睡眠狀態(tài)的程序,那么說明該操作系統(tǒng)也即將崩潰了。

T(stopped)- 停止?fàn)顟B(tài)

可以通過發(fā)送 SIGSTOP 信號給進(jìn)程來停止(T)進(jìn)程。這個被暫停的進(jìn)程可以通過發(fā)送 SIGCONT 信號讓進(jìn)程繼續(xù)運(yùn)行。
列出kill的選項(xiàng):請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

t(tracing stop)- 追蹤暫停狀態(tài)

追蹤暫停狀態(tài)是一種特殊的暫停狀態(tài),進(jìn)程處于此狀態(tài)表示該進(jìn)程正在被追蹤,比如 gdb 調(diào)試進(jìn)程。
請?zhí)砑訄D片描述

X(dead)- 死亡狀態(tài)

這個狀態(tài)只是一個返回狀態(tài),死亡狀態(tài)代表著一個進(jìn)程結(jié)束運(yùn)行,該進(jìn)程對應(yīng)的PCB以及代碼和數(shù)據(jù)全部被操作系統(tǒng)回收,我們不會在任務(wù)列表里看到這個狀態(tài)。

Linux下的進(jìn)程狀態(tài),本質(zhì)上就是進(jìn)程PCB中的一個變量:

#define TASK_RUNNING        0
#define TASK_INTERRUPTIBLE  1
#define TASK_UNINTERRUPTIBLE    2
#define __TASK_STOPPED      4
#define __TASK_TRACED       8
/* in tsk->exit_state */
#define EXIT_ZOMBIE     16
#define EXIT_DEAD       32
/* in tsk->state again */
#define TASK_DEAD       64
#define TASK_WAKEKILL       128

因此,進(jìn)程狀態(tài)變化的本質(zhì):

  1. 更改PCB中的status變量
  2. 將 PCB 連入不同的運(yùn)行隊(duì)列中
> 兩種特殊的進(jìn)程 <
1. 僵尸進(jìn)程

什么是僵尸進(jìn)程
在Linux中,當(dāng)一個進(jìn)程完成它的執(zhí)行但還沒有被其父進(jìn)程清理(也就是讀取其退出狀態(tài))時,它就會變成僵尸進(jìn)程。這種情況通常發(fā)生在父進(jìn)程在其子進(jìn)程結(jié)束之前就結(jié)束了。在這種情況下,子進(jìn)程的狀態(tài)信息會被保留在系統(tǒng)中,以便父進(jìn)程在以后的某個時候讀取。

用代碼說明:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>int main()
{int id = fork();if(id > 0){while(1){printf("我是父進(jìn)程,pid: %d, ppid: %d\n", getpid(), getppid());sleep(1);}}else if(id == 0){while(1){printf("我是子進(jìn)程,pid: %d, ppid: %d\n", getpid(), getppid());sleep(1);}}else {perror("fork fail");exit(-1);}return 0;
}

請?zhí)砑訄D片描述

kill 掉子進(jìn)程之后,由于父進(jìn)程中沒有對子進(jìn)程的退出狀態(tài)代碼進(jìn)行讀取,所以子進(jìn)程變成了 Z 狀態(tài),并且子進(jìn)程后面還提示了 defunct (失效的,不再使用的),此時,如果父進(jìn)程一直不對不對子進(jìn)程進(jìn)行讀取,那么子進(jìn)程就會變成僵尸進(jìn)程。

僵尸進(jìn)程的危害
僵尸進(jìn)程本身并不占用任何系統(tǒng)資源(如CPU時間或內(nèi)存),因?yàn)樗鼈円呀?jīng)停止執(zhí)行。然而,每個僵尸進(jìn)程的PCB還存在于操作系統(tǒng)進(jìn)程表中,這可能會消耗有限的系統(tǒng)資源。如果有大量的僵尸進(jìn)程,它們可能會耗盡進(jìn)程表的空間,導(dǎo)致新的進(jìn)程無法啟動。此外,如果父進(jìn)程不正確地處理子進(jìn)程的退出,可能會導(dǎo)致僵尸進(jìn)程的數(shù)量持續(xù)增加。

2. 孤兒進(jìn)程

孤兒進(jìn)程是指在其父進(jìn)程執(zhí)行完成或被終止后仍繼續(xù)運(yùn)行的一類進(jìn)程。這些孤兒進(jìn)程將被init進(jìn)程(進(jìn)程號為1)所收養(yǎng),并由init進(jìn)程對它們完成狀態(tài)收集工作。

請?zhí)砑訄D片描述

[!warning] 兩個細(xì)節(jié):

  1. 父進(jìn)程退出后并沒有變成Z狀態(tài):
    當(dāng)一個進(jìn)程結(jié)束時,它的進(jìn)程描述符會立即消失,而是等待父進(jìn)程讀取其退出狀態(tài)。在這個等待過程中,進(jìn)程被稱為僵尸進(jìn)程(Z狀態(tài))。如果父進(jìn)程先于子進(jìn)程退出,子進(jìn)程就會被init進(jìn)程接管,子進(jìn)程結(jié)束后,init進(jìn)程會負(fù)責(zé)讀取其退出狀態(tài),因此,子進(jìn)程不會變成僵尸進(jìn)程。

  2. 子進(jìn)程被領(lǐng)養(yǎng)后變成了后臺進(jìn)程:
    在UNIX系統(tǒng)中,后臺進(jìn)程是指與終端脫離關(guān)系,獨(dú)立運(yùn)行的進(jìn)程。當(dāng)父進(jìn)程退出,子進(jìn)程被init進(jìn)程接管后,子進(jìn)程就會變成后臺進(jìn)程。這是因?yàn)閕nit進(jìn)程是在系統(tǒng)啟動時由內(nèi)核創(chuàng)建的,它不依賴于任何終端,因此,被它接管的子進(jìn)程也會變成后臺進(jìn)程。


ps:進(jìn)程狀態(tài)后面的 + 號代表著一個進(jìn)程是前臺進(jìn)程,沒有 + 號就代表是后臺進(jìn)程

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

1. 什么是優(yōu)先級

優(yōu)先級和權(quán)限不同,權(quán)限決定的是一件事情能不能做;優(yōu)先級是在權(quán)限允許的前提下,該事情先做還是后做;

2. 為什么要有優(yōu)先級

資源是有限的,內(nèi)存中有很多進(jìn)程都要占用資源,但是資源是有限的,所以我們需要指定優(yōu)先級來合理的分配資源;

3. Linux中優(yōu)先級的特點(diǎn)

Linux 中優(yōu)先級的表示與維護(hù)通過兩個變量 PRI (priority) 和 NI (nice) 來完成,每個進(jìn)程默認(rèn)的 PRI 都是 80,NI 都是 0;我們可以通過修改 NI 的值來調(diào)整進(jìn)程的優(yōu)先級,NI 的改動范圍為 [-20, 19];PRI 與 NI 的和越小,進(jìn)程的優(yōu)先級就越高;

我們也可以通過如下步驟來修改進(jìn)程優(yōu)先級 (將進(jìn)程優(yōu)先級調(diào)高可能需要 sudo 權(quán)限):

輸入top --> 輸入r --> 輸入進(jìn)程id --> 輸入NI值

請?zhí)砑訄D片描述

修改進(jìn)程優(yōu)先級的本質(zhì)就是修改進(jìn)程的nice值

請?zhí)砑訄D片描述

四、進(jìn)程的其他概念

進(jìn)程還有一些其他概念:

  • 競爭性:系統(tǒng)進(jìn)程數(shù)目眾多,而CPU資源只有少量,甚至1個,所以進(jìn)程之間是具有競爭屬性的;(進(jìn)程為了高效完成任務(wù),更合理競爭相關(guān)資源,便具有了優(yōu)先級)
  • 獨(dú)立性:多進(jìn)程運(yùn)行,需要獨(dú)享各種資源,多進(jìn)程運(yùn)行期間互不干擾;(每個進(jìn)程的PCB以及代碼數(shù)據(jù)都是獨(dú)立的,一個進(jìn)程的死亡不會影響其他進(jìn)程,包括父子進(jìn)程,子進(jìn)程崩潰并不會影響父進(jìn)程)
  • 并行:多個進(jìn)程在多個CPU下分別、同時進(jìn)行運(yùn)行,這稱之為并行;
  • 并發(fā):多個進(jìn)程在一個CPU下采用進(jìn)程切換的方式,在一段時間之內(nèi),讓多個進(jìn)程都得以推進(jìn),稱之為并發(fā)。(我們用的電腦一般都是并發(fā),只有一個CPU)請?zhí)砑訄D片描述
http://www.risenshineclean.com/news/58240.html

相關(guān)文章:

  • 邢臺網(wǎng)站建設(shè)免費(fèi)做網(wǎng)站排名seo關(guān)鍵詞布局案例
  • 網(wǎng)站平臺是怎么做財(cái)務(wù)的贛州網(wǎng)站seo
  • 網(wǎng)站建設(shè)屬政府采購項(xiàng)目嗎濟(jì)寧百度推廣公司
  • 肅寧縣做網(wǎng)站網(wǎng)推渠道
  • 白河網(wǎng)站制作網(wǎng)站模板之家官網(wǎng)
  • 類似豬八戒的網(wǎng)站建設(shè)網(wǎng)店運(yùn)營公司
  • 網(wǎng)站被k的怎么辦泰安網(wǎng)站seo
  • 做平面什么網(wǎng)站好用百度文庫官網(wǎng)登錄入口
  • 合肥做網(wǎng)站好的公司今天剛剛發(fā)生的新聞
  • 最大的網(wǎng)站開發(fā)公司市場營銷案例
  • wordpress登入修改seo顧問服務(wù) 樂云踐新專家
  • 良品鋪?zhàn)泳W(wǎng)站建設(shè)百度推廣優(yōu)化是什么?
  • wordpress的favicon網(wǎng)站優(yōu)化排名操作
  • 丹陽網(wǎng)站設(shè)計(jì)網(wǎng)站市場推廣
  • seo短視頻網(wǎng)頁入口引流網(wǎng)站有哪些國家職業(yè)技能培訓(xùn)官網(wǎng)
  • 中文版網(wǎng)站建設(shè)費(fèi)用百度一下百度
  • 網(wǎng)站備案教程海外推廣代理商
  • 坊網(wǎng)站建設(shè)seo推廣公司有哪些
  • 創(chuàng)辦一個網(wǎng)站要多少錢營業(yè)推廣方式
  • 快速做網(wǎng)站的軟件網(wǎng)站規(guī)劃與設(shè)計(jì)
  • 青島市城鄉(xiāng)建設(shè)局網(wǎng)站西安網(wǎng)絡(luò)推廣公司網(wǎng)絡(luò)推廣
  • 企業(yè)網(wǎng)站優(yōu)化案例論壇優(yōu)化seo
  • 網(wǎng)站 建設(shè)運(yùn)行情況報(bào)告a5站長網(wǎng)
  • 可以上傳自己做的視頻的網(wǎng)站嗎公司怎么做網(wǎng)絡(luò)營銷
  • 自己給網(wǎng)站做優(yōu)化怎么做百度seo高級優(yōu)化
  • 網(wǎng)站建設(shè)比較好西安seo霸屏
  • 影樓網(wǎng)站源碼php免費(fèi)個人網(wǎng)站注冊
  • 山東定制網(wǎng)站建設(shè)公司鄭州網(wǎng)絡(luò)營銷學(xué)校
  • 淺談全球五金網(wǎng)電子商務(wù)網(wǎng)站建設(shè)營銷寶
  • 個人網(wǎng)站設(shè)計(jì)畢業(yè)設(shè)計(jì)論文百度關(guān)鍵詞推廣費(fèi)用