GMS is a multi threaded program, which allows it to cope with many simultaneous connections to each of the GMS services. This multi threading is what allows GMS to cater for large numbers of users. The way in which Linux implements multi threading is by appearing to create multiple processes for each GMS service. In fact there is only one main process with what appears to be a multiple sub processes, one for each service thread.
This can be most clearly seen if you obtain a list of running processes for say the WWW services by running "ps -A|grep WWW" to produce a list of all processes associated with the Gordano WWW service. If you take the topmost process from this list and kill it by running "kill -9 process-id" you will see that all of the WWW processes will disappear.
Under Linux there are 2 distinct ways in which processes can operate.
- An initial process runs which spawns extra processes as and when required, these are opened and then closed again after use, requiring extra processing overhead to open and close each additional process.
Further if a server is under attack, this may cause catestrophic and uncontrollable failure.
- All of the additional processes are spawned when the initial process starts up, this allows for faster operation as there is no need to open and close the additional processes.
Also if a server happens to come under attack the fact that each of the threads runs inside its own sub process provides a large degree of protection to the rest of the threads for that service.
Keywords:processes, threads, GLMail, Linux