<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            暑假實踐報告調度

            時間:2020-10-22 12:25:20 暑假實踐報告 我要投稿

            關于暑假實踐報告調度

              選題:

            關于暑假實踐報告調度

              在多道程序運行環境下,進程數目一般多于處理機數目,使得進程要通過競爭來使用處理機。這就要求系統能按某種算法,動態地把處理機分配給就緒隊列中的一個進程,使之運行,分配處理機的任務是由進程調度程序完成的。一個進程被創建后,系統為了便于對進程進行管理,將系統中的所有進程按其狀態,將其組織成不同的進程隊列。于是系統中有運行進程隊列、就緒隊列和各種事件的進程等待隊列。進程調度的功能就是從就緒隊列中挑選一個進程到處理機上運行。進程調度的算法有多種,常用的有優先級調度算法、先來先服務算法、時間片輪轉算法。

              1、先來先服務算法:

              實踐要求和意義:

              (1)實踐要求:

              進程的調度采用先來先服務算法。

              設計三個鏈隊列,分別用來表示運行隊列、就緒隊列和完成隊列。 ? 用戶輸入進程標識符以及進程所需的時間,申請空間存放進程PCB信息。 ④ 輸出的格式和上面的運行結果分析中的格式相同。

              (2)實踐意義:

              按照進程進入就緒隊列的先后次序來分配處理器;

              培養我們分析,解決問題以及自學的能力;

              提高我們書寫代碼以及論文文檔的寫作能力。

              課題實現:

              1、功能設計:

              先進入就緒隊列的進程優先被挑選,運行進程一旦占有處理器將一直運行下去直到運行結束或被阻塞,這是一種非剝奪式調度。

              2、結構設計:

              (1)開始。

              (2)設計三個鏈隊列,分別用來表示運行隊列、就緒隊列和完成隊列。

              (3)用戶輸入進程標識符以及進程所需的時間,申請空間存放進程PCB信息。

              (4)輸出的格式和上面的運行結果分析中的格式相同。

              (5)結束。

              3、核心算法:

              ·先來先服務算法的核心就是到達時間的排序,核心算法為: void sort(A *p,int N) //到達時間排序

              {

              for(int i=0;i<=N-1;i++)

              for(int j=0;j<=i;j++)

              if(p[i].arrivetime<p[j].arrivetime)

              {

              A temp;

              temp=p[i];

              p[i]=p[j];

              p[j]=temp;

              }

              }

              4、數據結構:

              (1)定義進程數以及進程名稱name[];

              (2)定義進程的一些屬性:

              ?進程的到達時間arrivetime;

              ?進程的服務時間servicetime;

              ?進程的開始時間starttime;

              ④進程的結束時間finishtime;

              運行環境:

              (1)開發程序的操作系統:Windows XP

              (2)編譯工具:visual C++ 6.0

              2、時間片輪轉算法:

              實踐要求和意義:

              (1)實踐要求:

              進程的調度采用時間片輪轉算法。

              設計三個鏈隊列,分別用來表示運行隊列、就緒隊列和完成隊列。 ? 用戶輸入進程標識符以及進程所需的時間,申請空間存放進程 PCB信 息。

              ④ 輸出的格式和上面的運行結果分析中的格式相同。

              (2)實踐意義:

              使用時間片輪轉算法來分配處理器;

              培養我們分析,解決問題以及自學的能力;

              提高我們書寫代碼以及論文文檔的寫作能力。

              課題實現:

              1、功能設計:

              時間片輪轉調度,具體做法是調度程序每次把 CPU 分配給就緒隊列首進程使用一個時間片。當這個時間片結束時,就強迫一個進程讓出處理器,讓它排列到就緒隊列的尾部,等候下一輪調度。

              實現這種調度要使用一個間隔時鐘。當一個進程開始運行時,就將時間片的值置入間隔時鐘內,當發生間隔時鐘中斷時,就表明該進程連續運行的時間已超過一個規定的時間片。此時,中斷處理程序就通知處理器調度進行處理器的切換工作。

              2、結構設計:

              (1)開始。

              (2)設計三個鏈隊列,分別用來表示運行隊列、就緒隊列和完成隊列。

              (3)用戶輸入進程標識符以及進程所需的時間,申請空間存放進程PCB信息。

              (4)輸出的格式和上面的運行結果分析中的格式相同。

              (5)結束。

              3、核心算法:

              ·時間片輪轉算法主要是設置時間片,來實現輪轉運行進程,核心算法為:

              void ptt(A *p,float arrivetime,float servicetime,float starttime,float finishtime,float lefttime,int timeprice,int N2)

              {

              float w=0;int c=0;

              float stoptime=0;

              printf(" 請輸入時間片的值:");

              cin>>timeprice;

              sort(p,N2);

              float d[20],h[20];

              for(int k=0;k<=N2-1;k++)

              { d[k]=p[k].servicetime;

              if(k==0)

              {

              p[k].starttime=p[k].arrivetime;

              p[k].finishtime=p[k].arrivetime+p[k].servicetime;}

              else

              {

              p[k].starttime=p[k-1].finishtime;

              p[k].finishtime=p[k-1].finishtime+p[k].servicetime;}

              h[k]=p[k].starttime;

              p[k].lefttime=p[k].servicetime-timeprice;

              if(p[k].lefttime>0)

              {c=c+1;

              p[k].stoptime=p[k].starttime+timeprice;

              p[k].finishtime=p[k].stoptime;

              }

              else p[k].stoptime=p[k].finishtime;

              w=p[k].stoptime;

              }

              4、數據結構:

              (1)定義進程數以及進程名稱name[];

              (2)定義進程的一些屬性:

              進程的到達時間arrivetime;

              進程的服務時間servicetime;

              進程的'開始時間starttime;

              ④進程的結束時間finishtime;

              ⑤進程的剩余時間lefttime

              ⑥時間片的時間timeprice

              運行環境:

              (1)開發程序的操作系統:Windows XP

              (2)編譯工具:visual C++ 6.0

              總結&心得體會:

              本次實踐課題讓我了解到了什么是進程調度,其主要的功能就是根據作業控制塊中的信息,審查系統是否能滿足用戶作業的資源需求,以及按照一定的算法,從外存的后備隊列中選區,分配某些作業調入內存,并且為他們創建進程,分配必要的資源。

              通過這幾天的學習和同學的講解,我總算完成了這次的進程調度實驗,根據書本上的學習,來測試本系統,發現輸入數據以及輸出數據和預測的結果吻合,證明此次實驗還是比較成功的。

              附錄:

              #include

              #include

              #include

              using namespace std;

              struct A{//先來先服務算法

              char name[10];

              float arrivetime;

              float servicetime;

              float starttime;

              float finishtime;

              float lefttime;

              float stoptime;

            【關于暑假實踐報告調度】相關文章:

            關于暑假實踐報告11-30

            關于暑假實踐報告11-25

            關于暑假實踐活動報告12-30

            關于暑假實踐報告范文11-30

            關于暑假醫院實踐報告范文06-30

            關于暑假社會實踐報告12-01

            關于暑假實踐報告2000字11-30

            關于暑假社會實踐報告11-27

            關于大學暑假實踐報告格式12-13

            ★暑假實踐報告01-06

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看