成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux進程狀態解析之R、S、D

運維 系統運維
Linux是一個分時操作系統,能夠在一個cpu上運行多個程序,每個被運行的程序實例對應一個或多個進程,這里介紹一下Linux進程狀態。

Linux是一個多用戶,多任務的系統,可以同時運行多個用戶的多個程序,就必然會產生很多的進程,而每個進程會有不同的狀態。

Linux進程狀態:R (TASK_RUNNING),可執行狀態。

只有在該狀態的進程才可能在CPU上運行。而同一時刻可能有多個進程處于可執行狀態,這些進程的task_struct結構(進程控制塊)被放入對應CPU的可執行隊列中(一個進程最多只能出現在一個CPU的可執行隊列中)。進程調度器的任務就是從各個CPU的可執行隊列中分別選擇一個進程在該CPU上運行。

很多操作系統教科書將正在CPU上執行的進程定義為RUNNING狀態、而將可執行但是尚未被調度執行的進程定義為READY狀態,這兩種狀態在linux下統一為 TASK_RUNNING狀態。

Linux進程狀態:S (TASK_INTERRUPTIBLE),可中斷的睡眠狀態。

處于這個狀態的進程因為等待某某事件的發生(比如等待socket連接、等待信號量),而被掛起。這些進程的task_struct結構被放入對應事件的等待隊列中。當這些事件發生時(由外部中斷觸發、或由其他進程觸發),對應的等待隊列中的一個或多個進程將被喚醒。

通過ps命令我們會看到,一般情況下,進程列表中的絕大多數進程都處于TASK_INTERRUPTIBLE狀態(除非機器的負載很高)。畢竟CPU就這么一兩個,進程動輒幾十上百個,如果不是絕大多數進程都在睡眠,CPU又怎么響應得過來。

Linux進程狀態:D (TASK_UNINTERRUPTIBLE),不可中斷的睡眠狀態。

與TASK_INTERRUPTIBLE狀態類似,進程處于睡眠狀態,但是此刻進程是不可中斷的。不可中斷,指的并不是CPU不響應外部硬件的中斷,而是指進程不響應異步信號。
絕大多數情況下,進程處在睡眠狀態時,總是應該能夠響應異步信號的。否則你將驚奇的發現,kill -9竟然殺不死一個正在睡眠的進程了!于是我們也很好理解,為什么ps命令看到的進程幾乎不會出現TASK_UNINTERRUPTIBLE狀態,而總是TASK_INTERRUPTIBLE狀態。

而TASK_UNINTERRUPTIBLE狀態存在的意義就在于,內核的某些處理流程是不能被打斷的。如果響應異步信號,程序的執行流程中就會被插入一段用于處理異步信號的流程(這個插入的流程可能只存在于內核態,也可能延伸到用戶態),于是原有的流程就被中斷了。(參見《linux內核異步中斷淺析》)
在進程對某些硬件進行操作時(比如進程調用read系統調用對某個設備文件進行讀操作,而read系統調用最終執行到對應設備驅動的代碼,并與對應的物理設備進行交互),可能需要使用TASK_UNINTERRUPTIBLE狀態對進程進行保護,以避免進程與設備交互的過程被打斷,造成設備陷入不可控的狀態。這種情況下的TASK_UNINTERRUPTIBLE狀態總是非常短暫的,通過ps命令基本上不可能捕捉到。

linux系統中也存在容易捕捉的TASK_UNINTERRUPTIBLE狀態。執行vfork系統調用后,父進程將進入TASK_UNINTERRUPTIBLE狀態,直到子進程調用exit或exec(參見《神奇的vfork》)。
通過下面的代碼就能得到處于TASK_UNINTERRUPTIBLE狀態的進程:

  1. #include   
  2. void main() {  
  3. if (!vfork()) sleep(100);  


編譯運行,然后ps一下:

  1. kouu@kouu-one:~/test$ ps -ax | grep a\.out  
  2. 4371 pts/0    D+     0:00 ./a.out  
  3. 4372 pts/0    S+     0:00 ./a.out  
  4. 4374 pts/1    S+     0:00 grep a.out 


然后我們可以試驗一下TASK_UNINTERRUPTIBLE狀態的威力。不管kill還是kill -9,這個TASK_UNINTERRUPTIBLE狀態的父進程依然屹立不倒。

 

【編輯推薦】

  1. Linux進程狀態解析之T、Z、X
  2. Linux分區方案深度討論
  3. Linux系統優勢六大方面
  4. Linux文件重定向和文件過濾器
  5. Linux文件類型全解析
責任編輯:小霞 來源: CSDN
相關推薦

2010-03-02 10:43:45

Linux進程狀態

2021-07-06 21:30:06

Linux進程通信

2016-08-23 09:17:08

LinuxD狀態TASK_RUNNIN

2023-03-05 16:12:41

Linux進程線程

2023-03-02 23:50:36

Linux進程管理

2011-01-11 13:47:27

Linux管理進程

2023-03-03 00:03:07

Linux進程管理

2019-08-29 14:47:45

Linux中央處理器Windows

2022-07-05 16:03:29

電源管理子系統鴻蒙

2021-06-15 08:02:55

Linux 進程管理

2012-05-03 08:27:20

Linux進程

2009-10-27 16:34:02

linux top命令

2021-04-15 05:51:25

Linux

2021-04-22 07:47:46

Linux進程管理

2009-10-27 16:14:11

linux進程查看

2021-05-17 18:28:36

Linux CFS負載均衡

2021-05-12 07:50:02

CFS調度器Linux

2009-10-27 16:01:58

linux w命令

2021-09-30 10:45:33

Linux進程通信

2009-10-27 15:58:06

linux進程查看
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美三级电影在线播放 | 精品二区视频 | 日本黄色片免费在线观看 | 亚洲国产精久久久久久久 | 日韩中文一区 | 精品久久久久久久久久久久 | 91精品国产乱码久久久久久久久 | 亚洲欧美日韩在线 | 99精品视频一区二区三区 | 日本一区二区三区视频在线 | 久久久久久综合 | 99re国产视频 | 国产黄色av电影 | 色中文在线 | 99reav| 中文字幕亚洲一区二区va在线 | 污免费网站 | 国内自拍偷拍视频 | 欧美成人性生活 | 色小姐综合网 | 亚洲欧美日本在线 | 欧美一区不卡 | 久久久国产一区二区三区 | 亚洲一区二区精品视频 | 亚洲91 | 国产精品欧美一区二区三区不卡 | 中文字幕 国产 | 一区二区三区在线观看免费视频 | 99精品国产一区二区青青牛奶 | 91最新在线视频 | 青青草视频免费观看 | 国产男女猛烈无遮掩视频免费网站 | 久久精品视频99 | av资源在线看 | 伊人婷婷 | 中文字幕一区二区不卡 | 91精品国产91久久久久久吃药 | 亚洲第一色av | 欧美伊人久久久久久久久影院 | 日韩成人免费中文字幕 | 麻豆久久久 |