进程基础

进程的概念

  • 课本:程序的一个执行实例,正在执行的程序等
  • 内核:但当分配系统资源(CPU时间、内存)的实体

管理进程

描述进程

  • 进程信息被放在一个叫做进程控制块的数据结构中,称之为PCB
  • Linux中描述进程PCB的结构体为task_struct,是内核的一种数据结构,会被装载到RAM中,并包含着进程的信息

task_struct内容

  • 标识符pid:描述本进程的唯一标识符,区别其他进程
  • 状态:任务状态、退出代码、退出信号等
  • 优先级:相对于其他进程的优先级
  • 程序计数器:程序中即将被执行的下条指令地址,CPU里的重要寄存器PC指针
  • 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
  • 上下文数据:进程执行时处理器的寄存器中的数据,包括通用寄存器、程序计数器、程序状态字PSW(如执行方式、中断屏蔽字等)、用户栈指针(存放过程调用和系统调用参数和调用地址)
  • I/O状态信息:包括显示的I/O请求、分配给进程的I/O设备和被进程使用的文件列表
  • 记账信息:可能包括处理器时间总和,使用的时钟数总和、时间限制、记账号等
  • 其他信息

组织进程

所有运行在系统的进程都以task_struct链表的形式存在内核中

查看进程

  • ls /proc/n:查看n号进程信息
  • ps aux | grep test | grep -v grep:查看关于test的进程信息
  • top:相当于windows的任务管理器

进程标识符

  • 进程标识符可以通过系统调用接口获取,包含在头文件<sys/type.h>和<unistd.h>中
  • getpid():获取子进程的pid
  • geetppid():获取父进程的pid

进程状态

  • 运行状态R:表明进程在运行中或在运行队列中
  • 睡眠状态S:也称为可中断睡眠状态,进程在等待事件完成,可以被kill掉
  • 磁盘休眠状态D:也称为不可中断睡眠状态,这个状态的进程会等待I/O的结束,不能被kill掉
  • 停止状态T:可以通过发送SIGSTOP信号给进程来停止进程,被暂停的进程可以通过发送SIGCOUT信号让进程继续执行
  • 死亡状态X:这个状态只是一个返回状态,不会再列表中看到

修改进程状态

  • kill -l:查看系统支持的信号列表
  • kill -SIGSTOP pid:使pid号进程停止
  • kill -SIGCOUT pid:使pid号进程继续运行

僵尸进程

  • 僵尸状态(Z)是一个比较特殊的状态,当进程退出并且父进程没有读到子进程的退出代码就会产生僵尸进程
  • 僵尸进程会以终止状态保持在进程表中,并且会一直等待父进程读取子进程的退出代码
  • 当子进程提前退出,父进程还在运行但是没有读取子进程的退出代码,子进程进入僵尸状态

危害

  • 子进程的退出状态会一直维护下去,维护退出状态本身就是要用数据维护,也属于进程基本信息,保存在task_struct中
  • 所以僵尸状态不退出,PCB要一直维护退出信息,如果一个父进程创建了许多子进程,都不进行回收,会造成内存资源的极大浪费,也会造成内存泄漏

孤儿进程

父进程提前退出,子进程就是孤儿进程,孤儿进程会被1号init进程领养,由init进程回收

进程优先级

CPU资源分配的顺序就是进程的优先级

查看系统进程

可以通过ps -l来查看

  • UID:执行者身份
  • PID:子进程的pid
  • PPID:父进程的pid
  • PRI:进程的优先级
  • NI:进程的nice值

PRI和NI

  • PRI是进程的优先级,值越小优先级越高
  • NI是进程的nice值,表示进程可被执行的优先级修正数值,nice值取值范围是[-20,19]这40个级别,存在上下限是为了让调度器调度资源均衡
  • 进程的优先级PRI(new) = PRI(old) + nice,所以调整进程的优先级就是调整nice值
  • nice值不是进程的优先级,但是nice值会影响进程的优先级

修改进程优先级

  • nice -n x ./test:启动前调整test进程的nice值为x
  • renice x -p xxxx:将pid为xxxx的已存在进程nice值设为x
  • 用top修改已存在进程的nice:top->进入top后按"r"->输入进程pid->输入nice值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值