From: kegs@provalid.com   
      
   In article <1759506155-5857@newsgrouper.org>,   
   MitchAlsup wrote:   
   >   
   >Stefan Monnier posted:   
   >   
   >> >> | - virtually tagged caches   
   >> >> | You can't really claim to be worst-of-the-worst without virtually   
   >> >> |tagged caches.   
   >> >> | Tears of joy as you debug cache alias issues and of flushing caches   
   >> >> |on context switches.   
   >> > That is only true if one insists on OS with Multiple Address Spaces.   
   >> > Virtually tagged caches are fine for Single Address Space (SAS) OS.   
   >>   
   >> AFAIK, the main problem with SASOS is "backward compatibility", most   
   >> importantly with `fork`. The Mill people proposed a possible solution,   
   >> which seemed workable, but it's far from clear to me whether it would   
   >> work well enough if you want to port, say, Debian to such   
   >> an architecture.   
   >   
   >SASOS seems like a bridge too far.   
   >>   
   >>   
   >> Stefan   
      
   Fork is not a problem with virtual tagged caches or SAS. Normal fork   
   starts the child with a copy of the parent's address mapping, and uses   
   "Copy on Write" (COW) to create unique pages as soon as either process   
   does a write.   
      
   For it's entire existance, PA-RISC HP-UX supported virtual indexed   
   caches in a SAS, and implemented fork using Copy On Access. As soon as   
   the child process touched any page for read or write, it got a copy, so   
   it can only access its own pages (not counting read-only instruction   
   pages). This works fine, and it's not a performance issue. The love   
   folks have for COW is overblown. Real code either immediately exec()'s   
   (maybe doing some close()'s and other housekeeping first) or starts   
   writing lots of pages doing what it wants to do as a new process. Note   
   since the OS knows it needs to copy pages, it can pre-copy a bunch of   
   pages, such as the stack, and some basic data pages, to avoid some   
   initial faults for the exec() case at least.   
      
   Kent   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|