Марка руссиновича внутреннее устройство microsoft windows

Время на прочтение
8 мин

Количество просмотров 29K

image С момента выхода предыдущего издания этой книги операционная система Windows прошла длинный путь обновлений и концептуальных изменений, результатом которых стала новая стабильная архитектура ядра Windows 10.

Книга «Внутреннее устройство Windows» создана для профессионалов, желающих разобраться во внутренней жизни основных компонентов Windows 10. Опираясь на эту информацию, разработчикам будет проще находить правильные проектные решения, создавая приложения для платформы Windows, и решать сложные проблемы, связанные с их эксплуатацией. Системные администраторы, зная, что находится у операционной системы «под капотом», смогут разобраться с поведением системы и быстрее решать задачи повышения производительности и диагностики сбоев. Специалистам по безопасности пригодится информация о борьбе с уязвимостями операционной системы.

Динамика списков страниц

На рис. 5.37 показана диаграмма состояний переходов страничных блоков. Для простоты на ней не представлен список измененных, но не подлежащих записи страниц.

image

Страничные блоки перемещаются между страничными списками следующими способами.

1. Когда диспетчеру памяти для обслуживания ошибки страницы, связанной с требованием обнуленной страницы (обращение к странице, которая определена как полностью заполненная нулями, или к закрытой подтвержденной странице пользовательского режима, к которой еще не было обращений), нужна страница, заполненная нулями, сначала предпринимается попытка получить эту страницу из списка таких страниц. Если список пуст, страница берется из списка свободных страниц и заполняется нулями. Если пуст и список свободных страниц, происходит обращение к списку ожидающих страниц, и заполняется нулями страница из этого списка.

2. Одна из причин востребованности страниц, заполненных нулями, заключается в выполнении различных требований безопасности — например, общих критериев (Common Criteria). Большинство положений общих критериев указывает на то, что процессы пользовательского режима должны получать обнуленные страничные блоки, чтобы они не могли прочитать содержимое памяти предыдущих процессов. Поэтому диспетчер памяти предоставляет процессам пользовательского режима обнуленные страничные блоки, если только страница не была считана из резервного хранилища. В таком случае диспетчер памяти использует необнуленные страничные блоки, инициализируя их данными с диска или с удаленного хранилища. Список страниц, заполненных нулями, пополняется из списка свободных страниц системным программным потоком, который называется потоком обнуления страниц (zero page thread), — это поток 0 в процессе System. Поток обнуления страниц ждет сигнала на работу от объекта шлюза. Когда в списке свободных имеется восемь и более страниц, шлюз подает сигнал. Но поток обнуления страниц запускается, только если хотя бы у одного процессора нет других выполняемых потоков, поскольку поток обнуления страниц запускается с приоритетом 0, а наименьший приоритет, который может быть установлен для пользовательского потока, равен 1.

ПРИМЕЧАНИЕ Когда память в результате выделения физической страницы драйвером, вызывающим функцию MmAllocatePagesForMdl или MmAllocatePagesForMdlEx, должна быть заполнена нулями Windows-приложением, вызывающим функцию AllocateUserPhysicalPages или AllocateUserPhysicalPagesNuma, или когда приложение выделяет большие страницы, диспетчер памяти обнуляет память, используя высокопроизводительную функцию под названием MiZeroInParallel, которая отображает более крупные области, чем поток обнуления страниц, обнуляющий только одну страницу за раз. Кроме того, на мультипроцессорных системах диспетчер памяти создает дополнительный системный поток для обнуления в параллельном режиме (а на NUMA-платформах это делается в стиле, оптимизированном под технологию NUMA).

3. Когда диспетчеру памяти не нужна страница, заполненная нулями, он сначала обращается к списку свободных страниц. Если этот список пуст, он переходит к списку обнуленных страниц. Если и список обнуленных страниц пуст, он переходит к списку ожидающих страниц. Перед тем как диспетчер памяти сможет воспользоваться страничным блоком из списка ожидающих страниц, он должен сначала вернуться и удалить ссылку из недостоверной PTE-записи (или из прототипной PTE-записи), которая все еще указывает на страничный блок. Поскольку в записях базы данных PFN-номеров содержатся обратные указатели на предыдущую страницу пользовательской таблицы страниц (или на страницу пула прототипной PTE-записи для общих страниц), диспетчер памяти может быстро найти PTE-запись и внести в нее соответствующее изменение.

4. Когда процесс должен отказаться от страницы из своего рабочего набора (либо потому, что он ссылается на новую страницу и его рабочий набор заполнен, либо потому, что диспетчер памяти урезал его рабочий набор), страница переходит в список ожидающих, если она оставалась нетронутой (неизмененной), или в список измененных страниц, если страница была изменена, находясь в физической памяти.

5. Когда процесс завершает работу, все закрытые страницы переходят в список свободных страниц. Кроме того, если при закрытии последней ссылки на раздел, поддерживаемый страничным файлом, в разделе не осталось отображенных представлений, страницы этого раздела также попадают в список свободных страниц.

ЭКСПЕРИМЕНТ: ПРОСМОТР СПИСКОВ СВОБОДНЫХ И ОБНУЛЕННЫХ СТРАНИЦ

За освобождением закрытых страниц при завершении работы процесса можно наблюдать в окне System Information (Системная информация) программы Process Explorer. Сначала нужно создать процесс с большим количеством закрытых страниц в его рабочем наборе. Мы уже делали это в одном из предыдущих экспериментов с помощью утилиты TestLimit:

C:\Tools\Sysinternals>Testlimit.exe -d 1 -c 1500

Testlimit v5.24 - test Windows limits
Copyright (C) 2012-2015 Mark Russinovich
Sysinternals - www.sysinternals.com

Process ID: 13928

Leaking private bytes with touch 1 MB at a time...
Leaked 1500 MB of private memory (1500 MB total leaked). Lasterror: 0
The operation completed successfully.

Ключ –d заставляет TestLimit не только выделить память в качестве закрытой и подтвержденной, но и «прикоснуться» к ней, т. е. обратиться к этой памяти. Это приводит к выделению физической памяти и присвоению ее процессу, чтобы освободить область закрытой подтвержденной виртуальной памяти. Если в системе имеется достаточный объем доступной оперативной памяти, для процесса в оперативной памяти будет выделено целых 1500 Мбайт. Теперь этот процесс будет ждать, пока вы не заставите его завершить или прервать работу (возможно, с комбинацией клавиш Ctrl+C в его командном окне). Выполните следующие действия.

1. Откройте Process Explorer.

2. Выберите команду ViewSystem Information и перейдите на вкладку Memory.

3. Понаблюдайте за размерами списков свободных (Free) и обнуленных (Zeroed) страниц.

4. Завершите или прервите процесс TestLimit.

Возможно, вам удастся увидеть, что список свободных страниц кратковременно увеличился в размере. Мы говорим «возможно», потому что поток обнуления страниц «проснется», как только в списке обнуленных страниц останется всего восемь записей, и отработает очень быстро. Process Explorer обновляет это окно только раз в секунду, и похоже, что остальные страницы уже успевают обнулиться и попасть в список обнуленных страниц, пока нам удалось «поймать» это состояние. Если вам удалось заметить временное увеличение списка свободных страниц, то вслед за этим вы увидите, что его размер упадет до нуля, а в списке обнуленных страниц произойдет соответствующее увеличение. Если же момент будет упущен, вы просто увидите увеличение списка обнуленных страниц.

ЭКСПЕРИМЕНТ: ПРОСМОТР СПИСКОВ ИЗМЕНЕННЫХ И ОЖИДАЮЩИХ СТРАНИЦ

За перемещением страниц из рабочего набора процесса в список измененных страниц и затем в список ожидающих страниц можно понаблюдать при помощи программ VMMap и RAMMap из пакета Sysinternals или в отладчике ядра. Выполните следующие действия.

1.Запустите программу RAMMap и понаблюдайте за спокойным состоянием системы. В данном случае это система x86 с 3 Гбайт оперативной памяти. Столбцы в окне отражают различные состояния страниц (см. рис. 5.37). Некоторые столбцы, которые не имеют значения для данного эксперимента, для удобства были сужены.

image

2. У системы имеется около 420 Мбайт свободной оперативной памяти (складывающейся из свободных и обнуленных страниц). Около 580 Мбайт фигурирует в списке ожидающих страниц (следовательно, часть из них «доступна», но, скорее всего, содержит данные, ранее утраченные процессами или используемые при супервыборке). Около 830 Мбайт активны, будучи отображенными непосредственно на виртуальные адреса через достоверные записи таблицы страниц.

3. Каждая строка далее разбивается в соответствии с состояниями страниц по использованию или происхождению (закрытые страницы процесса, отображаемый файл и т. д.). Например, на данный момент из активных 830 Мбайт около 400 Мбайт обусловлено выделением закрытых страниц процесса.

4. Теперь, как и в предыдущем эксперименте, воспользуйтесь утилитой TestLimit, чтобы создать процесс с большим количеством страниц в рабочем наборе. Здесь опять мы используем ключ –d, чтобы заставить TestLimit сделать запись в каждую страницу, но на этот раз без ограничения, чтобы создать как можно больше закрытых измененных страниц:

C:\Tools\Sysinternals>Testlimit.exe -d

Testlimit v5.24 - test Windows limits
Copyright (C) 2012-2015 Mark Russinovich
Sysinternals - www.sysinternals.com

Process ID: 7548

Leaking private bytes with touch (MB)...
Leaked 1975 MB of private memory (1975 MB total leaked). Lasterror: 8

5. Теперь программа TestLimit создала 1975 областей выделения по 1 Мбайт каждая. Для обновления экрана в программе RAMMap нужно воспользоваться командой FileRefresh для обновления экрана, поскольку самостоятельно программа RAMMap этого не делает (из-за больших затрат на выполнение этой операции).

image

6. Как видите, активно свыше 2,8 Гбайт, из которых 2,4 Гбайт находятся в строке закрытых страниц процесса (строка Process Private). Это результат выделения памяти и доступа к ней со стороны процесса TestLimit. Также обратите внимание на то, что списки ожидающих (Standby), обнуленных (Zeroed) и свободных (Free) страниц теперь стали намного меньше. Большая часть памяти, выделенной программе TestLimit, взята из страниц, фигурировавших в этих списках.

7. Далее с помощью RAMMap нужно оценить выделение физических страниц процесса. Перейдите на вкладку Physical Pages и установите фильтр, находящийся в нижней части столбца Process, присвоив ему значение Testlimit.exe. В следующем окне показаны все физические страницы, являющиеся частью рабочего набора процесса.

image

8. Нам нужно идентифицировать физическую страницу, задействованную в выделении физического адресного пространства, которое было выполнено с помощью ключа –d при запуске программы TestLimit. RAMMap не дает никаких указаний на то, какие виртуальные области были выделены благодаря вызову из RAMMap функции VirtualAlloc. Но мы можем получить ценную подсказку на этот счет с помощью программы VMMap. Вызвав VMMap для
того же процесса, мы получим следующий результат (см. рис. на с. 535 вверху).

9. В нижней части выводимой информации находятся сотни выделенных областей для закрытых данных процесса, каждая из которых имеет размер 1 Мбайт при 1 Мбайт подтвержденной памяти. Это соответствует размеру памяти, выделенной программой TestLimit. В предыдущей копии экрана подсвечен первый из таких вариантов распределения. Заметьте, что его начальный виртуальный адрес равен 0x310000.

10. Теперь вернемся к информации о физической памяти, выводимой на экран программой RAMMap. Перестройте столбцы так, чтобы хорошо был виден столбец Virtual Address. Щелкните на нем, чтобы отсортировать строки по этому значению, и вы сможете найти нужный виртуальный адрес (см. рисунок на с. 535 внизу).

image

11. Здесь показано, что виртуальная страница, начинающаяся с адреса 0x310000, в данный момент отображена на физический адрес 0x212D1000. С ключом -d программа TestLimit записывает в первые байты каждой выделенной области свое имя. Это можно продемонстрировать с помощью команды !dc локального отладчика ядра (dc — сокращение от «display characters», т. е. вывод символов по физическому адресу):

lkd> !dc 0x212d1000
#212d1000 74736554 696d694c 00000074 00000000 TestLimit.......
#212d1010 00000000 00000000 00000000 00000000 ................
...

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

13. Выбрав в программе VMMap процесс TestLimit, откройте меню View и выберите команду Empty Working Set, чтобы сократить рабочий набор процесса до минимума. Теперь в окне VMMap должна выводиться следующая информация:

image

14. Обратите внимание на то, что линейка Working Set (Рабочий набор) практически пуста. В средней части для процесса показано, что общий размер рабочего набора равен всего лишь 4 Кбайт, причем почти все его пространство занято таблицами страниц. Теперь вернитесь в RAMMap. На вкладке Use Counts видно, что количество активных страниц существенно сократилось, а большое количество страниц находится в списке измененных и существенное количество страниц — в списке ожидающих.

image

15. Данные на вкладке Processes программы RAMMap подтверждают, что большинство этих страниц появилось в данных списках из-за процесса TestLimit.

image

» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

Для Хаброжителей скидка 20% по купону — Windows

Profile picture for user Олег

Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP и Windows 2000 (4-е издание)

Автор:
Марк Руссинович, Дэвид Соломон

Эту книгу мне прислали в подарок от Microsoft уже давно. Недавно разбирал свои диски и нашел её в специальном издании DVD «Боекомплект ИТ-профессионала и разработчика». Издание старое, но ещё не потерявшее актуальность.

Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS.

Детально рассмотрены системные механизмы: диспетчеризация ловушек и прерываний, DPC, APC, LPC, RPC, синхронизация, системные рабочие потоки, глобальные флаги и др. Также описываются все этапы загрузки операционной системы и завершения ее работы.

В четвертом издании книги больше внимания уделяется глубокому анализу и устранению проблем, из-за которых происходит крах операционной системы или из-за которых ее не удается загрузить. Кроме того, рассматриваются детали реализации поддержки аппаратных платформ AMD x64 и Intel IA64.

Книга предназначена системным администраторам, разработчикам серьезных приложений и всем, кто хочет понять, как устроена операционная система Windows.

Ссылки

Библиотека системного администратора

Авторская мифология

Агония Земли

Адьюлтер, измена

Альтернативная география

Альтернативная история Азии

Альтернативная история Америки

Альтернативная история Африки

Альтернативная история Ближнего Востока

Альтернативная история Восточной Азии

Альтернативная история Восточной Европы

Альтернативная история Европы

Альтернативная история Западной Европы

Альтернативная история Северной Америки

Альтернативная отечественная история

Античная мифология

Бессмертие

Ближневосточная мифология

Богоборчество

Бунт

Быт

Веселое

Внезапное бедствие

Возвращение домой

Война

Война миров

Воплощение зла

Восстание

Восстание мутантов

Восстание роботов

Восстановление справедливости

Восточно-азиатская мифология

Вражда

Вторжение пришельцев

Выход эксперимента из-под контроля

Глупость

Готический ужас

Гуманитарное

Договор с дьяволом

Достижение

Достижение блага

Достижение цели

Европейская мифология

Жадность

Жертва

Заклинание

Избавление от бед

Империи

Индийская мифология

Интрига

Искусственный разум

Исправление героя

Истинное безумие

Квест

Классика детектива

Классика фэнтези

Классический ужас

Конспирология

Контакт с внеземной цивилизацией

Криминальная драма

Кровавый ужас

Легкое

Любовное

Любовные припятствия

Любовь к врагу

Магический реализм

Месть

Микромир

Мифологические элементы

Мифология народов мира

Мнимое безумие

Мятеж

На заре фэнтези

Научная магия

Научное фэнтези

Научные достижения

Научные достижения в руках злодеев

Невольное преступление

Ненависть

Неожиданные сверхспособности

Неосознаваемые ревность и зависть

Обряды

Обстоятельства

Одиночество

Опасное предприятие

Оптимистическое

Освобождение

Освобождение от врагов

Освобождение от тирании

Освоение планет

От лица животного

От лица предмета или явления

Отчаянная попытка

Ошибка ученых

Пародия

Пацефизм

Переселение разума

По мотивам кино

Победа

Победа над болезнями

Победа над врагом

Победа над злом

Победа над обстоятельствами

Победа над собой

Победа над чудовищем

Подсознательный ужас

Поиск истины

Поиск себя

Поиск сокровищ

Поиск счастья

Пороки

Постмодернизм

Потеря близких

Потерянный и найденный

Похищение человека

Предсказания

Преследование

Пришельцы из других времен

Психоделическое

Психологическое

Психология чужих

Путешествие в будущее

Путешествие в прошлое

Путешествия в другие миры

Путешествия во времени

Путь воина

Путь прогресса

Развитие героя

Развлечения, увлечения

Раздвоение личности

Расстояния

Расширение сознания

Реализм

Революция

Роковая ошибка

Русская мифология

Сакральные объекты

Самопожертвование

Самопожертвование во имя близких

Самопожертвование во имя веры

Самопожертвование во имя долга

Самопожертвование во имя идеи

Самопожертвование во имя любви

Свержение

Сверхспособности

Сверхцивилизация

Семейные драмы

Скандинавская мифология

Содомия

Соперничество, противостояние

Социальное неравенство

Социум

Спасение

Спасение мира

Спецслужбы

Средневековая мифология

Стимпанк

Стихия

Судебная ошибка

Сюрреализм

Таймпанк

Тайна, загадка

Темное фэнтези

Техногенная катастрофа

Трусость

Туда и обратно

Угрызения совести

Утечка вирусов

Фатальная неострожность

Феминизм

Философское

Честолюбие и властолюбие

Школа

Экологическое

Экономическое

Экспедиции

Эпидемия

✎ Случайные комментарии:



Amogus

Amogus:  

Можете меня засисрть как хотите, но мне сборка понравилась. Установка в автоматическом режиме. Если смотреть предыдущие версии от этого автора mininstall дает время выбрать проги, а эта версия сразу начинает исталяцию, без моего разрешения — но это мне не мешает удалить ненужный софт 

➥ Windows 10 22H2 x64 c USB флешки установить на ПК и ноутбук


johndoe

johndoe:  

Очень хорошая сборка всем советую создать виртуальную машину на этой сборке и сейчас пишу с ней частота процессора держится на базовой моей например 2.1 Ггц и при перезагрузке все равно будет держаться на этой же частоте. Также убрано много ненужных или лишних функций и работать или играть на такой Windows очень приятно. Советую всем скачать и установить эту классную сборку.

➥ Windows 10 64bit 22H2 с минимум нагрузки на SSD, Память и ЦП


iruko-chan

iruko-chan:  

Давно ждал обновление, даже «неофициальное» от флибустьера …. — но вы сделали мой день … А циферки радуют глаз 😍🥹 Замечание к людям , которые пишут по поводу сборки , что она плохая и т.д. и т.п. — вы криворукие . Ещё раз спасибо команде виндовс64 и команде ревизион !
Platinum , не много не туда пишу) , НО — твоя сборка windows 8 и 7 perfect или -о не (помню) — хорошо себя показывает 🫦

➥ Windows 10 x64 22H2 FULL 2023 by Flibustier 19045.2673


Злой разраб

Злой разраб:  

Еще раз провел тест на долбае*а в отношении себя. Прикинул, что в теории я мог притащить моимер с активатором — KMSAuto. Запустил его на вашей сборке. И таки это он и оказался троянским конем (во всех смыслах). Сразу и в hosts записи посыпались, и бинарей он своих раскидал по тем же местам.

Короче. Торжественно и во всеуслышанье признаю, что долбае*ом оказался я. Вроде сайт kmsauto.pro существует давно (с 2020 года). Но их активатор оказался пи*орским, ой, т.е. моимерским. Вот так вот. Век живи, век косячь.

Все же активаторы — о*уенная тема для распространения вирусни. Всегда можно правдоподобно ответить, почему надо оффнуть авер перед установкой! потому шо активатор аверы не любят. А вот как кишки ему разобрать без запуска — вопрос.

Мои извинения ресурсу и админу, которых облил говном, в которое сам же окунулся. Предлагаю снести данный топик, дабы на сборку пятно не ставить. Но тут уж на усмотрение админа. Вообще, я погуглил. Я не один такой молодец. Под несколькими сборками винды на вашем сайте есть комменты (затертые, но сохранившиеся в выдаче гугла) о моимерах. Народ систематически так накалывается. Я бы от себя посоветовал либо прям аттачить проверенный активатор к каждой неактивированной виндовой сборке, либо черным огромным текстом добавлять, что качать надо вот отсюда [сцылка], а не по первой ссылке с гугла. Даже сайт с трехлетней регой, пролезший в топ-3 выдачи гугла, не является нихуя гарантией.

Как бы вот. Всем спокойной ночи и аккуратнее с активаторами, штоб их.

➥ Windows 11 Tiny самая популярная сборка 2023 на английском


Error

Error:  

Оказываеться была проблемма в том, что при выборе разлела куда ее ставить 1ин из них был не 100мб, а 95мб и выскакивала ошибка поэтому.
Вчера установил под чистую. Обновился
Все классно, быстро работает.
Единственное хочу кнопку пуск заменить.
Ещё вопрос, разница для тяжелых игр и тд между 10й и 11 есть? А то говорят 11я хуже сейчас.
Спасибо всем !!!!
➥ Windows 10 x64 22H2 FULL 2023 by Flibustier 19045.2673


Platinum

Platinum:  

Сборку не нужно ни настраивать, ни возвращать что-либо. Установил и пользуйся. Подходит — отлично, нет — значит, нет.

Если Защитник, Xbox, обновление, Hyper-V, Магазин (или еще что-то вырезанное) нужны — то вернуть их вряд ли возможно. Но если времени свободного много — попробуйте что-либо вернуть в эту систему, это поле для личных экспериментов. И обязательно отпишитесь о результатах. 😉

И еще — сборка создана не для использования учетки Microsoft, она только для локальной учетки. 

Она так и называется «базовая сборка» — то есть, с базовыми функциями.

Все сборки by Revision — это коллективное творение, конфигурация каждой такой сборки согласовывается несколькими людьми. Эта сборка сделана из оригинала и без аудита — с использованием Dism. 

➥ Windows 10 x64 Pro Чистая базовая сборка 22H2 на русском

  • Максимальная длина пароля в windows
  • Макроскоп скачать бесплатно для windows
  • Максимальная длина папки в windows
  • Макс пейн не запускается на windows 10
  • Мак на windows виртуальная машина