想象你的電腦上跑著機器學習,但是你又想聽歌,但是你的電腦只有一個CPU,如果把所有的CPU資源都拿去跑機器學習的話,你必須等程式跑完之後才能聽歌。但是現實是,你可以在機器學習程式運行的時候放著自己喜歡的歌,甚至還可以打開微信聊天。這就是操作系統一個很重要的功能,那就是操作系統需要支持多個進程同時 ...
想象你的電腦上跑著機器學習,但是你又想聽歌,但是你的電腦只有一個CPU,如果把所有的CPU資源都拿去跑機器學習的話,你必須等程式跑完之後才能聽歌。但是現實是,你可以在機器學習程式運行的時候放著自己喜歡的歌,甚至還可以打開微信聊天。這就是操作系統一個很重要的功能,那就是操作系統需要支持多個進程同時運行,例如在第一章中提到的,我們可以用fork創建子進程,然後父進程和子進程會在相同的記憶體空間上同時運行。但是父進程和子進程的運行順序是不確定的,因為這取決於調度器的決策,所以操作系統還必須要做好調度工作,讓每個進程都能夠利用有限的CPU資源來運行自己的代碼,即對資源進行復用。操作系統另一個很重要的作用是使進程與進程之間相互隔離,因為需要防止一個進程在運行出現的錯誤影響到其他進程的運行,又或者進程會訪問到內核資源,對內核進行破壞。但是進程之間又不應該是絕對的隔離,因為有時候我們還需要讓進程之間進行通信,或者共用數據。
總的來說,一個操作系統滿足一下三個要求