Linux process limit
I am looking for some assistance with Linux process limits.
When working in our computer lab on Operating Systems course assignments, students often write bad C programs that time up our time sharing systems -- the sort of "while(1) fork" equivalents. As a result, we added a process limit of 1024 processes to our system by modifying the /etc/security/limits.conf file. We tested that the the limit worked with our own forking program, and everything worked just fine. We were able to run a user up to his process limit. Any future attempts to login through any means of logging into our system for that user would not work. If the user had other windows already open on the system and tried to execute other commands, he would see "out of procesess". Today, we noticed that one student was running a forking program, and had over 7000 processes occupied. We do not understand how this program could get around the process limit. He certainly wasn't trying to get around the limit. Maybe someone could offer some feedback.. We are running a Linux 2.4.26 kernel.
In the process table, all of the processes looked like this:
040 D <u> 27811 1 0 69 0 - 359 down 09:45 ? 00:00:00 a.out
240 S <u> 3911 1 0 69 0 - 359 end 09:47 ? 00:00:00 a.out
040 S <u> 13205 12417 0 69 0 - 357 nanosl 09:48 ? 00:00:00 a.out
040 S <u> 14555 14346 0 73 0 - 357 wait4 09:48 ? 00:00:00 a.out
I would understand if all but 1024 of them were defunct/zombies but that's not the case.
Can anyone shed any light on what I might be missing?
Thanks for any help you can provide...