Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Флейм раздела «Microsoft Windows» (Часть 2)

Модерирует : KLASS, IFkO

KLASS (13-04-2017 18:33): Продолжение тут http://forum.ru-board.com/topic.cgi?forum=62&topic=30573#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Предыдущие ветки

Эта тема предназначена для разговоров и споров вокруг ОС семейства MS Windows.  
Здесь и только здесь можно беседовать на отвлечённые темы (желательно, но не обязательно, чтобы они касались ОС).  
Если у вас есть конкретная проблема — это не место для неё: пользуйтесь фильтром и, в конце концов, создавайте новую тему.
Не стоит задавать здесь вопросы, кроме тех, на которые гарантированно можно ответить одной строчкой (забытая строчка из документации, команда, и т. п.). Для более сложных вопросов нужно открывать отдельные темы. Кроме того, здесь можно уточнить, в какой теме/форуме нужно задать тот или иной вопрос.
 
Не рекомендуется заниматься сравнением в любой форме ОС Windows с другими ОС, это следует делать в теме «Флейм форума ОС»

Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 00:04 15-04-2009 | Исправлено: KLASS, 18:29 13-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
давайте немного проясним, что такое dll

Давайте, не важно как та dll создавалась\воровалась\компоновалась_в_набор, это просто неизменяемый код, который лежит на винте и к которому обращается та или иная программа\функция. Все так?

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 18:43 05-04-2017
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
хм. а программа - это изменяемый код?
с винта вообще ничего не исполняется. это склад. всё происходит в памяти.  
пока код лежит на винте - это просто файл. когда к коду в этом файле обращается программа - файл загружается в память. и только после этого он может быть выполнен. с этого момента и до закрытия вызывавшей программы - он будет находиться в памяти.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 19:44 05-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
с винта вообще ничего не исполняется. это склад

Не понял к чему это? Я же не утверждал, что код выполняется с винта, но лишь сказал, что он неизменяемый и лежит на складе (винте).
И так определились, есть неизменяемый код (dll, exe, etc), который лежит на складе, под названием винт, и который же считывается в память по мере необходимости для исполнения.
Возвращаюсь к своему вопросу:
Зачем скидывать неизменяемый код в файл подкачки, если тот код и так лежит на складе (винте)?

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 20:24 05-04-2017
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
ответ всё тот же:
Цитата:
менеджер не "вникает", что он выгружает ))  

Цитата:
ОС ничего не знает о содержимом, помещённом в своп, а программа - не знает о свопе.
менеджер памяти не сверяет содержимое памяти/свопа с файлами на диске. он распределяет память. поставлена задача освободить "быструю" память - освобождает, перемещая страницы в "медленную".
кроме того - код на диске и "тот же" код в памяти - это две большие разницы. при загрузке в память исполняемый файл "развёртывается", а не тупо копируется. делается это для того, чтобы определённые части попали в отведённые для этого места. о блоке внутренних переменных также не следует забывать. в файле на диске этого блока просто нет, однако в заголовке прописано сколько и где надо выделить места под переменные.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 21:20 05-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
менеджер памяти не сверяет содержимое памяти/свопа с файлами на диске

Я же не сказал, что он что-то с чем то сверяет, я лишь говорю, что он прекрасно знает, используя подсистему записи модифицированных страниц, ЧТО выгружать в файл подкачки, ЧТО в проецируемые файлы, а ЧТО просто освобождать и при необходимости подкачивать по-новой со склада, т.е. те dll, которые у вас "не_вникающий" менеджер памяти выгрузил бы в подкачку, сделав при этом уйму ненужной работы и совершая такую медленную операцию, как запись на винт там, где можно было этого избежать.

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 22:16 05-04-2017
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
которые у вас "не_вникающий" менеджер памяти выгрузил бы в подкачку, сделав при этом уйму ненужной работы

мопед не мой (с)
однако, я понимаю и вашу логику и логику тех, кто писал менеджер.
ваша логика - проста и, казалось бы, беспроигрышна. однако подводные камни разбивают эту лодку в щепки. что вы понимаете под модифицированными страницами? страницы, в которые производилась запись? а как это узнать? запустить параллельный процесс, который будет отслеживать все обращения к каждой ячейке памяти? при этом, он должен различать запись и чтение. такое можно сделать программно? ответ - нет. значит - аппаратно. т.е. поставить ещё один процессор, причём он должен быть более быстродействующим, чем "основной", т.к. ему надо ещё и реагировать как-то на изменения. далее. карту изменений надо где-то хранить. где? опять-таки только в RAM. и опять-таки в более быстродействующей, чем "основная". про кеш процессора я вообще молчу. все вычисления выполняются с кешем, а в RAM они могут попадать с значительной задержкой. за это время наш супершустрый аппаратный менеджер уже успел принять решение, что изменений нет и сохранять ничего не надо. и так далее и так далее.  
 
логика разработчиков менеджера не так прозрачна и кажется - приводит к задержкам. частично - так и есть. однако в сумме - имеем быстрое (и главное - гарантированно рабочее) решение.
менеджер памяти ничего не знает о содержимом памяти. программа запросила N байт под свои нужды. менеджер выделил и пометил память занятой. что там с ней делает программа - менеджер не знает. и отслеживает он только обращение к страницам, без детализации - зачем обращаются - читать или писать. ему это без разницы. если обращений нет - можно выгрузить (при необходимости). но опять же - без выяснения наличия изменений. выяснять, были ли изменения и какие - гораздо дольше. ещё дольше - распаковать блоки программы по своим местам (со склада). гораздо быстрей скопировать "снимок" страницы памяти на то же место.
это конвейер, а на конвейере некогда вникать, надо тупо брать "запчасть" и перемещать. начнёшь вникать - конвейер станет.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 23:50 05-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
я понимаю и вашу логику

То не моя, а тех

Цитата:
кто писал менеджер

и в последствии описывал его работу.

Цитата:
что вы понимаете под модифицированными страницами?

Измененные страницы памяти.

Цитата:
он должен различать запись и чтение.

Есть страницы только для чтения, есть для чтения\записи, они уже помечены, а потоки, принадлежащие менеджеру памяти, делают свое,
раскидывая модифицированные страницы по своим углам.
 
 
Добавлено:
Нет смысла сливать неизменяемый код в подкачку, когда его можно с тем же успехом прочитать повторно с диска в память, так мы избавились от одной лишней операции записи на винт... потом ведь все одно надо из файла подкачки читать в память. Зачем это возня?

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 01:07 06-04-2017
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Нет смысла сливать неизменяемый код в подкачку, когда его можно с тем же успехом прочитать повторно с диска в память, так мы избавились от одной лишней операции записи на винт... потом ведь все одно надо из файла подкачки читать в память. Зачем это возня?

есть смысл. посмотрите, как на самом деле выглядит "прочитать с диска dll" и загрузить программу и сами поймёте, что это гораздо дольше и затратнее, чем просто скопировать страницу в своп и обратно.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 02:07 06-04-2017
TwoOceans

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Для меня это новость и мало в нее верится, какой в этом смысл, если оператор отказался от сохранения данных?  По моему дешевле тупо обрубить концы и освободить память.
К сожалению, все именно так - особенно это касается браузеров (которые не на Chromium) с большим числом открытых вкладок и других программ (игр, например), которые занимают большой объем оперативной памяти (напомню, что если оперативки много, Chromium не дает памяти уйти в подкачку). Причем следил по ProcessExplorer - процесс выгружается когда все еще показывает порядка 100 Мб занятой памяти. То есть обрубание имеет место, но похоже только для занятой оперативной памяти, не для подкачки.
Цитата:
Для чего в своп выгружать неизменяемый код, т.е. dll?
К сожалению, в библиотеке жестко прописаны адреса внутри самой библиотеки. Для того чтобы библиотека могла быть загружена по другому адресу, в библиотеку добавляется "директория" (в отдельном сегменте .reloc обычно), указывающая Windows какие места нужно изменить при загрузке библиотеке по другому адресу. Эти места могут быть не только в сегменте данных, но и в сегменте кода. То есть, если библиотека загружена по другому адресу, то код, загруженный в память, отличается от исходника библиотеки на диске. Такую библиотеку нельзя временно вытеснить обратно в исходник на диске, только в подкачку.
В свое время мне пришлось с этим разбираться - мой компилятор не создавал .reloc (не работал режим релиза, а в отладочном .reloc не создается для упрощения отладки) и библиотека не загружалась, если базовый адрес уже был занят. Приходилось при компиляции вручную назначать разные базовые адреса своим библиотекам. Еще есть программа GNU, переписывающая базовый адрес на безконфликтный для текущего состояния компьютера и необязательное обновление для Windows, позволяющее системе как-то махинировать с адресами библиотек. (Точно не помню номер, кажется TAILORD его не рекомендует, но я таки поставил и после него антивирус пару часов обновлял кэш файлов - то есть видимо системные библиотеки были изменены, чтобы снизить число конфликтов адресных диапазонов. Сейчас правда системные не по базовому адресу снова есть).
 
Если библиотека загружена по какому-то адресу, то изменить его "на ходу" без выгрузки с освобождением во всех программах и снова загрузки библиотеки система не сможет - так как для этого пришлось бы менять и данные программ библиотеку вызвавших и локальное хранилище потока (Thread Locale Storage) самой библиотеки. Это значит, что если у какой-то загружаемой библиотеки (условно назовем "новой") адресный диапазон пересекается с ранее загруженной библиотекой - система будет искать в "новой" секцию .reloc пытаться загрузить ее по другому адресу. Чем больше библиотека по размеру в памяти (наверно не нужно упоминать что размер на диске почти всегда меньше чем размер в памяти - из-за большего выравнивания и выделения памяти под "неинициализированные" сегменты), тем больше вероятность, что с чем-то пересечется и будет загружена по другому адресу.
Если библиотека "частная", то ничего особо страшного, адрес ее загрузки может отличаться для разных процессов (и даже может отличаться версия библиотеки в каждом процессе) - то есть пересечение проверяется по одному процессу. А вот если библиотека Shared (как системные библиотеки, точно не скажу, похоже определяется по базовому адресу библиотеки выше некого предела, для win32 примерно 0x60000000), то она будет занимать этот адрес во всех процессах и соответственно пересечение проверяется по всем процессам. Если судить только по количеству библиотек на 32-разрядной системе - то примерно 20% загружено не по своему адресу. Если учесть, что не по своему адресу прежде всего большие библиотеки, то процент по размеру будет выше. Конечно не 100%, но асимпотически с течением времени стремится к 100%. На 64-разрядных адресов должно хватать всем, но это не меняет того, что для "частных" библиотек есть базовый адрес по умолчанию и его использование приведет к тому, что первая библиотека займет этот адрес, остальные загрузятся по другому адресу.
Цитата:
все упирается\всегда_упиралось в объем оперативки  и чтения с диска.
К сожалению, не только. Без UWF(EWF) файл подкачки используется, его можно уменьшить до 20 Мб, но он остается. Поэтому хотелось бы какой-то пруф, что он действительно отключается, а не прячется в буфер. Конечно, я готов допустить, что в новых ОС он действительно отключается, но просто оперировать логикой, говоря о Майкрософт, недостаточно.
Добавлено:
Цитата:
Есть страницы только для чтения, есть для чтения\записи, они уже помечены
С этим согласен - однако они есть только в загруженной с диска части (при этом нет прямого запрета пометить в файле исполняемый код для записи! хотя это может привлечь внимание антивируса) либо в данных полученных из другой программы/библиотеки (например, при чтении памяти другого процесса), а любая динамически выделенная память в самой программе будет помечена (для текущего потока) и для записи и для чтения, иначе ее нет смысла выделять - изначально в ячейке будут нестертые данные предыдущей программы, "мусор". А загрузчик системы, естественно, может изменять данные при загрузке, даже если для программы потом они будут "только чтение". Еще можно припомнить, что с этим всем тесно связана защита от выполнения в сегментах данных (запись, чтение, исполнение указываются в одном поле), только обычно она отключена для несистемных программ. То есть можно в секцию данных записать исполняемый код из внешнего файла и его прекрасно выполнить. В целом можно сказать, что вся эта защита весьма хрупкая и ненадежная вещь: к любой памяти кто-то да имеет доступ на запись.

Цитата:
не создаётся или затирается в момент нормального старта?
Именно не сознается - у меня тоже так бывало (ушел на перезагрузку - пока биос грузится отключаешь, загружаешься с диска восстановления - файла нет либо есть, но старый). Обычно это оказывались BSOD 7B и 7E. Нужно отключить перезагрузку по BSOD и увидеть код на синем экране. В случае 7B система при загрузке не находит загрузочный раздел, поэтому не может найти папку Windows и не может записать файл протокола или событие в журнал. Как лечить зависит от версии ОС. Обычно помогает принудительное включение всех драйверов из mshdc.inf в автоматический запуск (0), но бывает что дело просто во включении/выключении ahci или смене шлейфа/порта sata на материнке. Так как на XP нет стандартного msahci и он не переносится с семерки, надо отключить ahci, загрузится, поставить драйвер ahci от производителя материнки, потом включить. В новых материнках часто нет возможности отключить ahci, так что Xp на них без шаманства с реестром не пойдет. Короче, если у Вас эта ошибка, опишите подробнее как возникла проблема, производителя контроллера sata, разбирали ли ноут, какая ОС и так далее. Например, если из нового ноута (c процем N3000, неотключаемым ahci, без DVD привода и новыми Intel USB3 не позволяющими подключить внешний привод) вытащить жесткий диск, вставить в обычный комп с приводом и старыми USB, но без ahci, установить ос, потом вернуть диск в ноут - BSOD 7B гарантирован.
 
В случае 7E (для ноута маловероятен - обычно при смене материки/процессора) конфликтует какой-либо драйвер (чаще всего intelppm, его нужно перевести в старт по требованию(3, рекомендуется, не стартует если проц AMD, и стартует, если проц Intel), но бывают и другие). Почему в журнале не фиксируется мне не понятно.

Всего записей: 9 | Зарегистр. 20-02-2017 | Отправлено: 05:24 06-04-2017 | Исправлено: TwoOceans, 07:57 06-04-2017
maks7vp



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет!Подскажите пожалуйста,выпускала-ли Microsoft русскую версию Windows Vista Business SP2 x86? На сайте MSDN такой версии нет.Если попадалась кому-то,подскажите где поискать.

Всего записей: 22 | Зарегистр. 23-01-2017 | Отправлено: 07:45 06-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
сами поймёте, что это гораздо дольше и затратнее, чем просто скопировать страницу в своп и обратно.

Не верю (С). Запись на винт и чтения с винта (две медленные операции) никогда не будут быстрее, чем одна операция чтения.
Я не программист, потому мне понятней Руссинович, на которого вы же сами и ссылались ранее.
TwoOceans

Цитата:
Такую библиотеку нельзя временно вытеснить обратно в исходник на диске, только в подкачку

Зачем вытеснять библиотеку на диск в исходник или в подкачку? Он же (исходник) неизменяемый. Память просто освобождается, после, как освободили, другой процесс обратился к той части, что выгружена => ошибка страницы => чтение из исходника.

Цитата:
С этим согласен - однако они есть только в загруженной с диска части

Все загружается с диска.

Цитата:
либо в данных полученных из другой программы/библиотеки (например, при чтении памяти другого процесса)

О чем речь, о разделении страниц неизменяемой памяти (только для чтения) между процессами? Тогда никаких проблем не вижу.

Цитата:
Без UWF(EWF) файл подкачки используется, его можно уменьшить до 20 Мб, но он остается.  

Попробуйте отключить файл подкачки, а после задать создание малого дампа (256КБ) при отказах системы. Система с вами не согласна:

 
Добавлено:
Здесь данные о файле подкачки
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\\PagingFiles
отключаете его через Гуй и смотрите, там будет чисто, как в трамвае (С)

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 09:43 06-04-2017 | Исправлено: KLASS, 09:56 06-04-2017
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS

Цитата:
Не верю (С). Запись на винт и чтения с винта (две медленные операции) никогда не будут быстрее, чем одна операция чтения.  

а при чём здесь вера? загрузка dll - это не просто "операция чтения". выполняется целый комплекс действий: чтение, распаковка, инициализация, ремаппинг (если нужен). в результате: dll в памяти и dll на диске - это далеко не копия друг друга. добавьте к этому то, о чём писал TwoOceans - адреса загрузки и, как результат, то, как она "видна" программам, т.е. по каким адресам обращаться к её функциям.
"линейное" копирование файла с диска в память осталось в 80х и в машинах типа "Микроши", "ZX-Speсtrum" и т.п.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 12:37 06-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
По моему мы о разном. Я о измененных страницах (закрытая память), которые копируются в подкачку и при необходимости память освобождается мгновенно,
а вы о том, что образ на диске и в памяти не одно и тоже. Какой бы ни был образ в памяти, страницы кода в исполняемых образах (.exe и .dll) отображаются,
как страницы, предназначенные только для выполнения. В подкачку сбрасывается закрытая память, которая недоступна другим процессам.
Все тот же Руссинович:

Цитата:
Страничные файлы, или файлы подкачки, служат для хранения измененных страниц, которые все еще нужны некоторым процессам,
но должны быть записаны на диск (поскольку их отображение утрачено или от них приходится избавляться из-за нехватки памяти)

Если и после этого памяти мало, усекаются рабочие наборы процессов (страницы с кодом просто выкидываются и память снова освобождается мгновенно) до тех пор,
пока не будет достигнуто минимальное количество свободных страниц в системе.
TwoOceans
Вот у Руссиновича в 6 издании есть про подкачку

Цитата:
Поскольку Windows может работать без страничных файлов, разделы, поддерживаемые страничными файлами, фактически могут «обслуживаться» только физической памятью.

Стало-быть нет речи о каких то "скрытых" файлах подкачки после того, как отключили "основной", иначе пруф нужен от вас, где сказано,
что вынь не может совсем без файла подкачки.

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 13:51 06-04-2017
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
вы ведь писали о том, что нет смысла сбрасывать в своп загруженные dll, т.к. они лежат на диске в "оригинальном" виде и при необходимости их можно прочитать оттуда, выполняя одну операцию чтения вместо записи/чтения свопа.
и совсем неважно: помечена страница для записи или только для выполнения.  
страницы с кодом в RAM действительно освобождаются мгновенно. однако, если эта страница была сброшена в своп - то она сначала извлекается из своп на своё место и только потом мгновенно освобождается. такой механизм.
сказанное справедливо для страниц с кодом ехе. в случае dll всё немного сложней и освобождение RAM происходит по другой логике. причём эта логика постоянно меняется - M$ всё ещё в поисках идеала...

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 14:36 06-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
Страничные файлы, или файлы подкачки, служат для хранения измененных страниц


Цитата:
однако, если эта страница была сброшена в своп

Страница из кода неизменяемая, чего вдруг она окажется в своп?

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 15:06 06-04-2017
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
страница-то неизменяемая, но требуется освободить память для других нужд. куда её деть? программа-то не закрыта, просто болтается где-то на заднем плане.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 15:26 06-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
И что?
Причем тут наш разговор о том, что скидывается в файл подкачки, а что тупо выбрасывается из памяти?

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 16:17 06-04-2017
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
так куда дели незакрытую программу при освобождении памяти для других нужд?
скинули в своп. пока программа не закрыта её нельзя просто выкинуть из памяти.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 16:42 06-04-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
пока программа не закрыта её нельзя просто выкинуть из памяти.

А выкидывание в своп не считается

Всего записей: 11463 | Зарегистр. 12-10-2001 | Отправлено: 16:43 06-04-2017
TwoOceans

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ошибка страницы => чтение из исходника
Так может произойти только если страница целиком неизменна по отношению к исходнику. Фактически же размер страницы в памяти 4 Мб, а 32 разрядные бинарники выровнены по 512 байт (кроме, возможно, последнего сегмента, но в последнем чаще всего иконки и так далее, которые можно пометить незагружаемыми в оперативную память). Из-за этого 4 мегабайтному отрезку бинарника после загрузки в память может соответствовать несколько страниц памяти содержащих "по кусочку" отрезка. И эти страницы будут считаться как измененные - у них нет полного однозначного отображения байт страницы в байт исходника, только частичное.
Про загрузку по другому адресу я уже выше писал - изменяются в том числе и ссылки на сегмент собственных данных, жестко прописанные в сегменте кода. То есть страница с такой ссылкой будет также считаться измененной, даже если из 4 Мб изменились всего 4 байта - побайтового соответствия уже нет. И так как изменил их загрузчик системы, а не сама библиотека, то никакого противоречия, что библиотеке сегмент кода доступен только для чтения.

Цитата:
Все загружается с диска.
Ага, особенно введенные пользователем данные, динамически вычисленные при загрузке адреса, данные страниц Интернета и так далее. По сути, общем объеме памяти процесса (браузера, например) исполняемый код занимает не так много - остальное данные введенные пользователем (для выбранного примера - адрес сайта и логин) и данные загруженные извне (из интернета). Вот похоже Вы привыкли к UWF, а документы как в случае чего сохраняете? В сетевую папку/облако? Если ограничиться одним компьютером - это будет не "на диск". Если глобально - то конечно на некий диск. Еще есть подход который говорит что все есть файлы. Кстати, если зашла речь об этом, некоторые операционки и оперативную память форматируют и вместо страниц работают с ней как с файлами. Увы, Windows к этому никак не придет.

Цитата:
никаких проблем не вижу.
Их и нет, просто очень мало сферических в вакууме страниц всем доступных только для чтения.

Цитата:
Попробуйте отключить файл подкачки, а после задать создание малого дампа (256КБ) при отказах системы. Система с вами не согласна:
Так я про то и говорю - хотя формально отключение есть, но фактически ряд функций системы не будет работать, если файл подкачки отключить совсем. В худшем случае система вообще не загрузится, либо создаст файл подкачки не смотря ни на какие настройки.
Опять же я это говорю не потому что "где-то прочитал", а потому что реально пару раз так системы накрывались (кажется это XP были, надцать лет назад). Ну точнее как - доходили до окна приветствия/ввода пароля (в том числе в безопасном режиме) - а при загрузке профиля говорили, что вход невозможен из-за слишком малого/отсутствующего файла подкачки и выкидывали снова на приветствие (либо сообщали, что взамен ненайденного создан новый файл подкачки на другом разделе, то есть чистота в том разделе реестра не доказательство). Естественно сейчас я бы загрузился с диска и исправил в реестре, но тогда мое мастерство до этого не дотягивало, да и дисков с PE еще не было - пришлось переустанавливать. В любом случае, состояние без файла подкачки полностью работоспособным не назовешь. Уверен, что с тех пор XP не стала стабильнее и доказать несложно, "уронив" виртуальную машину. Ронять семерку воздержусь - рабочую пока жалко, а на виртуальную семерку в семерке моих 4 Гб оперативки не хватит.
Скриншот о том же. Как вы думаете если для дампа нужен файл подкачки, то подкачка не используется? Сами против своей теории нашли и заскринили пруф. Точно также бывают проблемы при гибернации, если файл подкачки даже на пару мегабайт меньше объема оперативной памяти. Еще бы знать почему - по любому переписать из файла подкачки в файл гибернации не быстрее чем из памяти). Кажется, это даже цитировали с сайта Майкрософт, что они признали такой дефект в XP и семерке и рекомендовали поставить подкачку на пару мегабайт больше оперативки, но навскидку поисковик ссылки не нашел. В приведенной цитате не указывается версия Windows и по сути говорится об этом же: "может работать" (с этим не спорю - теоретически может как-то работать, но фактически, собака, полноценно не работает).
Цитата:
А выкидывание в своп не считается
Смеяться полезно, ага. Опять же, тут дело в терминологии - фактически своп тоже называется "виртуальная" память, и диск тоже, если на то пошло - память. Говорят же "массив дисковой памяти". Если опустить слово "оперативная" и написать просто "память" смысл многократно расширяется. В контексте разговора диск, конечно, отдельно и памятью как бы не считаем, но своп все же входит в понятие память- так как программа не знает где страница в памяти или в свопе и для нее все входит в "виртуальную" память - и оперативка и своп.
Далее. Выкинуть - я понимаю это вообще убрать страницу и нигде не сохранить ничего, даже в управляющих структурах в ядре стереть строчки (остается только исходник на диске), вытеснить - убедится, что где-то есть побайтовая копия (в свопе, например, или просто использовать исходник) и оставить строчки в управляющих структурах, обозначающие, где искать страницу, когда понадобится.  
В таком понимании в своп страница не выкидывается, а вытесняется. Иначе получается - в одном месте называем своими именами (что не файл подкачки, а файл на диске), а в другом игнорируем, что не только файл на диске, но и "память" бывает разной.

Всего записей: 9 | Зарегистр. 20-02-2017 | Отправлено: 11:43 07-04-2017 | Исправлено: TwoOceans, 11:54 07-04-2017
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Флейм раздела «Microsoft Windows» (Часть 2)
KLASS (13-04-2017 18:33): Продолжение тут http://forum.ru-board.com/topic.cgi?forum=62&topic=30573#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru