2012-04-17 113 views
4

我對IO的整個想法有些困惑,我想知道CPU如何從磁盤讀取數據(例如SATA磁盤)?CPU如何從磁盤讀取?

當帶有read()/ write()的程序符合對特定文件的引用並且CPU遇到此引用時,它是否直接從磁盤讀取(通過內存映射IO端口)?或者寫入RAM然後寫回到磁盤?

回答

0

我建議閱讀: http://www.makelinux.net/books/ulk3/understandlk-CHP-13-SECT-1 隨着補充: http://en.wikipedia.org/wiki/Direct_memory_access

至於緩衝在RAM:大多數編程語言和操作系統緩衝I/O操作的至少一部分(讀寫)到記憶。這通常是異步完成的:即創建,填充和處理緩衝區。對於讀取,CPU將(與磁盤控制器一起工作)創建IO指令以獲取數據和放置在內存中的位置,填充該空間,然後將其內容呈現給發出請求的程序。對於寫入請求,這將對寫入操作及其相關數據進行排隊,然後將它們發送給IO控制器並最終將磁盤執行。緩衝可以發生在多個地方:在CPU的高速緩存上,在RAM中,(有時)在磁盤控制器上,或在硬盤本身上。完成多少緩衝,以及我提到的操作的抽象順序如何處理,取決於您的硬件體系結構,操作系統和任務。

1

主存儲器是處理器可以直接訪問的唯一的大存儲區(數百萬字節)。

「操作系統概念」說。

所以,如果你想運行一個程序或操縱一些數據,他們(程序和數據)必須在主內存中。