Can you summarize the following document?
        
  排程器是作業系統的一個模組,它能夠選擇將被系統處理的下一個任務,或執行的下一個程序。作業系統可能會提供三種不同型別的排程器:長期排程器、中期排程器和短期排程器。這些名字表明瞭任務被執行的頻率。

  程序排程器是作業系統的一部分,決定了何時執行什麼程序。它通常能夠暫停一個執行中的程序,將它放回到執行佇列當中,並執行一個新程序,我們把這樣的排程器叫做搶佔排程器。否則,它就是協同排程器。

  長期排程器,決定了任務或程序是否會被就緒佇列(記憶體中)所接納。當一個執行程式的嘗試被做出後,長期排程器或允許,或是延遲將它作為當前執行的一個程序。因此,這種排程器掌控著能在系統上執行的程序。排程器同時還決定併發的程度:同時執行程式的多少,在I/O密集型和CPU密集型程序之前做出劃分。  通常,大多數程序可以分為I/O密集型和CPU密集型。I/O密集型程式將大多數時間都花在了I/O操作而不是運算上,而CPU密集型程式正好相反,將大多數時間花在了運算上,而很少產生I/O操作。選出一個I/O密集型和CPU密集型程式的良好組合,對於長期排程器是非常重要的。否則,假如所有的程式都是CPU密集型的,那麼I/O佇列將會幾乎永遠都是空的,這樣就會導致一些裝置從來沒被人用過,系統資源分配就是不均衡的。顯然,效能極佳的系統必然是CPU密集型和I/O密集型程式的組合。在現代作業系統中,這被用來保證實時程序能獲得足夠的CPU時間來完成任務。  長期排程對大型系統,例如批處理系統、計算機叢集、超級計算機和渲染場來說同樣重要。例如,在併發系統中,為了避免互動的多個程序,把時間都花在等待對方而產生阻塞,通常是需要進行協同排程的。在這種情況下,處理作業系統底層的排程器之外,還需要符合要求的額外排程程式來實現必要的功能。

  中期排程器臨時將程序從記憶體中去除,放入第二儲存裝置(如硬碟)中,或亦而反之。這通常被稱為“換出”和“換入”(同時也被錯誤叫做“分頁入”和“分頁出”)。中期排程器可能會將那些一直不活躍的程序,優先順序低的程序,頻繁產生頁錯誤的程序,或者佔用大量記憶體的程序放入交換區,為其它程式釋放記憶體。當系統記憶體充足時,或者程式不再處於阻塞狀態時,排程器又會將剛剛被放入交換區中的程序重新放入記憶體中。

  短期排程器(也就是CPU排程器)決定了在一個時鐘中斷、I/O中斷、系統呼叫其它種類的訊號之後,應該執行(分配CPU)給哪些記憶體中的程序。可見,短期排程器作出決定的頻率比長期或中期排程器更加頻繁 —— 每隔一段非常短的固定時間,排程器就將做出一次決定。這種排程器可以是搶佔式的,能夠強行把一個在CPU執行中的程式中斷,然後分配給其它程序;也可以是非搶佔式的,這類排程器無法強行把程序從CPU上中斷。  搶佔式排程器的功能需要一個執行在核心態,能被中斷處理程式捕獲的可程式設計定時器才能實現。

  排程規則就是在同時佔用資源的多方之間進行資源分配的演算法。在路由器、作業系統、硬碟、印表機,大多數嵌入式系統等裝置中,都能看到排程規則的應用。  排程演算法的主要目標,是使資源飢餓最小化,並保證使用資源多方的公平性。排程器需要處理在大量請求下如何分配資源的難題。排程演算法種類很多,在這一章,將會介紹幾種常見演算法。  在封包交換的計算機網路和其它統計多路複用領域,需要一個合適的排程演算法而不是一個先到先得的資料包佇列。
排程在計算機中是分配工作所需資源的方法。資源可以指虛擬的計算資源,如執行緒、程序或資料流;也可以指硬體資源,如處理器、網路連線或擴充套件卡。