Linux進程與作業1

Linux進程與作業

操作系統的組成部分:硬件,kernel,lib,
系統調用-->調用kernel
lib調用--> 庫調用,kernel調用
運行用戶代碼-->用戶模式-->用戶空間;
運行kernel-->內核模式-->內核空間;

內核的功用:進程管理,文件系統,網絡功能,內存管理,驅動程序,安全功能

CPU寄存器至保存當前狀態的數據:------>找一個地方保存數據-->恢復數據:

進程-->Process:運行中的程序的一個副本;

同一個程序可以被創建并行的多個進程;
    進程存在生命周期;-->進程是一個活體,有生命周期;

task struct:任務結構體:內核存儲進程信息的固定格式;
    多個任務的task struct組件的鏈表;task list

進程創建:
    init是無法像內核調用特權指令,但是可以進行創建進程;

    進程是由父進程創建:父子關系
        fork(請求創建進程的調用接口;)
        clone(克隆自己的數據給子進程;)
    任何進程銷毀都是其父進程進行銷毀;

    進程優先級:
        0-139:
            0-99:實時優先級;-->數字越大優先級越高;
            100-139:靜態優先級;-->數字越小優先級越高;

        NICE值:
            -20,19程序的優雅值:

        Big O
            O(1),O(logn),O(n),O(n^2),O(2^n);

    每個程序有2個隊列:運行隊列,過期隊列;
        程序運行優先級查看運行隊列:

進程的task struct:

進程內存:
    內核完成資源分配:
    同一個命令,不同數據使用的內存也是不一樣的;
    將內存分割成一個個4k的頁框存儲頁面數據;
    page frame:頁框,存儲頁面數據;
    每個進程的所占的內存有page frame組成;偽裝成連續空間給進程;

    以32位系統位列:每個進程運行時內核告訴進程有3G內存可用;-->虛擬內存-->線性地址空間;

    真正分配的內存空間:物理地址空間:-->與先行地址空間是離散對應的;

內存為每個進程都保存了task stauct;
    MMU:Memory Management Unit內存管理單元;
    缺頁異常:訪問數據,發現物理空間數據不在了;

常駐內存集:不能被交換
虛擬內存集:可以進行交換-->swap上

IPC:Inter Process Communication
    進程與進程無法通信:
        如需要通信:同一主機上;
            signal
            shm:shared memory 共享內存空間;
            semerphor

        不同主機上:
            rpc:remote procecure call:遠程過程調用;
            socket:基于套接通信;

Linux內核:搶占式多任務:

進程類型:

守護進程:daemon;與終端無關,在系統引導過程中啟動的進程;
前臺進程:用戶終端啟動進程:與終端相關;
    注意:也可把在前臺啟動進程送往后臺,變為以守護模式運行;

進程狀態:
    運行態:running
    就緒態或睡眠態:ready
    睡眠態:
        可中斷睡眠:任意時間都可喚醒:interruptable
        不可中斷睡眠:uninterruptable
進程:指令+數據
一次IO是由分2段進行:磁盤加載內核內存,內核內存復制進程內存;
第二段:IO調用過程。
第一段:

    停止態:暫停于內存中,但不會被調度,除非手動啟動;
    僵死態:zombie

    init:是負責收拾沒有父進程的子進程;

進程的基本分類:
    CPU-Bound:CPU密集進程-->消耗更多的CPU
        非交互式:
    IO-Bound:IO密集進程-->
        交互式:

Linux進程查看及管理工具:

pstree工具:
** pstree - display a tree of processes**
**[root@wanghongkai ~]# pstree
init─┬─NetworkManager─┬─dhclient
     │                └─{NetworkManager}
     ├─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─automount───4*[{automount}]
     ├─bonobo-activati───{bonobo-activat}
     ├─certmonger


ps:process state進程狀態查看工具:
     ps - report a snapshot of the current processes.

Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中;
    支持2中風格:-或空
常用組合:aux
    u:以用戶為中心組織進程狀態信息顯示:
    a:所有與終端相關的進程;
    x:與終端無關的進程:
    線程是進程的子單位
[root@wanghongkai ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  19352  1452 ?        Ss   04:26   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    04:26   0:00 [kthreadd]

USER:進程屬主;
PID:進程ID;
cup:cpu百分比;
vsz:虛擬內存或線性內存集:
RSS:常駐內存集:不能放在交換分區的;
TTY:通過那個終端啟動:
COMMAND:那個命令使用的:
STAT:進程狀態:
    R:runing
    S:interruptable sleeping
    D:uninterruptable sleeping
    T:stopped
    Z:zombie
    +:前臺進程
    l:多線程進程
    N:低優先級進程
    <:高優先級進程
    s:session leader
START:啟動時間:

常用組個:-e
    -e:顯示所有進程
    -f:顯示完整的進程信息    

常用組合:-eFH
    -F:顯示完整格式的進程信息
    -H:以進程層級格式顯示進程相關信息

[root@wanghongkai ~]# ps -F
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root     20570 20566  0 27154  2044   0 19:41 pts/1    00:00:00 -bash
root     20744 20570  0 27560  1136   0 20:07 pts/1    00:00:00 ps -F
[root@wanghongkai ~]# ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
root     20570 20566  0 19:41 pts/1    00:00:00 -bash
root     20746 20570  0 20:08 pts/1    00:00:00 ps -f

常用組合:-eo ,axo 自定義想查看進程;
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan

    ni:nice值
    pri:priority,優先級
    psr:processor,CPU
    reprio:實時優先級

pgrep,pkill:進程顯示的過濾:
    pgrep [options] pattern
    pkill [options] pattern -->殺死進程;
    -U:實際用戶
    -u:有效用戶
    -t:與指定終端相關的進程
    -l:顯示進程名
    -a:顯示完整格式的進程名
    -P pid:顯示其父進程為此處指定的進程的進程列表

pidof:根據進程名獲取其PID:

top:top:默認是根據CPU排序時時查看工具:

top - 20:24:31 up 15:58,  3 users,  load average: 0.00, 0.00, 0.00
Tasks: 147 total,   1 running, 146 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1020080k total,   934040k used,    86040k free,    89512k buffers
Swap:  2097148k total,        8k used,  2097140k free,   512508k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                        
1 root      20   0 19352 1452 1132 S  0.0  0.1   0:02.96 init                            
2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                        
3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0

[root@wanghongkai ~]# uptime
 20:27:50 up 16:01,  3 users,  load average: 0.00, 0.00, 0.00
**常用選項**
排序:
    P:以占據的CPU百分比:
    M:整體上占據內存百分比:
    T:累積占據CPU時長:

首部信息顯示:
    uptime信息:l命令
    tasks及CPU信息:t命令
    CPU分別顯示:1
    memory信息:m命令
    q:退出
    s:修改刷新時間間隔
    k:殺出某個進程
選項:
    -d:指定刷新時間間隔,默認是3秒
    -b:批次顯示,后跟-n #顯示多少批次

htop:在epel源當中的提供:這里我用的是阿里云:我講阿里云的eple源的鏡像加載到我的yum源中:
[epel]
name=epel-6.0
baseurl=http://mirrors.aliyun.com/epel/6/x86_64/
gpgcheck=0
enabled=1

選項:
    -d #: 指定延遲時間;
    -u UserName: 僅顯示指定用戶的進程;
    -s COLOMN: 以指定字段進行排序;

命令:
    s: 跟蹤選定進程的系統調用;
    l: 顯示選定進程打開的文件列表;
    a:將選定的進程綁定至某指定CPU核心;
    t: 顯示進程樹

原創文章,作者:wostop,如若轉載,請注明出處:http://www.www58058.com/27331

(0)
wostopwostop
上一篇 2016-08-02
下一篇 2016-08-02

相關推薦

  • sed命令及vim編輯器

    sed[option]… 'script' inputfile…選項:-n:不輸出模式空間內容的自動打印-e: 多點編輯-f /PATH/TO/SCRIPT_FILE: 從指定文件中讀取編輯腳本-r: 支持使用擴展正則表達式-i: 原處編輯script:'地址命令' 1.地址定界:(1) 不給地…

    Linux干貨 2016-08-11
  • 文件歸檔,shell循環和函數運用

    文件歸檔 tar (1)  創建歸檔 tar -c -f / PATH/TO/SOMEFILE .tar FILE… tar cf / PATH/TO/SOMEFILE .tar FILE… (2)  查看歸檔文件中的文件列表 tar -t -f  /PATH/TO/SOMEFILE .tar (3) &…

    Linux干貨 2016-08-21
  • linux文本處理工具

    linux文本處理工具 1.Linux 文件系統上的特殊權限: SUID     SGID   Sticky       進程的安全上下文:(1)任何一個可執行程序文件能不能啟動為進程,取決發起者對程序文件是否擁有執行去權限       &…

    Linux干貨 2017-02-25
  • linux基礎學習-(磁盤管理、分區掛載、SWAP)

    1、磁盤結構 2、分區類型 3、管理分區、文件系統以及掛載設備 4、管理虛擬內存SWAP 一、磁盤結構(機械硬盤) CHS尋址模式將硬盤劃分為磁頭(Heads)、柱面(Cylinder)、扇區(Sector)。 ?heads:磁頭 ?tracks:磁道 ?cylinder: 柱面 ?sector: 扇區,512bytes(最小的存儲單位) 1、其中:每個盤面…

    Linux干貨 2016-09-01
  • 細述LVM

     前言:     LVM(Logical Volume Manager)是基于內核的一種邏輯卷管理器,LVM適合于管理大存儲設備,并允許用戶動態調整文件系統大小。此外,LVM的快照功能可以幫助我們快速備份數據。LVM為我們提供了邏輯概念上的磁盤,使得文件系統不再關心底層物理磁盤的概念。 看圖識LVM &nbs…

    Linux干貨 2015-06-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-02 23:23

    總結的很好,如果能對命令的顯示結果有一些詳解的解釋就更好了

欧美性久久久久