zoukankan      html  css  js  c++  java
  • 操作系统复习笔记1:实现临界区同步机制有哪些方法?

    实现临界区同步机制的方法如下:

    软件方法:尝试算法1(忙等&不能保证进程互斥进入临界区-->2个都用);尝试算法2(忙等&死锁--->2个都不能用qwq);Peterson算法(比较理想,忙等--->孔融让梨嘤嘤嘤);

    硬件方法:禁止中断法(不适用);特殊指令法(TS指令(Test And Test),exchange(SWAP))---->忙等,空循环qwq

    开放的并发的环境,执行的相对速度无法相互控制,就会出现所谓与时间有关的错误。(与时间片的轮转RR有关哦)

    多终端系统:学校的教务系统(手动滑稽)

    实现临界区( critical section )管理软件硬件两种方式。

    软件方法:尝试算法1(忙等&不能保证进程互斥进入临界区-->2个都用);尝试算法2(忙等&死锁--->2个都不能用qwq)Peterson算法(比较理想,忙等--->孔融让梨嘤嘤嘤)

    CPU与内存的访问是一对一的,只能是一个一个的,当然速度非常快,一般在10ns周期内。

     

    单独的内部逻辑比较完美,如何找与时间有关错呢,考虑时间片轮转,寻找那一寸的错误(天道好轮回,苍天饶过谁2333)。

    临界区的管理尝试(1)就是有这种其情况:

    进程P1的while(inside2);执行完后时间片恰好用完,----->P2的while(inside1)执行完后其分配的时间片恰好用完--->

    P1去进入临界区----->P2去进入临界区。出现与时间有关的错误qwq。

    先修改自己的逻辑变量,再判断对方是不是在临界区。看样子似乎不错了2333

    但是:这个算法是有缺点的:

    可能都进不去的死锁

    P1的inside1=true执行完时间片用完-->P2的inside2=true执行完时间片用完-->P1死循环——————>P2死循环

    Peterson算法:bool flag[n]--->意愿;turn----->轮次

    让全等待,"我想进来之前,我先礼让三分2333!"仁者无敌的哲学了2333

    硬件方法:禁止中断法(不适用);特殊指令法(TS指令(Test And Test),exchange(SWAP))

    x就跟empty似的,2333!

    others;

    Be countinued!!!!!!

  • 相关阅读:
    英语词汇——day 1
    英语词汇——day 2
    PHP的流程控制语句(上)
    思维导图——四级词汇1
    PHP语句块中使用date()函数时需注意wampserver的设置
    (转)Linux服务器调优
    (转)linux服务器安全配置攻略
    mysql 创建[序列],功能类似于oracle的序列
    计算服务器最大并发量http协议请求以webSphere服务器为例考虑线程池
    Spring中ApplicationContextAware接口的说明
  • 原文地址:https://www.cnblogs.com/dragondragon/p/12578620.html
Copyright © 2011-2022 走看看