知识点1 进程概念
进程是操作系统最核心的概念之一。进程简单而言是操作系统中运行的程序,它是操作系统资源管理的最小单元。进程是一个动态的实体,是程序的一次执行过程。进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是保存在硬盘上的可执行的代码。
知识点2 进程三态
(1)运行:一个进程在处理机上运行,则称该进程处于运行状态。处于运行状态的进程数目不大于处理器的数目。
(2)就绪:进程得到了除处理机以外的所有资源,一旦得到处理机便可运行,则称该进程处于就绪状态。就绪态进程可按多个优先级来划分队列。
(3)阻塞:阻塞态也称睡眠或等待态,一个进程在等待另一个时间的发生(如请求I/O而等待I/O完成)而暂时停止运行,这时即便进程得到处理机也无法 执行,故称该进程处于阻塞状态。
知识点3 进程ID
进程ID称为PID,是进程的标号
知识点4 进程互斥
进程互斥是两个或两个以上的进程同时访问某个共享变量而导致。发生能够访问共享变量的程序代码称为临界区,而实现共享的资源称为临界资源。
知识点5 进程同步
多个相关进程在执行次序上的协调称为进程同步。用于保证多个进程在执行次序上的协调关系的相应机制称为进程同步机制。
知识点6 进程调度(单独写)
知识点7 死锁
多个进程占有对方需要的资源同时请求对方的资源,而他们在得到请求之前不会释放所占有的资源,会导致死锁的发生。
(视频 一)
知识点1 如何获取进程ID
使用函数getpid()可获取当前进程的pid,而getppid()获取该进程的父进程的pid
知识点2 如何创建进程
可以通过fork、vfork、exec函数族以及system函数来创建进程。
知识点3 fork与vfork的区别
vfork函数创建进程后子进程先运行,而fork创建进程父、子进程运行次序不定;vfork创建子进程与父进程共享数据段,而fork创建子进程复制父进程的代码段,之后两者不共享代码段。
知识点4 exec函数族
exec函数族是启用一个新进程然后替换之前的进程,新进程的pid不会发生变化。exec函数中后缀不同具有不同的操作能力
后缀 | 操作能力 |
l | 希望接收以逗号分隔的参数列表,列表以NULL指针作为结束标志 |
v | 希望接收到一个以NULL结尾的字符串数组的指针 |
p | 是一个以NULL结尾的字符串数组指针,函数可以DOS的PATH变量查找子程序文件 |
e | 函数传递指定参数envp,允许改变子进程的环境,无后缀e时,子进程使用当前程序的环境 |
system函数会调用fork函数创建一个子进程,有子进程来实现system中的命令(举例)