硬件型號:戴爾 Latitude 5320
系統(tǒng)版本:Windows10.0系統(tǒng)
fifo先進先出原理
在計算機中,先入先出隊列是一種傳統(tǒng)的按序執(zhí)行方法,先進入的指令先完成并引退,跟著才執(zhí)行第二條指令(指令就是計算機在響應用戶操作的程序代碼,對用戶而言是透明的)。如圖1所示,當CPU在某一時段來不及響應所有的指令時,指令就會被安排在FIFO隊列中,比如0號指令先進入隊列,接著是1號指令、2號指令……當CPU完成當前指令以后就會從隊列中取出0號指令先行執(zhí)行,此時1號指令就會接替0號指令的位置,同樣,2號指令、3號指令……都會向前挪一個位置。
圖1 先進先出隊列
FIFO是隊列機制中最簡單的,每個接口上都存在FIFO隊列,表面上看FIFO隊列并沒有提供什么QoS(Quality of Service,服務質(zhì)量)保證,甚至很多人認為FIFO嚴格意義上不算做一種隊列技術(shù),實則不然,F(xiàn)IFO是其它隊列的基礎(chǔ),F(xiàn)IFO也會影響到衡量QoS的關(guān)鍵指標:報文的丟棄、延時、抖動。既然只有一個隊列,自然不需要考慮如何對報文進行復雜的流量分類,也不用考慮下一個報文怎么拿、拿多少的問題,而且因為按順序取報文,F(xiàn)IFO無需對報文重新排序。簡化了這些實現(xiàn)其實也就提高了對報文時延的保證。FIFO關(guān)心的就是隊列長度問題,隊列長度會影響到時延、抖動、丟包率。因為隊列長度是有限的,有可能被填滿,這就涉及到該機制的丟棄原則。常見的一個丟棄原則叫做Tail Drop機制。簡單地說就是該隊列如果已經(jīng)滿了,那么后續(xù)進入的報文被丟棄,而沒有什么機制來保證后續(xù)的報文可以擠掉已經(jīng)在隊列內(nèi)的報文。在這種機制中,如果定義了較長的隊列長度,那么隊列不容易填滿,被丟棄的報文也就少了,但是隊列長度太長了會出現(xiàn)時延的問題,一般情況下時延的增加會導致抖動也增加。如果定義了較短的隊列,時延的問題可以得到解決,但是發(fā)生Tail Drop的報文就變多了。