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

淺議Unix進程中defunct

系統 其他OS
我們在Unix進程中,1個進程走完了自己的生命周期后,它會執行exit()系統調用,此時原來Unix進程表中的數據會被該進程的退出碼.

我們在Unix系統管理中,當用ps命令觀察Unix進程的執行狀態時,經常看到某些Unix進程的狀態欄為defunct,這就是所謂的“僵尸”進程。“僵尸”進程是一個早已死亡的進程,但在進程表(processs table)中仍占了一個位置(slot)。由于Unix進程表的容量是有限的,所以,defunct進程不僅占用系統的內存資源,影響系統的性能,而且如果其數目太多,還會導致系統癱瘓。

我們知道,每個Unix進程在進程表里都有一個進入點(entry),核心程序執行該Unix進程時使用到的一切信息都存儲在進入點。當用ps命令察看系統中的進程信息時,看到的就是進程表中的相關數據。

當以fork()系統調用建立一個新的進程后,核心進程就會在進程表中給這個新進程分配一個進入點,然后將相關信息存儲在該進入點所對應的進程表內。這些信息中有一項是其父進程的識別碼。

當這個進程走完了自己的生命周期后,它會執行exit()系統調用,此時原來Unix進程表中的數據會被該進程的退出碼(exit code)、執行時所用的CPU時間等數據所取代,這些數據會一直保留到系統將它傳遞給它的父進程為止。由此可見,defunct進程的出現時間是在子進程終止后,但是父進程尚未讀取這些數據之前。利用這一點我們可以用下面的程序建立一個defunct 進程:
 

  1. CODE:#include  
  2. #include  
  3. main(){  
  4. if(!fork()){  
  5. printf(“child pid=%d\n”, getpid());  
  6. exit(0)  
  7. }  
  8. sleep(20);  
  9. printf(“parent pid=%d \n”, getpid());  
  10. exit(0);  
  11. }  

當上述程序以后臺的方式執行時,第8行強迫程序睡眠20秒,讓用戶有時間輸入ps -e指令,觀察進程的狀態。當父進程執行終止后,再用ps -e命令觀察時,我們會發現defunct進程也隨之消失。這是因為父進程終止后,init 進程會接管父進程留下的這些“孤兒進程”(orphan process),而這些“孤兒進程”執行完后,它在進程表中的進入點將被刪除。

如果一個程序設計上有缺陷,就可能導致某個Unix進程的父進程一直處于睡眠狀態或是陷入死循環,那么當該子進程執行結束后就變成了defunct進程,這個defunct 進程可能會一直留在系統中直到系統重新啟動。

如果我們將上述程序略作修改,在第8行sleep()系統調用前執行wait()或waitpid()系統調用,則子進程在終止后會立即把它在Unix進程表中的數據返回給父進程,此時系統會立即刪除該進入點。在這種情形下就不會產生defunct進程。

由于調度程序無法選中Defunct 進程,所以不能用kill命令刪除Defunct 進程,惟一的方法只有重啟系統。

【編輯推薦】

  1. Unix系統top記錄知識學習
  2. 簡單介紹Unix系統中打印知識
  3. Unix操作系統打印問題解決
  4. 當Unix系統遇到病毒時
  5. Unix操作系統知識講解
責任編輯:小霞
相關推薦

2015-09-08 14:42:17

Android性能優化

2011-07-15 14:46:18

PHP

2010-04-14 13:59:45

Unix操作系統

2010-04-16 18:19:32

Unix操作系統

2012-06-13 13:25:16

UNIX操作系統

2015-07-31 14:11:01

內滾動布局

2009-06-17 09:06:59

Unix系統資源進程

2010-04-09 17:25:13

Unix操作系統

2010-04-14 15:58:25

Unix操作系統

2010-04-19 09:08:20

Unix操作系統

2010-04-19 16:47:40

Unix操作系統

2010-05-06 16:15:04

Unix系統進程

2010-05-11 19:16:03

Unix系統

2010-04-14 13:20:29

Unix操作系統

2010-04-14 16:45:15

Unix操作系統

2010-04-30 17:27:59

Unix操作系統

2022-08-09 18:08:36

Firefox瀏覽器多賬戶容器

2010-04-07 17:55:12

Unix命令

2010-05-04 15:33:41

Unix系統

2009-03-26 10:36:45

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产精品一区 | 龙珠z在线观看 | 成人精品一区二区 | 午夜网站视频 | 日韩精品一区二区三区中文在线 | 国产精品国产亚洲精品看不卡15 | 视频精品一区 | 青青草一区二区 | 久久久性色精品国产免费观看 | 久久久.com | 亚洲入口| 99精品免费 | 91天堂| www精品美女久久久tv | 81精品国产乱码久久久久久 | 男人天堂av网站 | 日韩视频 中文字幕 | 91高清视频在线 | 久久精品亚洲一区 | 永久av | 亚洲午夜网 | 久久亚洲国产精品 | 午夜电影网站 | 男女网站在线观看 | 成在线人视频免费视频 | 天堂免费| 黄色一级大片在线免费看产 | 欧美精品一区二区三区在线播放 | 伊人伊成久久人综合网站 | 精品视频一区二区三区 | 色免费在线视频 | 亚洲精品一二三区 | 日韩三区 | 91免费看片 | 日本在线小视频 | 97精品国产97久久久久久免费 | 日韩影院在线 | 久久久久久久久久久蜜桃 | 免费看国产一级特黄aaaa大片 | 久色视频在线观看 | 99久久精品免费看国产四区 |