操作系统基本原理
1、进程管理
1.1 进程的状态
1.2 前趋图
前趋图:表明哪些操作可以并行哪些不能,哪些需要有先后顺序。
1.3 进程同步与互斥
进程同步和互斥是操作系统中的重要概念,主要用于多个进程之间协调共享资源的访问。
进程同步是指多个进程在某些事件或时刻上保持相对一致的状态,以便完成某种协调工作。例如,多个进程同时访问共享内存区域,为了避免数据的冲突和破坏,需要通过进程同步机制来协调彼此之间的访问。
而进程互斥则是指多个进程因为需要访问相同的资源,而在时间上不能同时进行,只能通过互斥手段来保证资源的安全性。通常使用锁(Locks)或者信号量(Semaphores)等机制来实现进程互斥,这些机制可以保证同一时间只有一个进程能够访问共享资源。具体来说,锁机制通过设置一个标志位,即所谓的临界区域,来表示某段程序代码是临界的,需要互斥访问。而信号量则是一个计数器,记录可用资源的个数,进程在访问共享区域前需要先获取信号量,访问完后再释放信号量,以保证别的进程能够正常访问。
1.4 PV操作
概念:
PV 操作是一种经典的用于多进程或多线程同步和互斥的原语,具体包括两个操作:P(Produce)和 V(Verify)。
P 操作通常表示申请资源,也就是进程或线程想要访问共享资源时,需要先进行 P 操作。简单来说,就是减少信号量计数器的值,如果结果为负数,则将当前进程/线程加入等待队列,等待资源可用后再进行访问。
V 操作则表示释放资源,即当一个进程或者线程完成了对共享资源的操作后,它需要进行 V 操作来释放资源,使得其他的进程或线程可以访问这个资源。V 操作会增加信号量计数器的值,并且如果有等待队列中的进程或线程,还会唤醒其中的一个进程或线程。
PV 操作通常用于保证共享资源的安全访问。当多个进程或者线程需要访问共享资源时,PV 操作可以保证只有一个进程或线程能够访问共享资源,从而避免了因多个进程或线程同时访问导致的数据竞争和冲突。
例如,在生产者-消费者模型中,生产者向缓冲区写入数据,而消费者从缓冲区读取数据,为了保证缓冲区的正确性和可靠性,需要使用 PV 操作来进行同步和互斥,以避免生产者和消费者同时访问导致的数据竞争和冲突。
示例:
单缓冲区,如果缓冲区还有数据,而生产者继续推送产品到缓冲区,则会报错;
同样的 ,如果缓冲区内已经没有数据了,消费者还从缓冲区取产品,也会报错。
pv操作加在生产者和消费者 送、取缓冲区的前后,通过共享变量做逻辑判断,可以判断到当前缓冲区内是否存在产品,对于生产者,如果缓冲区没有产品才推产品,否则阻塞,对于消费者则相反,如果缓冲区有数据才拉取产品,否则阻塞。
P:会做阻塞操作
V:解除阻塞操作
1.4.1 考题
收银前需要判断是否有客户付款,所以b1 是 p() ,所以 a1 是 v()
顾客需要等待收费结束,所以 a2有个 p(),b2是 v()
填入 s1 s2
得到答案 选 A , C
1.4.2 例题
1.4.3 考题2
P3 前面需要等 P1 和 P2 结束,所以 P3 前面有两个 P(),P()
P4 和 P5 需要 P3 作为前置条件,所以 P3 后面接着两个 V(),V()
所以 P4 和 P5 前接着两个 P(),P()
把信号量加上 ,可以得出答案 C A A