微吼云上線多路互動直播服務 加速多場景互動直播落地
1159
2022-05-29
操作系統之進程調度——優先權法和輪轉法(附上樣例講解)
操作系統之銀行家算法—詳解流程及案例數據
操作系統之多線程編程—讀者優先/寫者優先詳解
操作系統之存儲管理——FIFO算法和LRU算法
操作系統之磁盤調度——SCAN實例講解
要求
一、實驗目的
多道程序設計中,經常是若干個進程同時處于就緒狀態,必須依照某種策略來決定那個進程優先占有處理機。因而引起進程調度。本實驗模擬在單處理機情況下的處理機調度問題,加深對進程調度的理解。
二、實驗內容
1.優先權法、輪轉法
簡化假設
1)進程為計算型的(無I/O)
2)進程狀態:ready、running、finish
3)進程需要的CPU時間以時間片為單位確定
2.算法描述
1)優先權法——動態優先權
當前運行進程用完時間片后,其優先權減去一個常數。
2)輪轉法
三、流程圖
優先權:
輪轉法:
分析
?想要完成操作系統算法第一步要弄清楚操作系統相關的專業術語。弄清各個算法的流程和目的要求。才能模擬出相關算法的過程。下面先附上實驗的相關要求?
通過本次實驗,深刻的理解了操作系統中線程資源的分配方式和進程的調度方式。操作系統實驗重在理解每一個算法的意圖和目的,那么就選擇適當的數據結構模擬過程就可以完成相關算法了。
所有線程的序列核心是圍繞優先權的權值大小。并且該優先權的大小會動態的變化,那么我們選區以權值為排序準則的優先隊列是處理該結構的最好方法。能夠有效的節省空間,算法復雜度。
而優先權算法某個線程的結束標識是還需要的時間needtime。所以在隨機選區線程的時候和輸出狀態的時候要判斷該線程還需不需要資源。
至于狀態還有一點很重要的是要即使轉換。當進行下一個操作要即使轉換上一個線程的狀態和下一個線程的狀態防止狀態混淆。
輪轉法強調先進先出的拉鏈式順序,而不以其他的權值作為開始/調度的先后順序,所以普通先進先出的普通隊列是解決該算法的最好方法。
. 輪轉法和優先權法不一樣的是優先權法每次只進一個線程只執行一次。而輪轉法是進一個可以執行最多是該線程可輪轉的次數/輪轉值(可能在中間就完成線程的釋放),所以在寫程序的時候每次都要判斷是否已經輪轉。并且到最后還要判斷還是否需要調度。如果需要,再拋入隊尾。
代碼
實現的代碼(java):
import java.util.ArrayDeque; import java.util.Comparator; import java.util.PriorityQueue; import java.util.Queue; import java.util.Scanner; public class priority { static pcb pcb[]; public static void main(String[] args) { // TODO 自動生成的方法存根 System.out.println("創建線程數量:"); Scanner sc=new Scanner(System.in); int n=sc.nextInt(); pcb=new pcb[n]; for(int i=0;i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
數據打印
優先權:
2:輪轉法:
聲明:這只是本人的個人理解,如果又紕漏,還請大神指出!?
如果對后端、爬蟲、數據結構算法等感性趣歡迎關注我的個人公眾號交流:bigsai
任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。