究竟什麼是I O操作呢?

時間 2021-05-05 17:06:41

1樓:Litrin

I/O是input/output的意思,就是輸入輸出操作。

話說現在2023年已經沒有文件介紹外存的邏輯了吧?甚至現在很多人在混淆手機「記憶體」和「IO儲存」的概念。IO其實最初就是指外存操作。——好吧,說正事兒。

計算機在作業系統層面有一類輸入輸出操作符合幾個特點:

CPU需要較少的介入,可感知的時間都是在「等資料」。——低開銷相比訪問記憶體,這類操作大多都通過較低頻寬傳輸。按照現在的架構也就是等同於說都是通過PCIe bus通訊的資料。

——低頻寬,高時延CPU無法控制等待時間甚至無法簡單預估該操作能否成功。——高容錯硬體層面CPU只能直接操作完成記憶體位址空間對映的資料,而無法直接對映到記憶體位址空間的資料操作必須通過IO出入記憶體。——間接資料操作

比較常見的IO,disk IO, net IO, std IO,等,甚至印表機這類的通過串、並、USB外聯的都算作IO。常用的處理方式往往是輪詢,也就是每隔一段時間問一句:「你把資料搬去記憶體的事兒搞定沒?

等著哪!」。LZ問題的後半部分非同步程式設計,就是合理地利用了這個輪詢之間的間隔去處理其他主要任務,等待IO搞定之後再處理後續任務。

2樓:嵩天老師

計算機的核心部件是計算單元,即CPU,相對於CPU來說,儲存(訪問記憶體)、介面(訪問外設)都是I/O。

對於CPU來說,如果乙個指令需要從記憶體中讀取資料,就涉及I/O操作,CPU會通過多執行緒、多發射(超標量)等方法在讀取資料的空閒時間(這個時間還比較長)執行其他指令。

對於作業系統來說,當某個執行緒訪問介面,例如讀取滑鼠或鍵盤輸入,這個時間都是以ms或更長為單位的,作業系統為了少讓CPU空閒,會排程其他執行緒執行,占用CPU。

3樓:凌心誠

io是input 和 output的簡寫,狹義上是讀寫硬碟的操作。廣義上只要不需要cpu參與的都是io操作。即使是你有意把執行緒掛起2秒,他也可以看成是io操作。

總之,不需要cpu的,廣義上就算是io操作,因為他不占用cpu時間片。

為什麼我非要強調廣義的io呢,因為io被定義的時候是因為他不占用cpu時間卻很耗時,而這種操作當時只是讀寫硬碟的操作。

4樓:Shisoft

處理器訪問任何暫存器和 Cache 等封裝以外的資料資源都可以當成 I/O 操作,包括記憶體,磁碟,顯示卡等外部裝置。

一般暫存器和 Cache 都很小,所以 I/O 控制器的設計非常影響總體效能。

而一般軟體系統的 I/O 通常指磁碟和網路,因為軟體關心的是延遲而不是具體實現所以經常會不把記憶體訪問作為 I/O。

5樓:Kittyhawk

這是計算機架構的東西。搜搜DMA(直接儲存器)訪問就知道了。

簡而言之,CPU會對I/O介面發出操作命令,I/O介面提出DMA請求。DMA收到控制權後可以直接控制Disk到RAM的傳輸,這時候CPU可以做別的事情。

為什麼Monad可以用來封裝IO操作?

遊客賬戶0x0 monad就是 可組合的計算上下文 那麼IO完全可以當成 world 的 state monad。強烈建議看下phlip walder的 how to declare an imperative 簡單來說,IO monad不是imperative的,而是declarative的,IO...

究竟什麼是愛呢?

春分 愛是永不止息 愛是恆久忍耐,又有恩慈 愛是不嫉妒,愛是不自誇,不張狂,不作害羞的事,不求自己的益處,不輕易發怒,不計算人的惡,不喜歡不義,只喜歡真理 凡事包容,凡事相信,凡事盼望,凡事忍耐,愛是永不止息。聖經 哥林多前書第十三章 遊心ME 名可名,非常名 愛是乙個概念,你想怎麼定義都行。你看過...

究竟什麼是未來呢?

筆生風 當下的力量這本書說的很對 你的過去是你的當下,你的未來也是你的當下,一切都是你的當下,此時此刻,即是過去現在未來,不是嗎? Star Fire 未來,是虛無縹緲的,是一種自我安慰的心理暗示。無論過去發生的還是以後發生的,是我們無法改變的事實,我們能做的就只有努力地活在當下,做好現在能做的事情...