站長資訊網
        最全最豐富的資訊網站

        Linux下的進程和進程間的狀態轉換

        Linux下的進程和進程間的狀態轉換。在我們的計算機層次結構中,操作系統是處于一個承上啟下的層次。如下圖~Linux下的進程和進程間的狀態轉換

        在計算機中,操作系統的定位是一個管理者,對上管理在系統中運行的進程,對下通過驅動程序管理各種硬件。

        說到進程,首先得稍微解釋一下,什么叫做程序。

        程序:程序是以某種語言編寫,為完成某個特定任務的一系列指令和數據的有序集被稱之為程序。

        那么什么是進程?

        從用戶的角度來解讀,進程就是程序的一次動態的執行過程。

        但是想要深入理解進程的概念,一定要知道操作系統是怎么解讀進程的。

        首先要了解進程控制塊(Process Control Block),簡稱PCB。進程屬性的集合全部被放在PCB之中,在Linux下,PCB是一個叫做task_struct的結構體之中。

        學過C數據結構的同學應該都知道,結構體用來描述一個結構的信息,通過指針我們把這些結構組織起來,形成不同的數據結構。比如鏈表,二叉樹,堆等等。

        而操作系統也是通過這樣的方式對我們的PCB來進行管理的。

        那么操作系統通過PCB來對進程進行管理,那么PCB中大概有什么關鍵信息呢?

        進程標識符,進程狀態,進程優先級,程序入口地址,各種計時信息,文件系統的相關信息,現場保護信息等等一系列的信息。

        在Linux下,進程標識符就是pid,這個可以通過命令來獲取,也可以通過一些系統調用接口來獲取,如ps命令,getpid()接口。pid是在操作系統下唯一標識一個進程存在的標識符,用于區別其他進程,同樣的道理,一個PCB也只唯一標識一個進程。

        在Linux下,一個進程可以有七種不同的狀態。

        R運行狀態(running):并不意味著進程一定在運行中,它表明進程要么是在運行要么是在運行隊列里。

        S睡眠狀態(sleeping):意味著進程在等待事件完成(可中斷睡眠)。

        D磁盤休眠狀態(Disk sleep):也叫不可中斷睡眠狀態,在這個狀態進程通常會等待IO的結束。

        T停止狀態(stopped):可以通過發送SIGSTOP信號給進程來停止(T)進程。這個暫停的進程可以通過發送SIGCONT信號讓進程繼續運行(關于信號后面還會繼續更新到相關內容)。

        X死亡狀態(dead):這個狀態只是一個返回狀態,你不會在任務列表里看到這個狀態。

        還有t(tracing stop)跟蹤狀態和Z(zombie)僵尸狀態。

        僵尸狀態是進程已經終止,但是還占用這系統中的資源沒有釋放,這種狀態對系統是有害的。

        僵尸進程這種狀態比較特殊。當進程退出并且父進程沒有讀取到子進程退出的返回代碼就會產生僵尸進程。
        所以,只要子進程推遲,父進程還在運行,但父進程沒有讀取子進程的狀態,子進程進入Z狀態。

        用這段小程序在Linux系統下運行,然后用查看進程狀態的命令查看就可以看到進程變成了Z狀態。

          #include  #include  #include    int main()  {      pid_t id = fork();      if(id == -1){          perror("fork");          return 1;      }      else if(id == 0){          printf("child pid: %dn",getpid());          sleep(3);          exit(0);      }else{          printf("parents pid:%dn",getpid());          sleep(30);          exit(EXIT_SUCCESS);      }      return 0;  }

        狀態之間的轉換關系如下:Linux下的進程和進程間的狀態轉換

        孤兒進程:父進程先退出,子進程就被稱為孤兒進程。父進程如果提前退出,那么子進程后退出,進入Z之后,該怎么辦呢?這個時候會產生對系統資源的浪費的僵尸進程。操作系統當然不會眼睜睜的看著這種事情發生,所以當系統中產生孤兒進程,就會被1號init進程領養,當然會被init進程回收,這里的init進程可以先理解為操作系統的進程。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品内射久久久久欢欢| 亚洲精品~无码抽插| 完整观看高清秒播国内外精品资源| 久久夜色精品国产噜噜噜亚洲AV| 久久青青草原精品国产软件| 99麻豆久久久国产精品免费| 自拍偷自拍亚洲精品情侣| 99久久www免费人成精品 | 久久国产精品久久| 日韩精品无码一区二区三区不卡| 99国产精品一区二区| 亚洲av无码成人精品区| 99久久夜色精品国产网站| 国内精品91最新在线观看| 精品熟女少妇av免费久久| 在线精品国产一区二区三区| 日产国产精品亚洲系列| 久久精品亚洲福利| 国产精品激情综合久久 | 亚洲国产精品狼友中文久久久| 亚洲精品国产成人片| 久久精品一区二区三区中文字幕| 久热这里只有精品视频6| 亚洲一区无码精品色| 精品国产一级在线观看| 国产欧美日韩综合精品二区| 92精品国产自产在线观看| 亚洲视频精品在线| 亚洲精品国产成人专区| 欧美精品香蕉在线观看网| 久久精品国产半推半就| 国内精品在线视频| 国产精品素人搭讪在线播放| 国产99视频精品免费专区| 97久久久久人妻精品专区| 国产精品精品自在线拍| 国产精品亚洲一区二区在线观看| 亚洲综合精品网站在线观看| 欧美日韩国产精品自在自线| 久久精品成人一区二区三区| 国产亚洲精品免费视频播放|