Linux C 的程式排程

風塵璞發表於2016-09-30

程式排程

     概念:按一定的演算法,從一組待執行的程式中選出一個來佔用CPU的執行。

  排程方法: 搶佔式 、   非搶佔式

  排程演算法:1)先來先服務   2)短程式優先    3)高優先順序優先    4)時間片輪轉法

  死鍵:多個程式因競爭資源而形成一種僵局,若無外力作用,這些程式將永遠不能向前推進。


 獲取ID的標頭檔案:#include <sys/types.h>  、<unistd.h>

                             pid_t.getpid(void)     獲取本程式ID

                            pid_t. getppid(void)       獲取父程式ID


 程式的建立: 建立子程式   pid_t    fork(void)


  一次呼叫,返回兩個程式,可能有三種返回值;

  1)返回 失敗    < 0

 2)父程式            返回子程式ID

 3)子                       返回0


    init---------始祖程式:所有程式的源頭

  fork與vfork的區別:

 1)fork:子程式拷貝父程式的資料段或資源(一模一樣), 呼叫的標頭檔案    <unistd.h>

      vfork:子程式與父程式共享資料段

2)fork:父、子程式的執行順序不確定

     vfork:子程式先執行,父程式後執行


exce函式族:  #include <unistd.h>

1 int execl(const char *path, const char *arg1,..............)

引數: path:被執行程式名(包含完整的路徑)

  arg1......argn:被執行的程式所需的命令列引數,含程式名,以空指標(NULL)結束


2  int  main(int  argc,  char  **argv)    .......命令列引數               sleep( );

  exec用被執行的程式替換呼叫它的程式      

   區別:

   fork:建立一個新的程式,產生一個新的PID

  exec啟動一個新的程式,替換原有的程式,因此程式的PID不會發生改變   ............俗稱  借屍還魂


程式的等待: #include <sys/types.h>              #include <sys/wait.h>


 pid_t wait(int   status)


功能: 阻塞該程式,直到其某個子程式退出。

相關文章