Hi all, I have been using fork and exec for sometime. But I have no idea about what are the things done by the kernel when we fork or exec and how things work. How the kernel load new program and what all things are done ....... Can anybody please explain me this ? Thank you in advance.
Hi :) On Fri, Jan 18, 2013 at 12:02 AM, Niroj Pokhrel <nirojpokhrel@gmail.com> wrote:
Hi all, I have been using fork and exec for sometime. But I have no idea about what are the things done by the kernel when we fork or exec and how things work. How the kernel load new program and what all things are done ....... Can anybody please explain me this ? Thank you in advance.
this is too broad to answer, but in general fork() does: - preparing new address space - preparing new task_struct - doing COW (copy on write), so newly born child initially simply use parent's pages in exec() case, instead of COW, you load the target binary. It does so by the work of loader in user space and ELF interpreter in the kernel space. -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Hi Mulyadi, Great to see you again! Sorry, can I fork on your explanation to explain further about fork? Yes, "fork" is at the core of process management, scheduling and all that: http://www.ibm.com/developerworks/linux/library/l-linux-process-management/ a good picture of process splitting up (forking) is here: http://www.linux-tutorial.info/modules.php?name=MContent&pageid=83 what happened to all the IPC after forking? http://hzqtc.github.com/2012/07/linux-ipc-with-pipes.html http://static.usenix.org/event/usenix2000/general/reumann/reumann_html/node9... Generally, the last thing u should read is the kernel source code, though it also has the last word to be said for fork() :-). On Fri, Jan 18, 2013 at 1:59 AM, Mulyadi Santosa <mulyadi.santosa@gmail.com>wrote:
Hi :)
On Fri, Jan 18, 2013 at 12:02 AM, Niroj Pokhrel <nirojpokhrel@gmail.com> wrote:
Hi all, I have been using fork and exec for sometime. But I have no idea about what are the things done by the kernel when we fork or exec and how things work. How the kernel load new program and what all things are done ....... Can anybody please explain me this ? Thank you in advance.
this is too broad to answer, but in general fork() does: - preparing new address space - preparing new task_struct - doing COW (copy on write), so newly born child initially simply use parent's pages
in exec() case, instead of COW, you load the target binary. It does so by the work of loader in user space and ELF interpreter in the kernel space.
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Regards, Peter Teoh
In my opinion , fork and exec is based on independent task environment for per process , which is corresponding to task_struct .
Hi Peter :) On Fri, Jan 18, 2013 at 9:09 AM, Peter Teoh <htmldeveloper@gmail.com> wrote:
Hi Mulyadi,
Great to see you again!
Sorry, can I fork on your explanation to explain further about fork?
Sure, please fork to fork() Oh and btw, as always, you give nice reference links...bravo! -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
On Thu, Jan 17, 2013 at 10:32:45PM +0530, Niroj Pokhrel wrote:
Hi all, I have been using fork and exec for sometime. But I have no idea about what are the things done by the kernel when we fork or exec and how things work. How the kernel load new program and what all things are done ....... Can anybody please explain me this ? Thank you in advance.
I recommend reading linux-0.12. Jonathan Neuschäfer
participants (5)
-
horseriver -
Jonathan Neuschäfer -
Mulyadi Santosa -
Niroj Pokhrel -
Peter Teoh