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