作業系統 程序控制

2021-08-08 14:57:46 字數 2095 閱讀 5238

附錄

1.程序的建立

#include#includemain()

}2.程序的互斥

1>同步

#include#includemain()

else

else

}}2>互斥

#include#includemain()

else

else

}}3.程序的軟中斷通訊

#include#include#includevoid waiting(),stop(),alarming();

int wait_mark;

main()

else

} else }

void waiting()

void alarming()

void stop()

4.程序的管道通訊

#include #include #include int pid1,pid2;

main( )

else

else

}}5.程序間訊息的建立、傳送和接收

struct msgform /*訊息結構*/

msg;

int msgqid,i;

void client( )

exit(0);

}void server( )

while(msg.mtype!=1); /*訊息型別為1時,釋放佇列*/

msgctl(msgqid, ipc_rmid,0); /*刪除msgqid的訊息佇列*/

}main()

else client( ); /*建立的子程序*/

}6.程序共享儲存區的建立、附接和斷接

int shmid,i;

int *addr;

client()

exit(0);

}server()

while(*addr);

wait(0);

shmctl(shmid,ipc_rmid,0); /*撤銷共享儲存區,歸還資源*/

} main()

else }

7.處理器排程

#include#include#includestruct pcb *head,*tail; //這裡是全域性的

int global_time = 0; //全域性時間

struct pcb;

struct pcb* initpcb(struct pcb *p, int i)

//輸入任務名稱, 時間和優先順序,執行狀態為e

void run(struct pcb *p)

//輸出這個任務的狀態,全域性時間加1,任務還需要的時間減1,優先 級減1

void sortchain(struct pcb *phead,struct pcb *ptail)

else

ppre = ptemp;

}if(pmax == phead)else

pmax ->next = null;

if(head == null)else

} }}int main(void )

else

} sortchain(head,tail); /// 按照 priority順序排列結點

while(head != null) //讓p指標從 head->next 開始走到末尾,輸出每乙個狀態

p = head;

run(p);//p指向第乙個pcb,然後進行排程

if(p->run_time <= 0) //如果pcb已經結束,輸出資訊,釋放空間 ,進行下一輪 迴圈

sortchain(head,tail); //按照 priority 順序 排列結點

} //如果還需要執行,將pcb插入合適位置

system("pause");

return 0;

}

作業系統 程序控制

知識總結 目錄 程序控制 1.程序建立 使用者登入,作業排程,列印等會導致新程序的建立 原語 原語 作業系統或 計算機網路用語範疇。是由若干條指令組成的,用於完成一定功能的乙個過程。是由若干個 機器指令 構成的完成某種特定功能的一段程式,具有不可分割性 即原語的執行必須是連續的,在執行過程中不允許被...

作業系統 程序控制

程序控制的主要功能是對系統中的所有程序實施有效的管理,它具有建立新程序 撤銷已有程序 實現程序狀態轉換等功能。簡化理解 程序控制就是要實現程序狀態的轉換。用原語實現程序控制。原語的特點是執行期間不允許中斷,只能一氣呵成。這種不可中斷的操作即原子操作。原語採用 關中斷 指令和 開中斷指令 實現。關中斷...

作業系統 程序控制

fork 使用fork建立乙個子程序 在子程序從此時開始執行,並不執行fork前的內容 fork在父程序中返回子程序的pid,在子程序中返回0 子,父程序是並行執行的,所以輸出可能是摻雜到一起的 includemain fork表示開啟乙個子程序,從 的此處開始執行 區別父子程序是通過fork的返回...