1. 程式人生 > >作業系統基礎概念整理

作業系統基礎概念整理

1、執行緒和程序

程序是計算機程式關於某資料集合的一次執行活動,是系統進行資源分配和系統排程的基本單位。程序是程式的實體

執行緒是程式執行流的最小單元,一個標準執行緒由執行緒ID,當前指令指標PC,暫存器集合,堆疊組成。另外,執行緒是程序的一個實體,是系統獨立排程和分配的基本單位。

1.1 同步和互斥

同步:同步就是協同步調,按預定的先後次序進行執行。

互斥:某些資源 不能同時被多個程序使用,例如印表機

執行緒同步的幾種方式:(類似FreeRTOS中的任務通訊)

1、臨界區:

CcriticalSection g_CriticalSection;//定義臨界區物件
g_CriticalSection.Lock()//在訪問共享資源(程式碼或變數)之前,先獲得臨界區物件,
g_CriticalSection.Unlock();//訪問共享資源後,則放棄臨界區物件,

如果有多個執行緒試圖訪問公共資源,那麼在有一個執行緒進入後,其他試圖訪問公共資源的執行緒將被掛起,並一直等到進入臨界區的執行緒離開,臨界區在被釋放後,其他執行緒才可以搶佔。

2、事件:

事件機制,則允許一個執行緒在處理完一個任務後,主動喚醒另外一個執行緒執行任務。

3、互斥量

互斥物件和臨界區物件非常相似,只是其允許在程序間使用,而臨界區只限制與同一程序的各個執行緒之間使用,

但是更節省資源,更有效率。

4、訊號量

當需要一個計數器來限制可以使用某共享資源的執行緒數目時,可以使用“訊號量”物件。CSemaphore類物件儲存了對當前訪問某一個指定資源的執行緒的計數值,該計數值是當前還可以使用該資源的執行緒數目。

其他類似的還有讀寫鎖條件變數自旋鎖

程序同步的幾種方式:

  • 管道(有名,無名)
  • 訊息佇列
  • 臨界區
  • 共享記憶體
  • 訊號量
  • 套接字