計算機科學(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是一套教電腦如何系統地處理大量工作的模式,它可以給我們啟示,但人們真的不能像電腦一般活得像個機械人。找時間,去做一些很久沒有做而表面看來很無聊的事吧。
筆者任職資訊科都界多年,亦曾於不同大專院校任教資訊科技相關課程,了解不同計算機科學的理論,明白如何運用這些理論來開發軟件以及不同的解決方案。這些看似艱深的計算機科學理論,其實背後的概念並不複雜,某些更只是把一些接近常識的道理量化,變成了不同的計算機科學理論。因此,筆者於2013年應網台《創動力》之邀,連載了多篇有關如何從計算機科學理論的角度,啟發我們思考人生或日常生活的道理的文章。這些文章現在還能在《創動力》網站上找到。但為了更妥善維護這些文章,筆者便把這些文章於2022年開始,再次在自己的網誌上連載,直到把當日所寫的文章全部都在這裡刊登為止。
2022年2月5日星期六
訂閱:
發佈留言 (Atom)
千言萬語
電腦這個詞語,給我們的感覺是一件像我們人類腦袋的東西,擁有記憶,懂得思考,但是在英文原字Computer,其實只指是一部懂得運算的設備而已,能令一部只懂得運算的設備變成一部像我們人類般思考,懂得完成無數的工作,是隨著電腦發展而被研發出來的程式語言。到了今天,已經有數以千計的程式...
-
筆者於資訊科技界工作多年,眼見新科技不斷湧現,某些新科技的出現,更帶出一個新時代,舊有科技便如過眼雲煙,漸漸被人們遺忘。每項新科技都嘗試解決人們一個現有問題,可視為用家之福,但是想深一層,卻暗藏禍根,正如中國道家思想「禍兮福之所倚,福兮禍之所伏。」 例如早期當視窗系統開始流行時...
-
電腦這個詞語,給我們的感覺是一件像我們人類腦袋的東西,擁有記憶,懂得思考,但是在英文原字Computer,其實只指是一部懂得運算的設備而已,能令一部只懂得運算的設備變成一部像我們人類般思考,懂得完成無數的工作,是隨著電腦發展而被研發出來的程式語言。到了今天,已經有數以千計的程式...
-
筆者記得二十多年前在大學就讀計算機科學時,部分學生的畢業項目是光學字元識別(Optical Character recognition),那時要用當時最快的電腦來運算才能有合理的運算效率,但是到了今天,我們的手提電話也可以做到。這件事給筆者的啟示是,今天我們覺得很困難的事,到將來...
沒有留言:
發佈留言