Денис В.цитирует5 дней назад
В частности, в UNIX после системного вызова fork родительский и дочерний процессы вынуждены совместно использовать как текст программы, так и данные. В системах со страничной организацией памяти часто практикуется предоставление каждому из таких процессов собственной таблицы страниц и наличие у них обоих указателя на один и тот же набор страниц. Таким образом, при выполнении системного вызова fork копирования страниц не происходит. Тем не менее все страницы с данными отображаются для каждого процесса как страницы только для чтения — READ ONLY.

Пока оба процесса только читают свои данные, не внося в них изменений, эта ситуация может продолжаться. Как только какой-нибудь из процессов обновит слово памяти, нарушение защиты режима только для чтения приведет к системному прерыванию операционной системы. После чего делается копия вызвавшей эту ситуацию страницы, чтобы у каждого процесса имелся собственный экземпляр. Теперь для обеих копий устанавливается режим чтения-записи — READ-WRITE, поэтому следующие записи в каждую копию происходят без системного прерывания. Эта стратегия означает, что те страницы, которые никогда не изменяются (включая все страницы программы), не нуждаются в копировании. Копирование требуется только для тех страниц, которые на самом деле подвергаются изменениям. Этот подход, названный копированием при записи (copy on write), повышает про
  • Эндрю Таненбаум,Херберт Бос
    Современные Операционные Системы
    • 2.5K
    • 246
    • 13
    • 19
  • Войти или зарегистрироваться, чтобы комментировать