I/O-bound Job:
此類工作需要大量 I/O operation,但僅須少量 CPU computation,其工作效能取決於 I/O device 速度。若在 buffering 中 CPU 被迫等待,因為 input buffer 是空的,或是 output buffer 是滿的。
CPU-bound Job:
此類工作需要大量 CPU computation ,但僅須少量 I/O operation,其工作效能取決於 CPU 速度。若在 buffering 中 I/O device 被迫等待,因為 input buffer 是滿的,或是 output buffer 是空的。
buffering 與 spooling 存在的目的,皆為解決 CPU 與 I/O 需互相等待而導致執行效率變慢的問題。
buffering
是記憶體中的一個空間,將 I/O 的資料先收集至 buffer 中,待達至 CPU 可運算的資料量時,CPU 再將資料由 buffer 中一次取出計算,在 CPU 開始計算的同時, I/O則可繼續收集資料,達到 CPU 與 I/O可同時運行的目的。
spooling (simultaneous peripheral operations on-line)
是將磁碟機視為一個大 buffer,資料讀取與寫入時,不直接讀取,而由磁碟機中讀取。 例如有很多筆資料要交給印表機輸出時,可將待印資料的清單放在一個表格中,印表機印完依筆資料後,可直接至表格讀取下一比待印資料,而 CPU 把待印資料的清單放在表格中後,可以去做別的計算,I/O也可繼續執行。
buffering 與 spooling 的不同,在於spooling 可允許某個工作的 CPU 計算 (computation) 與另一個工作的 I/O 操作 (operation) 同步執行 (overlay execution),而 buffering 只允許許某個工作的 CPU 計算與 I/O操作 同步執行。