我一直在读关于选择性互斥的文章。我的想法是,如果一个进程与所有其他进程的子集竞争其资源,而不是与所有其他进程竞争,那么我将面临一个中小企业问题。
( 1)你能证实我的定义是正确的吗?
现在,餐饮哲学家问题就是这方面的一个典型例子(中小企业靠近)。
( 2)在分布式解决方案中(每个哲学家都是为了两个分叉而另有两个哲学家),如果不是5个哲学家,而是3个哲学家,那么这是否仍然是一个中小企业问题?(我认为不是,因为每个哲学家都会和其他哲学家竞争)
( 3)在集中的“导体”解决方案中,有5位哲学家,这是否仍然是一个中小企业问题?(我认为是会的,因为虽然所有的过程都在争夺侍者,但每一个哲学家都只是为了得到两个指定的叉子而相互竞争。)
最后,在读者与作家问题 (中小企业按过程类型)中
4)如果只允许一位读者和一位作家,这是否仍然是一个中小企业问题?(我认为没有,因为实际上每一个过程都将与所有其他过程竞争)
发布于 2012-02-15 09:15:02
( 1)你能证实我的定义是正确的吗?
是。我通过搜索web查找并发性“选择性互斥”发现的三到四个引用似乎符合您的理解:“如果一个进程与所有其他进程的子集竞争其资源,而不是与所有其他进程竞争”。
( 2)在分布式解决方案中(每个哲学家都是为了两个分叉而另有两个哲学家),如果不是5个哲学家,而是3个哲学家,那么这是否仍然是一个中小企业问题?(我认为不是,因为每个哲学家都会和其他哲学家竞争)
最有可能的是,它将是一个中小企业,或一些灰色地带的味道。想想“第一”和“第二”哲学家之间的分叉--“第三”哲学家不使用它,因此我们有“子集竞争”,仅限于第一和第二
( 3)在有5位哲学家的集中式“导体”解决方案中,这是否仍然是一个中小企业问题?(我认为是会的,因为虽然所有的过程都在争夺侍者,但每一个哲学家都只是为了得到两个指定的叉子而相互竞争。)
只要你把叉子定义为共享资源,它仍将是中小企业--因为“第一”和“第三”哲学家不会有共享的资源(叉子)来竞争。
不过,如果你把服务生定义为一种资源(用编程术语来说,这可能被看作是一个拥有竞争访问权的个体-我认为这并不是太好的设计)--那么就不会有中小企业,因为所有哲学家都会为获取单一的共享资源而竞争。
4)如果只允许一位读者和一位作家,这是否仍然是一个中小企业问题?(我认为没有,因为实际上每一个过程都将与所有其他过程竞争)
它不会是中小企业,因为在上述情况下,一组进程正是由两个(读取器和写入程序)组成,两者都需要对资源的相互排斥访问:读者不能阅读,而写入者不能在读者读取时写入。
对于在读者和作者中发生的中小企业,应该有一个以上的读取器--使一个子集在其本身和2)至少一个作者之间不相竞争--以确定读写访问之间相互排斥的需要。
发布于 2018-02-17 14:43:19
在第二点中,格纳特说,对三个哲学家来说,这也是一个中小企业问题,但我不确定。
关于中小企业问题的定义,根据提问者:
“如果一个进程与所有其他进程的子集竞争其资源,而不是与所有其他进程竞争,那么我将面临一个中小企业问题。”
所以,如果总是有一个哲学家不使用的叉子,这并不重要,因为它不是关于有多少叉子(资源)存在,而是关于有多少个过程与他们中的每一个人竞争
因此,如果我们有三个哲学家,我们就没有中小企业问题。所有的过程(哲学家)都在与其他过程(哲学家)竞争它的资源。
如果我错了请纠正我。
https://softwareengineering.stackexchange.com/questions/135129
复制相似问题