操作系统学习笔记(五)---进程同步

目录

例题

基本概念

背景

基本概念

Peterson算法

硬件同步

信号量 & PV原语:

管程

死锁和饥饿


例题

1.In Section 5.4, we mentioned that disabling interrupts frequently can affect the system’s clock. Explain why this can occur and how such effects can be minimized.

Answer:

系统时钟的更新是由时钟中断决定的(每个时钟中断更新一次)。如果中断被禁止了(假设时间比较长),那么系统时钟就有可能损失当前时间。另外系统时钟还用于调度,比如RR算法的时间片的计算。

要减少这种情况的发生,可以将对时钟中断的禁止时间设置为尽可能的小。

2.Explain why Windows, Linux, and Solaris implement multiple locking mechanisms. (多个锁定机制)Describe the circumstances under which they use spinlocks(自旋锁), mutex locks(互斥锁), semaphores(信号量), adaptive mutex locks(自适应互斥锁), and condition variables(条件变量). In each case, explain why the mechanism is needed.

Answer:题目要求解释为何OS使用多个锁定机制并解释其适用条件。

①互斥锁适用于单处理器系统以及阻塞时间比较长的情况,一个线程占用了当前共享资源,使用互斥锁将其lock住之后,其他线程就无法访问,必须等到unlock之后,其他线程才能利用共享资源里面的内容。

②自旋锁即采用“忙等待”的方式来控制进程同步,多处理器情况忙等待就比较好,因为切换的开销是很大的。

③信号量(Samephore)由一个值和一个指针组成,指针指向等待该信号量的进程。信号量的值表示相应资源的使用情况。信号量S>=0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个资源,因此S的值减1;当S<0时,表示已经没有可用资源,S的绝对值表示当前等待该资源的进程数。请求者必须等待其他进程释放该类资源,才能继续运行。而执行一个V操作意味着释放一个资源,因此S的值加1;若S<0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。

信号量是选择睡眠的方式来对共享工作停止访问的(即创建一个与该信号量相关的等待队列)。

信号量是用于解决进程/线程之间的同步和互斥问题的一种通信机制,是用来保证两个或多个关键代码不被并发调用。

信号量的适用条件?感觉绝大多数情况下都适用,互斥锁可以理解为二进制信号量,管程也基于信号量......

④适应互斥:adaptive mutex是Solaris提供的保护对临界数据项的访问的方法。在多处理器系统中,适应互斥以自旋锁实现的标准信号量而开始。如果数据已加锁,那么适应互斥有两个选择。如果锁是被正在另一个CPU上运行的线程所拥有,那么拥有锁的线程可能会很快结束,所以请求锁的线程就自旋并等待。如果拥有锁的线程现在不处于运行状态,那么线程就阻塞并进入睡眠,直到释放时被唤醒。(因为睡眠线程拥有的锁通常不能被很快释放,所以进行睡眠以避免自旋)

简而言之,适应互斥相当于选择自旋还是睡眠。减少了开销。

⑤condition variables用于管程模型,管程是一种抽象数据结构,其不可或缺的一个数据成员就是条件变量。以下是其特点:

---采用面向对象方法,简化线程同步

---同一时刻仅有一个线程在管程中工作

---可临时放弃管程的访问权,叫醒一个在等待队列中的线程,这是其他方法都没有的(原子锁和信号量一旦进入临界区就必须执行完临界区代码才能退出),而实现这一点采用的就是条件变量

 

3.Explain why spinlocks are not appropriate for single-processor systems yet are often used in multiprocessor systems.

Answer:

在单处理器系统中,使用自旋锁会造成其他进程忙等待(任何其他试图进入临界区的进程都必须在其进入代码中连续地循环),这样就浪费了CPU时钟。而对于多处理器系统,当一个进程在一个处理器自旋时,另一个进程可以在另一处理器上在其临界区内执行,且使用自旋锁,进程在等待锁时还在运行,不用进行上下文切换。

 

4.

Assumethat that a finite number of resources of a single resource type must be managed.Processes may ask for a number of these resources and will return them once finished. As an example, many commercial software packages provide a given number of licenses, indicating the number of applications that may run concurrently.When the application is started, the license count is decremented

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值