(注意:提到的程序是为课堂作业编写的,但这个问题不是作业的一部分;这是出于我自己的好奇心,我在其他地方找不到答案。)
对于课堂作业,我需要编写一个程序来确定用户一次可以运行的同时进程数。我的程序在返回 -1 之前创建了一定数量的进程,fork()
因为已达到限制,然后它终止这些进程并结束。
当我运行 asroot
时,它会在终止它们之前计算 16 个创建的进程,这是有道理的。Minix 2手册页fork()
指定限制由NR_PROCS
in 中的变量设置/usr/include/minix/config.h
,并且设置为 32。root
除了程序创建的 14 个进程(shell 和程序本身为 +2)之外,它还运行 16 个进程,因此总共有32个进程。
但是,当我以非特权用户身份运行ast
时,该程序仅返回 13(因此它仅生成 11 个进程以及两个用于 shell 和程序的进程)。我习惯以用户su ast
身份运行ast
,但我不知道是否考虑了该过程。更新:登录 asast
会导致程序产生 12 个进程,因此为 shell 添加两个进程和程序本身意味着ast
只能同时运行 14 个进程(用户没有运行任何其他进程)。
为什么超级用户和非特权用户可以运行的进程数量存在差异,尤其是当只有一个变量控制系统限制时?