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

        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號
        主站蜘蛛池模板: 国产成人精品一区在线| 日韩午夜高清福利片在线观看欧美亚洲精品suv | 国产精品无码A∨精品影院 | 国产成人精品怡红院在线观看| 日韩精品久久久肉伦网站| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 精品午夜久久福利大片| 精品国产乱码一区二区三区| 亚洲精品无码成人片在线观看 | 欧美成人精品高清在线播放| 中文字幕精品一区影音先锋| 国产精品一区二区不卡| 91精品视频网站| 国产精品午睡沙发系列| 国内精品久久久久久99| 无码精品国产VA在线观看DVD| 亚洲精品网站在线观看不卡无广告| 欧美日韩精品一区二区视频| 精品无码国产污污污免费网站国产 | 国产精品爽爽va在线观看网站| 精品久久久久久无码专区不卡| 日韩精品极品视频在线观看免费| 亚洲AV日韩精品久久久久久久| 一本色道久久88精品综合| 亚洲精品永久在线观看| 中文字幕精品久久久久人妻| 亚洲国产精品第一区二区三区| 亚洲国产精品一区二区第一页免| 中文字幕乱码中文乱码51精品| 亚洲国产成人一区二区精品区| 日韩精品久久久久久久电影蜜臀| 久久亚洲精品人成综合网| 精品久久久久中文字幕日本| 91国内外精品自在线播放| 国产精品一区二区久久| 99视频在线精品国自产拍亚瑟 | 久久se精品一区二区| 亚洲国产成人久久精品影视| 国产精品v欧美精品v日本精| 精品人体无码一区二区三区| 亚洲国产综合精品中文字幕 |