当前位置: 代码迷 >> 综合 >> 操作系统学习第三天
  详细解决方案

操作系统学习第三天

热度:44   发布时间:2024-03-09 23:14:33.0

1.原子操作。

2.critical section(临界区),互斥,死锁和饥饿。忙等待。lock.Acquire()和lock.Release()。

3.临界区特点。互斥,前进,等待时间有限。

4.基于硬件中断。进入临界区:禁用中断,离开临界区:开启中断。

5.给予软件的解决方法:使用两个共享数据项。

6.TestAndSet和Exchange操作是不可以被中断的。 结合lock.Acquire()和lock.Release()可以实现多个进程对临界区的访问。可以从忙等待到无忙等待。 

7.给予原子操作的指令实现临界区访问是最简单和应用广泛的。

8.信号量,P和V操作。信号量可以用在互斥和条件同步两方面。二进制信号量可以实现互斥。二进制信号量实现调度约束(一个线程等待另一个线程处理事情)。有界缓冲区的生产者-消费者问题。V的顺序可以颠倒,P不可以。

9.信号量的实现。

10.管程。目的:分离互斥和条件同步的关注。一个锁,0个和多个条件变量。同样生产者-消费者问题用管程解决。Hansen-style和Hoare-style的唤醒机制。

11.读者-写者问题。读者优先,写者优先。

12.哲学家问题。

13.死锁问题。资源分配图(P,R)。若果图中无循环,没有死锁;有循环,若每个资源只有一个实例,死锁,每个资源有几个实例,不死锁。

14.死锁的特征:互斥,持有并等待,无抢占,循环等待。这时死锁的必要条件,不是充分。

15.死锁的处理办法:鸵鸟算法,假装不会发生。

16.打破死锁的四个必要条件;死锁避免;安全序列;银行家算法(死锁避免)

  相关解决方案