On Wed, Oct 13, 2004 at 09:30:07 -0000, matrix reloaded wrote: > Actually intervention of schedular comes for kernel threads and not for the use > level threads. Ok try to do this thing if you have some machine with 2.4.18 :- > Start the program using those 2 pthreads and then do ps -aef for that process, you > will see that there are 4 processes with the same name, but with different PIDs. On > 2.5 this thing was removed as we moved from Linux Legacy Thread to NPTL > thing... Explaination of this is first pid process is the main program, 2nd is the > thread manager and 3rd & 4th are the created threads. Here, you can see that these > threads are visible to the OS, so you can send signals to them as you send to a > process, but 2.4.20 onwards this thing has been changed and now you can't see 4 > PIDs, because now actual use-level thread implementation has been done. OS can't > see individual threads inside a program, so is schedular. The time slot is given to > the whole process [whithin which these threads are residing]. It's the responsibility > of the thread library manager to divide this time slot among individual threads. > Schedular doesn;t have to worry about them... 1) Kernel can't replace kernel-threads with user-threads. Libc (since libpthreads are part of it) can do it. 2) User-threads are mostly useless. When one thread blocks, the whole process does. And it can't be run in parallel on SMP. 3) There is another thing kernel can do -- it can change semantics of /proc to be by-pid and not by-tid. While each thread has different tid, it has the same pid (pthreads want it). If ps does not see tids, it can't show them... Note: If you want to try out, declare the gettid syscall (see man gettid) and call it in a threaded application. Since the __syscall0 macro expands to an inline function with just asm("int 0x80", ...), the library won't be able to fake it and you will know whether you run kernel-threads or user-threads. ------------------------------------------------------------------------------- Jan 'Bulb' Hudec <bulb@xxxxxx>
Attachment:
signature.asc
Description: Digital signature