此资源非彼资源

博客讨论了操作系统中AND型信号量的Ssignal操作,分析了进程从阻塞队列移到就绪队列的合理性。指出进程运行需要的资源如内存、CPU与特定资源信号量不同,信号量用于判断资源是否可用,激活进程后,进程将继续检查资源并尝试执行。
摘要由CSDN通过智能技术生成

title: 此资源非彼资源
date: 2021-04-10 20:08:41
tags: [系统资源问题, 操作系统, OS, 进程阻塞, 进程运行, 进程激活]
categories: OS


啃书过程中产生的疑问,最后想通了,并且推广到了一般情况

问题出处

计算机操作系统 第四版 P60

问题描述

在看AND型信号量的Ssignal操作中的一段伪代码的时候产生的疑问,最后我给推广了,也不错,想通了一个事hhh
其中的一段伪代码是这么描述的👇
Remove all the process waiting in the queue associated with si into the ready queue.
将与si关联的队列中等待的所有进程都删除,并移动到就绪队列中

我的分析

我觉得这么干有些不妥

首先解释一下就绪队列,就绪队列中的进程一定都是就绪状态了吧

那么就绪状态的定义是什么? 获得了除CPU以外的所有的所需资源

不妥的地方有两个:

第一前面将进程加入阻塞队列的原因是 这个进程只要遇到了一个它想要的但是系统没有的资源就会被送进相应的缺少资源的阻塞队列中,但是并不能保证后面的资源一个也不缺。但是你因为现在这个资源被归还了,就直接把因为判到却这个资源而被放进相应阻塞队列里的进程直接给放进就绪队列里吗? 参考 一下上面的就绪状态的定义

还有就是,即便是这样,你也不能把因为这个资源而进入阻塞队列的所有进程都给激活了吧,你不应该是找一个优先级最高的给激活,放到就绪队列中吗

所以我认为,书上啊 八成是没有表达对,它其实并不是想表达给放进就绪队列中的意思,而是让它解除阻塞,从而可以继续去判断资源是否够用

恍然大悟

啊…woc 我明白了 确实应该给放进就绪队列里,为啥呢?因为代码运行所需的资源和 你说的那个s1,s2,s3,s4…si 资源不是一个资源,这些东西确实是不够的,但这不是代码运行需要的资源,怎么说呢,代码就是为了实现这个东西而设置的…我也不知道怎么说出来好了, 总之 这俩资源不是一个资源 把运行代码的进程放进就绪队列里是正确的,当它获得CPU以后,就开始继续判断 那几个资源是否足够,够了的话 访问临界区。

推广

进程运行需要的资源 是内存和CPU等等 我们回到进程的定义 进程是什么? 进程是程序在一定数据集合上的执行过程 , 那么进程可以说就是在执行程序 也就是在跑代码,跑代码肯定是不需要太多资源的,这个资源仅仅是内存、CPU… 而 s1,s2,s3,s4,…,sn 这些资源是进程想要访问/使用的资源,这些资源需要通过进程执行wait操作判断, 如果这些资源不够,进程把自己阻塞起来,但是并非因为这些资源 进程就没法运行了,进程运行其实就是跑代码,然后通过跑代码 来判断那些资源够不够,不够的话 把自己阻塞起来,跑代码需要的资源和那些资源不是一回事。当进程被阻塞的时候,它就不能跑代码了,当它被激活的时候,继续去判断信号量的值 从而判断 资源是否可以使用 若可以 则使用资源。 其实这里面也是包含了一些进程阻塞和进程激活的一些本质。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以的,一对此消彼长的函数可以是: y = x 和 y = -x 其中,y = x 函数随着自变量 x 的增加而增加,而 y = -x 函数随着自变量 x 的增加而减少,两者在坐标系中相互垂直,互为反比例关系。 ### 回答2: 能告诉您一对此消彼长的函数。一个例子是指数函数和对数函数。指数函数是以不断增长的速度变化的,而对数函数则表示增长的逐渐变慢。这两个函数互为反函数,它们的特点是当一个变量的值增加时,另一个变量的值会减小,两者之间形成平衡。比如,当我们用指数函数描述人口增长时,人口数量会以指数级别增长;而用对数函数来描述资源消耗或物种灭绝时,随着资源的减少或物种的灭绝,对数函数的值会逐渐减小。这种“此消彼长”的关系在许多方面都有体现,例如经济中的供求关系、生态系统中的食物链、科技发展中的资源利用等等。由于一个函数增长的速度必然会受到另一个函数的限制,所以这种“此消彼长”的关系在许多情况下能够保持相对的平衡。在实际生活中,了解和应用这对函数对,有助于我们更好地理解和适应不同领域的变化与发展。 ### 回答3: 在数学中,"消彼长"指的是减少一个量的同时增加另一个量,形成一对相互关联的函数。下面是一个例子: 设函数f(x)表示一个人每天走路的时间,而函数g(x)表示相应的卡路里消耗量。 通常来说,当一个人走路的时间增加,他们消耗的卡路里也会增加,因为走路会消耗能量。 那么,我们可以将f(x)定义为:f(x) = x,其中,x表示走路的时间(分钟)。 同样地,我们可以将g(x)定义为:g(x) = kx,其中,k表示每分钟的卡路里消耗量。 这里,函数f(x)和g(x)就是一对此消彼长的函数。当一个人增加走路的时间(也就是x的值增加),他们消耗的卡路里量(也就是g(x)的值)也会相应增加。换言之,函数f(x)和g(x)是相互关联的。 需要注意的是,这只是其中一种例子,数学中可以存在多种此消彼长的函数对,取决于具体的情境和问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值