1. 程式人生 > >linux進程管理相關概念

linux進程管理相關概念

信號量 tran 實時 mmu block 等待事件 搶占式 復雜度 訪問權限

進程概念
內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等
Process: 運行中的程序的一個副本,是被載入內存的一個指令集合
  進程ID(Process ID,PID)號碼被用來標記各個進程
  UID、GID、和SELinux語境決定對文件系統的存取和訪問權限,
  通常從執行進程的用戶來繼承
  存在生命周期
task struct:Linux內核存儲進程信息的數據結構格式
task list:多個任務的的task struct組成的鏈表
進程創建:
  init:第一個進程

  centos6 是 init
技術分享圖片
  Centos7 是 systemd
技術分享圖片
     父子關系
  init:進程:都由其父進程創建,CoW (寫實復制)、fork(), clone(克隆)
   CoW (寫實復制):如果創建的子進程,子進程還沒有發生任何的數據改動,這時候用的是父進程的內存空間,總體來說節約了空間,這點跟LVM邏輯卷快照類似

進程的基本狀態和轉換

技術分享圖片

創建狀態:
   進程在創建時需要申請一個空白PCB(process control block進程控制塊),向其中填寫控制和管理進程的信息,完成資源分配。如果創建工作無法完成,比如資源無法滿足,就無法被調度運行,把此時進程所處狀態稱為創建狀態

就緒狀態:
   進程已準備好,已分配到所需資源,只要分配到CPU就能夠立即運行
執行狀態:
   進程處於就緒狀態被調度後,進程進入執行狀態
阻塞狀態:
   正在執行的進程由於某些事件(I/O請求,申請緩存區失敗)而暫時無法運行,進程受到阻塞。在滿足請求時進入就緒狀態等待系統調用
終止狀態:
   進程結束,或出現錯誤,或被系統終止,進入終止狀態。無法再執行

狀態之間轉換六種情況

運行——>就緒:
   1,主要是進程占用CPU的時間過長,而系統分配給該進程占用CPU的時間是有限的;

   2,在采用搶先式優先級調度算法的系統中,當有更高優先級的進程要運行時,該進程就被迫讓出CPU,該進程便由執行狀態轉變為就緒狀態。
就緒——>運行:
   運行的進程的時間片用完,調度就轉到就緒隊列中選擇合適的進程分配CPU
運行——>阻塞:
   正在執行的進程因發生某等待事件而無法執行,則進程由執行狀態變為阻塞狀態,如發生了I/O請求
阻塞——>就緒:
   進程所等待的事件已經發生,就進入就緒隊列
以下兩種狀態是不可能發生的:
   阻塞——>運行:即使給阻塞進程分配CPU,也無法執行,操作系統在進行調度時不會從阻塞隊列進行挑選,而是從就緒隊列中選取
   就緒——>阻塞:就緒態根本就沒有執行,談不上進入阻塞態

進程優先級

系統優先級:
  系統整個所有進程從最低到最大的優先級,其中數字越小,優先級越高。
  Centos4、5系統上0-139
技術分享圖片
  centos6 系統上0-98,99
技術分享圖片
實時優先級:
  99-0 值最大優先級最高
nice優先級:
  -20到19,對應系統優先級100-139或99,nice值越大,優先級越低
Big O:時間復雜度,用時和規模的關系
   O(1)衡定, O(logn), O(n)線性, O(n^2)拋物線, O(2^n)指數型,

進程內存

進程內存:

Page Frame: 頁框,用存儲頁面數據,存儲Page 4k
LRU:Least Recently Used 近期最少使用算法,釋放內存,
物理地址空間和線性地址空間
MMU:Memory Management Unit負責轉換線性和物理地址
TLB:Translation Lookaside Buffer 翻譯後備緩沖器,用於保存虛擬地址和物理地址映射關系的緩存

IPC: Inter Process Communication
  同一主機: signal:信號
    shm: shared memory
    semaphore:信號量,一種計數器
  不同主機:socket: IP和端口號
    RPC: remote procedure call
    MQ:消息隊列,Kafka,ActiveMQ

進程狀態

Linux內核:搶占式多任務
進程類型:
   守護進程: daemon,在系統引導過程中啟動的進程,和終端無關進程
   前臺進程:跟終端相關,通過終端啟動的進程
   註意:兩者可相互轉化
進程狀態:
  運行態:running
  就緒態:ready
  睡眠態:
    可中斷:interruptable
    不可中斷:uninterruptable
  停止態:stopped,暫停於內存,但不會被調度,除非手動啟動
  僵死態:zombie,結束進程,父進程結束前,子進程不關閉

linux進程管理相關概念