摘要:當(dāng)輸入的時(shí)候,設(shè)備先將輸入的信息放到控制器中的數(shù)據(jù)寄存器中,等到攢到一定數(shù)量或者輸入完成后,一次性將數(shù)據(jù)拿走,提高了的運(yùn)行效率。設(shè)別狀態(tài)識(shí)別控制器會(huì)識(shí)別設(shè)備的工作狀態(tài),將工作狀態(tài)保存到狀態(tài)寄存器中,供查用。
IO就是Input和Output的簡(jiǎn)稱,也就是輸入輸出。主要包括磁盤IO、網(wǎng)絡(luò)IO、鍵盤輸入,顯示器輸出、USB等操作。
輸入是從IO設(shè)備輸入到內(nèi)存中,輸出是從內(nèi)存中輸出到IO設(shè)備中。
CPU不會(huì)直接控制IO設(shè)備,而是通過IO控制器間接的控制IO設(shè)備。因?yàn)槭忻嫔嫌懈鞣N各樣的IO設(shè)備,操作方式都不太一樣,CPU無法直接控制IO設(shè)備。所以引入了IO控制器,也叫做設(shè)備控制器來間接控制IO設(shè)備。
IO控制器作為CPU和IO設(shè)備的中介,通過地址總線、控制總線與CPU相連。有以下作用:
1、數(shù)據(jù)緩沖
CPU和內(nèi)存等速度都非???,IO設(shè)備的速度比較慢,所以IO控制器設(shè)立緩沖區(qū)。
當(dāng)輸出的時(shí)候,CPU將數(shù)據(jù)放到IO控制器中的數(shù)據(jù)寄存器中,然后就可以去忙其他工作了,IO設(shè)備可以慢慢的從IO控制器中的數(shù)據(jù)寄存器中拿數(shù)據(jù)然后輸出。
當(dāng)輸入的時(shí)候,IO設(shè)備先將輸入的信息放到IO控制器中的數(shù)據(jù)寄存器中,等到攢到一定數(shù)量或者輸入完成后,CPU一次性將數(shù)據(jù)拿走,提高了CPU的運(yùn)行效率。
2、IO設(shè)別狀態(tài)識(shí)別
IO控制器會(huì)識(shí)別IO設(shè)備的工作狀態(tài),將工作狀態(tài)保存到狀態(tài)寄存器中,供CPU查用。
3、控制IO設(shè)備
控制IO設(shè)備的讀取和寫入,定時(shí)等控制信號(hào)。
IO主要分為以下4類:程序查詢方式、中斷方式、DMA、通道,這四類效率依次是變高的。
我們接下來挨個(gè)仔細(xì)分析一下。
1、程序查詢方式
讀取數(shù)據(jù)時(shí),CPU從設(shè)備控制器的狀態(tài)寄存器中查詢?cè)O(shè)備是否可用,如果不可用就一直輪詢查詢,直到可用為止。如果可用就發(fā)送讀取信號(hào),然后輪詢查詢數(shù)據(jù)是否準(zhǔn)備號(hào),如果準(zhǔn)備好就從數(shù)據(jù)寄存器中讀取數(shù)據(jù)到CPU中,然后將數(shù)據(jù)從CPU轉(zhuǎn)移到內(nèi)存中。
寫數(shù)據(jù)時(shí),CPU也是輪詢查看設(shè)備是否可用,如果可用就將數(shù)據(jù)從CPU寫入到數(shù)據(jù)寄存器中。
缺點(diǎn): 程序查詢方式,CPU需要不斷的查詢,白白浪費(fèi)了CPU資源,CPU利用率低。
2、中斷驅(qū)動(dòng)
中斷驅(qū)動(dòng)是對(duì)程序查詢的改進(jìn),中斷的意思就是CPU是可以被打斷的,硬件可以向CPU發(fā)送中斷命令,然后CPU會(huì)執(zhí)行對(duì)應(yīng)的中斷程序。
當(dāng)CPU請(qǐng)求IO時(shí),就直接發(fā)送IO讀取的相關(guān)命令。如果當(dāng)前設(shè)備正被占用,就排隊(duì),然后IO設(shè)備器會(huì)對(duì)依次對(duì)隊(duì)列中的進(jìn)行處理,處理完成后就發(fā)出中斷命令,打斷CPU原本的操作,轉(zhuǎn)而去執(zhí)行中斷程序,比如將數(shù)據(jù)從數(shù)據(jù)寄存器轉(zhuǎn)到CPU,然后從CPU轉(zhuǎn)到內(nèi)存中。
優(yōu)點(diǎn): 在IO的時(shí)候,CPU可以處理其他線程的工作,CPU的利用效率提高了
缺點(diǎn): 在IO完成后,還是需要CPU將數(shù)據(jù)轉(zhuǎn)移到內(nèi)存中,還是會(huì)占用一定的CPU。
3、DMA
DMA全稱為Direct Memory Access,也叫做直接存儲(chǔ)器訪問。DMA可以直接與內(nèi)存相連,也就是說IO設(shè)備可以直接與內(nèi)存交換數(shù)據(jù),不要CPU的中轉(zhuǎn)了。
相較于中斷驅(qū)動(dòng),DMA有了以下改進(jìn):
1、以塊為單位進(jìn)行傳送
2、內(nèi)存和IO設(shè)備可以直接傳遞,不需要CPU的中轉(zhuǎn)。
3、CPU只需要在開始的時(shí)候發(fā)出CPU指令,在結(jié)束的時(shí)候DMA會(huì)發(fā)出中斷,CPU執(zhí)行相關(guān)的中斷程序就行了。
優(yōu)點(diǎn): CPU只需要在開始的時(shí)候,指定從內(nèi)存和IO設(shè)備中的哪些位置進(jìn)行讀寫,進(jìn)一步增加了CPU的利用率。
缺點(diǎn): DMA可以一次性讀取多個(gè)塊,但是在內(nèi)存和IO設(shè)備中必須是連續(xù)的。
如果牽扯到讀寫離散的塊,CPU必須發(fā)出多個(gè)IO指令。
4、通道
通道是一種硬件,自己就可以執(zhí)行IO命令,相當(dāng)于一個(gè)削弱版的小CPU,執(zhí)行的指令單一。
通道可以執(zhí)行IO指令,CPU只需要將相關(guān)的IO指令發(fā)送給通道控制器就可以了,通道會(huì)執(zhí)行IO指令,完成對(duì)應(yīng)的傳輸。
相較于DMA,DMA實(shí)現(xiàn)固定的數(shù)據(jù)傳送,而通道擁有著自己的指令和程序,具有更強(qiáng)的IO處理能力。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/118977.html
摘要:我的是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)。因?yàn)槲倚睦砗芮宄?,我的目?biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來的學(xué)習(xí)計(jì)劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:目錄工作原理硬件架構(gòu)硬件架構(gòu)通道的作用寄存器出現(xiàn)的目的出現(xiàn)的目的工作原理全拼直接內(nèi)存存取,在傳統(tǒng)的存取數(shù)據(jù)時(shí)會(huì)先將數(shù)據(jù)放到緩存寄存器中然后在寫入到指定位置存取數(shù)據(jù)流程圖經(jīng)歷了三個(gè)步驟,先將內(nèi)存中指定位置 目錄 工作原理 DMA硬件架構(gòu) DMA通道的作用 DMA寄存器 DMA出現(xiàn)的目的 工作原...
摘要:使用命名空間的概念幫助解決集群中在管理對(duì)象時(shí)的復(fù)雜性問題。命名空間為集群中的對(duì)象名稱賦予作用域。同樣,命名空間范圍的策略允許運(yùn)維人員為生產(chǎn)環(huán)節(jié)設(shè)置嚴(yán)格的權(quán)限。這會(huì)修改操作在活躍時(shí)應(yīng)用到的命名空間。 K8s使用命名空間的概念幫助解決集群中在管理對(duì)象時(shí)的復(fù)雜性問題。在本文中,會(huì)討論命名空間的工作原理,介紹常用實(shí)例,并分享如何使用命名空間來管理K8s對(duì)象。最后,介紹名為projects的Ra...
閱讀 2705·2023-04-26 00:42
閱讀 2840·2021-09-24 10:34
閱讀 3860·2021-09-24 09:48
閱讀 4188·2021-09-03 10:28
閱讀 2612·2019-08-30 15:56
閱讀 2802·2019-08-30 15:55
閱讀 3301·2019-08-29 12:46
閱讀 2276·2019-08-28 17:52