一、进程切换(上下文切换)
1.进程切换
* 暂停当前运行进程,从运行态变成其他状态
* 调度另一个进程从就绪态变成运行状态
2.要求
* 切换前,保存进程的上下文
* 切换后,恢复进程上下文
快速切换(通常情况下,由汇编执行)
3.进程生命周期信息
* 寄存器(PC,SP,……)
* CPU状态
* 内存地址空间
4.进程控制块PCB:内核的进程状态记录
内核为每个进程维护了对应的进程控制块
内核将相同状态的进程的PCB放置在同一队列
二、进程等待与退出
1.父进程等待子进程
* Wait()系统调用用于父进程等待子进程的结束
* 子进程结束时通过exit()向父进程返回一个值
* 父进程通过wait()接受并处理返回值
* wait()系统调用的功能
* 有子进程存活时,父进程进入等待状态,等待子进程的返回结果当某子进程调用exit()时,唤醒父进程,将exit()返回值作为父进程中wait()的返回值
* 有僵尸子进程等待时,wait()立即返回其中一个值
* 无子进程存活时,wait()立即返回
2.其他进程控制系统调用
* 优先级控制
* nice()指定进程的初始优先级
* Unix系统中进程优先级会随执行时间而衰减
* 进程调试支持
* ptrace()允许一个进程控制另一个进程的执行
* 设置断点和查看寄存器等
* 定时
* sleep()可以让进程在定时器的等待队列中等待指定