进程相关
进程
定义
是进程实体的运行过程
,是系统进行资源分配和调度的一个独立单位
组成
- PCB(进程存在的唯一标志)
- 程序段
- 数据段
特征
- 动态性(进程的最基本特征)
- 并发性
- 异步性(各进程不可预知推进,运行结果不确定)
- 独立性(进程是系统
进行资源分配、调度的独立单位
) - 结构性
状态
三种基本状态
- 运行态:占有CPU并在CPU上运行
- 就绪态:具备运行条件,但没有空闲CPU
- 阻塞态:因等待某一事件暂时不能运行
另两种状态
具有创建终止状态的进程状态、相互转换原因及其转换图(七态)
进程控制
- 基本概念
- 进程控制就是要实现进程状态的转换
- 进程控制用原语实现
- 原语是一种特殊的程序
- 原语的执行必须一气呵成、不可中断
- 原语用关/开中断来实现
- 相关原语
- 进程的创建
- 进程的终止
- 进程的阻塞(阻塞和唤醒要成对出现)
- 进程的唤醒
- 进程的切换
进程通信
线程概念与多线程模型
处理机调度
进程调度
调度算法评价指标
调度算法
进程同步、互斥
信号量机制
P(S):wait(S)
V(S):signal(S)
1 | // 记录型信号量的定义 |
用信号量实现进程互斥、同步、前驱关系
前驱关系
生产者-消费者问题
1 | semaphore mutex = 1; // 互斥信号量,实现对缓冲区的互斥访问 |
多生产者-多消费者问题
1 | semaphore mutex = 1;//实现互斥访问盘子(缓冲区) |
读者-写者问题
读进程优先,去掉w
1 | semaphore rw=1//用于实现对文件的互斥访问。表示当前是否有进程在访问共享文件 |
哲学家进餐问题
- 可以对哲学家进程施加一些限制条件,比如最多允许四个哲学家同时进餐。这样可以保证至少有一个哲学家是可以拿到左右两只筷子的
- 要求奇数号哲学家先拿左边的筷子,然后再拿右边的筷子,而偶数号哲学家刚好相反。用这种方法可以保正如果相邻的两个奇偶号暂学家都想吃饭,那么只会有其中一个可以拿起第一只筷子,另一个会直接阻塞。这就避免了占有一支后再等待另一只的情况
- 仅当一个哲学家左右两支筷子都可用时才允许他抓起筷子。