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 16:31
下一篇 2016-08-02 16:50

相關推薦

  • 管理SYSTEMd

    核心概念unit,systemctl管理系統服務,

    Linux干貨 2018-01-04
  • Nginx及其相關配置詳解(一)

    Nginx: Nginx (engine x) 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的,第一個公開版本0.1.0發布于2004年10月4日。其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資…

    2017-06-22
  • man 命令簡單介紹

    man n command man手冊頁分為下面幾個部分: 1 普通命令2 內核提供的系統調用3 庫調用4 設備文件5 文件格式規范6 游戲7 雜項8 系統管理命令

    Linux干貨 2018-03-03
  • PHP5.4最新特性

    原文Oracle:LAMP 體系有了新的競爭,但此版本中的特性使 PHP 再次挑戰極限。 稍微做了修改。: 概述總結:1. 內存和性能改進:大型 PHP 應用程序中可節省 20-50% 的內存。通過各種優化使性能提高 10-30%2. 支持特性Trait3. 精簡數組語法,可以定義短數組4. 函數數組解除引用,支持Array dereferenci…

    Linux干貨 2015-11-18
  • 進程管理之進程基礎及操作命令

    進程管理 今天我們開始講進程管理的相關知識,進程是學習LInux系統的重要一節內容,不僅能更幫助我們了解LInux系統的原理組成,又能方便我們在平常運維工作中的管理工作,幫助我們故障排查.希望大家牢固的掌握進程知識. 以下是我們分享的內容: 概論 進程控制 進程管理工具 概論 程序執行: 多道程序的執行分為順序執行和并發執行 程序順序執行時的特征: &nbs…

    Linux干貨 2016-09-07
  • bash變量詳解

       shell作為用戶和Unix/Linux溝通的橋梁,既可以是一個可執行的二進制程序,同時也是一個具備了編程能力的程序設計語言,定義了各種各樣的變量和參數,下面介紹一下shell之上的各種變量。 1、本地變量    特性:只對當前shell生效 [root@centos7 ~/bin]#cat …

    Linux干貨 2016-08-15

評論列表(1條)

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

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

欧美性久久久久