(Примечание: Программа упоминается была написана для присвоения класса, но этот вопрос не является частью задания, это для моего собственного любопытства, и я не могу найти ответ в другом месте.)Почему суперпользователи могут запускать более одновременные процессы, чем непривилегированные пользователи?
Для присвоения класса , Мне нужно было написать программу для определения количества одновременных процессов, которые могут запускаться пользователем одновременно. Моя программа создает определенное количество процессов до того, как fork()
возвращает -1, потому что предел достигнут, а затем завершает эти процессы и заканчивает.
Когда я запускаю как root
, он рассчитывает 16 созданных процессов перед их прекращением, что имеет смысл. В Minix 2 man page for fork()
указано, что предел задается переменной NR_PROCS
в /usr/include/minix/config.h
, и это значение равно 32. В root
выполняется 16 процессов в дополнение к 14, созданным программой (+2 для оболочки и самой программы), поэтому что составляет в общей сложности 32 процесса.
При запуске как непривилегированного пользователя ast
, однако, программа возвращает только 13 (так что это всего лишь 11 процессов, плюс два для оболочки и программы). Я использую su ast
для запуска в качестве пользователя ast
, но я не знаю, учтен ли этот процесс. UPDATE: Вход в систему как ast
заставляет программу запускать 12 процессов, поэтому добавление двух для оболочки и самой программы означает, что ast
может иметь только 14 одновременных процессов (пользователь не запускает никаких других).
Почему существует разница в количестве процессов, которые могут выполняться суперпользователями и непривилегированными пользователями, особенно если только одна переменная управляет лимитом системы?
Да, 'su ast' - это один процесс, а затем он разворачивает оболочку для' ast', это другой процесс. Что произойдет, если вы войдете в систему как «ast» и запустите? –
@Blue Moon Я считал это, но логин, поскольку 'ast' отключен (запись в'/etc/passwd' дает '*' в том месте, где будет написан пароль, а это значит, что это неверно). Я дам ему попробовать завтра, когда у меня будет немного времени, чтобы побаловать себя в системе; большая часть сегодняшнего дня состояла в том, что на самом деле была написана программа. – vaindil
@BlueMoon Я включил логин как пользователь 'ast' и запустил программу; он сообщил о 14 процессах. 'ast' выполняет только один другой процесс,' -sh', и это учтено в программе, поэтому похоже, что пользователь 'ast' может на самом деле только порождать 14 процессов одновременно по сравнению с' root''s 32, предполагая мой код правильный. – vaindil