程序排程演算法模擬

2022-02-18 02:22:13 字數 4384 閱讀 8516

最近學了作業系統的程序排程的各種演算法,手癢實現了一下,

僅供參考,若有bug,請指出.^v^.

先到先服務(fcfs)

1

//先來先服務排程演算法

2 #include 3

#define time 500 //

限制最長程序執行時間

4#define n 100

5#define state int

6using

namespace

std;

7struct

pcb20

}pcb[n];

21int

num;

22double cur_t = 0;23

bool

cmp(pcb a, pcb b)

26void

fcfs()36}

3738

void

init()46}

4748

void

output()53}

54int

main()

最短作業優先排程演算法(sjf)

1

//短作業優先排程演算法 (非搶占式)

2 #include 3

#define time 500 //

限制最長程序執行時間

4#define n 100

5#define state int

6using

namespace

std;

7double cur_t = 0;8

struct

pcb23

24}pcb[n];

25 priority_queueq;

26bool

vis[n];

27int

num;

28bool

cmp(pcb a, pcb b)

3334

void

init()42}

4344

void

sjf()else63}

64 cur_t =cnt.end_t;

65 pcb[index++] =cnt;

66//

cout<< pcb[index -1].end_t<<" ** "<67}68

bool flag = false;69

if( i 73if(!flag) break;74

}75}76

77void

output()82}

8384

intmain()

高響應比優先排程

1

//高響應比優先順序排程演算法(非搶占式)

2 #include 3

#define time 500 //

限制最長程序執行時間

4#define n 100

5#define state int

6using

namespace

std;

7double cur_t = 0;8

struct

pcb24

25}pcb[n];

26 priority_queueq;

27bool

vis[n];

28int

num;

29bool

cmp(pcb a, pcb b)

3233

void

init()41}

4243

void

hrrn()else63}

64 cur_t =cnt.end_t;

65 pcb[index++] =cnt;

6667

pcb left[n];

68int xn = 0;69

while( !q.empty() )

73for(int j = 0; j < xn; ++j)77}

78bool flag = false;79

if( i 8384

if(!flag) break;85

}86}87

88void

output()93}

94int

main()

1

//高響應比優先順序排程演算法(非搶占式)

2 #include 3

#define time 500 //

限制最長程序執行時間

4#define n 100

5#define state int

6using

namespace

std;

7double cur_t = 0;8

struct

pcb24

25}pcb[n];

26 priority_queueq;

27bool

vis[n];

28int

num;

29bool

cmp(pcb a, pcb b)

3233

void

init()41}

4243

void

hrrn()else63}

64 cur_t =cnt.end_t;

65 pcb[index++] =cnt;

6667

pcb left[n];

68int xn = 0;69

while( !q.empty() )

73for(int j = 0; j < xn; ++j)77}

78bool flag = false;79

if( i 8384

if(!flag) break;85

}86}87

88void

output()93}

94int

main()

搶占式優先比排程演算法

1

//搶占式優先比排程演算法

2 #include 3

#define time 500 //

限制最長程序執行時間

4#define n 100

5#define state int

6using

namespace

std;

7double cur_t = 0;8

struct

pcb24

25}pcb[n];

2627 priority_queueq;

28bool

vis[n];

29int

num;

30bool

cmp(pcb a, pcb b)

3536

void

init()44}

4546

void

pps()else

if(!vis[pcb[j].pos])

75 }else78}

79if

( ok )83}

84bool flag = false;85

for(int j = 0; j < num ;j++)93}

94if( !flag ) break;95

}96}97

98void

output()

103}

104105

intmain()

時間片輪轉排程演算法

1

//時間輪片排程演算法

2 #include 3

#define n 100

4#define state int

5using

namespace

std;

6struct

pcbpcb[n];

18int

num,time;

19double cur_t = 0

;20 queueq;

21bool

cmp(pcb a, pcb b)

2425

void

init()36}

3738

void

tt()else

54break;55

}56if(cnt.service_t >time)else64}

65bool flag = false;66

if(i 71if( !flag ) break;72

}7374}

7576

void

output()83}

8485

intmain()

程序排程模擬演算法

1.先進先出排程。程序按申請進入記憶體的時間執行。2.優先順序排程。程序按作業系統分配的優先順序,執行。3.時間輪轉排程。程序按申請進入記憶體的時間依次執行乙個時間片。4.分級排程。時間輪轉排程 優先順序排程。先執行優先順序較高的按時間輪轉排程的方法執行,在執行優先順序較低的。a.設計程序控制塊pc...

模擬程序排程演算法

模擬短作業優先演算法 時間片輪轉法和優先數演算法的執 況,並動態畫出其程序執行的gantt圖,計算以上演算法的每個程序的響應時間和周轉時間。name geting time 2014 12 10 includeusing namespace std const int max 100 定義程序結構體...

程序排程模擬

實驗平台 windows 7,vs2010 實驗目標 模擬短作業優先演算法,時間片輪轉演算法,和優先數演算法,並動態畫出grant圖,計算每個程序的響應時間和周轉時間 資料結構 class process fin.close void sjf void void preemptive sjf int...