Article View: comp.sys.intel
Article #1553Re: Copy-on-write
From: Daniel M. Frank
Date: Wed, 26 Nov 1986 05:04
Date: Wed, 26 Nov 1986 05:04
31 lines
1785 bytes
1785 bytes
Yup, I was wrong about this. I missed it because I was thinking in
terms of sharing the same portion of the virtual address space, instead
of sharing the same pages in the physical address space. The way to
get page level copy-on-write in the 386 is:
1) Map the new segment to another, unused portion of the virtual
address space.
2) Copy the page table entries from the old segment's part of the
page table into the new segment's part of the page table, and
mark all the new entries read-only.
3) Whenever you get a fault, copy the old physical page into a
new one, and replace the page table entry with one for the
new page, and mark the page as writeable.
This is less aesthetically pleasing than per-segment page tables, since
you have to poke around a bit whenever you get a fault, to figure out
whose segment it's in, and why you got the fault. It IS doable, though,
and I stand corrected.
One more thing: I don't think it's very appropriate to call people
stupid when they are wrong, as long as they are being reasonably polite
about it.
--
Dan Frank
uucp: ... uwvax!prairie!dan
arpa: dan%caseus@spool.wisc.edu
Technical Details
Message-ID:
<364@prairie.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!mnetor!seismo!uwvax!astroatc!prairie!danReferences:
<362@prairie.UUCP> <867@sfsup.UUCP> <363@prairie.UUCP>Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: arc1-ca.pugleaf.net!utzoo!mnetor!seismo!uwvax!astroatc!prairie!dan From: dan@prairie.UUCP (Daniel M. Frank) Newsgroups: comp.sys.intel Subject: Re: Copy-on-write Message-ID: <364@prairie.UUCP> Date: Wed, 26-Nov-86 00:04:46 EST Article-I.D.: prairie.364 Posted: Wed Nov 26 00:04:46 1986 Date-Received: Wed, 26-Nov-86 07:48:55 EST References: <362@prairie.UUCP> <867@sfsup.UUCP> <363@prairie.UUCP> Reply-To: dan@prairie.UUCP (Daniel M. Frank) Distribution: na Organization: Prairie Computing, Madison, Wisconsin Lines: 31