Rev 136 | Rev 168 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 136 | Rev 160 | ||
---|---|---|---|
Line 739... | Line 739... | ||
739 | incremented. Otherwise a new address space share info structure needs |
739 | incremented. Otherwise a new address space share info structure needs |
740 | to be created. The backend is then called to duplicate the mapping of |
740 | to be created. The backend is then called to duplicate the mapping of |
741 | pages for which a frame is allocated. The duplicated mapping is stored |
741 | pages for which a frame is allocated. The duplicated mapping is stored |
742 | in the share info structure B+tree called <varname>pagemap</varname>. |
742 | in the share info structure B+tree called <varname>pagemap</varname>. |
743 | Note that the reference count of the frames put into the |
743 | Note that the reference count of the frames put into the |
744 | <varname>pagemap</varname> must be incremented to prevent .</para> |
744 | <varname>pagemap</varname> must be incremented in order to avoid a race condition. |
- | 745 | If the originating address space area had been destroyed before the <varname>pagemap</varname> |
|
- | 746 | information made it to the page tables of other address spaces that take part in |
|
- | 747 | the sharing, the reference count of the respective frames |
|
- | 748 | would have dropped to zero and some of them could have been allocated again.</para> |
|
745 | </section> |
749 | </section> |
746 | 750 | ||
747 | <section> |
751 | <section> |
748 | <title>Page faults</title> |
752 | <title>Page faults</title> |
749 | 753 |