freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

word版可編輯-linux操作系統(tǒng)課程設(shè)計(jì)報(bào)告基于linux的進(jìn)程調(diào)度模擬程序精心整理docxdocx-在線瀏覽

2024-08-25 11:43本頁(yè)面
  

【正文】 度算法常用于批處理系統(tǒng)中。它又分為兩種:非搶占式優(yōu)先數(shù)算法和搶占式優(yōu)先數(shù)算法在非搶占式優(yōu)先數(shù)算法下,系統(tǒng)一旦把處理機(jī)分配給就緒隊(duì)列中優(yōu)先數(shù)最高的進(jìn)程后,這個(gè)進(jìn)程就會(huì)一直運(yùn)行,直到完成或發(fā)生某事件使它放棄處理機(jī),這時(shí)系統(tǒng)才能重新將處理機(jī)分配給就緒隊(duì)列中的另一個(gè)優(yōu)先數(shù)最高的進(jìn)程。(2)先來(lái)先服務(wù)算法如果早就緒的進(jìn)程排在就緒隊(duì)列的前面,遲就緒的進(jìn)程排在就緒隊(duì)列的后面,那么先來(lái)先服務(wù)(FCFS: first e first service)總是把當(dāng)前處于就緒隊(duì)列之首的那個(gè)進(jìn)程調(diào)度到運(yùn)行狀態(tài)。基本思想:先來(lái)先服務(wù)的作業(yè)調(diào)度算法:優(yōu)先從后備隊(duì)列中,選擇一個(gè)或多個(gè)位于隊(duì)列頭部的作業(yè),把他們調(diào)入內(nèi)存,分配所需資源、創(chuàng)建進(jìn)程,然后放入“就緒隊(duì)列”先來(lái)先服務(wù)的進(jìn)程調(diào)度算法:從“就緒隊(duì)列”中選擇一個(gè)最先進(jìn)入隊(duì)列的進(jìn)程,為它分配處理器,使之開始運(yùn)行原理:按照進(jìn)程進(jìn)入就緒隊(duì)列的先后順序調(diào)度并分配處理機(jī)執(zhí)行。一旦一個(gè)進(jìn)程占有了處理機(jī),它就一直運(yùn)行下去,直到該進(jìn)程完成工作或者因?yàn)榈却呈录l(fā)生而不能繼續(xù)運(yùn)行時(shí)才釋放處理機(jī)。②、調(diào)度退出隊(duì)列時(shí)從相應(yīng)隊(duì)列首開始順序掃描,將相關(guān)的JCB或PCB調(diào)度移出相應(yīng)隊(duì)列。進(jìn)行實(shí)驗(yàn)時(shí),輸入進(jìn)程名、優(yōu)先數(shù)、到達(dá)時(shí)間、需要運(yùn)行時(shí)間、已用CPU時(shí)間、進(jìn)程狀態(tài)。通過(guò)觀察實(shí)驗(yàn)結(jié)果,比較兩種調(diào)度算法的優(yōu)缺點(diǎn)。CentOS操作系統(tǒng)是Linux發(fā)行版之一,它是來(lái)自于Red Hat Enterprise Linux依照開放源代碼規(guī)定釋出的源代碼所編譯而成。因?yàn)镃entOS操作系統(tǒng)安裝了gcc編譯器,能編譯C語(yǔ)言。 雖然我對(duì)linux的進(jìn)程調(diào)度方面的知識(shí)還有很多不知道的知識(shí),但我是在不斷學(xué)習(xí)的 ,遇到不懂得就通過(guò)查資料或請(qǐng)教他人的方法,不斷地學(xué)習(xí)。 每個(gè)進(jìn)程有一個(gè)進(jìn)程控制塊(PCB)表示。 進(jìn)程的優(yōu)先數(shù)及需要的運(yùn)行時(shí)間事先人為地指定。 進(jìn)程的運(yùn)行時(shí)間以時(shí)間片為單位進(jìn)行計(jì)算。用已占用CPU時(shí)間加1來(lái)表示。 每進(jìn)行一次調(diào)度程序都打印一次運(yùn)行進(jìn)程、就緒隊(duì)列、以及各個(gè)進(jìn)程的PCB,以便進(jìn)行檢查。 數(shù)據(jù)結(jié)構(gòu)(1)進(jìn)程控制塊結(jié)構(gòu)PCB:是struct定義的結(jié)構(gòu)體,定義如下:typedef struct pcb{char qname[20]。 /*進(jìn)程狀態(tài)*/int super。 /*進(jìn)程需要運(yùn)行的時(shí)間*/int runtime。 /*進(jìn)程當(dāng)前獲得的時(shí)間片大小*/}PCB。 /*結(jié)點(diǎn)數(shù)據(jù)*/struct node *next。(3)由隊(duì)列結(jié)點(diǎn)Node擴(kuò)展的隊(duì)列Queue,定義如下:typedef struct queue{Node *front。/*隊(duì)尾*/}Queue。(2)將進(jìn)程控制塊x加入隊(duì)列q的函數(shù)void enqueue(PCB x,Queue *q)。該函數(shù)將隊(duì)列q的隊(duì)首進(jìn)程刪除,由于可能該進(jìn)程未運(yùn)行完畢,需進(jìn)入下一優(yōu)先級(jí)隊(duì)列, 所以先修改其結(jié)構(gòu)體內(nèi)成員變量:已運(yùn)行時(shí)間為上次已運(yùn)行時(shí)間加上這次獲得的cpu時(shí)間;優(yōu)先級(jí)減1(若該進(jìn)程已是最低優(yōu)先級(jí),則將在主控過(guò)程中恢復(fù));下次獲得的時(shí)間片為這次的時(shí)間片加1。 (4)主函數(shù)利用上述的數(shù)據(jù)結(jié)構(gòu)和函數(shù)實(shí)現(xiàn)模擬進(jìn)程調(diào)度。includeincludeincludeincludedefine PCB_LEN sizeof(PCB)define NODE_LEN sizeof(Node)define QUEUE_LEN sizeof(Queue)/*進(jìn)程控制塊結(jié)構(gòu)PCB*/typedef struct pcb{ char qname[20]。 /*進(jìn)程狀態(tài)*/ int super。 /*進(jìn)程需要運(yùn)行的時(shí)間*/ int runtime。 /*進(jìn)程當(dāng)前獲得的時(shí)間片大小*/}PCB。 struct node *next。/*實(shí)現(xiàn)進(jìn)程控制塊的隊(duì)列*/typedef struct queue{ Node *front。}Queue。 else return 1。 (pdata).state=。 (pdata).ndtime=。 (pdata).cpu=。 pnext=0。 else qfront=p。}/*刪除隊(duì)列q的隊(duì)首進(jìn)程,將其值賦給x并修改狀態(tài)*/void dequeue(PCB *x,Queue *q){ Node *p=(Node *)malloc(NODE_LEN)。 /*進(jìn)入下一優(yōu)先級(jí)隊(duì)列之前修改狀態(tài)*/ xstate=39。/*狀態(tài)改為就緒*/ strcpy(xqname,(qfrontdata).qname)。 /*優(yōu)先級(jí)減1,若該進(jìn)程已是最低優(yōu)先級(jí),則將在主控過(guò)程中恢復(fù)*/ xsuper=(qfrontdata).super1。 /*下次獲得的時(shí)間片為這次的時(shí)間片加1*/ xcpu=(qfrontdata).cpu+1。 qfront=qfrontnext。}/*主控過(guò)程*/void main(){ Queue *queue=NULL。 PCB x。 int hight=0,num=0。 char name[20]。 scanf(%d,amp。 /*為隊(duì)列數(shù)組開辟空間,每個(gè)數(shù)組表示不同的優(yōu)先級(jí)隊(duì)列*/ queue=(Queue *)calloc(numberOFcourse,QUEUE_LEN)。inumberOFcourse。 printf(\n輸入進(jìn)程名:)。 printf(\n輸入進(jìn)程優(yōu)先數(shù):)。super)。 printf(\n輸入進(jìn)程運(yùn)行時(shí)間:)。time)。 =39。 =super。 =0。 enqueue(x,amp。 } printf(\n\n)。i=0。queue[i])) { num++。 getch()。 /*打印正在運(yùn)行進(jìn)程*/ ((queue[i].front)data).state=39。 printf(******當(dāng)前工作的進(jìn)程是:%s\n,((queue[i].front)data).qname)。 printf(%s,((queue[i].front)data).qname)。 printf(%d,(((queue[i].front)data).super))。 printf(%d\n\n,(((queue[i].front)data).runtime))。 temp_runtime=((queue[i].front)data).runtime。 temp_ndtime=temp_ndtimetemp_runtimetemp_cpu。 ((queue
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1