1. 程式人生 > >多執行緒、多程序之比較,以及三種執行緒模型。

多執行緒、多程序之比較,以及三種執行緒模型。

工作幾年找工作幾乎總會被問,從最開始的從網上看答案,到現在憑自己的經驗去說,這個問題似乎也是經驗積累的一個驗證,最近沒事就總結一下吧:

程序和執行緒的定義、比較等:
程序:處於活動狀態的計算機程式。程序就是在作業系統中
      執行特定的任務,程序針對的是記憶體,注意程序映像的概念:
      程式碼區(r-x),資料區(rw-),bss,堆(rwx),共享記憶體,棧(rwx),環境表,核心等

      程序是資源管理的基本單位,系統資源:地址空間,開啟的檔案,使用者資訊等

     程序:一個具有獨立功能的程式關於某個資料集合的一次執行活動。
      程序間通訊:管道(fifo/pipe),共享記憶體,訊息佇列,訊號量,本地套接字
執行緒:是程式的執行路線,即程序內部的控制序列,可作為系統獨立排程
      和分派的基本單位。

執行緒是系統排程的基本單位:執行緒資料:程式計數器,暫存器,棧空間。

執行緒同步方式:mutex,semaphore,cond.

          多執行緒                                                    多程序
靈活性:資料共享,通訊方便            程序通訊複雜,效率低
穩定性:容易死鎖,注意執行緒安全     各程序比較獨立
資源:    資源佔用少                          資源佔用多
效率:    建立、上下文切換快;        建立、排程、同步代價大
               同步、資料拷貝效率高        資料顯示拷貝

執行緒排程策略:1:時間片輪轉模式SCHER_RR 2:fifo佇列管理SCHER_FIFO(一直佔用cpu,除非有更高的優先順序執行緒過來或者自己阻塞,否則一直執行) 3:other非實時分時排程策略

以下是三種執行緒模型: