2011-05-29 111 views
3

長期調度程序如何決定哪個作業是I/O限制的,哪個是CPU限制的?如何區分I/O綁定和CPU綁定作業?

我聽說通過使用cpu突發,我們可以區分I/O綁定和CPU綁定作業,但是如何在不處理程序的情況下計算CPU突發數據?

回答

2

通常,CPU調度程序將時間片分配給進程/線程並在它們之間進行切換,只要:a)時間片已用完或b)用於I/O的進程/線程塊。

一個I/O綁定的作業會經常被阻塞I/O,而一個始終使用其全部時間片的進程/線程可以被假定爲受CPU限制。因此,通過區分進程/線程在時間片結束時是否阻塞或通過調用一些wait_for_io_completion()函數,可以有效地表徵這些類型的進程。

請注意,在現實生活中,情況會變得更加複雜,因爲大多數時間應用程序不是I/O限制或CPU限制的,而是始終切換角色。這就是爲什麼調度是關於啓發式而不是正確的解決方案,因爲你不能(總是)預測未來。

1

CPU綁定比I/O綁定使用更多時間進行計算。

+0

詳細闡述你的答案。添加引用,使其有用。 – Omar 2013-07-16 13:51:52

0

IO約束過程: 約束過程花費更多的時間做IO比計算,許多短cpu爆發。 COU結束進程: 進程花費更多時間進行計算;很少很長的cpu突發。