next up previous contents
Next: 2 Obsługa podręcznej pamięci Up: 1.4 Procedure obsługi wyjątku Previous: 1.4.1 Stronicowanie na żądanie   Spis rzeczy


1.4.2 Kopiowanie przy zapisie

Po wywołaniu funkcji systemowej fork() nie są powielane bloki stronicowe, są one współdzielone przez proces ojca i proces potomka. Jednak dopóki są współdzielone nie można ich modyfikować. Gdy proces ojciec lub proces syn będzie chciał zmodyfikować dane na współdzielonej stronie podnoszony jest wyjątek.Procedura obsługi przydziela procesowi, który wywołał przerwanie, nową strone ze skopiowaną zawartością starej.

Funckja handle_pte_fault() w przypadku kopiowania przy zapisie.
\begin{algorithmic}[1]
\STATE odmłodzenie strony
\IF {narusza ochrone przed zapi...
...age()
\ELSE
\STATE zwrócenie kodu błędu (nieznany błąd)
\ENDIF
\end{algorithmic}

Funckja do_wp_page.
\begin{algorithmic}[1]
\STATE zapisanie do zmiennej lokalnej {\em pte} pozycji T...
...page}
({\em\_\_free\_page})
\STATE zwrócenie wartości 1
\ENDIF
\end{algorithmic}



2001-11-25