Re: Process, Lightweight Process and Thread

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thank you, Mulyadi, now, I could understand about NPTL implementation and lightweight process concept.

One thing I want to check is that it looks that the system call, clone() eventually calls do_fork() in fork.c (http://lxr.linux.no/#linux+v2.6.32/kernel/fork.c#L1375) which is the last stage of the creation of thread.

So, it looks like fork(), vfork(), and clone() system calls through sys_fork(), sys_vfork(), sys_clone(), and they are eventually calls do_fork().

Best Regards,
Daniel (Youngwhan) Song



On Sat, Jan 16, 2010 at 8:22 AM, Mulyadi Santosa <mulyadi.santosa@xxxxxxxxx> wrote:
Hi Daniel....

On Sat, Jan 16, 2010 at 6:28 PM, Daniel (Youngwhan) Song
<breadncup@xxxxxxxxx> wrote:
> To confirm again,
>
> Since kernel thread by kernel_thread() is created by do_fork() in the
> kernel, pthread_create() uses clone() system call which eventually calls
> do_fork() in the kernel, and fork() in user space calls eventually do_fork()
> as well, all threads/process are manged by task_struct with different
> configuration(flags). Is this correct?

I think it's the other way around...do_fork() eventuall calls clone()
with various flags, depending on the intention of the caller.

> If then, is my understanding that the implementation of do_fork() is by NPTL
> in linux 2.6 correct?

NPTL is a complete implementation of threading both in user space
(mostly in glibc AFAIK) and kernel space (by system calls and related
kernel infrastructure), including signal handling etc etc. do_fork()
is just a part of it

> If so, there is no heavy process in the linux in typical. Right?

If you're using the logic that forking is relatively "cheap" due to
using COW, then yes it's quite cheap.

However, I believe the label LWP is strictly connected to thread due
to one property: threads are sharing process address space, thus
during context switch between threads in the same thread group, it
could be done fast because there is no need to flush TLB and switch to
another PGD.

--
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux