目录
1、进程的类型
1.1、前台进程
前台进程就是具有终端,可以和用户交互的进程。
1.2、后台进程
- 与前台线程相对,没有占用终端的就是后台线程。
- 后台进程基本上不和用户进行交互,优先级比前台进程低。
- 将需要执行的命令一"&"符号结束。
1.3、守护进程
守护(daemon)进程是特殊的后台进程。
很多守护进程在系统引导的时候启动,一直运行直到系统关闭。
Linux有很多典型的守护进程。
进程名字一般以“d”为结尾的一般都是守护线程,例如:crond(LInux定时任务的守护进程)、httpd(http服务的守护进程)、sshd(使用ssh登陆的守护进程)、mysqld
2、进程的标记
2.1、进程ID
- ID为0的进程为idle(idle:闲置的)进程,是系统创建的第一个进程。
- ID为1的进程为init进程,是0号进程的子进程,完成系统初始化。init进程是所有用户进程的祖先进程。
- 进程的父子关系可以通过命令pstree命令查看
2.2、进程的状态标记
状态符号和说明:
3、操作Linux进程的相关命令
3.1、ps命令:
- 查看进程所使用的命令,常用于显示当前进程的状态
- ps命令常配合aux参数或ef参数和grep命令检索特定进程
3.2、top命令:
查看Linux的使用内存和其他状态的命令
3.3、kill命令:
- 发送指定信号给进程
- kill -l 可以查看操作系统支持的信号(SINGLE),只有(SIGKILL 9)可以无条件终止进程(kill -9 pid),其他信号进程有权忽略
4、作业管理之进程调度
4.1、进程调度概述
进程调度指计算机通过决策决定哪个就绪线程可以获取CPU使用权(涉及到多道程序设计)。
4.1.1、进程调度有两个步骤:
- 保留旧进程的运行信息,请出旧进程(收拾包袱,离开CPU);
- 选择新进程,准备运行环境并分配CPU(新进驻);
4.1.2、进程调度的三种机制:
- 就绪队列的排队机制
- 选择运行进程的委派机制
- 新老进程的上下文切换机制
4.2、进程调度方式
如果在进行进程调度时,老的进程还没有执行完,怎么办?我们可以把进程调度的方法分为两大类:非抢占式的调度和抢占式的调度。
4.2.1、非抢占式的调度
- 处理器一旦分配给某个进程,就让该进程一直使用下去
- 调度程序不以任何原因抢占正在被使用的处理器
- 直到进程完成工作或因为IO阻塞才会让出处理器
4.2.2、抢占式的调度
- 允许调度程序以一定的策略暂停当前运行的进程
- 保存好旧进程的上下文信息,分配处理器给新进程
4.2.3、两种调度算法对比
4.3、进程调度算法
4.3.1、先来先服务调度算法
按照队列顺序进行调度。
4.3.2、短进程优先调度算法
- 调度程序优先选择就绪队列中估计运行时间最短的进程
- 短进程优先调度算法不利于长作业进程的执行
4.3.3、高优先权优先调度算法
- 进程附带优先权,调度程序优先选择权重高的进程
- 高优先权优先调度算法使得紧迫的任务可以优先处理
- 前面讲过,前台进程的优先级要高于后台进程,因为前台进程是与用户进行交互的,最好不要造成卡顿
4.3.4、时间片轮转调度算法
- 按先来先服务的原则排列就绪进程
- 每次从队列头部取出待执行进程,分配一个时间片执行
- 是相对公平的调度算法,但不能保证及时响应用户