昨天我在高级操作系统课程中了解到,可以允许在Ready Queue中放置的进程数量有限制。我想知道不同操作系统的数量。还有什么超过这个数字时会发生什么?含义:如果创建了多个进程数,该怎么办?
我试着通过运行
的小程序来看看会发生什么int main()
{
while(1)
system(fork());
return 0;
}
系统立即挂起。任何人都可以解释为什么我的系统挂起了?
答案 0 :(得分:1)
某些系统没有限制,只需根据需要继续附加到正在运行的队列。有一些选项可以限制系统可以使用的最大进程数,但默认情况下没有限制(在某些系统上)。在Linux上,您可以更改ulimit,这是每个用户的进程,如果您将其设置为500或更少,您将看到该程序不会挂起系统,只会运行并使用CPU循环来执行常量上下文切换。
顺便说一句,你在那里做的事情被称为Fork Bomb,它是一种小的拒绝攻击,用于在没有每个用户进程限制的计算机上导致拒绝服务攻击。