計算機科學(Computer Sciences)的其中一個學科便是作業系統(Operating System),而所學的作業系統便是直接控制電腦硬件的軟件,簡單來說,便是微軟視窗(Microsoft Windows)和Linux。在我就讀大學時,這是必修科,可惜近年這學科在很多大學變成了選修科目,也許是因為在香港是沒有任何作業系統的開發;但筆者卻會覺得,這學科所學的東西是很基本的理論,在其他範疇也可以應用,當中有些甚至是可以應用在生活之中。

作業系統管理著電腦內所有正在運作的工序,以現在電腦的運算能力,一部普通的電腦同時間便會在過千個工序在運作之中,那麼電腦應怎樣執行這些工序呢?這便是作業系統其中一個重要範疇,scheduling。不同的scheduling模式,便給我們一些提示,看看我們能否好像電腦一般執行我們的任務。以下是其中幾種常見的scheduling模式。

第一個模式為First in first out(或First come, first served),電腦將所有工序以他們出現的先後排序,順序一個一個工序執行。作業系統的知識告訴我們,這個做法簡單,但是如果當中有些需時頗長的工序,便會令其他某些工序需要長時間等候,如果現時的工序不能完成,即其他所有工序都不會開始執行。在生活裡,這便類似是我們工作枱上的In-tray和out-tray,我們將In-tray上的文件一份一份的完成,有時如果某一文件所需時間很長,In-tray的文件便只會不斷增加。

第二個模式名為Shortest job next,做法是電腦完成了現時的工序,下一個要執行的工序便是最短的那一個工序。作業系統的知識告訴我們,這種做事模式的好處是就所有工序來看,平均工序所需完成時間為最短,但是那些需時較長的工序,可能會永遠不被執行。因此,如果我們在生活中做事的先後為先完成需時較少的工作,之後才做需要較長的,這便類似我們從In-tray選一份文件來做時,永遠選預算所需時間最短的那一份來做,表面看來是很有效率,能完成很多工作,但是因為每每只做需時較短的工作,換句話說,便是做了很多「小事」,而大事便從來不會開始來做。

Priority-based scheduling是較之前兩種模式較為複雜,做法是將所有工序預先分重要性,重要性高的一類工序先執行,而執行時可能便將同重要性的工序以First in first out或shortest job next等其他模式來處理。這種模式的好處是重要的工序會先執行,但問題是重要性低的工序可能永遠都不會被執行。這模式便類似我們工作枱上有數個不同重要性的In-tray,我們永遠先處理重要性高的那一個In-tray的文件,當完成重要性高In-tray的文件之後,才會開始做重要性中再跟著重要性低的那些文件。

作業系統這學科告訴我們,沒有單一scheduling模式是適合所有電腦,電腦設計者須要考慮電腦的用途和期望的效能來設計所需的scheduling模式。在這些較複雜的scheduling模式當中,有一個模式給我的啟發最深。這個模式的做法是,將每個工序分重要性,之後以重要性先後來執行,但重要性低的工序在等候的時候,電腦同時會將他們的重要性提高,即是等得越久,重要性便變得越高,最後它的重要性甚至高於其他工序,電腦須即時執行。

在我們的生活裡,我們會覺得某些事比其他事重要,例如工作便比探望朋友重要。如果我們只是以重要性來決定做什麼事,我們的人生便只有工作,永遠也不會去探望我們的朋友。但是剛剛提及的模式提醒我,就算是一件不甚重要的事,如果是閒置了很久都沒有去做的,我們便得更重視它,就算是它本身重要性多低,我們也得放下手上重要的工作,把它完成。

說到底,作業系統的scheduling是一套教電腦如何系統地處理大量工作的模式,它可以給我們啟示,但人們真的不能像電腦一般活得像個機械人。找時間,去做一些很久沒有做而表面看來很無聊的事吧。

圖片來源:互聯網

逢星期五上載

此文章之主持/專欄作家介紹:Herbert
資訊科技界資深工作者,學生時代受蘋果二代所啟蒙,沉迷電腦科技,尤其是軟件編程,大學時代主修計算機科學,最後以獲得哲學博士作完美終結。從事資訊科技行業超過二十年,對資訊科技界充滿憧憬和好奇,至今仍在追趕各項電腦新知,盼望能以資訊科技知識,令這個世界更美好。

版權所有©2013 創動力媒體 Dynamix