Operating system linux中就绪队列的大小是多少?

Operating system linux中就绪队列的大小是多少?,operating-system,Operating System,昨天,我在我的高级操作系统课程中了解到,允许放入就绪队列的进程数量将有一个限制。我想知道不同操作系统的数量。如果超过该数量,会发生什么情况?意思:如果创建的进程数量超过这个数量,会怎么样 我试着运行一个小程序来看看会发生什么 int main() { while(1) system(fork()); return 0; } 系统立即挂起。有人能解释我的系统挂起的原因吗?有些系统没有限制,只会根据需要继续附加到正在运行的队列。有一些选项可以限制系统可以使用的最大进程

昨天,我在我的高级操作系统课程中了解到,允许放入就绪队列的进程数量将有一个限制。我想知道不同操作系统的数量。如果超过该数量,会发生什么情况?意思:如果创建的进程数量超过这个数量,会怎么样

我试着运行一个小程序来看看会发生什么

int main()
{
     while(1)
     system(fork());
     return 0;
}

系统立即挂起。有人能解释我的系统挂起的原因吗?

有些系统没有限制,只会根据需要继续附加到正在运行的队列。有一些选项可以限制系统可以使用的最大进程数,但默认情况下(在某些系统上)没有限制。在Linux上,您可以更改ulimit,它是每个用户的进程数,如果您将其设置为500或更少,您将看到该程序不会挂起系统,只需运行并使用CPU周期来执行常量上下文切换


顺便说一句,你在那里所做的就是所谓的“叉形炸弹”,它是一种小型的拒绝攻击,用于在对每个用户的进程没有限制的计算机上造成拒绝服务攻击。

谢谢你的解释。根据Fork Bomb的说法,操作系统是如何知道它正在遭受炸弹攻击并拒绝服务的?当抛出一个表单炸弹时,内存会发生什么变化?没有一个简单的方法来检查,通常人们要做的是如上所述对每个用户的进程进行限制。Fork bomb最终会消耗所有内存,但系统会挂起,因为它只是在不做任何事情的进程之间来回移动,不断生成更多的进程,因此它在内核模式下处理此问题的时间比在用户模式下要多,因此系统会有效挂起。