HUST OS 4.4 临界区和锁【自学笔记】

版权声明:学习,哪有那么多条条框框~ https://blog.csdn.net/Irish_Moonshine/article/details/91128253

4.4 临界区和锁

4.4.1 临界区与临界资源
  • 临界资源:一次只允许一个进程独占访问(使用)的资源
    [Critical Resource]
    *临界区:进程中访问临界资源的程序段
    [Critical Section]
    在并发环境下面,多个程序同时使用了同一个全局可见变量,会出现随机的不稳定的结果。

解决方案:程序设定一个特定区域不让两个程序同时进入,只能先后进入。【临界区】【临界资源】

  • 临界区访问机制的四个原则:
    1.忙则等待
    当临界区忙时,其他进程必须在临界区外等待
    2.空闲让进
    当无进程处于临界区时,任何有权进程可进入临界区
    3.有限等待
    进程进入临界区的请求应该在有闲时间内得到满足
    (思考:临界区设置得大一些好,还是小一些好?应刚好包含临界部分)
    4.让权等待。
    等待进程放弃CPU(让其他进程有机会得到CPU)
4.4.2 锁机制

基本原理:设置一个“标志”S:
表明临界资源“可用”还是“不可用”?1:0
上锁 进入临界区之前检查标志是否可用:
若为“不可用”状态:进程在临界区之外等待
若为“可用”:
访问临界资源
且将标志修改为“不可用”
开锁 退出临界区时将标志修改为“可用”状态

步骤:
1.初始化锁的状态S = 1(可用)
2.进入临界区之前执行上锁Lock(s)操作;
3.离开临界区之后执行开锁unLock(s) 操作;

猜你喜欢

转载自blog.csdn.net/Irish_Moonshine/article/details/91128253
4.4
今日推荐