附錄
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的返回...