那些時常在耳邊想起的「名詞」

2021-08-03 00:17:02 字數 1222 閱讀 3622

接觸到「dbs原理」和「軟工」這兩本書後,突然發現了幾個容易混淆的概念,原來還是傻傻的分不清,你說這以後要是還不知道得多丟face呢?不過好在後來理解了,因此想發表一下自己對這幾個名詞的理解,歡迎各位修正和補充,首先引入一幅導圖。

那下面就開始聊聊「最底層」的兩個概念「程序」和「執行緒」,至於更高水平的,我也敘述不好。

起初「程序」和「執行緒」多伴隨os而引出的概念,其實也就是在資料庫這本書中稍微說了一下,sql server是乙個單程序、多執行緒的應用程式,下面我們就用人體構造來模擬一下這個概念吧。

既然提及os,那我們肯定知道其核心便是cpu,它承擔了計算機的所有計算任務,這就好比是人體的大腦,時刻都在執行著(除了休息的時候,好像在放鬆);

既然是大腦操作我們人體的某些行為,我們所做的每乙個行為就就可以說是乙個任務,因此這個便是乙個程序(程序有生命週期),但是有些時候,我們

僅僅可以做一件事(單程序),或者

齊頭並進

(多程序)。因此

支援我們做某乙個行為就需要很多的器官協調操作,因此執行緒就好比是很多的器官-乙個程序可以包括多個執行緒。但是器官是每乙個行為共享的,因此這樣也說明程序的記憶體空間也是共享的,每乙個執行緒都可以使用這些共享記憶體。因此便「衍生」出了下面的概念

互斥鎖」:防止多個程序同時讀寫某一塊記憶體區域。

訊號量」:門口有多把鑰匙,進出就取鑰匙,出來講鑰匙掛回去,當程序發現門口沒有鑰匙了後便只有等待才可以去使用記憶體區域,因此用來保證多個執行緒不會互相衝突。

都說到這裡了,那就在來普及一下作業系統的設計大致分為以下三個部分:

(1)以多程序形式,允許多個任務同時進行;

(2)以多執行緒形式,允許單個任務分成不同的部分執行;

(3)提供協調機制,一方面防止程序之間和執行緒之間產生衝突、另一方面允許程序和執行緒之間共享資源。

以上這些表述不知道有沒有表達清楚,歡迎在下方交流表達。