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!!!!!!

  • 相关阅读:
    Java构造和解析Json数据的两种方法详解一
    微信小程序-自定义组件
    微信小程序
    微信公众号
    微信小程序
    微信小程序
    微信小程序
    vue
    vue
    sass 和 css 互转网址
  • 原文地址:https://www.cnblogs.com/dragondragon/p/12578620.html
Copyright © 2011-2022 走看看