![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 26.06.2010
Сообщений: 168
|
![]()
может ктонибудь обяснить что такое CopyOnWr
написано что страница в которую происходит запись копируется.... на жесткий копируется? и адрес доступа к данным меняется? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,823
|
![]()
[telepat]
CopyOnWr - "копирование при записи", такая стратегия кеширования, что копирование переменных, страниц памяти,... происходит только, когда кто-то ее хочет поменять например: переменная1 = 123; переменная2 = переменная1; ... если попыток изменить переменная1, переменная2 не было, то реально будет только одна копия если же кто-то соберется переменная1 = 232, то создатся копия переменная2 = 123 [/telepat] |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 26.06.2010
Сообщений: 168
|
![]()
а где можно почитать как все это происходит на уровне ассемблера
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,823
|
![]()
в смысле на уровне ассемблера? вы хотите реализовать свой менеджер памяти или кеш в проце, ОС?
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 26.06.2010
Сообщений: 168
|
![]()
скопировал в память значение... и где поевляется копия?
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
![]()
Копия появляется в физическо памяти.
например один процесс загружает DLL к себе в память. Если DLL уже загружена каким-либо другим процессом, то она снова не грузится. Чтобы впустую не расходовать физическую память, в память процесса отображается только её копия (ключевое слово отображается!), при этом если мы что-нибудь изменим в области памяти в которую отображена DLL, то изменяться данные у искомого процесса, который загрузил DLL первым (ведь физическая память общая). Чтобы избежать этого, страница накоторую призводится запись копируется и получается её копия для нашего процесса. Таким образом достигается экономия физической памяти до первой операции записи. При этом если DLL занимает больше одной страницы, копируются только её отдельные страницы, в которые производилась запись. Это только упрощённый пример на пальцах, в реальности всё сложнее.
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
![]() |
![]() |