进程知识点

作者: 狼之足迹 | 来源:发表于2016-08-15 11:11 被阅读49次

    典型的linux结构

    linux结构图

    shell命令执行过程

    shell执行

    三进程概念

    程序的一个执行实例

    正在执行的程序

    能分配处理器并由处理器执行的实体

    进程描述

    每一个进程都有一个进程控制块(PCB)linux下为task_struct结构体

    该结构体在include/linux/sched.h文件中

    进程标识符

    PID

    PPID

    进程映像(从高地址到低地址)

    内核部分

    命令行参数以及环境变量

    共享区

    (以下部分由exec替换并初始化)
    未初始化数据
    已初始化数据

    代码区

    环境变量的获取

    extern char **environ;

    相关函数

    getenv

    setenv

    unsetenv

    进程状态

    running运行状态:正在运行或者在运行队列中

    sleeping睡眠状态:在等待事件完成

    disk sleep磁盘休眠状态:会等待io完成,不可中断

    Zombies僵死状态:父进程未调用wait等待,而子进程退出.

    stopped,暂停状态,通过single T信号产生

    X(dead),死亡状态,系统清除该进程信息

    t (tracing stop):用于debug调试跟踪

    一份专业描述

    PROCESS STATE CODES

    R  running or runnable (on run queue)

    D  uninterruptible sleep (usually IO)

    S  interruptible sleep (waiting for an event to complete)

    Z  defunct/zombie, terminated but not reaped by its parent

    T  stopped, either by a job control signal or because it is being traced

    [...]

    进程基本状态转换

    僵尸进程:如果一个进程的父进程一直不掉用wait或者waitpid,子进程退出,没有人接收其状态,那么他就会作为僵尸进程存在,直到父进程退出,然后交给init进程管理

    孤儿进程:如果父进程退出,而其还有一个或者多个子进程在运行,那么这些子进程就会变成孤儿进程.由init接管

    进程优先级

    lang@liang:~$ ps -l

    F S  UID  PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD

    0 S  1000  4450  2121  0  80  0 -  2236 wait  pts/19  00:00:00 bash

    4 R  1000  5126  4450  0  80  0 -  2304 -      pts/19  00:00:00 ps

    注:这里的PRI就是进程优先级

    而NI则对应nice值,用于调节优先级

    相关命令

    nice   调节程序执行时优先级
    nice -n -5 /usr/local/mysql/bin/mysqld_safe &

    renice    修改正在运行程序的优先级
    renice -5 -p 5200

    进程创建

    fork()

    fork成功,子进程得到父进程地址空间的堆,栈,数据区域的拷贝,而文本段则是父子进程共享的

    进程终止

    exit
    从主函数返回
    _exit
    return
    最后一个线程调用pthread_exit
    调用abort函数
    接收到信号终止
    最后一个线程对取消请求做出相应

    相关文章

      网友评论

        本文标题:进程知识点

        本文链接:https://www.haomeiwen.com/subject/jvlusttx.html