進程/線程知識總結

  1. 程序:存儲在存儲器中,用編程語言寫好,經過預處理,編譯,彙編,鏈接成的二進制代碼。
  2. 進程:正在運行的程序。
  3. 多進程:爲了提高CPU的利用率,在某進程遇到阻塞時,CPU能夠不必等待該阻塞的進程而去執行別的進程,使CPU一直處於忙碌狀態,提出了多進程。
  4. PCB:CPU在切換進程前,會將當前進程的狀態信息、數據信息保存在該進程的PCB中。
  5. 通過調度算法來實現進程間的切換。
  6. 調度算法有:一、先來先服務。二、短作業優先。三、設定優先級,優先調度優先級高的進程。四、動態調整優先級,即高響應比優先調度。五、時間片輪轉調度算法。六、多級反饋隊列調度算法。
  7. 多進程會產生的問題:死鎖,多個進程由於互相等待對方持有的資源而造成誰都無法執行的情況。
  8. 死鎖的原因:
    一、資源互斥。進程一旦佔有資源,別的進程不能使用
    二、資源保持。進程佔有了一些資源,再去申請別的資源
    三、環路等待。各自申請者對方佔有的資源。
    四、資源不可搶佔。別的進程拿有你需要的資源但你不能搶。
  9. 死鎖的處理方法:
    一、不保持資源。一次性申請所有自己所需資源,若資源不足,則釋放所有資源。
    二、對資源進行編號,資源申請按序進行,避免環路等待。
    三、利用算法(銀行家算法),每次申請資源前,先檢查申請後會不會出現死鎖,若會出現死鎖,則不申請。
    四、若出現死鎖,取出某一進程,讓其釋放資源。
    五、不處理。
  10. 銀行家算法:在進程需要申請資源時,操作系統首先要詢問該進程所需最大資源數,若該最大資源數小於操作系統現有資源數,則將資源分配給該進程,否則推遲分配。當進程處理完畢之後,立即釋放所有資源歸還給操作系統。
  11. 進入內核的方法:中斷。
  12. 進程間的同步:多個進程合作完成一項任務,實現進程合作的合理有序。
  13. 進程間同步的方式:
    一、信號量
    二、臨界區
    三、互斥鎖
    四、自旋鎖
    其中,用信號量實現多進程同步,用臨界區保護信號量,用互斥鎖進入臨界區。
  14. 臨界區:每次只能有一個進程進入的代碼片段。(代碼段是進程共享的資源,需要用互斥鎖來保護)
  15. 互斥鎖原理:在硬件層面上,將某個標誌類型用一條指令實現,進入臨界區之前,執行這一條指令,既上鎖,運行臨界區,當出臨界區時,再執行這一條指令,既解鎖。當鎖被別的進程佔有時,其他進程是不能進入該臨界區的。
  16. 互斥鎖的用法:pthread.h頭文件中定義了互斥鎖,呼出鎖的用法是通過調用pthread_mutex_init生成鎖,通過調用pthread_mutex_lock()和pthread_mutex_unlock()函數來實現上鎖和解鎖操作。
  17. 每個進程擁有完整的用戶地址空間,包括代碼段,數據段,BSS段,堆段,棧段。
  18. 進程由:程序,數據,和PCB組成。
  19. 線程指的是進程的指令序列。一個進程至少有一個線程,可以有多個互不影響的指令序列,也就是說有多個線程。
  20. 線程保留了指令序列併發的優點且減少了資源切換的系統開銷。
  21. 與進程類似,每個線程擁有一個特殊的數據結構來記錄線程切換前的狀態和數據,稱之爲TCP。
  22. 線程擁有自己的線程ID,PC指針,寄存器集合和堆棧。線程之間共享同一個內存映射表,共享同一地址空間。
  23. 線程是調度的基本單元,故調度算法應說線程調度算法更爲合理。
  24. 進程是資源分配的基本單元,線程是調度的基本單元,進程包含線程,線程共享進程的資源。
  25. 併發:一個處理器任意一個時刻只能處理一條指令,通過多個指令的輪換執行,在宏觀上感覺是多條指令同時執行。
  26. 並行:多個處理器同時處理多個指令,每個處理器執行一條指令,多個指令同時執行。
  27. 週轉時間:從任務開始到任務結束所用的時間
  28. 響應時間:從操作發出到CPU響應所經過的時間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章