1. 電梯調度演算法
(1)電梯調度演算法的處理次序為:
5
8
1
4
3
6
2
7
(2)最短尋找時間優先演算法的處理次序為:
5
8
6
2
7
1
4
3
2. 演算法題 關於電梯的
如果到了頂層,是不是還要考慮別人往下爬?
記得採納啊
3. java模擬實現兩部電梯同時工作的高效演算法
1. 各電梯控制:
a. 實現一個方法,返回本電梯到請求樓層上、下的時間(或者簡單點的,層數);
b. 任務接受:接受用戶樓層上、下請求任務
2. 主控部分:
a. 當用戶按下上、下請求時,通過調用兩個電梯的上面所說的服務,進行比較決斷最優時間電梯;
b. 給最最優電梯發送任務;
3. 主控與各電梯控制之間的通訊可以通過多種方式實現;
4. 操作系統磁碟調度的電梯演算法是怎麼回事阿思想是什麼比如磁軌號從41開始,磁碟請求序列為:20
就是讀取時按找當前的移動方向讀取下一個,到頂後再反著讀,就跟坐電梯一樣,要不先上,要不先下。
下:41 20 12 4 上: 44 76 80
合起來就是: 41 20 12 4 44 76 80
這樣的話磁頭的總移動距離會相對減少
5. 用單片機實現2部電梯及多部電梯的控制演算法。 是不是就是指群控電梯
群控電梯就是多台電梯集中排列,共有廳外召喚按鈕,按規定程序集中調度和控制的電梯。
理解一下這句話,就懂了。
6. 求關於 多部電梯調度演算法研究
這里是我 一些 想法 LZ可以看看 在這里 主要告訴你的是 C程序設計裡面很重要的一個思想那就是 增量開發
首先設計 一個MAIN函數 確定要調用的函數 在函數裡面 盡量使用指針變數,這是第一塊
第二快: 電梯的初始化
第三快: RUNNING電梯的運行
第四快: 電梯的移動
第五快: 上和下
第六快: 用戶的要求 也就是說 電梯到底是上 還是下的設計
第七快 延遲程序 也就說 等待的時間
第八塊:STOP
按照這個思路的話,代碼加起來有100多行的樣子吧
還有就是 LZ在採用這個思路的時候 一定要對函數的運用 很上手啊
要不在調試的時候很容易出BUG的!
希望能幫到你!
7. 高手給解釋下,操作系統中的,電梯調度演算法和掃描調度演算法的區別到底是什麼最好舉例圖
操作系統概念那本書上有圖,電梯就是磁頭一直向左然後一直向右這么來來回回。CSCAN就是磁頭一直向左,然後再回到右邊開始一直向左,類似於示波器的逐行掃描。
8. 如何將各種演算法應用到實際的電梯調度中
說明 假設大廈有31層樓.電梯每經過1層(不論上下行)的時間是4秒.也就是說,電梯從1樓到31樓且中間不停則需要(31-1)*4=120秒.電梯每次需要停10秒,因此,如果電梯每層都停一次,就需要30*4+29*10=410秒.與此同時,員工步行一層樓(不論上下行)需要20秒,從1樓到31樓就需要30*20=600秒.明顯,這個主意不好.因此,很多員工依賴電梯前往他們的辦公室.現在我們需要設計一個方案,這個方案的設計目標是讓最後一個到達辦公室的員工花費最短的時間(也就是說,他並不保證每一位員工都能最快到達自己辦公室).比如,如果員工想到達4,5和10層,則電梯的運行方案是在4和10層停止.因為電梯在第12秒到達4層,停止10秒,則電梯到達10層需要3*4+10+6*4=46秒.按此計劃,住在4層的員工需要12秒,5層的員工需要12+20=32秒,10層的員工需要46秒.因此,最後到達辦公室的員工需要46秒.對於大家來說,這是個不錯的方案.
實現 下面就詳細說一說我實現的具體方式,雖然花了我近2天的時間,但是其實並不是很復雜,這里我本著拋磚引玉的原則,下面就一起來看看吧:
我們將定義一個名叫Case的class用來存儲一些要測試的數據,然後再定義一個叫CaseUtil的class用來實現我們的方案。
首先我說一下具體得思路:這里我只考慮從下到上的方案(從上到下其實是一樣的,具體自己想吧)。舉個例子,假設當前的樓層是【29 30 31】.3個。那麼我們該如何做呢?
首先,不管怎麼說,假設最後一層即31的到達時間為 (31-1)* 4 + (stopNums-1)*10 說明一下,這里為了簡單起見我們就按照案例的數據進行分析,實際上4表示電梯經過每層所需時間,而10表示電梯每層停靠的時間。上面的stopNums是什麼呢?就是電梯到達31層時所有的停靠次數,減去1是除去31層得停靠。而最後一層到達的人則很可能為最後一位到達的人,為什麼不是一定呢,按照本例,上面舉得例子就可以很簡單的看出,在28、31停2次即可,此時最後一個到達的就是地30層的人了。當然在僅僅是在本例中,實際上會由於具體數值不一樣而有不同。所以這里我用了可能,而它也和我們的最優解很接近了,而這給了我想法。雖然最後一層不一定是最後一位,但已經很接近了,而它所花費的時間,僅僅只和一個變數有關,即stopNums,即可以得出如下結論:
電梯的停靠次數越少,最後一層的時間也就越少,同樣最佳時間也就越少。
假設我們有一個方法可以根據當前的停靠次數來計算最佳的停靠方案,那麼我們該如何得到實際最佳方案呢?下面的一段代碼很好的可以達到我們的目標。
9. 磁碟的電梯演算法的尋道時間怎麼算
先來先服務FCFS:公平,簡單,每個進程的請求都能依次得到處理。沒有對尋道優化,平均尋道時間長。最短時間優先調度演算法SSTF:要求訪問的磁軌是當前磁頭所在的磁軌最近,每次尋道時間最短。可能導致一些請求無限期推延。電梯調度演算法SCAN:不僅考慮當前磁軌的距離,優先考慮在磁軌前進方向的最短時間,排除磁頭在盤面上的往復運動。電梯原理。N-SCAN:是SCAN的改良。磁頭改變方向時,以到達請求服務的最短時間。對中間請求服務更有利。C-SCAN:磁頭單項移動。消除N-SCAN對兩端請求的不公平。
10. 操作系統模擬電梯調度演算法C語言程序
多級反饋隊列調度演算法 多級反饋隊列調度演算法是一種CPU處理機調度演算法,UNIX操作系統採取的便是這種調度演算法。 多級反饋隊列調度演算法即能使高優先順序的作業得到響應又能使短作業(進程)迅速完成。(對比一下FCFS與高優先響應比調度演算法的缺陷)。 多級(假設為N級)反饋隊列調度演算法可以如下原理: 1、設有N個隊列(Q1,Q2....QN),其中各個隊列對於處理機的優先順序是不一樣的,也就是說位於各個隊列中的作業(進程)的優先順序也是不一樣的。一般來說,優先順序Priority(Q1) > Priority(Q2) > ... > Priority(QN)。怎麼講,位於Q1中的任何一個作業(進程)都要比Q2中的任何一個作業(進程)相對於CPU的優先順序要高(也就是說,Q1中的作業一定要比Q2中的作業先被處理機調度),依次類推其它的隊列。 2、對於某個特定的隊列來說,裡面是遵循時間片輪轉法。也就是說,位於隊列Q2中有N個作業,它們的運行時間是通過Q2這個隊列所設定的時間片來確定的(為了便於理解,我們也可以認為特定隊列中的作業的優先順序是按照FCFS來調度的)。 3、各個隊列的時間片是一樣的嗎?不一樣,這就是該演算法設計的精妙之處。各個隊列的時間片是隨著優先順序的增加而減少的,也就是說,優先順序越高的隊列中它的時間片就越短。同時,為了便於那些超大作業的完成,最後一個隊列QN(優先順序最高的隊列)的時間片一般很大(不需要考慮這個問題)。 多級反饋隊列調度演算法描述: 1、進程在進入待調度的隊列等待時,首先進入優先順序最高的Q1等待。 2、首先調度優先順序高的隊列中的進程。若高優先順序中隊列中已沒有調度的進程,則調度次優先順序隊列中的進程。例如:Q1,Q2,Q3三個隊列,只有在Q1中沒有進程等待時才去調度Q2,同理,只有Q1,Q2都為空時才會去調度Q3。 3、對於同一個隊列中的各個進程,按照時間片輪轉法調度。比如Q1隊列的時間片為N,那麼Q1中的作業在經歷了N個時間片後若還沒有完成,則進入Q2隊列等待,若Q2的時間片用完後作業還不能完成,一直進入下一級隊列,直至完成。 4、在低優先順序的隊列中的進程在運行時,又有新到達的作業,那麼在運行完這個時間片後,CPU馬上分配給新到達的作業(搶占式)。 我們來看一下該演算法是如何運作的: 假設系統中有3個反饋隊列Q1,Q2,Q3,時間片分別為2,4,8。 現在有3個作業J1,J2,J3分別在時間 0 ,1,3時刻到達。而它們所需要的CPU時間分別是3,2,1個時間片。 1、時刻0 J1到達。於是進入到隊列1 , 運行1個時間片 , 時間片還未到,此時J2到達。 2、時刻1 J2到達。 由於時間片仍然由J1掌控,於是等待。 J1在運行了1個時間片後,已經完成了在Q1中的 2個時間片的限制,於是J1置於Q2等待被調度。現在處理機分配給J2。 3、時刻2 J1進入Q2等待調度,J2獲得CPU開始運行。 4、時刻3 J3到達,由於J2的時間片未到,故J3在Q1等待調度,J1也在Q2等待調度。 5、時刻4 J2處理完成,由於J3,J1都在等待調度,但是J3所在的隊列比J1所在的隊列的優先順序要高,於是J3被調度,J1繼續在Q2等待。 6、時刻5 J3經過1個時間片,完成。 7、時刻6 由於Q1已經空閑,於是開始調度Q2中的作業,則J1得到處理器開始運行。 8、時刻7 J1再經過一個時間片,完成了任務。於是整個調度過程結束。