導航:首頁 > 源碼編譯 > cscan演算法

cscan演算法

發布時間:2022-09-25 09:49:33

1. 2018-06-09

一、常見的批處理作業調度演算法

1.先來先服務調度演算法(FCFS):就是按照各個作業進入系統的自然次序來調度作業。這種調度演算法的優點是實現簡單,公平。其缺點是沒有考慮到系統中各種資源的綜合使用情況,往往使短作業的用戶不滿意,因為短作業等待處理的時間可能比實際運行時間長得多。

2.短作業優先調度演算法(SPF): 就是優先調度並處理短作業,所謂短是指作業的運行時間短。而在作業未投入運行時,並不能知道它實際的運行時間的長短,因此需要用戶在提交作業時同時提交作業運行時間的估計值。

3.最高響應比優先演算法(HRN):FCFS可能造成短作業用戶不滿,SPF可能使得長作業用戶不滿,於是提出HRN,選擇響應比最高的作業運行。響應比=1+作業等待時間/作業處理時間。

4. 基於優先數調度演算法(HPF):每一個作業規定一個表示該作業優先順序別的整數,當需要將新的作業由輸入井調入內存處理時,優先選擇優先數最高的作業。

5.均衡調度演算法,即多級隊列調度演算法

基本概念:

  作業周轉時間(Ti)=完成時間(Tei)-提交時間(Tsi)

  作業平均周轉時間(T)=周轉時間/作業個數

  作業帶權周轉時間(Wi)=周轉時間/運行時間

  響應比=(等待時間+運行時間)/運行時間

二、進程調度演算法

1.先進先出演算法(FIFO):按照進程進入就緒隊列的先後次序來選擇。即每當進入進程調度,總是把就緒隊列的隊首進程投入運行。

2. 時間片輪轉演算法(RR):分時系統的一種調度演算法。輪轉的基本思想是,將CPU的處理時間劃分成一個個的時間片,就緒隊列中的進程輪流運行一個時間片。當時間片結束時,就強迫進程讓出CPU,該進程進入就緒隊列,等待下一次調度,同時,進程調度又去選擇就緒隊列中的一個進程,分配給它一個時間片,以投入運行。

3. 最高優先順序演算法(HPF):進程調度每次將處理機分配給具有最高優先順序的就緒進程。最高優先順序演算法可與不同的CPU方式結合形成可搶占式最高優先順序演算法和不可搶占式最高優先順序演算法。

4. 多級隊列反饋法:幾種調度演算法的結合形式多級隊列方式。

三、空閑分區分配演算法

\1. 首先適應演算法:當接到內存申請時,查找分區說明表,找到第一個滿足申請長度的空閑區,將其分割並分配。此演算法簡單,可以快速做出分配決定。

2. 最佳適應演算法:當接到內存申請時,查找分區說明表,找到第一個能滿足申請長度的最小空閑區,將其進行分割並分配。此演算法最節約空間,因為它盡量不分割到大的空閑區,其缺點是可能會形成很多很小的空閑分區,稱為「碎片」。

3. 最壞適應演算法:當接到內存申請時,查找分區說明表,找到能滿足申請要求的最大的空閑區。該演算法的優點是避免形成碎片,而缺點是分割了大的空閑區後,在遇到較大的程序申請內存時,無法滿足的可能性較大。

四、虛擬頁式存儲管理中的頁面置換演算法

1.理想頁面置換演算法(OPT):這是一種理想的演算法,在實際中不可能實現。該演算法的思想是:發生缺頁時,選擇以後永不使用或在最長時間內不再被訪問的內存頁面予以淘汰。

2.先進先出頁面置換演算法(FIFO):選擇最先進入內存的頁面予以淘汰。

3. 最近最久未使用演算法(LRU):選擇在最近一段時間內最久沒有使用過的頁,把它淘汰。

4.最少使用演算法(LFU):選擇到當前時間為止被訪問次數最少的頁轉換。

三、磁碟調度

1.先來先服務(FCFS):是按請求訪問者的先後次序啟動磁碟驅動器,而不考慮它們要訪問的物理位置

2.最短尋道時間優先(SSTF):讓離當前磁軌最近的請求訪問者啟動磁碟驅動器,即是讓查找時間最短的那個作業先執行,而不考慮請求訪問者到來的先後次序,這樣就克服了先來先服務調度演算法中磁臂移動過大的問題

3.掃描演算法(SCAN)或電梯調度演算法:總是從磁臂當前位置開始,沿磁臂的移動方向去選擇離當前磁臂最近的那個柱面的訪問者。如果沿磁臂的方向無請求訪問時,就改變磁臂的移動方向。在這種調度方法下磁臂的移動類似於電梯的調度,所以它也稱為電梯調度演算法。

4.循環掃描演算法(CSCAN):循環掃描調度演算法是在掃描演算法的基礎上改進的。磁臂改為單項移動,由外向里。當前位置開始沿磁臂的移動方向去選擇離當前磁臂最近的哪個柱面的訪問者。如果沿磁臂的方向無請求訪問時,再回到最外,訪問柱面號最小的作業請求。

對一個進程來說,一個重要的指標是它執行所需要的時間. 從進程提交到進程完成的時間間隔為周轉時間.也就是等待進入內存的時間,在就緒隊列中等待的時間,在 CPU中執行的時間和I/O操作的時間的總和.

例1.設一個系統中有5個進程,它們的到達時間和服務時間如下,A的到達時間為0,服務時間為3;B的到達時間為2,服務時間為6;C的到達時間為4,服務時間為4;D的到達時間為6,服務時間為5;E的 到達時間為8,服務時間為2,忽略1/0以及其他開銷時間,若分別按先來先服務(fFCFS)進行CPU調度,其平均周轉時間為?

10.2

6.4

8.6

4.5

先來先服務調度演算法

進程名  到達時間 服務時間  開始執行時間  完成時間  周轉時間

A              0              3                0                3                3

B              2              6                3                9                7

C              4              4                9                13              9

D              6              5                13              18              12

E              8              2                18              20              12

周轉時間 = 完成時間 - 到達時間

平均周轉時間 = 所有進程周轉時間 / 進程數 = (3+7+9+12+12)/ 5 = 8.6

單道批處理系統中有4個作業,J1的提交時間8.0,運行時間為2.0;J2的提交時間8.6,運行時間為0.6;J3提交時間8.8,運行時間為0.2;J4的提交時間9.0,運行時間為0.5。在採用響應比高者優先調度演算法時,其平均周轉時間為T為()小時?

2.5

1.8

1.975

2.675

周轉時間=作業完成時間-作業提交時間

響應比=(作業等待時間+作業執行時間)/作業執行時間

當提交J1時,只有J1作業,執行J1,J1的周轉時間為2,此時時間為10.

J2、J3、J4提交時,由於正在執行J1,因此等待。

當J1執行完畢(此時時間為10),J2、J3、J4的等待時間分別為:1.4,1.2,1,

其響應比分別為:1.4/0.6+1=3.33    1.2/0.2+1=7      1/0.5+1=3,因此執行J3,J3的周轉時間為1.2+0.2=1.4

當J3執行完畢(此時時間為10.2),J2和J4的等待時間分別為1.6,1.2,

其響應比分別為:1.6/0.6+1=3.66      1.2/0.5+1=3.4,因此執行J2,J2的周轉時間為1.6+0.6=2.2

執行J2完畢後時間為10.8,接下來執行J4,執行完後時時間為11.3,J4的周轉時間為2.3

於是平均周轉時間為(2+1.4+2.2+2.3)/4=1.975

如果系統作業幾乎同時到達,則使系統平均作業周轉時間最短的演算法是短作業優先。

例3、

現有4個同時到達的作業J1,J2,J3和J4,它們的執行時間分別是3小時,5小時,7小時,9小時系統按單道方式運行且採用短作業優先演算法,則平均周轉時間是()小時

12.5

24

19

6

作業到達時間執行時間開始時間完成時間周轉時間

J103033

J20 5388

J30781515

J409152424

平均周轉時間(3+8+15+24)/4=12.5 

有4個進程A,B,C,D,設它們依次進入就緒隊列,因相差時間很短可視為同時到達。4個進程按輪轉法分別運行11,7,2,和4個時間單位,設時間片為1。四個進程的平均周轉時間為 ()?

15.25

16.25

16.75

17.25

17.75

18.25

A:1  4  4  3  3  2  2  2  1  1  1  共24

B:2  4  4  3  3  2  2                  共20

C:3  4                                      共7

D:4  4  3  3                              共14

字母後面的數字為等待的時間加運行時間

平均周轉時間為(24+20+7+14)/4=16.25

例5、假設系統按單值方式運行且採用最短作業優先演算法,有J1,J2,J3,J4共4個作業同時到達,則以下哪幾種情況下的平均周轉時間為10分鍾?

執行時間J1:1分鍾 J2:5分鍾 J3:9分鍾 J4:13分鍾

執行時間J1:1分鍾 J2:4分鍾 J3:7分鍾 J4:10分鍾

執行時間J1:2分鍾 J2:4分鍾 J3:6分鍾 J4:8分鍾

執行時間J1:3分鍾 J2:6分鍾 J3:9分鍾 J4:12分鍾

首先,短作業優先則短時間的作業利用資源,其餘的作業等待

根據平均周轉時間概念,將所有作業"等待時間"加上"運行時間"除以"作業數量"即可得到平均周轉時間

A: (J1執行1分鍾 + J2等待1分鍾 + J2執行5分鍾 + J3等待6分鍾 + J3執行9分鍾 + J4等待15分鍾 + J4執行13分鍾) / 4  = 50/4 = 12.5

B:  (J1執行1分鍾 + J2等待1分鍾 + J2執行4分鍾 + J3等待5分鍾 + J3執行7分鍾 + J4等待12分鍾 + J4執行10分鍾) / 4  = 40/4 = 10

C: (J1執行2分鍾 + J2等待2分鍾 + J2執行4分鍾 + J3等待6分鍾 + J3執行6分鍾 + J4等待12分鍾 + J4執行8分鍾) / 4    = 40/4 = 10

D:  (J1執行3分鍾 + J2等待3分鍾 + J2執行6分鍾 + J3等待9分鍾 + J3執行9分鍾 + J4等待18分鍾 + J4執行12分鍾) / 4  = 50/4 = 12.5

例6、假設系統中有5個進程,它們的到達時間和服務時間見下表1,忽略I/O以及其他開銷時間,若按先來先服務(FCFS)、非搶占的短作業優先和搶占的短作業優先三種調度演算法進行CPU調度,請給出各個進程的完成時間、周轉時間、帶權周轉時間、平均周轉時間和平均帶權周轉時間,完成表2。  表1 進程到達和需要服務時間  進程    到達時間    服務時間  A          0            3  B          2            6  C          4            4  D          6            5  E          8            2

表2 進程的完成時間和周轉時間

                  進程                  A      B        C      D      E        平均

  FCFS          完成時間      3      9      13      18      20 

                周轉時間            3      7        9      12      12      8.6

            帶權周轉時間      1.00 1.17  2.25  2.40    6.00      2.56

  SPF(非搶占)  完成時間    3      9      15      20      11 

                周轉時間            3      7      11      14      3        7.6

            帶權周轉時間      1.00  1.17  1.75    2.80    1.50    1.84

  SPF(搶占)    完成時間    3      15      8      20      10 

                周轉時間            3      13      4      14      2        7.2

            帶權周轉時間      1.00  2.16  1.00  2.80  1.00    1.59

例7、假定在單道批處理環境下有5個作業,各作業進入系統的時間和估計運行時間如下表所示:    作業  進入系統時間    估計運行時間/分鍾      1            8:00                40      2            8:20                30      3            8:30                12      4            9:00                18

      5            9:10                5

如果應用先來先服務和應用最短作業優先的作業調度演算法,試將下面表格填寫完整。

(1) 如果應用先來先服務的作業調度演算法,試將下面表格填寫完整。

    作業  進入系統時間  估計運行時間/分鍾  開始時間  結束時間  周轉時間/分鍾

    1        8:00            40            8:00    8:40        40

    2        8:20            30            8:40    9:10        50

    3        8:30            12            9:10    9:22        52

    4        9:00            18            9:22    9:40        40

    5        9:10            5              9:40    9:45        35

作業平均周轉時間T= 43.4  217

2)如果應用最短作業優先的作業調度演算法,試將下面表格填寫完整。    作業  進入系統時間  估計運行時間/分鍾  開始時間  結束時間  周轉時間/分鍾    1        8:00            40              8:00    8:40          40    2        8:20            30              8:52    9:22          62    3        8:30            12              8:40    8:52          22    4        9:00            18              9:27    9:45          45    5        9:10            5              9:22    9:27          17作業平均周轉時間T= 37.2  186

CPU和兩台輸入/輸出設備(I1,I2)多道程序設計環境下,同時有三個作業J1,J2,J3進行,這三個作業

使用CPU和輸入/輸出設備的順序和時間如下所示:

J1:I2(35ms);CPU(15ms);I1(35ms);CPU(15ms);I2(25ms)

J2:I1(25ms);CPU(30ms);I2(35ms)

J3:CPU(30ms);I1(25ms);CPU(15ms);I1(15ms);

假定CPU,I1,I2都能並行工作,J1的優先順序最高,J2次之,J3優先順序最低,優先順序高的作業可以搶占優先順序低的作業的CPU,但不能搶佔I1,I2,作業從J3開始到完成需要多少時間?

2. 操作系統磁碟調度演算法wenti

SCAN調度演算法就是電梯調度演算法,顧名思義就是如果開始時磁頭往外就一直要到最外面,然後再返迴向里(磁頭編號一般是最外面為0號往裡增加),就像電梯若往下則一直要下到最底層才會再上升一樣。這里的從左端開始是什麼意思呢?一般是題目中會給出此時磁頭指向里或是指向外的。向外則向比它小的方向掃描,向里則向比它大的方向掃描,而若求尋道時間還要知道每移動一個磁軌所需的時間t,尋道時間T1={(53-37)+(37-14)+(14-0)+(65-0)+(67-65)+(98-67)+(122-98)+(124-122)+(183-124)+(199-183)}*t=(53+199)*t=252t.
CSCAN循環掃描調度演算法是先找出最靠近磁頭位置的下一個,或是按題中規定的方向,反正就是只能是單向掃描。例如題中65距53最近,於是最先到65然後繼續朝增加的方向,直到最大,然後又立即回到最小的0號開始,計算時返回的那段距離也必需計算在內。T2={(199-53)+(199-0)+(37-0)}*t=382t.
顯然此時SCAN演算法更省時。

3. fifo sstf scan cscan 哪個效率最高

這是一種先進先出置換演算法(first in first out-fifo),該演算法總是淘汰最先進入主存的頁面,即選擇主存中駐留時間最久的頁面給予淘汰。

4. 請教關於磁碟調度的問題,到底按照哪種方法來啊

嗯,是問的這個問題我看的答案是大綱後面的答案,2010年第45題,為方便大家看,我把部分題目寫在下面某計算機系統採用CSCAN(循環掃描)磁碟調度策略,使用2KB的內存空間記錄16384個磁碟塊的空閑狀態,某單面磁碟旋轉速度為每分鍾6000轉,每個磁軌有100個扇區,相鄰磁軌間的平均移動時間為1ms。在某時刻,磁頭位於100號磁軌處,並沿著磁軌增大的方向移動,磁軌號請求隊列是50,90,30,120答案給出的磁軌移動時間是170ms(沒給過程),那就應該是按照100->120->30->50->90的順序來移動的了說明CSCAN演算法 不移動到頭,移動到請求的磁軌即可,並且返回到最小的磁軌時的移動時間也要計算但是我在有的輔導書上看到的是說,不計算返回時間剛翻了下課本,湯小丹的操作系統第三版196頁,根據敘述和例子,意思是說不用移動到頭,只到請求的最大磁軌,並且返回到請求的最小磁軌的時間需要計算而關於SCAN演算法,課本上也是說只移動到請求的最大磁軌而我在文×都的輔導書上看到的,關於SCAN演算法還特地強調了要移動到頭,甚至根據磁碟扇區的數目和每磁軌的扇區數計算出總磁軌數再計算移動時間,真是糾結啊

5. scan與cscan有什麼異同

CSCAN美國Horner公司開發的一種通信網路,採用Controller Area Network技術。
循環掃描CSCAN(Circular SCAN)

為了減少SCAN演算法造成的某些進程的請求被嚴重推遲,CSCAN演算法規定磁頭單向移動。

6. 目前常用的磁碟調度演算法有哪幾種每種演算法優先考慮的問題是什麼

(1)先來先服務(FCFS,First-Come First-Served)
此演算法根據進程請求訪問磁碟的先後次序進行調度。
(2)最短尋道時間優先(SSTF ,ShortestSeekTimeFirst)
該演算法選擇這樣的進程,其要求訪問的磁軌與當前磁頭所在的磁軌距離最近,以使每次的尋道時間最短,但這種調度演算法卻不能保證平均尋道時間最短。
(3)掃描(SCAN)演算法
SCAN演算法不僅考慮到欲訪問的磁軌與當前磁軌的距離,更優先考慮的是磁頭的當前移動方向。
(4)循環掃描(CSCAN)演算法
CSCAN演算法規定磁頭單向移動,避免了掃描演算法導致的某些進程磁碟請求的嚴重延遲。
(5) N-Step-SCAN和FSCAN調度演算法
1) N-Step-SCAN演算法。為克服前述SSTF、SCAN、CSCAN等調度演算法都可能出現的磁臂停留在某處不動的情況即磁臂粘著現象,將磁碟請求隊列分成若干個長度為N的子隊列,按先來先服務演算法依次處理這些子隊列,而各隊列分別以掃描演算法進行處理。
2) FSCAN演算法
FSCAN演算法實質上是N步SCAN演算法的簡化。它只將磁碟請求訪問隊列分成兩個子隊列。一是當前所有請求磁碟I/O的進程形成的隊列,由磁碟調度按SCAN演算法進行處理。另一個隊列則是在 掃描期間,新出現的所有請求磁碟I/O進程的隊列,放入另一等待處理的請求隊列。這樣,所有的新請求都將被推遲到下一次掃描時處理。

7. 計算機試卷求解

假設磁頭當前位於第105道,正在向磁軌序號增加的方向移動,現有一個磁軌訪問請求序列為35,45,12,68,110,180,170,195,採用SCAN調度(電梯調度)算得到的

8. 磁碟調度 演算法

(1)FCFS(先來先服務):
143-86=57
147-86=61
147-91=56
177-91=86
177-94=97
150-94=56
150-102=48
175-102=73
175-130=45
57+61+56+86+97+56+48+73+45=579
(2)SSTF(最短尋道時間優先):
尋道順序:143(當前),147,150,130,102,94,91,86,175,177;
4+3+20+28+8+3+5+89+2=162
(3)SCAN:
當前方向:從143#向磁軌號增加的方向
依次訪問:143(當前),147,150,175,177
再從遞減方向:130,102,94,91,86
4+3+25+2+47+28+8+3+5=125
(4)LOOK:(即SCAN,電梯調度演算法)
(5)CSCAN:
當前方向:從143#向磁軌號增加的方向
依次訪問:143(當前),147,150,175,177
再從0開始增加方向:86,91,94,102,130
4+3+25+2+91+5+3+8+28=169

9. 常見的磁碟調度演算法有哪些,有什麼優缺點

1.先來先服務(FCFS)
2.最短尋道時間優先(SSTF)
3.掃描(scan)演算法
4循環掃描(CSCAN)演算法
5.NStep和FSCAN調度演算法

10. 請幫我把這個C語言小程序改為C++的,通過了追加分70+20一定給

#include <stdio.h>

void main()
{
char algorithm;
float l,m;
int a[100];
int direct,begin,i,j,t,k,n=0;
printf("請輸入要調度序列的個數:\n");
scanf("%d",&n);
printf("請輸入要調度的序列:\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<n-2;i++)
{
for(j=n-1;j>=1;j--)
{
if(a[j]<a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
/* for(i=0;i<n;i++)
cout<<a[i]<<endl;*/
printf("請選擇磁碟調度演算法,其中s代表scan演算法,c代表cscan演算法:\n");
//cin>>algorithm;
scanf("%c",&algorithm);
//以下為scan演算法實現磁碟調度
if(algorithm=='s')
{

printf("請輸入開始的磁碟序列號:\n");
scanf("%d",&begin);
printf("\n");
for(i=0;i<n;i++)
{
if(a[i]==begin)
k=i;
}

printf("請輸入訪問方向,其中1為增大方向,0為減小方向:\n");
scanf("%d",&direct);
printf("\n");
m=float(n)-1;
if(direct==1)
{
for(i=k;i<n;i++)
//cout<<a[i]<<" ";
printf("%d ",a[i]);
for(i=k-1;i>=0;i--)
//cout<<a[i]<<" ";
printf("%d ",a[i]);
//cout<<endl;
printf("\n");
l=((a[n-1]-a[k])+(a[n-1]-a[0]))/m;
//cout<<"平均尋道長度為:"<<l<<endl;
printf("平均尋道長度為:%d\n",l);

}
else
{
for(i=k;i>=0;i--)
//cout<<a[i]<<" ";
printf("%d ",a[i]);
for(i=k+1;i<n;i++)
printf("%d ",a[i]);
printf("\n");
l=((a[k]-a[0])+(a[n-1]-a[0]))/m;
printf("平均尋道長度為:%d\n",l);
}
}
//以下為cscan演算法實現調度
else
{
//cout<<"請輸入開始的磁碟序列號:"<<endl;
printf("請輸入開始的磁碟序列號:\n");
//cin>>begin;
// cout<<endl;
scanf("%d",&begin);
printf("\n");
for(i=0;i<n;i++)
{
if(a[i]==begin)
k=i;
}
//cout<<"請輸入訪問方向,其中1為增大方向,0為減小方向:"<<endl;
printf("請輸入訪問方向,其中1為增大方向,0為減小方向:\n");
//cin>>direct;
//cout<<endl;
scanf("%d",&direct);
printf("\n");
m=float(n)-1;
if(direct==1)
{
for(i=k;i<n;i++)
printf("%d ",a[i]);
for(i=0;i<k;i++)
printf("%d ",a[i]);
printf("\n");
l=((a[n-1]-a[k])+(a[n-1]-a[0])+(a[k-1]-a[0]))/m;
printf("平均尋道長度為:%d\n",l);
}
else
{
for(i=k;i>=0;i--)
printf("%d ",a[i]);
for(i=n-1;i>k;i--)
printf("%d ",a[i]);
printf("\n");
l=((a[k]-a[0])+(a[n-1]-a[0])+(a[n-1]-a[k+1]))/m;
printf("平均尋道長度為:%d\n",l);
}
}

}

閱讀全文

與cscan演算法相關的資料

熱點內容
超聲霧化器與壓縮霧化器 瀏覽:641
模擬實現進程調度演算法 瀏覽:386
現在的壓縮包都是加密 瀏覽:329
施工員找工作去哪個app 瀏覽:630
安卓手機的游戲怎麼打開 瀏覽:200
pdf掃描轉文字 瀏覽:532
微機室裡面的雲伺服器 瀏覽:108
excel能編程嗎 瀏覽:931
android系統框架的介紹 瀏覽:947
無盤系統伺服器如何配置 瀏覽:836
背負貸款如何緩解壓力 瀏覽:82
linux獲取日期時間 瀏覽:881
搬磚問題最合適的演算法 瀏覽:446
小米安卓機密碼忘記了如何解鎖 瀏覽:910
產電plc編程手冊 瀏覽:761
vscodephp 瀏覽:535
阿里雲linux桌面 瀏覽:754
php二維數組搜索 瀏覽:116
ps快捷命令工具箱 瀏覽:253
c4d教程pdf 瀏覽:462