天天看點

《作業系統真象還原》——第0章 一些你可能正感到迷惑的問題 0.1作業系統是什麼

本節書摘來自異步社群《作業系統真象還原》一書中的第0章,第0.1節,作者:鄭鋼著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

正如計算機中數組下标是從0開始的,我們的内容也從0開始,盡量做到低基礎學習(負責地說,不是0基礎,而且還隻是盡量),解釋一些學習過程中經常被問到的問題。

我并沒有給你提供教科書上對作業系統的定義,因為解釋得太抽象了,看了之後似乎隻是獲得一些感性認識,好奇心強的讀者反而會産生更多迷惑。為了說清楚問題,讓我給您舉個例子。

讓我們扯點遠的……在盤古開天之際,除動物以外,世界上隻有土地、荒草、樹木、石頭等資源。人們為了躲避天災、野獸攻擊等危險,開始住進了山洞,為了擷取食物,用石頭和樹木等材料打造一些武器。當時所有人都在做這些相同的事。這就是沒有組織的人類社會,所有人都在重複“造輪子”。

後來各個地區有了自己權威性的部落,部落都專門找人打造武器,誰需要武器就直接申請領取便可,大部分人不需要自己打造武器了。後來嫌打獵太麻煩了,幹脆養一些家畜好了,直接供給人們,誰需要可以過來交換。這就是把大家的重複性勞動集中到了一起,讓人們可以專注于自己的事情。

再後來,部落之間為了通信,開始有信使了,這是最原始的通信方式。到後來發展到有社會組織,通信越來越頻繁了,幹脆搞個驿站吧,誰需要通信,直接寫信,由驿站代為送達。

随着人口越來越多,社會組織需要了解到底有多少人,為了友善人口管理,于是就在各地建了“戶籍辦事”處,人們的生老病死都要到那裡登記申報。

說到這我估計您已經猜出我所說的了,上面提到的部落其實就是最原始的作業系統雛形,它将大家都需要的工作找專人負責,大家不用重複勞動。而以上的社會組織其實就是代表現代作業系統,除了把重複性工作集中化,還有了自己的管理政策。

把上面的例子再具體一下,人們想狩獵時,可不可以自己先打造武器,然後拿着自己的武器去狩獵?當然可以,自己制造武器完全沒有問題,但部落既然有現成的武器可用,何必自己再費事呢。另外,部落擔不擔心你随意制造武器會對他人造成傷害?當然會,是以部落不允許你自己制造武器了,人們隻有申請的資格,給不給還是要看人家部落的意願。這就是作業系統提供給使用者程序一些系統調用,當使用者程序需要某個資源時,直接調用便可,不用自己再費盡心思考慮硬體的事情了,由作業系統把資源擷取到後交給使用者程序,使用者程序可以專注于自己的工作。但作業系統為了保護計算機系統不被損害,不允許使用者程序直接通路硬體資源,比如使用者程序将作業系統所占據的記憶體惡意覆寫了,作業系統也就不複存在了,沒有作業系統的話,計算機将會癱瘓無法運作。

當人們想和遠方的朋友說話時,雖然可以徒步走到親朋好友身邊再對其表達想說的話,但社會組織已經給提供了郵局和電話,何必自己再大老遠跑一趟呢。這就是作業系統(社會組織)提供的資源。兩個人想在一起生活,要不要一定先結婚呢?完全不用,領不領證都不會阻礙人們在一起生活,但是社會組織為了友善人口管理做了額外限制。不領證的話,至少社會組織無法預測未來人口數量趨勢,無法做出宏觀調控,甚至這是找到你家人的一種方法。這就如linux系統中的記憶體管理,分别要記錄哪些頁是active,哪些是“髒頁”。不記錄會不會影響程式執行,當然不會,記錄這些狀态還不是為了更好地管理記憶體嗎。

以上說的社會組織和人們之間的關系,正是作業系統和使用者程序的關系,希望大家能對作業系統有個初步印象,後面的實踐中我們将執行個體化各個部分。