> Hi
>
> Looking at
> http://squid.nlanr.net/Squid/Devel/todo.html
> http://squid.nlanr.net/Squid/Devel/Todo/9703122.txt
>
> I don't think that this is necessary (at least with linux, probably with
> newer versions of solaris too, from what I have heard)
>
> Most use a "Copy-On-Write" method when they fork. This means that they
> share pages, unless either of the processes write to a page, in which
> case the OS then duplicates the page.
>
> This means that if a 400M program forks and then execs another process,
> you don't need 800M of ram to do it, and all it does is insert a process
> into the process list (thus adding a little struct to a table).
>
> So - is there something I am missing?
"Copy-On-Write" relies on page-protection "read-only". After a fork()
you are guaranteed to have exact copy of all proccess image, including
read/write data parts. Now, to implement "Copy-On-Write" for all data
squid uses, OS should mark all parent proccess pages to be read-only
just for the sake of child process - this is quite an overhead and as
parent process still probably modifies most pages all the time, the
copy-on-write would still duplicate all pages, but later, via pagefaults.
As all this would slow down both processes in overall, OS-es do not do
that for data pages, instead they copy full proccess images. To overcome
this overhead, algoritmic changes are needed, and this is exactly what
stub process is for.
-------------------------------------------------------------------
Andres Kroonmaa Telefon: 6308 909
Network administrator
E-mail: andre@ml.ee Phone: (+372) 6308 909
Organization: MicroLink Online
EE0001, Estonia, Tallinn, Sakala 19 Fax: (+372) 6308 901
-------------------------------------------------------------------
Received on Tue Jul 29 2003 - 13:15:41 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:11:18 MST