看到一篇文章,它的比喻很形象,容易理解.1.計算機的核心是cpu,它承擔了所有的計算任務.就像乙個工廠,時刻都是執行。
2.假設工廠電力有限,一次只能提供給乙個車間使用.也就是說,乙個車間使用時,其他車間都要停工.(單個cpu一次只能執行乙個任務)
3.程序就好比車間,它代表cpu能處理的單個任務。
4.乙個車間裡,有好多任務人,他們協同完成乙個工作.執行緒就好比車間的工人,乙個程序可以包含多個執行緒。
5.車間的空間是工人們共享的,比如有很多房間工人們都可以進出。象徵著乙個程序的記憶體空間是共享的,每個執行緒都可以使用這些共享記憶體。
7.每間房間的大小不同,有些房間最多只能容納乙個人,比如廁所。裡面有人的時候,其他人就不能進去了。這代表乙個執行緒使用某些共享記憶體時,其他執行緒必須等它結束,才能使用這一塊記憶體。
8.乙個防止他人進入的簡單方法,就是門口加一把鎖。先到的人鎖上門,後到的人看到上鎖,就在門口排隊,等鎖開啟再進去。這就叫"互斥鎖"(mutual exclusion,縮寫 mutex),防止多個執行緒同時讀寫某一塊記憶體區域。
9.還有些房間,可以同時容納n個人,比如廚房。也就是說,如果人數大於n時,多出來的人只能在外面等著。這好比某些記憶體區域,只能供給固定數目的執行緒使用。
10.這時的解決方法,就是在門口掛n把鑰匙。進去的人就取一把鑰匙,出來時再把鑰匙掛回原處。後到的人發現鑰匙架空了,就知道必須在門口排隊等著了。這種做法叫做"訊號量"(semaphore),用來保證多個執行緒不會互相衝突。
作業系統的設計,因此可以歸結為三點:
1.以多程序形式,允許多個任務同時執行;
2.以多執行緒形式,允許單個任務分成不同的部分執行;
3.提供協調機制,一方面防止程序之間和執行緒之間產生衝突,另一方面允許程序之間和執行緒之間共享資源。
程序和執行緒的形象比喻
程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...
程序與執行緒的區別乙個比較形象解釋
程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...
執行緒睡眠,掛起,阻塞的乙個形象比喻
作業系統中睡眠 阻塞 掛起的區別形象解釋 首先這些術語都是對於執行緒來說的。對執行緒的控制就好比你控制了乙個雇工為你幹活。你對雇工的控制是通過程式設計來實現的。掛起執行緒的意思就是你對主動對雇工說 你睡覺去吧,用著你的時候我主動去叫你,然後接著幹活 使執行緒睡眠的意思就是你主動對雇工說 你睡覺去吧,...