進程管理

1、內核數據結構(task structure)

   包含了:PID PPID 進程上一次的運行狀態 相關數據 名稱等信息

堆:動態增加的內存,可以簡稱爲堆

stack:棧,用於存儲本地變量

MMU:內存管理單元(CPU中的設備)

進程切換:也叫上下文切換(

進程包含的信息

   進程號

   內存空間

   用戶

   父進程

   CPU time


VSZ:虛擬內集,即進程的虛擬內存大小,包含了共享庫的內存大小,棧,堆,data,程序命令本身

RSS:常住內存集(residentsize)

多線程:thread,多線程需並行編程模型編寫,即可以使用多線程處理任務


進程狀態

   stopped:停止,不會被調試

   ready:就緒,排隊中

   executing:正在運行,

   uninterruptible:睡眠狀態(sleep),不可中斷的睡眠,需等待IO的資源

      sleep:當一個進程需要與IO設備讀取文件時,等待文件的讀取過程,需要交出CPU運行時間,給予

            其他進程運行,故睡眠

   interruptible:睡眠狀態(sleep),可中斷的睡眠

   zombie:殭屍進程


kernel-->init-->生成任務進程


pstree


大O標準:

    o(1)

    o(n)

    0(logn)

    o(n^2)

    o(2^n)

進程知識

    進程狀態

    父子關係

    優先級關係:0-139,一共140個優先級,數值越小優先級越高,100-139用戶可控制的,0-99內核調                 整的

                高優先級的特性:1、獲得更多的CPU運行時間,2、更優先獲得運行的機會。

                每個進程都有一個nice值:優雅的,友好的,nice值從-20到19分別對應100-139,默                 認每個程序的nice都爲0,普通用戶只能調大自己的進程的nice值,管理可以隨意調整

    進程號:process ID 

         在/proc/目錄下,以數字開頭的文件夾就爲一個進程,數字爲PID,其中init進程號永遠爲1

命令

   ps :process state

      BSD風格:不需要加橫線

      a:顯示所有跟終端有關的進程

      u:顯示進程由哪個用戶啓動的

      x:所有與終端無關的進程

      system V風格:選項需要加橫線

      -e:顯示所有進程

      -l:長格式

      -F:顯示完全字段

   ps -o property1,property2:指定顯示的字段

進程的分類:

     跟終端相關的進程:

     跟終端無關的進程

進程狀態:

    D:不可中斷的睡眠

    R:運行或就緒

    S:可中斷的睡眠

    T:停止

    S:僵死態

    <:高優先級的進程

    N:低優先級進程

    +:前臺進程組中的進程

    l:多線程進程

    s:會話進程首進程,會話進程的領導者

  COMMAND進程,如果加[],說明是一個內核線程

   pstree:顯示進程數

   pgrep:以指定字段顯示進程

       pgrep -u root bash

   pidof:查找某進程的ID號

       pidof sshd

   top:動態顯示進程信息

      load average:平均隊列長度 1,5,10分鐘,值越小CPU負載就越低

      us:用戶空間所佔的百分比

      sy:系統空間所佔的百分比

      ni:調整優先級所佔的百分比

      id:空閒的百分比

      wa:等待IO完成的所佔的百分比

      hi:硬件中斷所佔的百分比

      si:軟中斷所佔的百分比

      st:被偷走的時間

      virt:虛擬內存集

      res:常駐內存集

      shr:共享內存大小

    top的交互子命令

        M:根據駐留內存大小進行排序

        P:根據CPU使用百分比進行排序

        T:根據累計時間進行排序

        l:是否顯示平均負載和啓動時間

        t:是否顯示進程和CPU狀態相關信息

        m:是否顯示內存相關信息

        c:是否顯示完整的命令行信息

        q:退出top

        k:終止某個進程

    top選項

       -d #:設置刷新時長

       -b:以批處理模式刷新顯示

       -n #:在批處理模式顯示幾屏


進程間通信(IPC : Inter process communication)

   共享內存機制

   信號機制:signal

   Semaphore:旗語機制


kill -l:顯示所有的信號,重要的信號如下:

    1:SIGHUP:讓一個進程不用重啓,就可以重讀其配置文件,並讓新的配置信息生效

    2:SIGINT:ctrl+c,中斷一個進程

    9:SIGKILL:殺死一個進程 

    15:SIGTERM:殺死或中止一個進程,給時間,讓其保存工作,默認指定的信號

調用或指定信號:

    信號號碼:kill -1

    信號名稱:kill -SIGKILL

    信號名稱簡寫:kill -KILL

kill 命令:

kill PID

killall COMMAND


調整用戶的nice值:

 1、調整已經啓動的進程的nice值:

     renice NI PID

 2、啓動時指定nice值

    nice -n NI COMMAND


後臺運行任務:

    Command & ,將命令放到後臺運行

    ctrl+z,前臺調到後臺,但任務會被掛起

bg:讓後臺的停止作業繼續運行

    bg [%]JOBID

Jobs:查看後臺的所有作業,作業號不同於進程號

   +:命令將默認操作的作業

   -:命令將第二個默認操作的作業

fg:讓後臺運行的作業調回前臺

   fg [%]JOBID

殺死後臺進程

kill %JOBID


vmstat命令,系統狀態查看命令

r:運行隊列長度

b:阻塞隊列長度

in:中斷的個數

us:用戶空間佔用的百分比

sy:內核空間佔用的百分比

id:空閒

wa:等待IO

CS:上下文切換的次數

vmstat # :每隔#秒刷新一次

vmstat # #1:每隔#秒鐘顯示一次,只顯示#1次

uptime命令:查看系統運行信息


/proc/meminfo 查看內存的相關信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章