At work(different company), on our product, the application appears merely as one single Linux process. However, within it, it also has 'tasks' and the application appears to use a kernel-level task scheduler. Can anyone shed some light on this kernel-level task scheduler? I've never heard of something like it before. I know that Cisco IOS itself has it's own notion of tasks/processes but it uses a user-level task scheduler.
In Linux (typically): Process - collection of all things with a shared address space Thread (what you call task) - entity that has a thread of execution. There can be multiple threads (what you call tasks) within a process. The kernel scheduler deals with threads/tasks as entities to schedule.
I expected those user-level threads to show up in the 'ps -ef' output, but they don't. It appears that kernel doesn't treat them as individual processes but the application does, and it keeps track of their CPU/memory utilization.
They do.. if you do a pthread_create, you can see it as a separate entry in 'ps aux'. Both the entries will show the same memory utilization since memory accounting is done at the process level.
https://stackoverflow.com/questions/15983872/difference-between-user-level-and-kernel-supported-threads