无敌神勇暴龙王 2023-12-07 21:30 采纳率: 0%
浏览 5

操作系统的处理器调度模型

在操作系统的处理器调度模型中,如果使用虚拟存储器的话,那么这个虚拟存储器的功能是不是就相当于高级调度了? 
虚拟存储器是将外存中的页面调入内存,程序访问有缺页中断页面置换的操作。高级调度也是将后备作业调入内存,那么这两者在一个具有虚拟存储器的调度模型中,是否可以划等号?
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-08 08:53
    关注

    【相关推荐】



    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7680393
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:并发的基础概念以及优缺点
    • 您还可以看一下 张传波老师的软件设计是怎样炼成的?课程中的 详细设计是架构设计的延续小节, 巩固相关知识点
    • 除此之外, 这篇博客: 操作系统的各种锁中的 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      LockOne类

      这个类有一个标志数组flag,继续来个比喻,这个flag就相当于一个旗帜。LockOne类遵循这样的协议:

      • 如果线程想进入临界区,首先把自己的旗帜升起来(flag相应位置1),表示感兴趣。然后等对方的旗帜降下来就可以进入临界区了。
      • 如果线程离开临界区,则把自己的旗帜降下来。

      LockOne类的协议看起来挺朴实的,但是存在一个问题:当两个线程都把旗帜升起来,然后等待对方的旗帜降下来就会出现死锁的状态(两个线程都在那傻乎乎的等待对方的旗帜降下来,直到天荒地老:))

       LockTwo类

      观察LockOne类存在的问题,就是在两个线程同时升起旗帜的时候,需要有一个线程妥协吧,这样就需要指定一个牺牲品,因此LockTwo类横空出世。

      当两个线程进行竞争的时候,总有一个牺牲品(较晚对victim赋值的线程),因此可以避免死锁。但是,当没有竞争的时候就杯具了,如果只有一个线程想进入临界区,那么牺牲品一直是自己,直到等待别人来替换自己才行。

       Perterson锁

      通过上面两个类可以发现,LockOne类适合没有竞争的场景,LockTwo类适合有竞争的场景。那么将LockOne类和LockTwo类结合起来,就可以构造出一种很好的锁算法。

      Barkey锁

      有一种协议称为Bakery锁,是一种最简单也最为人们锁熟知的n线程锁算法。下面看看到底是神马情况。思想很简单,还是打个简单的比喻来说明器协议:

      • 每个线程想进入临界区之前都会升起自己的旗帜,并得到一个序号。然后升起旗帜的线程中序号最小的线程才能进入临界区。  
      • 每个线程离开临界区的时候降下自己的旗帜。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 12月7日

悬赏问题

  • ¥200 基于同花顺supermind的量化策略脚本编辑
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?