操作系统(Operating System)
进程、线程与处理机调度
- ①进程同步与线程
- 由于多个进程可以并发执行,所以进程间必然存在资源共享和相互合作的问题。如不主动去调整进程,会出现执行的不可再现。
- 一组进程为了协调其推进速度,在某些地方需要相互等待或者唤醒,这种进程间的相互制约就被称作是进程同步。
- 同步机制应遵循的规则:空闲让进、忙则等待、有限等待、让权等待。有限等待:要求访问临界区的进程,保证有限时间内进入临界区,避免死等。让权等待:进程不能进入临界区时,应立即释放处理机,避免忙等。
- 信号量机制:利用 PV 操作来对信号量进行处理,解决进程同步问题的工具。 通过将资源数量化,将申请资源和释放资源的动作具体化,从而达到对资源的操作及结果可视化。
- 管程机制:管程机制的好处在于所有的进程都采用这种机制获取临界资源,不需要考虑怎么解决临界资源内在的冲突,统一处理。
- 线程:线程是轻型进程,一个进程可拥有多个线程,线程是程序执行的最小单位。线程不能独立执行。同一进程的线程共享进程资源,因此当一个线程发生崩溃时,此进程也会发生崩溃。 但是各个进程之间的资源是独立的,因此当一个进程崩溃时,不会影响其他进程。因此进程比线程更具有健壮性。线程的创建以及线程间的切换并不会引起进程创建、切换和撤销等,所以线程的系统开销明显更小。
- ②死锁
- 死锁:两个以上的进程互相要求对方释放已经占有的资源导致无法继续运行下去的现象。例子:抽屉与箱子里都有面包。A 进程想把面包从箱子里取出放到抽屉里。B 进程想打开抽屉取面包放到抽屉里。A 进程请求了箱子,成功!B 进程请求了抽屉,成功!但是接下来,A 进程要等待 B 进程释放抽屉, B 进程需要 A 进程释放箱子,形成死锁。
- 产生死锁的原因:竞争不可抢占性资源、进程运行推进的顺序不合理、竞争可消耗资源。产生死锁的四个必要条件:互斥条件、请求与保持条件、不剥夺条件、循环等待条件。