天天看點

程序管理

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 檢視記憶體的相關資訊

繼續閱讀