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.178linux.com/27331

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

相关推荐

  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp/ [root@localho…

    Linux干货 2016-08-15
  • Centos7上安装Ansible和基础应用

    Ansible 简介 ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:自动化部署APP;自动化管理配置项;自动化的持续交互;自动化的(AWS)云服务管理。所有的这几个目标从本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。通俗的说…

    Linux干货 2016-04-15
  • 有关shell脚本

    SHELL脚本 在Linux运维工作中有着大量的重复性质的工作,比如同时给很多台的服务器备份,查看多台的内存情况,等等。这样的情况下总不能一个一个服务器自己去看,那样耗时,费力,还容易出错。所以编写程序来做这些事情就成了必要的工作。而SHELL就是完成这项工作的。   脚本第一行的开头写上#!/bin/bash 这是属于格式性质的,作用在于加上执行…

    2017-08-12
  • Linux DNS服务系列之原理介绍及正反向解析配置

    前言 我们在访问一个网站的时候,只要输入该网站的网址就会跳转到该网站页面,而实现这一过程就需要DNS服务器将域名解析为IP地址,进而实现数据通信。那么DNS服务器是如何工作的呢?本系列分为两部分,本文将详解DNS服务原理及正反向解析配置。 DNS服务原理详解 DNS相关知识 DNS:Domain Name Service,域名解析服务 监听端口:udp/53…

    Linux干货 2015-04-13
  • 集群-ipvsadm和NAT实验(3)

    纠正:报文进入内核空间后,当到达input链时发现是一个集群服务时,则直接发送到postrouting链,不经过forward链。 调度算法: 1、静态方法: rr:轮询,即依照次序从所有RS中进行挑选 wrr:加权轮询,按照权重在RS中进行轮询 sh:source hashing,源地址哈希,即对来自相同客户端的请求发送至同一RS,这样会破坏负载均衡效果。…

    Linux干货 2015-12-15
  • CentOS7下使用rmcli配置IP地址详解及网络连接状态查看工具和进程管理工具的使用

    一、在CentOS7中推荐使用nmcli工具来管理网卡配置,nmcli是NetworkManager Command-Line Interface(网络管理命令行接口)的简称,可以通过它以命令行的方式管理网卡。也可以使用nmtui管理工具,nmtui是NetworkManager Text-User Interface(网络管理文本用户接口)的简称,它提供的…

    Linux干货 2016-09-07

评论列表(1条)

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

    总结的很好,如果能对命令的显示结果有一些详解的解释就更好了