Re: copy-on-write overhead

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

 



Oh I'm sorry, if you were talking about copying of the address space
information that can be avoided, that does not happen because it
would've already been copied before exec() in the child gets a chance
to execute.. the fork system call calls do_fork somewhere which calls
copy_process which does this copying so it can't be avoided in any
case. The book says copy-on-write itself has more overhead that is
avoided with exec() in the child, but I'm trying to figure how.

-Joel

On Mon, Jan 11, 2010 at 12:18 AM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
> On Mon, Jan 11, 2010 at 12:02 AM, Joel Fernandes <agnel.joel@xxxxxxxxx> wrote:
>> Hi,
>> The book Linux Kernel Development mentions a certain overhead which is
>> reduced in linux because the child is made to run first after it is
>> forked (instead of the parent) and if the child executes the exec
>> system call.
>>
>> Quoting Pg 32 (2nd edition):
>> "In do_fork() the child is woken up and run. Deliberately the kernel
>> runs the child process first. In the common case of the child simply
>> calling exec() immediately, this eliminates any copy-on-write overhead
>> that would occur if the parent ran first and began writing to the
>> address space"
>>
>> How does running exec() in child more efficient than having
>> copy-on-write trigger in the parent?
>
> Hi,
>
> In order to create a new process (fork), you will copy the whole of
> relevant info of address space from the parent. Now if the address
> space is shared and parent runs first for any change it makes, it will
> need to copy and then modify because it doesn't know if child needs it
> or not. Since mostly after fork, if you do an exec it is guaranteed
> that child will not need this address space and the whole of copy can
> be avoided by making child to run first. (In simple terms you can take
> decision early whether this address space is useful or not for child).
>
> Thanks -
> Manish
>
>
>
>>
>> Let me know if my question is clear, or if I should rephrase.
>>
>> Thanks!
>> -Joel
>>
>> --
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>
>
>
> --
> Thanks -
> Manish
> ==================================
> [$\*.^ -- I miss being one of them
> ==================================
>

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[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