Check out the new USENIX Web site. next up previous
Next: Inter-process Communication Up: Limitations of Existing Systems Previous: Limitations of Existing Systems

Write Detection

Transactional memory service must keep track of the database changes to ensure ACID property. In user-space transactional memory implementations, writes to the database are usually detected by the MMU protection and upcalls from the operating system (SIGSEGV signals in UNIX). However, such implementations incur high overhead [thekkath], as shown in Figure 1 (a). When a page fault occurs, the kernel performs a full context switch into the signal handler. The signal handler calls the server to bring the faulted page into client memory. It then issues a system call, such as mprotect, to change the MMU protection and makes a context switch back to the faulted context. The whole process requires at least eight user-kernel boundary crossings and four context switches.


  
Figure: Page fault handling comparison. Conventional operating systems require at least eight user-kernel boundary crossings and four context switches to read the page contents in response to a page fault. In contrast, SPIN requires two user-kernel boundary crossings and no context switches.



Yasushi Saito
1998-04-27