進程管理——基礎概念

簡介

剛開始接觸到進程時候,進程,線程,程序總是搞不清他們什麼關係,最重要是進程和線程總是搞混。不喜歡網上的”官方解釋”,我試着用通俗的語言大致說一下。
程序是放在磁盤上的文件,當這個文件可以運行起來幹某件事時候,它就成了進程了,當然一個程序需要多個任務,就會生成幹這多個任務的進程。線程是進程的下一代,當一個進程需要同時幹某件事情時候,就需要有多個線程同時工作,來完成一個進程,比如說聽音樂時候,音樂播放器在放出來音樂時候,同時又需要播放歌詞,這時就需要兩個線程來共同完成”播放音樂”的任務

進程創建

進程(Process),官方解釋大概意思是將放在磁盤中的程序複製一個副本,放在內存裏,構成指令的集合。

創建進程

那麼什麼時候會開始一個進程呢?
當我們執行一個命令時候,通常會開啓一個進程,比如ping的時候,就會產生一個進程。

這裏使用pidof來查看運行着的進程編號。

進程屬性

我們看到了進程編號,進程肯定還有其他屬性,還包括進程名,開啓進程所使用的命令,進程優先級(下面詳解),進程所屬用戶,進程佔用CPU時間等,總之,有很多,當我們用到進程工具查看時候就知道了

進程類型

看了進程長什麼樣後,進程有什麼樣的類型呢,就像人還分爲黃種人,黑種人,白種人呢

按模式分

守護進程(daemon),類似守門神,不管有沒有人進門,他們都時時刻刻,兢兢業業的守在那裏,在系統引導過程中啓動(開機就運行的進程),和終端無關,就是說,不管你開沒開啓終端,都會運行的進程

前臺進程,跟終端相關,只有打開終端後,才運行的進程,稱之爲前臺進程,比如說打開終端後,ping一個機器,使用vi 編輯一個文件

按照進程狀態分

  • 運行態:running
  • 就緒態:ready(等待cpu分配時間段)
  • 睡眠態:
    • 可中斷:interruptable
    • 不可中斷:uninterruptable
  • 停止態:stopped,暫停於內存,沒有運行,但不會被調度,除非手動啓動
  • 僵死態:zombie,結束進程,父進程結束前,子進程不關閉(進程的父進程死掉,而它沒有死就會出現僵死態)

按照操作密集程度分

  • CPU密集型:進程在運行時,佔用CPU時間較多的進程。
  • I/O密集型:進程在運行時,佔用I/O時間較多的進程。通常情況下,I/O密集型的優先級要高於CPU密集型。

進程優先級

進程處理時候,如果同時處理多個進程,就涉及到哪個進程首先使用硬件的問題,因爲進程是需要CPU分配時間片來進行資源調用,其優先級越高,分配時間片越多,這就是進程的優先級。

整個系統來說,進程的有優先級,是用0-139數字來表示的,數字優先級從小到大依次是:0-99,100-139。
在這140個數字中,優先級分爲2類:

  • 實時優先級(realtime):0-99,是由內核維護的
  • 靜態優先級(nice):100-139,可以使用nice命令來調整,nice值的取值範圍是[-20,19),分別對應100到139。nice默認值是0。
  • PR(top):top命令中定義的優先級
    還是來圖實在些
    centos4,5優先級
    當然我們現在都是centos6以後的系統了
    centos6優先級
    只是system優先級一行不一樣。

進程間通信

進程間通信(Inter Process Communication),分爲是否在同一個主機,如果在兩個主機就需要使用網絡了

同一個主機

  1. signal:信號,kill -l可以看到主機可用信號
  2. shm:共享內存,因爲可以多個進程使用同一內存空間
  3. socket:文件socket

    在一個終端創建一個socket文件
    [root@CentOS7 ~]#nc -Ul ./haha
    另一個終端進行監聽
    [root@CentOS7 ~]#nc -U ./haha
    這時候就可以進行通信了
    

不同主機

  1. rpc:remote procedure call遠程過程調用
  2. socket:ip和端口號

有什麼寫錯的,請多多指正^_^

發佈了43 篇原創文章 · 獲贊 41 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章