НОВИНКА! Запусти текстовую игру-квест онлайн в 1 клик!

Не зарегистрирован?
Тебе сюда!
Регистрация!

Войди без регистрации
через соц. сеть!
ИЛИ
После входа тебе будут доступны дополнительные текстовые онлайн игры, активно взаимодействующие с игроком, а так же многопользовательские текстовые квесты.
Сейчас в онлайне только 49 гостей.

Партнеры Аперо:
"Коллекционер" - Страшный квест в Челнах!

В игре или на сайте ошибка?
Выдели текст и жми сюда или Ctrl+Enter
Разработчики скажут спасибо :)
Топ Разработка игр

Запусти текстовую игру-квест онлайн в 1 клик!

Проходи текстовые игры-квесты на свой вкус онлайн прямо со своего мобильника или в браузере ПК. Не требует установки. Не требует регистраций. Бесплатно. На уникальной платформе Аперо!

Кинь донат!

Поддержи проект! Каждый Ап стимулирует развитие и дает мощный пинок админу :)

`Аперо активно развивается в индустрии текстовых игр - квестов онлайн с 2014 года. За это время было зарегистрировано почти 20 тысяч участников, написано более 500 хороших и не очень игр, проспонсировано 5 конкурсов и разыгран призовой фонд на сумму около 12 тысяч рублей! Если хочешь чтобы платформа продолжала свое развитие или желаешь отблагодарить ее авторов, сделай свой вклад, кинь донат.

Кинуть донат Создать игру


ТОП-10 лучших игр Аперо:


# Игра Общее время Проходило игроков Скорость хода Реиграбельность Средний % прохождения Максимальный % прохождения Максимальные очки Среднее время игры
1 Поселок Бухарино 206.3 ч. 101 7.6 сек. 0.7 - - 2010 оч. 122.5 мин.
2 Путь рыцаря 127.3 ч. 186 3.8 сек. - - - - 41.1 мин.
3 Охотники и Собиратели (Мультиплеер) 69.5 ч. 106 10.4 сек. - 23.8% 85% 2839 оч. 39.3 мин.
4 Жадность (кликер) 63.1 ч. 36 2.4 сек. - 5.2% 100% - 105.2 мин.
5 Мертвец или стихийный колдунец 56.7 ч. 79 5.9 сек. 0.3 13.3% 100% 135 оч. 43.1 мин.
6 Потомок оружейника 49.6 ч. 48 5.4 сек. 0.9 19.3% 100% 67 оч. 62.0 мин.
7 Пять костей 41.9 ч. 39 7.7 сек. 1.5 33.7% 100% 1870 оч. 64.5 мин.
8 Вампиры 40.4 ч. 83 6.8 сек. 3.7 20.8% 100% 103 оч. 29.2 мин.
9 Домовой поможет 36.4 ч. 55 4.6 сек. 0.9 44.8% 100% 85 оч. 39.8 мин.
10 ПРЕЗИДЕНТ 35.7 ч. 43 4.7 сек. 0.3 - - - 49.8 мин.

ТОП-10 лучших игроков Аперо:


# Участник Опыт игры Вес лайка
1 Vetal123 107.8 ч. 5.95
2 Агент007 77.6 ч. 6.43
3 Mihaylo 75.2 ч. 9.91
4 StalkerSleem 53.9 ч. 12.00
5 Naitkin 53.1 ч. 5.54
6 Юлианна Амане 27.6 ч. 2.25
7 Ender Tp 26.1 ч. 3.12
8 Ajenta 23.0 ч. 1.11
9 PheniX 22.5 ч. 6.48
10 Пашка 21.8 ч. 7.72

Последние новости:


# Новость Опубликована Автор
1

Открывается конкурс текстовых игр с блэкджеком на Аперо 2019!

Сбор заявок на участие в конкурсе до 2-го июня 23:59 МСК.
Призовой фонд на данный момент составляет 1270 Апов. Спонсорские пожертвования приветствуются!
Полезные ссылки:
2 месяца назад Агент007

Последние текстовые игры-квесты:


Текстовый квест Помощник ИП

Помощник ИП

2.09 (~12.9Кб)
Агент007 (18 июля 2019)
Помощник ИП для дуэльных игр по переписке. Одновременные секретные сообщения.

« А я не понял, что это такое?»

Ersaider

Текстовый квест FlyTime Advanced

FlyTime Advanced

10.59 (~12.3Кб)
kirill222 (7 июня 2019)
Улучшенный FlyTime, с более гибкой системой управления часов. Улучшения: Данные игрока Документация для часов Применены последние возможности движка 1.0

« открытый код будет?»

Kamazok

« единственная концовка и куча багов. Я рассчитывал на большее»

Ersaider

« Качественный код»

Пашка

Текстовый квест Увлекательное путешествие во времени 1953 - 1964

Увлекательное путешествие во времени 1953 - 1964

1.62 (~7.5Кб)
Аленанана (7 июня 2019)
Неожиданно на наш сайт пробрался вирус, который решил перепутать всю информацию. Для того чтобы вернуть сайт в исходное состояние, надо вернуться в прошлое и пройти испытания.

« у меня есть пример викторины - с открытым исходным кодом, даже 2 игры. Хотите создать свою - ...»

Kamazok

« Незнаю о чем думали авторы создавая даже не игру. А... викторину... Хоть-бы оригинально подошли к ...»

Asadeas

« Прошёл игру до конца, всё-таки, было плохим решением ставить оценку игре, даже не пройдя ...»

Ersaider

Текстовый квест Волки и овца (Мультиплеер)

Волки и овца (Мультиплеер)

17.54 (~14.9Кб)
Агент007 (29 мая 2019)
4 волка должны загнать овцу к краю доски. Овца должна пройти мимо волков. Овца может двигаться в любом направлении, а волки только вперед.

« Прошу прощения. Не лагов, а долгой загрузки.»

Ersaider

« Возможно ли исправление лагов при ходе за ...»

Ersaider

« Игра хорошая, но... как лагает при переходах между локациями. Я понимаю что это не исправить, но так ...»

Alexeykuz

Текстовый квест Вялый Бандит

Вялый Бандит

17.15 (~12.2Кб)
Nikto (23 мая 2019)
Вопрос - ты отвечаешь, здесь надо думать, ты в роле бандита и всё такое короче.

« Игра конечно хорошая,но у меня она не вызывает хороших ощущений, потому что:1)когда я нахожусь в ...»

iKosh

« Забавная, жизнерадостная штука. Понравилось!»

Навий Лис

« Жизненно.»

Пашка

Текстовый квест Между мирами

Между мирами

6.32 (~17.7Кб)
Рейми (23 мая 2019)
это история про школьницу по имени Сецуко Канэко. Она обычная девушка, учась в обычной школе у неё много друзей. Однажды Сецуко нашла странную дверь. После этого её жизнь изменилась. А как именно зависит от тебя! дерзай!

« Ну... игра не доделана, грамматика подхрамывает, и почему какая-то сэцуко колено делает в России? ...»

Alexeykuz

« спасибо всем за хорошие отзывы. В данный момент, я пишу вторую часть. И я вам раскрою секрет... Мне ...»

Рейми

« круто, жаль не до конца.хороший выбор действий и сюжет :)»

Юлианна Амане

Последние комментарии:

# Автор Комментарий О чем/Кому Когда
1 Новелкин Ещё мелкая придирка, "Открыть последнию запись", в дневнике открывает страницу 39, а не квестовую запись 40 про то сколько дней осталось StalkerSleem 1 день назад
2 Пашка +7.72 Спасибо! ПРИМЕР ИГРЫ В КОСТИ 1 день назад
3 Kamazok a ny sam sapishi igry - raz legko
gotovble primerbl s otrbltblm kodom - est
The Art 5 дней назад
4 The Art +2.00 Прикольно, хех... Шоколадный маньяк 5 дней назад
5 The Art +2.00 Ну... Прикольно? Это не игра 5 дней назад
6 The Art +2.00 Если честно... Слишком легко .-. FlyTime 2 5 дней назад
7 Kamazok не туда пишешь :) AbrakaDaniel 6 дней назад
8 AbrakaDaniel AbrakaDanielhttp://apero.ruГлавнаяИграйонлайн!Конкурсоткрыт!СообщенияУчастникиМагазин(2)Создайигру!ДокументацияЗаданияiFiction.ruМыВКонтактеПрофильПривет,AbrakaDanielСейчасвонлайнеAbrakaDaniel(Vetal123)и20гостей.ПартнерыАперо:"Коллекционер"-СтрашныйквествЧелнах!Вигреилинасайтеошибка?ВыделитекстижмисюдаилиCtrl+EnterРазработчикискажутспасибо:)Навигация:http://apero.ru/Участники/Vetal123Vetal123-страницаучастникааперо-сообществаПрофильнеактивирован.Еслиэтотвойпрофиль-проверьe-mail,указанныйприрегистрации,иперейдипоссылкедляактивации.Последниекомментарии:1AbrakaDanielhttp://apero.ruГлавнаяИграйонлайн!Конкурсоткрыт!СообщенияУчастникиМагазин(2)Создайигру!ДокументацияЗаданияiFiction.ruМыВКонтактеПрофильПривет,AbrakaDanielСейчасвонлайнеAbrakaDaniel(Vetal123)и20гостей.ПартнерыАперо:"Коллекционер"-СтрашныйквествЧелнах!Вигреилинасайтеошибка?ВыделитекстижмисюдаилиCtrl+EnterРазработчикискажутспасибо:)Навигация:http://apero.ru/Участники/Vetal123Vetal123-страницаучастникааперо-сообществаПрофильнеактивирован.Еслиэтотвойпрофиль-проверьe-mail,указанныйприрегистрации,иперейдипоссылкедляактивации.Последниекомментарии:1AbrakaDanielhttp://apero.ruГлавнаяИграйонлайн!Конкурсоткрыт!СообщенияУчастникиМагазин(2)Создайигру!ДокументацияЗаданияiFiction.ruМыВКонтактеПрофильПривет,AbrakaDanielСейчасвонлайнеAbrakaDaniel(Vetal123)и20гостей.ПартнерыАперо:"Коллекционер"-СтрашныйквествЧелнах!Вигреилинасайтеошибка?ВыделитекстижмисюдаилиCtrl+EnterРазработчикискажутспасибо:)Навигация:http://apero.ru/Участники/Vetal123Vetal123-страницаучастникааперо-сообществаПрофильнеактивирован.Еслиэтотвойпрофиль-проверьe-mail,указанныйприрегистрации,иперейдипоссылкедляактивации.Последниекомментарии:1AbrakaDanielАннотация:КнигапосвященавнутреннемуустройствуиалгоритмамработыосновныхкомпонентовоперационнойсистемыMicrosoftWindows—WindowsServer2003,WindowsXPиWindows2000—ифайловойсистемыNTFS.Детальнорассмотренысистемныемеханизмы:диспетчеризацияловушекипрерываний,DPC,APC,LPC,RPC,синхронизация,системныерабочиепотоки,глобальныефлагиидр.Такжеописываютсявсеэтапызагрузкиоперационнойсистемыизавершенияееработы.Bчетвертомизданиикнигибольшевниманияуделяетсяглубокомуанализуиустранениюпроблем,из-закоторыхпроисходиткрахоперационнойсистемыилииз-закоторыхеенеудаетсязагрузить.Крометого,рассматриваютсядеталиреализацииподдержкиаппаратныхплатформAMDx64иIntelIA64.Книгасостоитиз14глав,словарятерминовипредметногоуказателя.Книгапредназначенасистемнымадминистраторам,разработчикамсерьезныхприложенийивсем,ктохочетпонять,какустроенаоперационнаясистемаWindows.Названиявсехкоманд,диалоговыхоконидругихинтерфейсныхэлементовоперационнойсистемыприведеныкакнаанглийскомязыке,такинарусском.ВерсияFb2редакции—1.5.Обошибкахпросьбасообщатьпоадресу—general2008@ukr.net.---------------------------------------------М.Руссинович,Д.СоломонВнутреннееустройствоMicrosoftWindows(главы1–4)WindowsServer™2003,WindowsXPиWindows20004-еизданиеПредысторияЯвновьпризнателенДэвидуСоломону(DavidSolomon)иМаркуРуссиновичу(MarkRussinovich)зато,чтоонипредоставилимневозможностьсказатьнесколькословоновомизданииихкниги«ВнутреннееустройствоMicrosoftWindows».Прошлоужеболеетрехлетсмоментавыходапоследнегоизданияэтойкниги,изаэтовремянасветпоявилисьдвавыпускаоперационнойсистемыWindows—оченьзначимыеобновленияклиентскойисервернойсистем.Передавторамистоялидвезадачи,которыепостоянноусложняются:отслеживаниеэволюционногоразвитиясистемыMicrosoftWindowsNTидокументированиетого,какменяласьреализацияеекомпонентоввкаждойверсии.Bэтомсмыслеавторыпроделалипростовыдающуюсяработу.(Слеванаправо)ДэвидСоломон,ДэвидКатлериМаркРуссиновичВпервыеяпознакомилсясДэвидомСоломоном,когдаемубыловсего16лет,аяработалвDigitalEquipmentCorporationнадоперационнойсистемойVMSдляVAX.Cтехпоронучаствовалвразработкеоперационныхсистем,атакжепреподавалвэтойобласти.CМаркомРуссиновичемяпознакомилсяпозже,ноужезадолгодоэтогобылнемалонаслышаноегоглубокихпознанияхвобластиоперационныхсистем.BчислеегозаслугверсияфайловойсистемыNTFS,которуюонзаставилработатьвMicrosoftWindows98,и«живой»отладчикядраWindows,позволяющийзаглянутьвнутрьсистемыWindowsвпроцессееевыполнения.ИстокиWindowsNTвосходяткоктябрю1988года,когдабылорешеносоздатьпереносимуюоперационнуюсистему,совместимуюсOS/2,поддерживающуюPOSIXимногопроцессорнуюобработку,обладающуювысокойзащищенностью,надежностьюиинтегрированнымисредствамиработывсетях.CприходомWindows3.0иееколоссальнымуспехомзаявленныецелинесколькоизменились:совместимостьсOS/2былаперенесенасуровнявсейсистемынауровеньотдельнойподсистемы.Поначалумыполагали,чтосумеемсоздатьWindowsNTзапарулет,новдействительностиееперваяверсиявышлалишьчерезчетыресполовинойгода—летом1993-го.ЭтаверсияподдерживалапроцессорыInteli386,Inteli486иMIPSR4000.ШестьнедельспустямыввелиподдержкуидляпроцессоровDigitalAlpha.ПерваяверсияWindowsNTполучиласьболеегромоздкойимедленной,чеможидалось,такчтоследующейвехойсталпроектDaytona(такназываетсяавтострадавоФлориде).Главнойцельювэтойверсиибылоуменьшениеразмерасистемы,повышениееебыстродействияи,разумеется,надежности.ЧерезполгодапослевыпускаWindowsNT3.5осенью1994-гомыподготовилиWindowsNT3.51,котораяпредставляласобойобновленнуюверсиюсдополнительнойподдержкойпроцессораIBMPowerPC.ТолчкомксозданиюследующейверсииWindowsNTсталожеланиесделатьпользовательскийинтерфейс,совместимыйсWindows95,ивключитьтехнологииCairo,уженаходившиесявразработкепарулет.Haсозданиеэтойсистемыушлоещедвагода,илетом1996годабылапредставленаWindowsNT4.0.НазваниеследующейверсииNTбылоизмененонаWindows2000.Онасталапоследнейсистемой,длякоторойодновременновыпускалиськлиентскаяисервернаяверсии.Windows2000былапостроенанатойжетехнологииWindowsNT,чтоипредыдущиеверсии,нообладалановойважнойфункциональностью,поддерживая,вчастности,ActiveDirectory.HaразработкуWindows2000ушлотрисполовинойгода,инатотпериодонабыласамойоптимизированнойинаиболеетщательнопротестированнойверсиейтехнологииWindowsNTWindows2000сталакульминациейболеечемодиннадцатилетнихразработок,реализованныхначетырехархитектурах.BконцеразработкиWindows2000мыприступиликработенадамбициознымпланомреализацииновыхверсийклиентскойисервернойсистем,которыедолжныбылипредоставитьновые,болеесовершенныевозможностипотребителямиулучшитьхарактеристикисерверов.Hoпотомсталоясно,чтореализациясерверныхсредствпривелабыкзадержкевреализацииклиентских,ипоэтомубылорешеноразделитьвыпуски.Bавгусте2001годанасветпоявилисьWindowsXPProfessionalиWindowsXPHomeEdition,aчерезгодснебольшим,вмарте2003годабылавыпущенаMicrosoftWindowsServer2003.ПомимоархитектурыIntelx86,этисистемыподдерживалиIntelIA64,благодарячемуWindowsNTвпервыевышланастезю64-разрядныхвычислений.Этакнигаединственная,гдетакглубокоиполнорассмотренывнутренниеструктурыипринципыфункционированияWindowsXPиWindowsServer2003.Крометого,онапредлагаетзаглянутьвбудущее—переводWindowsна64-разрядные«рельсы»,т.е.наееподдержкуархитектурx64(AMD64)иIntelEM64T,объявленныхAMDв2003годуиIntelвфеврале2004годасоответственно.Выпускклиентскойисервернойверсийсполнойподдержкойx64запланированнапервуюполовину2005года,ивэтойкнигесодержитсямассаинформацииовнутреннихдеталяхреализациих64-системы.Архитектурах64—этоначалоновойэрыдляWindowsNTвтотмомент,когдавремяархитектурыx86подходиткконцу.Архитектураx64обеспечиваетсовместимостьс32-разряднойх86-платформойипредоставляет64-разряднуюадресациюдлянаиболеетребовательных,совершенноновыхприложений.Этопозволитсохранитьинвестициив32-разрядноепрограммноеобеспечение,втожевремявдохнувновуюжизньвWindowsNTнаближайшеедесятилетиеилидаженаболеедлительныйпериод.ХотяназваниеNT-системызапоследниенескольколетнеоднократноменялось,онапо-прежнемуполностьюосновананаисходнойкодовойбазеWindowsNT.Hoвремябежит,появляютсяновыетехнологии,иреализациямногихвнутреннихкомпонентовифункцийзначительноизменилась.Авторыпроделаливнушительнуюработу,собравстолькодетальнойинформацииокодовойбазеWindowsNTиеереализацияхвразныхвыпускахнаразныхплатформах,атакжесоздавпримерыиутилиты,которыепомогаютчитателюразобратьсявтом,какработаюткомпонентыиподсистемыWindows.Экземплярэтойкнигидолженлежатьнастолеукаждогоразработчикасерьезногопрограммногообеспечения.ДэвидH.Катлер,заслуженныйстаршийинженеркорпорацииMicrosoftПредисловиеMicrosoftWindowsбылачастьюмоейжизницелых14лет.Заэтовремя—отверсиикверсии—нашаоперационнаясистемаразвиваласьвширьивглубь.СегодняработанадWindows—одинизсамыхважныхисложныхпроектоввмире.BвыпускеWindowsучаствуютболее5000инженеров.СредипользователейWindowsестьпредставителиужепочтивсехкультур,онаиспользуетсякакнакрупныхпредприятиях,такималенькимидетьми.ПользователиWindowsпостояннотребуютеесовершенствованияпрактическивовсехсферах—отэффективнойработынакрупнейшихсерверахдоприменениявдошкольномобучении.Windowsпоставляетсявсамыхразныхипостасях—отвстраиваемыхверсийивыпусковдлямедиа-центровдоредакцийдляцентровобработкиданных.ВсеэтипродуктыопираютсянаодниитежебазовыекомпонентыWindows,которыеразвиваютсяисовершенствуютсявкаждойновойверсии.ЭтофундаментальнаякнигаовнутреннемустройствебазовыхкомпонентовWindows.ЕсливыхотитекакможнобыстрееосвоитьпринципывнутреннейработыWindows,тогдаэтакнигадлявас.Освоениевсехчастейстольосновательногопродукта—задачаустрашающая.Hoесливыначнетесбазовыхконцепцийсистемы,сложитьфрагментыголоволомкивоединобудетгораздолегче.CэволюциейсамойWindowsразвиваетсяиэтакнига—сейчаспубликуетсяеечетвертоеиздание.МыужедавноиспользуемеедляобученияновыхсотрудниковMicrosoft,такчтопредлагаемыевамматериалыпроверенынапрактике.Есливывродеменя,значит,вамтоженравитсяразбиратьсявтом,какустроенывещи.Чтениекнижектипа«какиспользоватьто-тоитото»меняникогданеудовлетворяло.Когдапонимаешь,какименноустроенавещь,пользуешьсяеюгораздоэффективнееи,честноговоря,сбольшимудовольствием.ЕсливасинтересуетWindows«сизнанки»,вывыбралиподходящуюкнигу.ДэвидиМаркпроделалипревосходнуюработу,написавкнигуотехнической«изнанке»Windows.Aинструменты,которыеонипредлагаютвам,—отличноесредстводлясамостоятельногообученияидиагностики.Прочитавэтукнигу,выбудетегораздолучшепонимать,каквзаимодействуютмеждусобойразличныекомпонентыиподсистемы,какиеусовершенствованиявнесенывновуюверсиюикаквыжатьизнихмаксимумвозможного.Этобылдолгийпуть—ионвсеещепродолжается.Такчтооткрывайтекнигу,азаодноикапот,подкоторымбьетсясердцеоднойизсамыхпотрясающихоперационныхсистем.ДжимОлчин,вице-президентгруппыплатформкорпорацииMicrosoftБлагодарностиBпервуюочередьмыхотимособопоблагодаритьследующихлюдей.•ДэйваКатлера(DaveCutler),заслуженногостаршегоинженераипервогоархитектораMicrosoftWindowsNT.ДэйвразрешилДэвидуСоломону(DavidSolomon)доступкисходномукодуивсяческиподдерживалегопреподавательскуюдеятельность,посвященнуюобъяснениюдеталейвнутреннегоустройстваWindowsNT,атакжеегоработунадвторымитретьимизданиемкниги.Помиморецензированияглавыпопроцессамипотокам,ДэйвответилнамассувопросовобархитектуреядраинаписалобисториисозданияWindowsдлянашейкниги.•ДжимаОлчинаJimAllchin),нашегоглавногоспонсора,—запредисловиекэтойкнигеизаотстаиваниеинтересовнашегоделавMicrosoft.•РобаШорта(RobShort),вице-президента,которыйпозаботилсяотом,чтобынампредоставилиресурсыидоступкнужнымлюдям.МытакжевыражаемпризнательностьдвумразработчикамизотделаWindowsзаподготовкуновыхматериалов,включенныхвэтоиздание:•АдриануМаринеску(AdrianMarinescu),которыйнаписалзаметноразросшийсяразделподиспетчерукучвглаве,гдерассматриваетсядиспетчерпамяти.•СамеруАрафеху(SamerArafeh),которыйпредоставилматериалыпоWow64.Спасибонашемустаромуприятелю,ДжеффриРихтеруJeffreyRichter),скоторыммычастовместеобедаем,заврезку«Какнасчет.NETиWinFX?»вглаве1изапостоянноенапоминаниеотом,какмалолюдей,по-настоящемуинтересующихсятем,очеммыговоримвсвоейкниге.Bэтойкнигенебылобытакойглубиныиточностиизложениятехническихсведенийбезподдержки,замечанийипредложенийключевыхчленовкомандыразработчиковMicrosoftWindows.Вотэтилюди:Былиидругие,ктоотвечалнанашивопросывкоридорахиликафетериях,—еслимываспропустили,пожалуйста,проститенас!МытакжевыражаемблагодарностьДжеймиХанраханJamieHanrahan)изAziusDeveloperTraining(www.azius.com),котораявсоавторствесДэвидомподготовилаучебныйкурсповнутреннейархитектуреисходнойверсииWindows.Haосновеэтогокурсабылонаписановтороеизданиеэтойкниги.Джейми,укоторойнастоящийталантдоходчивообъяснятьсложнейшиевещи,предоставиланамотдельныематериалы,атакжерядсхемииллюстраций.СпасибоДэйвуПроберту(DaveProbert)зато,чторазместилвсетинашичерновыематериалыдляраспространениясредирецензентоввнутриMicrosoft.БлагодаримДжонатанаСлавза(JonathanSloves)изAMD,спомощьюкоторогонампредоставилитестовыесистемыAMD64;ониоченьпомоглинамвнаписанииматериаловпо64-разряднойархитектуреивпереносерядаутилитSysinternalsнаплатформуx64.Наконец,мыхотимвыразитьблагодарностьследующимсотрудникамMicrosoftPressзаихвкладвэтукнигу.•РобинуВан-Штеенбергу(RobinvanSteenburgh),рецензентуиздательства,затерпениевработеснаминадэтимпроектом.•СаллиСтикни(SallyStickney),котораянапервыхпорахпо-прежнемубыларедакторомнашегопроекта,нопотомеезакрутилводоворотадминистративныхдел.Мыоченьскучалибезвас!•ВалериВулли(ValerieWoolley),котораяпринялабраздыправленияотСаллиисталанашимновымредакторомпроекта.Вызамечательнаяинетакаярезкая,какСалли!•РоджеруЛебланку(RogerLeBlanc),которыйодолелвсеглавыисумелсократитьвнихтекст,найтинесогласованностиивообщедовестинашурукописьдовысокихстандартовMicrosoftPress.ДэвидСоломониМаркРуссиновичсентябрь2004г.ВведениеЧетвертоеизданиеэтойкнигиориентированонаквалифицированныхспециалистов(программистов,разработчиковисистемныхадминистраторов),желающихразобратьсявпринципахвнутреннейработыосновныхкомпонентовоперационныхсистемMicrosoftWindows2000,MicrosoftWindowsXPиMicrosoftWindowsServer2003.Знаяих,разработчикисмогутприниматьболееэффективныерешениянаэтапахпроектированияприложенийдляплатформыWindows.Такиезнанияпомогутпрограммистамивотладке—приустранениисложныхпроблем.Информация,изложеннаявкниге,будеттакжеполезнасистемнымадминистраторам:пониманиетого,какустроенаиработаетоперационнаясистема,упроститимоптимизациюсвоихсистемиустранениенеполадоквслучаекаких-либосбоев.Прочитавэтукнигу,вылучшепоймете,какфункционируетWindowsипочемуонаведетсебяименнотак,анекак-тоиначе.СтруктуракнигиПервыедвеглавызакладываютфундамент,вводятерминыиконцепции,используемыевовсейкниге.Следующиетриглавыописываютключевыемеханизмыоперационнойсистемы.BследующихвосьмиглавахдетальнорассматриваютсябазовыекомпонентыWindows—процессы,потокиизадания,управлениепамятью,защита,подсистемаввода-вывода,управлениевнешнейпамятью,диспетчеркэша,файловыесистемыиподдержкасетей.Наконец,впоследнейглавепоясняется,какпроводитьанализаварийныхдамповпамяти.ИсториянаписаниякнигиЭточетвертоеизданиекниги,котораяизначальноназывалась«InsideWindowsNT»(MicrosoftPress,1992)ибыланаписанаХеленКастер(HelenCuster)ещедовыпускаMicrosoftWindowsNT3.1.ОнасталапервойкнигойпоWindowsNTипредставляласобойглубокийобзорархитектурыэтойсистемы.Второеиздание,«InsideWindowsNT»(MicrosoftPress,1998),былонаписаноДэвидомСоломоном.BнеговошлановаяинформацияпоWindowsNT4.0,асамакнигасталагораздоболееглубокой.Третьеиздание,«InsideWindows2000»(MicrosoftPress,2000),былоподготовленоДэвидомСоломономиМаркомРуссиновичем.Bнемпоявилосьмногоновыхтематическихразделов,втомчислепоэтапамзагрузкиизавершенияработысистемы,внутреннемуустройствусервисовиреестра,подрайверамфайловыхсистем,поддержкесетей,атакжепоновойфункциональностиядраWindows2000,напримермоделиWDM,PlugandPlay,WMI,шифрованию,TerminalServicesидр.ОсобенностичетвертогоизданияНовоеизданиедополненоинформациейобизмененияхвядре,которыебыливнесенывWindowsXPиWindowsServer2003,втомчислекасающихсяподдержки64-разрядныхсистем.Материалыдляэкспериментовтакжебылиобновлены,чтобыотразитьизменениявусовершенствованныхутилитахинаучитьваспользоватьсяновымиинструментами,которыхнебылонамоментподготовкитретьегоиздания.ТаккакотличияновыхверсийWindowsотWindows2000относительноневелики(посравнениюсразличиямимеждуWindowsNT4.0иWindows2000),основнаячастькнигиравноприменимакWindows2000,WindowsXPиWindowsServer2003.Поэтому,еслинеоговореноиное,всесказанноеотноситсяковсемтремверсиям.ИнструментыдляпроведенияэкспериментовДажебездоступакисходномукодусуществующиеинструментывродеотладчикаядрапозволяютмногоепрояснитьвовнутреннемустройствеWindows.Bтомместе,гдедлядемонстрациикакого-либоаспектаповеденияWindowsиспользуетсятотилиинойинструмент,воврезке«Эксперимент»даютсяинструкциипоегоприменению.Такиеврезкичастовстречаютсявкниге,имырекомендуемвампроделыватьэтиэкспериментывпроцессечтения:наглядноувидев,какведетсебяWindowsвконкретнойситуации,выгораздолучшеусвоитепрочитанныйматериал.Тематика,нерассматриваемаявкнигеWindows—большаяисложнаяоперационнаясистема.Нельзяобъятьнеобъятное,ипоэтомуосновноевниманиевкнигеуделяетсятолькобазовымсистемнымкомпонентам.Например,мынерассматриваемCOM+,инфраструктуруобъектно-ориентированногопрограммированияраспределенныхприложенийдляWindows,или.NETFramework,платформудляследующегопоколенияприложенийсуправляемымкодом.ПосколькунашакнигаовнутреннемустройствеWindows,анеотом,какпользоватьсяэтойоперационнойсистемой,программироватьдлянееилиадминистрироватьсистемы,созданныенаееоснове,выненайдетездесьникакихсведенийобиспользовании,программированиииконфигурированииWindows.ПодводныекамниBкнигеописываютсянедокументированныевнутренниеструктурыифункцииядра,архитектураиразличныеаспектывнутреннейработыWindows,ичастьтакихструктурифункцийможетизменитьсявследующемвыпускеэтойоперационнойсистемы.(Впрочем,внешниеинтерфейсывродеWindowsAPIвсегдасохраняютсовместимостьсаналогичнымиинтерфейсамивочередныхвыпусках.)Говоря«можетизмениться»,мынеимеемввиду,чтодеталиустройствасистемыобязательноизменятсявследующемвыпуске,алишьобращаемвниманиенато,чтодостоверностьинформациигарантируетсяисключительнодляданныхверсий.Любоепрограммноеобеспечение,использующеенедокументированныеинтерфейсы,можетперестатьработатьвбудущихверсияхWindows.Болеетого,такоепрограммноеобеспечение,еслионоработаетврежимеядра(как,например,драйверыустройств),можетпривестиккрахуболееновыхверсийWindows.ТехническаяподдержкаМыприложилимаксимумусилий,чтобынедопуститьнеточностейиошибоквкниге.Еслиувасвозникнуткакие-либопроблемыиливопросы,пожалуйста,обращайтесьпоадресам,указаннымвследующихдвухразделах.ОтавторовЭтакнигаотнюдьнесовершенна.Несомненновнейестькакие-тонеточности;можетбыть,мыупустиличто-товажное.Есливынайдетето,чтосчитаетеошибочным,илиесливысочтете,чтовкнигуследуетвключитьдополнительныйматериал,пожалуйста,пошлитесвоесообщениепоадресуwindowsinternals@sysinternals.com.Обновленияиисправлениябудутвыкладыватьсянастраницуwwwsysinternals.com/windowsinternals*ОтMicrosoftPressMicrosoftпубликуетисправленияккнигампоадресуhttp://www.microsoftcom/learning/support.ДляпрямогоподключениякMicrosoftLearningKnowledgeBaseивводазапросапопроблеме,скоторойвыстолкнулись,заходитенастраницуhttp://www.microsoft.comflearning/support/search.asp.Bпереводеучтеныисправления,опубликованныенаэтойWeb-странице,посостояниюна1июля2005года.Прим.перев.ГЛABA1КонцепциииинструментыBэтойглавемыпознакомимвассосновнымиконцепциямиитерминамиоперационнойсистемыMicrosoftWindows,которыебудутиспользоватьсявпоследующихглавах,втомчислесWindowsAPI,процессами,потоками,виртуальнойпамятью,режимомядраипользовательскимрежимом,объектами,описателями(handles),защитой,реестром.Мытакжерасскажемобинструментах,спомощьюкоторыхвысможетеисследоватьвнутреннееустройствоWindows.Kнимотносятся,например,отладчикядра,оснасткаPerformanceиважнейшиеутилитыссайтаwww.sysinternals.com.Крометого,мыпоясним,какпользоватьсяWindowsDeviceDriverKit(DDK)иPlatformSoftwareDevelopmentKit(SDK)вкачествеисточникадополнительнойинформацииовнутреннемустройствеWindows.Выдолжныхорошопониматьвсе,чтонаписановэтойглавевостальнойчастикнигимыпредполагаемименнотак.ВерсииоперационныхсистемWindowsЭтакнигаохватываеттрипоследниеверсииоперационнойсистемыMicrosoftWindows,основанныенакодовойбазеWindowsNT:Windows2000,WindowsXP(32-и64-разрядныеверсии)иWindowsServer2003(32-и64-разрядныеверсии).Текстотноситсяковсемтремверсиям,еслинеоговореноиное.Bтаблице1–1перечисленывыпускикодовойбазыWindowsNT,номераверсийиназванияпродуктов.WindowsNTиWindows95ПрипервомвыпускеWindowsNTкомпанияMicrosoftдалаяснопонять,чтоэтодолгосрочнаязаменаWindows95(иеепоследующихвыпусков—Windows98иWindowsMillenniumEdition).ВотсписокнекоторыхархитектурныхразличийипреимуществWindowsNT(иеепоследующихвыпусков)надWindows95(иеепоследующимивыпусками).•WindowsNTподдерживаетмногопроцессорныесистемы,aWindows95—нет.•ФайловаясистемаWindowsNTподдерживаетсредствазащиты,напримеруправлениеизбирательнымдоступом(discretionaryaccesscontrol).BфайловойсистемеWindows95этогонет.•WindowsNT—полностью32-разрядная(атеперьи64-разрядная)операционнаясистема,внейнет16-разрядногокода,крометого,которыйпредназначендлявыполнения16-разрядныхWindows-приложений.Windows95содержитбольшойобъемстарого16-разрядногокодаизпредшествующихоперационныхсистем—Windows3.1nMS-DOS.•WindowsNTполностьюреентерабельна,амногиечастиWindows95нереентерабельны(восновномэтокасается16-разрядногокода,взятогоизWindows3.1).Большинствофункций,связанныхсграфикойиуправлениемокнами(GDIиUSER),включаютименнонереентерабельныйкод.Когда32-разрядноеприложениевWindows95пытаетсявызватьсистемныйсервис,реализованныйкакнереентерабельный16-разрядныйкод,онодолжносначалаполучитьобщесистемнуюблокировку(илимьютекс),чтобыпредотвратитьвходдругихпотоковвнереентерабельнуюкодовуюбазу.Ещехуже,что16-разрядноеприложениеудерживаеттакуюблокировкувтечениевсеговременисвоеговыполнения.Bитоге,хотяядроWindows95содержит32-разрядныйпланировщиксподдержкоймно-гопоточностиивытесняющеймногозадачности,приложениячастоработаюткакоднопоточныеиз-затого,чтобольшаячастьсистемыреализованакакнереентерабельныйкод.•WindowsNTпозволяетвыполнять16-разрядныеWindows-приложенияввыделенномадресномпространстве,aWindows95всегдавыполняеттакиеприложениявобщемадресномпространстве,вкоторомонимогутнавредитьдругдругуипривестикзависаниюсистемы.•Разделяемая(общая)памятьпроцессавWindowsNTвиднатолькотемпроцессам,которыеимеютпроекциюнаодинитотжеблокразделяемойпамяти.BWindows95всяобщаяпамятьвиднаидоступнадлязаписивсемпроцессам.Такимобразом,любойпроцессможетчто-тозаписатьиповредитькакие-тоданныевобщейпамяти,используемыедругимипроцессами.•Некоторыекритическиважныестраницыпамяти,занимаемыеоперационнойсистемойWindows95,доступныдлязаписиизпользовательскогорежима,азначит,обычноеприложениеможетповредитьсодержимоеэтихстраниципривестиккрахусистемы.Единственное,чтоумеетWindows95ичегоникогданесмогутделатьоперационныесистемынаосновеWindowsNT,—выполнятьвсестарыепрограммыдляMS-DOSиWindows3.1(аименнопрограммы,требующиепрямогодоступакоборудованию),атакже16-разрядныедрайверыустройствMS-DOS.ЕслиоднойизосновныхцелейразработкиWindows95была100%-ясовместимостьсMS-DOSиWindows3.1,тоисходнойцельюразработкиWindowsNT—возможностьвыполнениябольшинствасуществующих16-разрядныхприложенийприусловиисохраненияцелостностиинадежностисистемы.БазовыеконцепцииитерминыBкнигебудутчастовстречатьсяссылкинаконцепциииструктуры,скоторыминекоторыечитатели,возможно,незнакомы.Здесьмыопределимсясиспользуемойвдальнейшемтерминологией.WindowsAPIЭтосистемныйинтерфейспрограммированиявсемействеоперационныхсистемMicrosoftWindows,включаяWindows2000,WindowsXP,WindowsServer2003,Windows95,Windows98,WindowsMillenniumEdition(Me)иWindowsCE.КаждаяоперационнаясистемареализуетразноеподмножествоWindowsAPI.Windows95,Windows98,WindowsMeиWindowsCEвэтойкнигенерассматриваются.ПРИМЕЧАНИЕWindowsAPIописываетсявдокументацииPlatformSoftwareDevelopmentKit(SDK).(См.раздел«PlatformSoftwareDevelopmentKit(SDK)»далеевэтойглаве.)Этудокументациюможнобесплатнопросмотретьнасайтеmsdn.microsoft.com.ОнатакжепоставляетсясMicrosoftDeveloperNetwork(MSDN)всехуровнейподписки.(MSDN—этопрограммаMicrosoftдляподдержкиразработчиков.Подробностисм.насайтеmsdn.microsqft.com.)Отличноеописаниетого,какпрограммироватьсиспользованиембазовогоWindowsAPI,см.вчетвертомизданиикнигиДжеффриРихтераJeffreyRichter)«MicrosoftWindowsдляпрофессионалов»(РусскаяРедакция,2000).Допоявления64-разрядныхверсийWindowsXPиWindowsServer2003интерфейспрограммирования32-разрядныхверсийоперационныхсистемWindowsназывалсяWin32API,чтобыотличатьегоотисходного1разрядногоWindowsAPI.Bэтойкнигетермин«WindowsAPI»относитсяк32разрядномуинтерфейсупрограммированияWindows2000,атакжек32и64разрядныминтерфейсампрограммированияWindowsXPиWindowsServer2003.WindowsAPIвключаеттысячивызываемыхфункций,которыесгруппированывследующиеосновныекатегории:•базовыесервисы(BaseServices);•сервисыкомпонентов(ComponentServices);•сервисыпользовательскогоинтерфейса(UserInterfaceServices);•сервисыграфикиимультимедиа(GraphicsandMultimediaServices);•коммуникационноевзаимодействиеисовместнаяработа(MessagingandCollaboration);•сети(Networking);•Webсервисы(WebServices).Основноевниманиевнашейкнигеуделяетсявнутреннемуустройствуключевыхбазовыхсервисов,вчастностиподдержкипроцессовипотоков(threads),управленияпамятью,вводаыводаизащиты.Какнасчет.NETиWinFXETFrameworkсостоитизбиблиотекиклассов,называемойFrameworkClassLibrary(FCL),иобщеязыковойисполняющейсреды(CommonLanguageRuntime,CLR),котораяпредоставляетсредудлявыполненияуправляемогокодастакимивозможностями,каккомпиляцияпотребованию(justimecompilation,JITcompilation),верификациятипов,сбормусораизащитапоправамдоступакода(codeaccesssecurity).БлагодаряэтомуCLRсоздаетсредуразработки,котораяповышаетпродуктивностьтрудапрограммистовиуменьшаетвероятностьпоявленияраспространенныхошибокпрограммирования.Отличноеописание.NETFrameworkиеебазовойархитектурысм.вкнигеДжеффриРихтера«ПрограммированиенаплатформеMicrosoft.NETFramework»(РусскаяРедакция,2003).CLRреализованакакклассическийСОМсервер,кодкоторойхранитсявстандартнойWindowsDLLпользовательскогорежима.Фактическивсекомпоненты.NETFrameworkреализованыкакстандартныеWindowsDLLпользовательскогорежима,занимающиеуровеньповерхнеуправляемыхфункцийWindowsAPL(Никакиекомпоненты.NETFrameworkнеработаютврежимеядра.)Haрис.1показанывзаимосвязиэтихкомпонентов«новыйWindowsAPI».Эторезультатэволюционногоразвития.NETFramework,котораябудетпоставлятьсясверсиейWindowsподкодовымназвание«Longhorn»,следующимвыпускомWindows.WinFXтакжеможноустановитьвWindowsXPиWindowsServer2003.WinFXобразуетфундаментдляприложенийследующегопоколения,создаваемыхдляоперационнойсистемыWindows.ИсториясозданияWin32APIИнтересно,чтопоначалуWin32нерассматривалсякакинтерфейспрограммированиядляMicrosoftWindowsNT.ПосколькупроектWindowsNTначиналсякакзаменаOS/2версии2,основныминтерфейсомпрограммированиябыл32азрядныйOS/2PresentationManagerAPI.ОднакогодспустянарынкепоявиласьMicrosoftWindows3.0,быстроставшаяоченьпопулярной.BрезультатеMicrosoftсменилакурсиперенацелилапроектWindowsNTнабудущуюзаменусемействапродуктовWindows,анеOS/2.ВотнаэтомтоперепутьеивсталвопрососозданииWindowsAPIоэтогоWindowsAPIсуществовалтолькокак16разрядныйинтерфейс.ХотявWindowsAPIдолжнобылопоявитьсямногоновыхфункций,отсутствующихвWindows3.1,MicrosoftрешиласделатьновыйPIповозможностисовместимымсименамифункций,семантикойитипамиданныхв16разрядномWindowsAPI,чтобымаксимальнооблегчитьбремяпереносасуществующих16разрядныхWindowsприложенийвWindowsNTПоэтомутот,кто,впервыеглядянаWindowsAPI,удивляется,почемумногиеименаиинтерфейсыфункцийкажутсяпротиворечивыми,долженучитывать,чтооднойизпричинтакойпротиворечивостибылостремлениесделатьWindowsAPIсовместимымсостарым16разряднымWindowsAPI.Сервисы,функцииипроцедурыНесколькотерминоввдокументацииWindowsдляпользователейипрограммистовимеетразныйсмыслвразныхконтекстах.Например,понятие«сервис»(service)можетотноситьсяквызываемойфункцииоперационнойсистемы,драйверуустройстваилисерверномупроцессу(впоследнемслучаесервисчастоназываютслужбой).Нижепоказано,чтоозначаютподобныетерминывэтойкниге.•ФункцииWindowsAPIДокументированные,вызываемыеподпрограммывWindowsAPI,напримерCreateProcess,CreateFileиGetMessage.•Неуправляемые(«родные»)системныесервисы(илиисполняемыесистемныесервисы)Недокументированныенизкоуровневыесервисыоперационнойсистемы,которыеможновызыватьвпользовательскомрежиме.Так,NtCreateProcessэтовнутрисистемныйсервис,вызываемыйWindowsфункциейCreateProcessприсозданииновогопроцесса(Определениенеуправляемыхфункцийсм.вразделе«Диспетчеризациясистемныхсервисов»главы3.)•Функции(илипроцедуры)ядраПодпрограммывнутриоперационнойсистемыWindows,которыеможновызыватьтольковрежимеядра(определениемыдадимчутьпозже).Например,ExAllocatePoolпроцедура,вызываемаядрайверамиустройствдлявыделенияпамятиизсистемныхкуч(динамическираспределяемыхобластейпамяти)Windows.•WindowsсервисыПроцессы,запускаемыедиспетчеромуправлениясервисамивWindows(ХотявдокументациинареестрдрайверыустройствWindowsопределяютсякаксервисы,мынепользуемсятакимтерминомвэтойкниге.)Например,сервисTaskSchedulerвыполняетсявпроцессепользовательскогорежима,которыйподдерживаеткомандуat(аналогичнуюUNIXкомандеatилиcron).•DLL(динамическиподключаемаябиблиотека)Наборвызываемыхподпрограмм,включенныхводиндвоичныйфайл,которыйприложения,использующиеэтиподпрограммы,могутдинамическизагружатьвовремясвоеговыполнения.BкачествепримераможнопривестимодулиMsvcrt.dll(библиотекаисполняющейподсистемыC)иKernel32.dll(однаизбиблиотекподсистемыWindowsAPI).DLLактивноиспользуютсякомпонентамииприложениямиWindowsпользовательскогорежима.ПреимуществоDLLнадстатическимибиблиотекамивтом,чтоприложениямогутразделятьDLLмодули,aWindowsгарантирует,чтовпамятибудетнаходитьсялишьпоодномуэкземпляруиспользуемыхDLL.Процессы,потокиизаданияХотянапервыйвзглядкажется,чтопрограммаипроцесспонятияпрактическиодинаковые,онифундаментальноотличаютсядруготдруга.Программапредставляетсобойстатическийнаборкоманд,апроцесэтоконтейнердлянабораресурсов,используемыхпривыполненииэкземплярапрограммы.HaсамомвысокомуровнеабстракциипроцессвWindowsвключаетследующее:•закрытоевиртуальноеадресноепространстводиапазонадресоввиртуальнойпамяти,которымможетпользоватьсяпроцесс;•исполняемуюпрограммуначальныйкодиданные,проецируемыенавиртуальноеадресноепространствопроцесса;•списокоткрытыхописателей(handles)различныхсистемныхресурсовсемафоров,коммуникационныхпортов,файловидругихобъектов,доступныхвсемпотокамвданномпроцессе;•контекстзащиты(securitycontext),называемыймаркеромдоступа(accesstoken)иидентифицирующийпользователя,группыбезопасностиипривилегии,сопоставленныеспроцессом;•уникальныйидентификаторпроцесса(вовнутрисистемнойтерминологииназываемыйидентификаторомклиента);•минимумодинпоток.Каждыйпроцесстакжеуказываетнасвойродительскийпроцесс(процесссоздатель).Однако,еслиродительсуществует,этаинформациянеобновляется.Поэтомуестьвероятность,чтонекийпроцессуказываетнауженесуществующегородителя.Этонесоздаетникакойпроблемы,посколькуниктонеполагаетсянаналичиетакойинформации.Следующийэкспериментиллюстрируетданныйслучай.ЭКСПЕРИМЕНТ:просмотрдеревапроцессовБольшинствоутилитнеотображаеттакойуникальныйатрибут,какидентификаторродительскогопроцесса.ЗначениеэтогоатрибутаможнополучитьпрограммноилиспомощьюоснасткиPerformance,запросивзначениесчетчикаCreatingProcessID[Код(ID)создавшегопроцесса].ДеревопроцессовпоказываетсяутилитойTlist.exe(изWindowsDebuggingTools),есливыуказываетеключ/t.Вотобразецвыводаэтойкоманды:Взаимоотношенияпроцессов(дочернийродительский)Tlistпоказываетотступами.Именапроцессов,родительскиепроцессыкоторыхнаданныймоментзавершились,выравниваютсяполевомукраю,потомучтоустановитьихродственныесвязиневозможнодажееслипроцессыпрапредкиещесуществуют.Windowsсохраняетидентификатортолькородительскогопроцесса,такчтопроследитьегосоздателянельзя.Чтобыубедитьсявэтом,выполнитеследующиеоперации.1.Откройтеокнокоманднойстроки.2.Наберитеstartcmdдлязапускавторогоокнакоманднойстроки.3.Откройтедиспетчерзадач.4.Переключитесьнавтороеокнокоманднойстроки.5.ВведитеmspaintдлязапускаMicrosoftPaint.6.Щелкнитевтороеокнокоманднойстроки.7.Введитеexit(Заметьте,чтоокноPaintостается.)8.Переключитесьвдиспетчерзадач.9.ОткройтееговкладкуApplications(Приложения).10.ЩелкнитеправойкнопкоймышизадачуCommandPrompt(Команднаястрока)ивыберитеGoToProcess(Перейтикпроцессам).11.ЩелкнитепроцессCmd.exe,выделенныйсерымцветом.12.Щелкнувправойкнопкоймыши,выберитекомандуEndProcessTree(Завершитьдеревопроцессов).13.BокнеTaskManagerWarning(Предупреждениедиспетчеразадач)щелкнитеYes(Да).Первоеокнокоманднойстрокиисчезнет,новыпопрежнемусможетенаблюдатьокноPaint,таккаконоявляетсявнукомпервогоиззавершенныхпроцессовCommandPrompt.Aпосколькувторой(родительскийпроцессPaint)тожезавершен,связьмеждуродителемивнукомпотеряна.Дляпросмотра(имодификации)процессовиинформации,связаннойсними,существуетцелыйнаборутилит.Следующиеэкспериментыдемонстрируют,какполучитьтуилиинуюинформациюопроцессеспомощьюнекоторыхизэтихутилит.ОнивключаютсянепосредственновсамуWindows,атакжевWindowsSupportTools,WindowsDebuggingTools,ресурсыWindowsиPlatformSDK.Многиеизэтихутилитвыводятперекрывающиесяподмножестваинформацииобазовыхпроцессахипотоках,иногдаидентифицируемыепоразнымименам.Вероятно,наиболееширокоприменяемаяутилитадляанализаактивностипроцессовTaskManager(Диспетчерзадач(Любопытно,чтовядреWindowsнеттакогопонятия,какзадача,такчтоTaskManagerнасамомделеявляетсяинструментомдляуправленияпроцессами.)Следующийэкспериментпоказываетразницумеждутем,чтоTaskManagerперечисляеткакприложенияипроцессы.ЭКСПЕРИМЕНТ:просмотринформацииопроцессахчерездиспетчерзадачДиспетчерзадачWindowsотображаетсписоквыполняемыхвсистемепроцессов.Егоможнозапуститьтремяспособами:1)нажавклавишиCtrl+Shift+Esc;2)щелкнувпанельзадачправойкнопкоймышиивыбравкомандуTaskManager(Диспетчерзадач);3)нажавклавишиCtrl+Alt+Del.ПослезапускадиспетчеразадачоткройтевкладкуProcesses(Процессы).Заметьте,чтопроцессыидентифицируютсяпоимениобраза,экземплярамикоторогоониявляются.BотличиеотнекоторыхобъектоввWindowsпроцессамнельзяприсваиватьглобальныеимена.ДляпросмотраболееподробныхсведенийвыберитеизменюView(Вид)командуSelectColumns(Выбратьстолбцы)иукажите,какаядополнительнаяинформациявасинтересует.ЕсливкладкаProcessesокнадиспетчеразадачсовсейочевидностьюпо Путь рыцаря 6 дней назад
9 AbrakaDaniel AbrakaDanielhttp://apero.ruГлавнаяИграйонлайн!Конкурсоткрыт!СообщенияУчастникиМагазин(2)Создайигру!ДокументацияЗаданияiFiction.ruМыВКонтактеПрофильПривет,AbrakaDanielСейчасвонлайнеAbrakaDaniel(Vetal123)и20гостей.ПартнерыАперо:"Коллекционер"-СтрашныйквествЧелнах!Вигреилинасайтеошибка?ВыделитекстижмисюдаилиCtrl+EnterРазработчикискажутспасибо:)Навигация:http://apero.ru/Участники/Vetal123Vetal123-страницаучастникааперо-сообществаПрофильнеактивирован.Еслиэтотвойпрофиль-проверьe-mail,указанныйприрегистрации,иперейдипоссылкедляактивации.Последниекомментарии:1AbrakaDanielhttp://apero.ruГлавнаяИграйонлайн!Конкурсоткрыт!СообщенияУчастникиМагазин(2)Создайигру!ДокументацияЗаданияiFiction.ruМыВКонтактеПрофильПривет,AbrakaDanielСейчасвонлайнеAbrakaDaniel(Vetal123)и20гостей.ПартнерыАперо:"Коллекционер"-СтрашныйквествЧелнах!Вигреилинасайтеошибка?ВыделитекстижмисюдаилиCtrl+EnterРазработчикискажутспасибо:)Навигация:http://apero.ru/Участники/Vetal123Vetal123-страницаучастникааперо-сообществаПрофильнеактивирован.Еслиэтотвойпрофиль-проверьe-mail,указанныйприрегистрации,иперейдипоссылкедляактивации.Последниекомментарии:1AbrakaDanielhttp://apero.ruГлавнаяИграйонлайн!Конкурсоткрыт!СообщенияУчастникиМагазин(2)Создайигру!ДокументацияЗаданияiFiction.ruМыВКонтактеПрофильПривет,AbrakaDanielСейчасвонлайнеAbrakaDaniel(Vetal123)и20гостей.ПартнерыАперо:"Коллекционер"-СтрашныйквествЧелнах!Вигреилинасайтеошибка?ВыделитекстижмисюдаилиCtrl+EnterРазработчикискажутспасибо:)Навигация:http://apero.ru/Участники/Vetal123Vetal123-страницаучастникааперо-сообществаПрофильнеактивирован.Еслиэтотвойпрофиль-проверьe-mail,указанныйприрегистрации,иперейдипоссылкедляактивации.Последниекомментарии:1AbrakaDanielАннотация:КнигапосвященавнутреннемуустройствуиалгоритмамработыосновныхкомпонентовоперационнойсистемыMicrosoftWindows—WindowsServer2003,WindowsXPиWindows2000—ифайловойсистемыNTFS.Детальнорассмотренысистемныемеханизмы:диспетчеризацияловушекипрерываний,DPC,APC,LPC,RPC,синхронизация,системныерабочиепотоки,глобальныефлагиидр.Такжеописываютсявсеэтапызагрузкиоперационнойсистемыизавершенияееработы.Bчетвертомизданиикнигибольшевниманияуделяетсяглубокомуанализуиустранениюпроблем,из-закоторыхпроисходиткрахоперационнойсистемыилииз-закоторыхеенеудаетсязагрузить.Крометого,рассматриваютсядеталиреализацииподдержкиаппаратныхплатформAMDx64иIntelIA64.Книгасостоитиз14глав,словарятерминовипредметногоуказателя.Книгапредназначенасистемнымадминистраторам,разработчикамсерьезныхприложенийивсем,ктохочетпонять,какустроенаоперационнаясистемаWindows.Названиявсехкоманд,диалоговыхоконидругихинтерфейсныхэлементовоперационнойсистемыприведеныкакнаанглийскомязыке,такинарусском.ВерсияFb2редакции—1.5.Обошибкахпросьбасообщатьпоадресу—general2008@ukr.net.---------------------------------------------М.Руссинович,Д.СоломонВнутреннееустройствоMicrosoftWindows(главы1–4)WindowsServer™2003,WindowsXPиWindows20004-еизданиеПредысторияЯвновьпризнателенДэвидуСоломону(DavidSolomon)иМаркуРуссиновичу(MarkRussinovich)зато,чтоонипредоставилимневозможностьсказатьнесколькословоновомизданииихкниги«ВнутреннееустройствоMicrosoftWindows».Прошлоужеболеетрехлетсмоментавыходапоследнегоизданияэтойкниги,изаэтовремянасветпоявилисьдвавыпускаоперационнойсистемыWindows—оченьзначимыеобновленияклиентскойисервернойсистем.Передавторамистоялидвезадачи,которыепостоянноусложняются:отслеживаниеэволюционногоразвитиясистемыMicrosoftWindowsNTидокументированиетого,какменяласьреализацияеекомпонентоввкаждойверсии.Bэтомсмыслеавторыпроделалипростовыдающуюсяработу.(Слеванаправо)ДэвидСоломон,ДэвидКатлериМаркРуссиновичВпервыеяпознакомилсясДэвидомСоломоном,когдаемубыловсего16лет,аяработалвDigitalEquipmentCorporationнадоперационнойсистемойVMSдляVAX.Cтехпоронучаствовалвразработкеоперационныхсистем,атакжепреподавалвэтойобласти.CМаркомРуссиновичемяпознакомилсяпозже,ноужезадолгодоэтогобылнемалонаслышаноегоглубокихпознанияхвобластиоперационныхсистем.BчислеегозаслугверсияфайловойсистемыNTFS,которуюонзаставилработатьвMicrosoftWindows98,и«живой»отладчикядраWindows,позволяющийзаглянутьвнутрьсистемыWindowsвпроцессееевыполнения.ИстокиWindowsNTвосходяткоктябрю1988года,когдабылорешеносоздатьпереносимуюоперационнуюсистему,совместимуюсOS/2,поддерживающуюPOSIXимногопроцессорнуюобработку,обладающуювысокойзащищенностью,надежностьюиинтегрированнымисредствамиработывсетях.CприходомWindows3.0иееколоссальнымуспехомзаявленныецелинесколькоизменились:совместимостьсOS/2былаперенесенасуровнявсейсистемынауровеньотдельнойподсистемы.Поначалумыполагали,чтосумеемсоздатьWindowsNTзапарулет,новдействительностиееперваяверсиявышлалишьчерезчетыресполовинойгода—летом1993-го.ЭтаверсияподдерживалапроцессорыInteli386,Inteli486иMIPSR4000.ШестьнедельспустямыввелиподдержкуидляпроцессоровDigitalAlpha.ПерваяверсияWindowsNTполучиласьболеегромоздкойимедленной,чеможидалось,такчтоследующейвехойсталпроектDaytona(такназываетсяавтострадавоФлориде).Главнойцельювэтойверсиибылоуменьшениеразмерасистемы,повышениееебыстродействияи,разумеется,надежности.ЧерезполгодапослевыпускаWindowsNT3.5осенью1994-гомыподготовилиWindowsNT3.51,котораяпредставляласобойобновленнуюверсиюсдополнительнойподдержкойпроцессораIBMPowerPC.ТолчкомксозданиюследующейверсииWindowsNTсталожеланиесделатьпользовательскийинтерфейс,совместимыйсWindows95,ивключитьтехнологииCairo,уженаходившиесявразработкепарулет.Haсозданиеэтойсистемыушлоещедвагода,илетом1996годабылапредставленаWindowsNT4.0.НазваниеследующейверсииNTбылоизмененонаWindows2000.Онасталапоследнейсистемой,длякоторойодновременновыпускалиськлиентскаяисервернаяверсии.Windows2000былапостроенанатойжетехнологииWindowsNT,чтоипредыдущиеверсии,нообладалановойважнойфункциональностью,поддерживая,вчастности,ActiveDirectory.HaразработкуWindows2000ушлотрисполовинойгода,инатотпериодонабыласамойоптимизированнойинаиболеетщательнопротестированнойверсиейтехнологииWindowsNTWindows2000сталакульминациейболеечемодиннадцатилетнихразработок,реализованныхначетырехархитектурах.BконцеразработкиWindows2000мыприступиликработенадамбициознымпланомреализацииновыхверсийклиентскойисервернойсистем,которыедолжныбылипредоставитьновые,болеесовершенныевозможностипотребителямиулучшитьхарактеристикисерверов.Hoпотомсталоясно,чтореализациясерверныхсредствпривелабыкзадержкевреализацииклиентских,ипоэтомубылорешеноразделитьвыпуски.Bавгусте2001годанасветпоявилисьWindowsXPProfessionalиWindowsXPHomeEdition,aчерезгодснебольшим,вмарте2003годабылавыпущенаMicrosoftWindowsServer2003.ПомимоархитектурыIntelx86,этисистемыподдерживалиIntelIA64,благодарячемуWindowsNTвпервыевышланастезю64-разрядныхвычислений.Этакнигаединственная,гдетакглубокоиполнорассмотренывнутренниеструктурыипринципыфункционированияWindowsXPиWindowsServer2003.Крометого,онапредлагаетзаглянутьвбудущее—переводWindowsна64-разрядные«рельсы»,т.е.наееподдержкуархитектурx64(AMD64)иIntelEM64T,объявленныхAMDв2003годуиIntelвфеврале2004годасоответственно.Выпускклиентскойисервернойверсийсполнойподдержкойx64запланированнапервуюполовину2005года,ивэтойкнигесодержитсямассаинформацииовнутреннихдеталяхреализациих64-системы.Архитектурах64—этоначалоновойэрыдляWindowsNTвтотмомент,когдавремяархитектурыx86подходиткконцу.Архитектураx64обеспечиваетсовместимостьс32-разряднойх86-платформойипредоставляет64-разряднуюадресациюдлянаиболеетребовательных,совершенноновыхприложений.Этопозволитсохранитьинвестициив32-разрядноепрограммноеобеспечение,втожевремявдохнувновуюжизньвWindowsNTнаближайшеедесятилетиеилидаженаболеедлительныйпериод.ХотяназваниеNT-системызапоследниенескольколетнеоднократноменялось,онапо-прежнемуполностьюосновананаисходнойкодовойбазеWindowsNT.Hoвремябежит,появляютсяновыетехнологии,иреализациямногихвнутреннихкомпонентовифункцийзначительноизменилась.Авторыпроделаливнушительнуюработу,собравстолькодетальнойинформацииокодовойбазеWindowsNTиеереализацияхвразныхвыпускахнаразныхплатформах,атакжесоздавпримерыиутилиты,которыепомогаютчитателюразобратьсявтом,какработаюткомпонентыиподсистемыWindows.Экземплярэтойкнигидолженлежатьнастолеукаждогоразработчикасерьезногопрограммногообеспечения.ДэвидH.Катлер,заслуженныйстаршийинженеркорпорацииMicrosoftПредисловиеMicrosoftWindowsбылачастьюмоейжизницелых14лет.Заэтовремя—отверсиикверсии—нашаоперационнаясистемаразвиваласьвширьивглубь.СегодняработанадWindows—одинизсамыхважныхисложныхпроектоввмире.BвыпускеWindowsучаствуютболее5000инженеров.СредипользователейWindowsестьпредставителиужепочтивсехкультур,онаиспользуетсякакнакрупныхпредприятиях,такималенькимидетьми.ПользователиWindowsпостояннотребуютеесовершенствованияпрактическивовсехсферах—отэффективнойработынакрупнейшихсерверахдоприменениявдошкольномобучении.Windowsпоставляетсявсамыхразныхипостасях—отвстраиваемыхверсийивыпусковдлямедиа-центровдоредакцийдляцентровобработкиданных.ВсеэтипродуктыопираютсянаодниитежебазовыекомпонентыWindows,которыеразвиваютсяисовершенствуютсявкаждойновойверсии.ЭтофундаментальнаякнигаовнутреннемустройствебазовыхкомпонентовWindows.ЕсливыхотитекакможнобыстрееосвоитьпринципывнутреннейработыWindows,тогдаэтакнигадлявас.Освоениевсехчастейстольосновательногопродукта—задачаустрашающая.Hoесливыначнетесбазовыхконцепцийсистемы,сложитьфрагментыголоволомкивоединобудетгораздолегче.CэволюциейсамойWindowsразвиваетсяиэтакнига—сейчаспубликуетсяеечетвертоеиздание.МыужедавноиспользуемеедляобученияновыхсотрудниковMicrosoft,такчтопредлагаемыевамматериалыпроверенынапрактике.Есливывродеменя,значит,вамтоженравитсяразбиратьсявтом,какустроенывещи.Чтениекнижектипа«какиспользоватьто-тоито-то»меняникогданеудовлетворяло.Когдапонимаешь,какименноустроенавещь,пользуешьсяеюгораздоэффективнееи,честноговоря,сбольшимудовольствием.ЕсливасинтересуетWindows«сизнанки»,вывыбралиподходящуюкнигу.ДэвидиМаркпроделалипревосходнуюработу,написавкнигуотехнической«изнанке»Windows.Aинструменты,которыеонипредлагаютвам,—отличноесредстводлясамостоятельногообученияидиагностики.Прочитавэтукнигу,выбудетегораздолучшепонимать,каквзаимодействуютмеждусобойразличныекомпонентыиподсистемы,какиеусовершенствованиявнесенывновуюверсиюикаквыжатьизнихмаксимумвозможного.Этобылдолгийпуть—ионвсеещепродолжается.Такчтооткрывайтекнигу,азаодноикапот,подкоторымбьетсясердцеоднойизсамыхпотрясающихоперационныхсистем.ДжимОлчин,вице-президентгруппыплатформкорпорацииMicrosoftБлагодарностиBпервуюочередьмыхотимособопоблагодаритьследующихлюдей.•ДэйваКатлера(DaveCutler),заслуженногостаршегоинженераипервогоархитектораMicrosoftWindowsNT.ДэйвразрешилДэвидуСоломону(DavidSolomon)доступкисходномукодуивсяческиподдерживалегопреподавательскуюдеятельность,посвященнуюобъяснениюдеталейвнутреннегоустройстваWindowsNT,атакжеегоработунадвторымитретьимизданиемкниги.Помиморецензированияглавыпопроцессамипотокам,ДэйвответилнамассувопросовобархитектуреядраинаписалобисториисозданияWindowsдлянашейкниги.•ДжимаОлчинаJimAllchin),нашегоглавногоспонсора,—запредисловиекэтойкнигеизаотстаиваниеинтересовнашегоделавMicrosoft.•РобаШорта(RobShort),вице-президента,которыйпозаботилсяотом,чтобынампредоставилиресурсыидоступкнужнымлюдям.МытакжевыражаемпризнательностьдвумразработчикамизотделаWindowsзаподготовкуновыхматериалов,включенныхвэтоиздание:•АдриануМаринеску(AdrianMarinescu),которыйнаписалзаметноразросшийсяразделподиспетчерукучвглаве,гдерассматриваетсядиспетчерпамяти.•СамеруАрафеху(SamerArafeh),которыйпредоставилматериалыпоWow64.Спасибонашемустаромуприятелю,ДжеффриРихтеруJeffreyRichter),скоторыммычастовместеобедаем,заврезку«Какнасчет.NETиWinFX?»вглаве1изапостоянноенапоминаниеотом,какмалолюдей,по-настоящемуинтересующихсятем,очеммыговоримвсвоейкниге.Bэтойкнигенебылобытакойглубиныиточностиизложениятехническихсведенийбезподдержки,замечанийипредложенийключевыхчленовкомандыразработчиковMicrosoftWindows.Вотэтилюди:Былиидругие,ктоотвечалнанашивопросывкоридорахиликафетериях,—еслимываспропустили,пожалуйста,проститенас!МытакжевыражаемблагодарностьДжеймиХанраханJamieHanrahan)изAziusDeveloperTraining(www.azius.com),котораявсоавторствесДэвидомподготовилаучебныйкурсповнутреннейархитектуреисходнойверсииWindows.Haосновеэтогокурсабылонаписановтороеизданиеэтойкниги.Джейми,укоторойнастоящийталантдоходчивообъяснятьсложнейшиевещи,предоставиланамотдельныематериалы,атакжерядсхемииллюстраций.СпасибоДэйвуПроберту(DaveProbert)зато,чторазместилвсетинашичерновыематериалыдляраспространениясредирецензентоввнутриMicrosoft.БлагодаримДжонатанаСлавза(JonathanSloves)изAMD,спомощьюкоторогонампредоставилитестовыесистемыAMD64;ониоченьпомоглинамвнаписанииматериаловпо64-разряднойархитектуреивпереносерядаутилитSysinternalsнаплатформуx64.Наконец,мыхотимвыразитьблагодарностьследующимсотрудникамMicrosoftPressзаихвкладвэтукнигу.•РобинуВан-Штеенбергу(RobinvanSteenburgh),рецензентуиздательства,затерпениевработеснаминадэтимпроектом.•СаллиСтикни(SallyStickney),котораянапервыхпорахпо-прежнемубыларедакторомнашегопроекта,нопотомеезакрутилводоворотадминистративныхдел.Мыоченьскучалибезвас!•ВалериВулли(ValerieWoolley),котораяпринялабраздыправленияотСаллиисталанашимновымредакторомпроекта.Вызамечательнаяинетакаярезкая,какСалли!•РоджеруЛебланку(RogerLeBlanc),которыйодолелвсеглавыисумелсократитьвнихтекст,найтинесогласованностиивообщедовестинашурукописьдовысокихстандартовMicrosoftPress.ДэвидСоломониМаркРуссиновичсентябрь2004г.ВведениеЧетвертоеизданиеэтойкнигиориентированонаквалифицированныхспециалистов(программистов,разработчиковисистемныхадминистраторов),желающихразобратьсявпринципахвнутреннейработыосновныхкомпонентовоперационныхсистемMicrosoftWindows2000,MicrosoftWindowsXPиMicrosoftWindowsServer2003.Знаяих,разработчикисмогутприниматьболееэффективныерешениянаэтапахпроектированияприложенийдляплатформыWindows.Такиезнанияпомогутпрограммистамивотладке—приустранениисложныхпроблем.Информация,изложеннаявкниге,будеттакжеполезнасистемнымадминистраторам:пониманиетого,какустроенаиработаетоперационнаясистема,упроститимоптимизациюсвоихсистемиустранениенеполадоквслучаекаких-либосбоев.Прочитавэтукнигу,вылучшепоймете,какфункционируетWindowsипочемуонаведетсебяименнотак,анекак-тоиначе.СтруктуракнигиПервыедвеглавызакладываютфундамент,вводятерминыиконцепции,используемыевовсейкниге.Следующиетриглавыописываютключевыемеханизмыоперационнойсистемы.BследующихвосьмиглавахдетальнорассматриваютсябазовыекомпонентыWindows—процессы,потокиизадания,управлениепамятью,защита,подсистемаввода-вывода,управлениевнешнейпамятью,диспетчеркэша,файловыесистемыиподдержкасетей.Наконец,впоследнейглавепоясняется,какпроводитьанализаварийныхдамповпамяти.ИсториянаписаниякнигиЭточетвертоеизданиекниги,котораяизначальноназывалась«InsideWindowsNT»(MicrosoftPress,1992)ибыланаписанаХеленКастер(HelenCuster)ещедовыпускаMicrosoftWindowsNT3.1.ОнасталапервойкнигойпоWindowsNTипредставляласобойглубокийобзорархитектурыэтойсистемы.Второеиздание,«InsideWindowsNT»(MicrosoftPress,1998),былонаписаноДэвидомСоломоном.BнеговошлановаяинформацияпоWindowsNT4.0,асамакнигасталагораздоболееглубокой.Третьеиздание,«InsideWindows2000»(MicrosoftPress,2000),былоподготовленоДэвидомСоломономиМаркомРуссиновичем.Bнемпоявилосьмногоновыхтематическихразделов,втомчислепоэтапамзагрузкиизавершенияработысистемы,внутреннемуустройствусервисовиреестра,подрайверамфайловыхсистем,поддержкесетей,атакжепоновойфункциональностиядраWindows2000,напримермоделиWDM,PlugandPlay,WMI,шифрованию,TerminalServicesидр.ОсобенностичетвертогоизданияНовоеизданиедополненоинформациейобизмененияхвядре,которыебыливнесенывWindowsXPиWindowsServer2003,втомчислекасающихсяподдержки64-разрядныхсистем.Материалыдляэкспериментовтакжебылиобновлены,чтобыотразитьизменениявусовершенствованныхутилитахинаучитьваспользоватьсяновымиинструментами,которыхнебылонамоментподготовкитретьегоиздания.ТаккакотличияновыхверсийWindowsотWindows2000относительноневелики(посравнениюсразличиямимеждуWindowsNT4.0иWindows2000),основнаячастькнигиравноприменимакWindows2000,WindowsXPиWindowsServer2003.Поэтому,еслинеоговореноиное,всесказанноеотноситсяковсемтремверсиям.ИнструментыдляпроведенияэкспериментовДажебездоступакисходномукодусуществующиеинструментывродеотладчикаядрапозволяютмногоепрояснитьвовнутреннемустройствеWindows.Bтомместе,гдедлядемонстрациикакого-либоаспектаповеденияWindowsиспользуетсятотилиинойинструмент,воврезке«Эксперимент»даютсяинструкциипоегоприменению.Такиеврезкичастовстречаютсявкниге,имырекомендуемвампроделыватьэтиэкспериментывпроцессечтения:наглядноувидев,какведетсебяWindowsвконкретнойситуации,выгораздолучшеусвоитепрочитанныйматериал.Тематика,нерассматриваемаявкнигеWindows—большаяисложнаяоперационнаясистема.Нельзяобъятьнеобъятное,ипоэтомуосновноевниманиевкнигеуделяетсятолькобазовымсистемнымкомпонентам.Например,мынерассматриваемCOM+,инфраструктуруобъектно-ориентированногопрограммированияраспределенныхприложенийдляWindows,или.NETFramework,платформудляследующегопоколенияприложенийсуправляемымкодом.ПосколькунашакнигаовнутреннемустройствеWindows,анеотом,какпользоватьсяэтойоперационнойсистемой,программироватьдлянееилиадминистрироватьсистемы,созданныенаееоснове,выненайдетездесьникакихсведенийобиспользовании,программированиииконфигурированииWindows.ПодводныекамниBкнигеописываютсянедокументированныевнутренниеструктурыифункцииядра,архитектураиразличныеаспектывнутреннейработыWindows,ичастьтакихструктурифункцийможетизменитьсявследующемвыпускеэтойоперационнойсистемы.(Впрочем,внешниеинтерфейсывродеWindowsAPIвсегдасохраняютсовместимостьсаналогичнымиинтерфейсамивочередныхвыпусках.)Говоря«можетизмениться»,мынеимеемввиду,чтодеталиустройствасистемыобязательноизменятсявследующемвыпуске,алишьобращаемвниманиенато,чтодостоверностьинформациигарантируетсяисключительнодляданныхверсий.Любоепрограммноеобеспечение,использующеенедокументированныеинтерфейсы,можетперестатьработатьвбудущихверсияхWindows.Болеетого,такоепрограммноеобеспечение,еслионоработаетврежимеядра(как,например,драйверыустройств),можетпривестиккрахуболееновыхверсийWindows.ТехническаяподдержкаМыприложилимаксимумусилий,чтобынедопуститьнеточностейиошибоквкниге.Еслиувасвозникнуткакие-либопроблемыиливопросы,пожалуйста,обращайтесьпоадресам,указаннымвследующихдвухразделах.ОтавторовЭтакнигаотнюдьнесовершенна.Несомненновнейестькакие-тонеточности;можетбыть,мыупустиличто-товажное.Есливынайдетето,чтосчитаетеошибочным,илиесливысочтете,чтовкнигуследуетвключитьдополнительныйматериал,пожалуйста,пошлитесвоесообщениепоадресуwindowsinternals@sysinternals.com.Обновленияиисправлениябудутвыкладыватьсянастраницуwwwsysinternals.com/windowsinternals*ОтMicrosoftPressMicrosoftпубликуетисправленияккнигампоадресуhttp://www.microsoftcom/learning/support.ДляпрямогоподключениякMicrosoftLearningKnowledgeBaseивводазапросапопроблеме,скоторойвыстолкнулись,заходитенастраницуhttp://www.microsoft.comflearning/support/search.asp.Bпереводеучтеныисправления,опубликованныенаэтойWeb-странице,посостояниюна1июля2005года.—Прим.перев.ГЛABA1КонцепциииинструментыBэтойглавемыпознакомимвассосновнымиконцепциямиитерминамиоперационнойсистемыMicrosoftWindows,которыебудутиспользоватьсявпоследующихглавах,втомчислесWindowsAPI,процессами,потоками,виртуальнойпамятью,режимомядраипользовательскимрежимом,объектами,описателями(handles),защитой,реестром.Мытакжерасскажемобинструментах,спомощьюкоторыхвысможетеисследоватьвнутреннееустройствоWindows.Kнимотносятся,например,отладчикядра,оснасткаPerformanceиважнейшиеутилитыссайтаwww.sysinternals.com.Крометого,мыпоясним,какпользоватьсяWindowsDeviceDriverKit(DDK)иPlatformSoftwareDevelopmentKit(SDK)вкачествеисточникадополнительнойинформацииовнутреннемустройствеWindows.Выдолжныхорошопониматьвсе,чтонаписановэтойглаве,—востальнойчастикнигимыпредполагаемименнотак.ВерсииоперационныхсистемWindowsЭтакнигаохватываеттрипоследниеверсииоперационнойсистемыMicrosoftWindows,основанныенакодовойбазеWindowsNT:Windows2000,WindowsXP(32-и64-разрядныеверсии)иWindowsServer2003(32-и64-разрядныеверсии).Текстотноситсяковсемтремверсиям,еслинеоговореноиное.Bтаблице1–1перечисленывыпускикодовойбазыWindowsNT,номераверсийиназванияпродуктов.WindowsNTиWindows95ПрипервомвыпускеWindowsNTкомпанияMicrosoftдалаяснопонять,чтоэтодолгосрочнаязаменаWindows95(иеепоследующихвыпусков—Windows98иWindowsMillenniumEdition).ВотсписокнекоторыхархитектурныхразличийипреимуществWindowsNT(иеепоследующихвыпусков)надWindows95(иеепоследующимивыпусками).•WindowsNTподдерживаетмногопроцессорныесистемы,aWindows95—нет.•ФайловаясистемаWindowsNTподдерживаетсредствазащиты,напримеруправлениеизбирательнымдоступом(discretionaryaccesscontrol).BфайловойсистемеWindows95этогонет.•WindowsNT—полностью32-разрядная(атеперьи64-разрядная)операционнаясистема,внейнет16-разрядногокода,крометого,которыйпредназначендлявыполнения16-разрядныхWindows-приложений.Windows95содержитбольшойобъемстарого16-разрядногокодаизпредшествующихоперационныхсистем—Windows3.1nMS-DOS.•WindowsNTполностьюреентерабельна,амногиечастиWindows95нереентерабельны(восновномэтокасается16-разрядногокода,взятогоизWindows3.1).Большинствофункций,связанныхсграфикойиуправлениемокнами(GDIиUSER),включаютименнонереентерабельныйкод.Когда32-разрядноеприложениевWindows95пытаетсявызватьсистемныйсервис,реализованныйкакнереентерабельный16-разрядныйкод,онодолжносначалаполучитьобщесистемнуюблокировку(илимьютекс),чтобыпредотвратитьвходдругихпотоковвнереентерабельнуюкодовуюбазу.Ещехуже,что16-разрядноеприложениеудерживаеттакуюблокировкувтечениевсеговременисвоеговыполнения.Bитоге,хотяядроWindows95содержит32-разрядныйпланировщиксподдержкоймно-гопоточностиивытесняющеймногозадачности,приложениячастоработаюткакоднопоточныеиз-затого,чтобольшаячастьсистемыреализованакакнереентерабельныйкод.•WindowsNTпозволяетвыполнять16-разрядныеWindows-приложенияввыделенномадресномпространстве,aWindows95всегдавыполняеттакиеприложениявобщемадресномпространстве,вкоторомонимогутнавредитьдругдругуипривестикзависаниюсистемы.•Разделяемая(общая)памятьпроцессавWindowsNTвиднатолькотемпроцессам,которыеимеютпроекциюнаодинитотжеблокразделяемойпамяти.BWindows95всяобщаяпамятьвиднаидоступнадлязаписивсемпроцессам.Такимобразом,любойпроцессможетчто-тозаписатьиповредитькакие-тоданныевобщейпамяти,используемыедругимипроцессами.•Некоторыекритическиважныестраницыпамяти,занимаемыеоперационнойсистемойWindows95,доступныдлязаписиизпользовательскогорежима,азначит,обычноеприложениеможетповредитьсодержимоеэтихстраниципривестиккрахусистемы.Единственное,чтоумеетWindows95ичегоникогданесмогутделатьоперационныесистемынаосновеWindowsNT,—выполнятьвсестарыепрограммыдляMS-DOSиWindows3.1(аименнопрограммы,требующиепрямогодоступакоборудованию),атакже16-разрядныедрайверыустройствMS-DOS.ЕслиоднойизосновныхцелейразработкиWindows95была100%-ясовместимостьсMS-DOSиWindows3.1,тоисходнойцельюразработкиWindowsNT—возможностьвыполнениябольшинствасуществующих16-разрядныхприложенийприусловиисохраненияцелостностиинадежностисистемы.БазовыеконцепцииитерминыBкнигебудутчастовстречатьсяссылкинаконцепциииструктуры,скоторыминекоторыечитатели,возможно,незнакомы.Здесьмыопределимсясиспользуемойвдальнейшемтерминологией.WindowsAPIЭтосистемныйинтерфейспрограммированиявсемействеоперационныхсистемMicrosoftWindows,включаяWindows2000,WindowsXP,WindowsServer2003,Windows95,Windows98,WindowsMillenniumEdition(Me)иWindowsCE.КаждаяоперационнаясистемареализуетразноеподмножествоWindowsAPI.Windows95,Windows98,WindowsMeиWindowsCEвэтойкнигенерассматриваются.ПРИМЕЧАНИЕWindowsAPIописываетсявдокументацииPlatformSoftwareDevelopmentKit(SDK).(См.раздел«PlatformSoftwareDevelopmentKit(SDK)»далеевэтойглаве.)Этудокументациюможнобесплатнопросмотретьнасайтеmsdn.microsoft.com.ОнатакжепоставляетсясMicrosoftDeveloperNetwork(MSDN)всехуровнейподписки.(MSDN—этопрограммаMicrosoftдляподдержкиразработчиков.Подробностисм.насайтеmsdn.microsqft.com.)Отличноеописаниетого,какпрограммироватьсиспользованиембазовогоWindowsAPI,см.вчетвертомизданиикнигиДжеффриРихтераJeffreyRichter)«MicrosoftWindowsдляпрофессионалов»(РусскаяРедакция,2000).Допоявления64-разрядныхверсийWindowsXPиWindowsServer2003интерфейспрограммирования32-разрядныхверсийоперационныхсистемWindowsназывалсяWin32API,чтобыотличатьегоотисходного1разрядногоWindowsAPI.Bэтойкнигетермин«WindowsAPI»относитсяк32-разрядномуинтерфейсупрограммированияWindows2000,атакжек32-и64разрядныминтерфейсампрограммированияWindowsXPиWindowsServer2003.WindowsAPIвключаеттысячивызываемыхфункций,которыесгруппированывследующиеосновныекатегории:•базовыесервисы(BaseServices);•сервисыкомпонентов(ComponentServices);•сервисыпользовательскогоинтерфейса(UserInterfaceServices);•сервисыграфикиимультимедиа(GraphicsandMultimediaServices);•коммуникационноевзаимодействиеисовместнаяработа(MessagingandCollaboration);•сети(Networking);•Webсервисы(WebServices).Основноевниманиевнашейкнигеуделяетсявнутреннемуустройствуключевыхбазовыхсервисов,вчастностиподдержкипроцессовипотоков(threads),управленияпамятью,вводаыводаизащиты.Какнасчет.NETиWinFXETFrameworkсостоитизбиблиотекиклассов,называемойFrameworkClassLibrary(FCL),иобщеязыковойисполняющейсреды(CommonLanguageRuntime,CLR),котораяпредоставляетсредудлявыполненияуправляемогокодастакимивозможностями,каккомпиляцияпотребованию(justimecompilation,JITcompilation),верификациятипов,сбормусораизащитапоправамдоступакода(codeaccesssecurity).БлагодаряэтомуCLRсоздаетсредуразработки,котораяповышаетпродуктивностьтрудапрограммистовиуменьшаетвероятностьпоявленияраспространенныхошибокпрограммирования.Отличноеописание.NETFrameworkиеебазовойархитектурысм.вкнигеДжеффриРихтера«ПрограммированиенаплатформеMicrosoft.NETFramework»(РусскаяРедакция,2003).CLRреализованакакклассическийСОМсервер,кодкоторойхранитсявстандартнойWindowsDLLпользовательскогорежима.Фактическивсекомпоненты.NETFrameworkреализованыкакстандартныеWindowsDLLпользовательскогорежима,занимающиеуровеньповерхнеуправляемыхфункцийWindowsAPL(Никакиекомпоненты.NETFrameworkнеработаютврежимеядра.)Haрис.1показанывзаимосвязиэтихкомпонентов«новыйWindowsAPI».Эторезультатэволюционногоразвития.NETFramework,котораябудетпоставлятьсясверсиейWindowsподкодовымназвание«Longhorn»,следующимвыпускомWindows.WinFXтакжеможноустановитьвWindowsXPиWindowsServer2003.WinFXобразуетфундаментдляприложенийследующегопоколения,создаваемыхдляоперационнойсистемыWindows.ИсториясозданияWin32APIИнтересно,чтопоначалуWin32нерассматривалсякакинтерфейспрограммированиядляMicrosoftWindowsNT.ПосколькупроектWindowsNTначиналсякакзаменаOS/2версии2,основныминтерфейсомпрограммированиябыл32азрядныйOS/2PresentationManagerAPI.ОднакогодспустянарынкепоявиласьMicrosoftWindows3.0,быстроставшаяоченьпопулярной.BрезультатеMicrosoftсменилакурсиперенацелилапроектWindowsNTнабудущуюзаменусемействапродуктовWindows,анеOS/2.ВотнаэтомтоперепутьеивсталвопрососозданииWindowsAPIоэтогоWindowsAPIсуществовалтолькокак16разрядныйинтерфейс.ХотявWindowsAPIдолжнобылопоявитьсямногоновыхфункций,отсутствующихвWindows3.1,MicrosoftрешиласделатьновыйPIповозможностисовместимымсименамифункций,семантикойитипамиданныхв16разрядномWindowsAPI,чтобымаксимальнооблегчитьбремяпереносасуществующих16разрядныхWindowsприложенийвWindowsNTПоэтомутот,кто,впервыеглядянаWindowsAPI,удивляется,почемумногиеименаиинтерфейсыфункцийкажутсяпротиворечивыми,долженучитывать,чтооднойизпричинтакойпротиворечивостибылостремлениесделатьWindowsAPIсовместимымсостарым16разряднымWindowsAPI.Сервисы,функцииипроцедурыНесколькотерминоввдокументацииWindowsдляпользователейипрограммистовимеетразныйсмыслвразныхконтекстах.Например,понятие«сервис»(service)можетотноситьсяквызываемойфункцииоперационнойсистемы,драйверуустройстваилисерверномупроцессу(впоследнемслучаесервисчастоназываютслужбой).Нижепоказано,чтоозначаютподобныетерминывэтойкниге.•ФункцииWindowsAPIДокументированные,вызываемыеподпрограммывWindowsAPI,напримерCreateProcess,CreateFileиGetMessage.•Неуправляемые(«родные»)системныесервисы(илиисполняемыесистемныесервисы)Недокументированныенизкоуровневыесервисыоперационнойсистемы,которыеможновызыватьвпользовательскомрежиме.Так,NtCreateProcessэтовнутрисистемныйсервис,вызываемыйWindowsфункциейCreateProcessприсозданииновогопроцесса(Определениенеуправляемыхфункцийсм.вразделе«Диспетчеризациясистемныхсервисов»главы3.)•Функции(илипроцедуры)ядраПодпрограммывнутриоперационнойсистемыWindows,которыеможновызыватьтольковрежимеядра(определениемыдадимчутьпозже).Например,ExAllocatePoolпроцедура,вызываемаядрайверамиустройствдлявыделенияпамятиизсистемныхкуч(динамическираспределяемыхобластейпамяти)Windows.•WindowsсервисыПроцессы,запускаемыедиспетчеромуправлениясервисамивWindows(ХотявдокументациинареестрдрайверыустройствWindowsопределяютсякаксервисы,мынепользуемсятакимтерминомвэтойкниге.)Например,сервисTaskSchedulerвыполняетсявпроцессепользовательскогорежима,которыйподдерживаеткомандуat(аналогичнуюUNIXкомандеatилиcron).•DLL(динамическиподключаемаябиблиотека)Наборвызываемыхподпрограмм,включенныхводиндвоичныйфайл,которыйприложения,использующиеэтиподпрограммы,могутдинамическизагружатьвовремясвоеговыполнения.BкачествепримераможнопривестимодулиMsvcrt.dll(библиотекаисполняющейподсистемыC)иKernel32.dll(однаизбиблиотекподсистемыWindowsAPI).DLLактивноиспользуютсякомпонентамииприложениямиWindowsпользовательскогорежима.ПреимуществоDLLнадстатическимибиблиотекамивтом,чтоприложениямогутразделятьDLLмодули,aWindowsгарантирует,чтовпамятибудетнаходитьсялишьпоодномуэкземпляруиспользуемыхDLL.Процессы,потокиизаданияХотянапервыйвзглядкажется,чтопрограммаипроцесспонятияпрактическиодинаковые,онифундаментальноотличаютсядруготдруга.Программапредставляетсобойстатическийнаборкоманд,апроцесэтоконтейнердлянабораресурсов,используемыхпривыполненииэкземплярапрограммы.HaсамомвысокомуровнеабстракциипроцессвWindowsвключаетследующее:•закрытоевиртуальноеадресноепространстводиапазонадресоввиртуальнойпамяти,которымможетпользоватьсяпроцесс;•исполняемуюпрограммуначальныйкодиданные,проецируемыенавиртуальноеадресноепространствопроцесса;•списокоткрытыхописателей(handles)различныхсистемныхресурсовсемафоров,коммуникационныхпортов,файловидругихобъектов,доступныхвсемпотокамвданномпроцессе;•контекстзащиты(securitycontext),называемыймаркеромдоступа(accesstoken)иидентифицирующийпользователя,группыбезопасностиипривилегии,сопоставленныеспроцессом;•уникальныйидентификаторпроцесса(вовнутрисистемнойтерминологииназываемыйидентификаторомклиента);•минимумодинпоток.Каждыйпроцесстакжеуказываетнасвойродительскийпроцесс(процесссоздатель).Однако,еслиродительсуществует,этаинформациянеобновляется.Поэтомуестьвероятность,чтонекийпроцессуказываетнауженесуществующегородителя.Этонесоздаетникакойпроблемы,посколькуниктонеполагаетсянаналичиетакойинформации.Следующийэкспериментиллюстрируетданныйслучай.ЭКСПЕРИМЕНТ:просмотрдеревапроцессовБольшинствоутилитнеотображаеттакойуникальныйатрибут,какидентификаторродительскогопроцесса.ЗначениеэтогоатрибутаможнополучитьпрограммноилиспомощьюоснасткиPerformance,запросивзначениесчетчикаCreatingProcessID[Код(ID)создавшегопроцесса].ДеревопроцессовпоказываетсяутилитойTlist.exe(изWindowsDebuggingTools),есливыуказываетеключ/t.Вотобразецвыводаэтойкоманды:Взаимоотношенияпроцессов(дочернийродительский)Tlistпоказываетотступами.Именапроцессов,родительскиепроцессыкоторыхнаданныймоментзавершились,выравниваютсяполевомукраю,потомучтоустановитьихродственныесвязиневозможнодажееслипроцессыпрапредкиещесуществуют.Windowsсохраняетидентификатортолькородительскогопроцесса,такчтопроследитьегосоздателянельзя.Чтобыубедитьсявэтом,выполнитеследующиеоперации.1.Откройтеокнокоманднойстроки.2.Наберитеstartcmdдлязапускавторогоокнакоманднойстроки.3.Откройтедиспетчерзадач.4.Переключитесьнавтороеокнокоманднойстроки.5.ВведитеmspaintдлязапускаMicrosoftPaint.6.Щелкнитевтороеокнокоманднойстроки.7.Введитеexit(Заметьте,чтоокноPaintостается.)8.Переключитесьвдиспетчерзадач.9.ОткройтееговкладкуApplications(Приложения).10.ЩелкнитеправойкнопкоймышизадачуCommandPrompt(Команднаястрока)ивыберитеGoToProcess(Перейтикпроцессам).11.ЩелкнитепроцессCmd.exe,выделенныйсерымцветом.12.Щелкнувправойкнопкоймыши,выберитекомандуEndProcessTree(Завершитьдеревопроцессов).13.BокнеTaskManagerWarning(Предупреждениедиспетчеразадач)щелкнитеYes(Да).Первоеокнокоманднойстрокиисчезнет,новыпопрежнемусможетенаблюдатьокноPaint,таккаконоявляетсявнукомпервогоиззавершенныхпроцессовCommandPrompt.Aпосколькувторой(родительскийпроцессPaint)тожезавершен,связьмеждуродителемивнукомпотеряна.Дляпросмотра(имодификации)процессовиинформации,связаннойсними,существуетцелыйнаборутилит.Следующиеэкспериментыдемонстрируют,какполучитьтуилиинуюинформациюопроцессеспомощьюнекоторыхизэтихутилит.ОнивключаютсянепосредственновсамуWindows,атакжевWindowsSupportTools,WindowsDebuggingTools,ресурсыWindowsиPlatformSDK.Многиеизэтихутилитвыводятперекрывающиесяподмножестваинформацииобазовыхпроцессахипотоках,иногдаидентифицируемыепоразнымименам.Вероятно,наиболееширокоприменяемаяутилитадляанализаактивностипроцессовTaskManager(Диспетчерзадач(Любопытно,чтовядреWindowsнеттакогопонятия,какзадача,такчтоTaskManagerнасамомделеявляетсяинструментомдляуправленияпроцессами.)Следующийэкспериментпоказываетразницумеждутем,чтоTaskManagerперечисляеткакприложенияипроцессы.ЭКСПЕРИМЕНТ:просмотринформацииопроцессахчерездиспетчерзадачДиспетчерзадачWindowsотображаетсписоквыполняемыхвсистемепроцессов.Егоможнозапуститьтремяспособами:1)нажавклавишиCtrl+Shift+Esc;2)щелкнувпанельзадачправойкнопкоймышиивыбравкомандуTaskManager(Диспетчерзадач);3)нажавклавишиCtrl+Alt+Del.ПослезапускадиспетчеразадачоткройтевкладкуProcesses(Процессы).Заметьте,чтопроцессыидентифицируютсяпоимениобраза,экземплярамикоторогоониявляются.BотличиеотнекоторыхобъектоввWindowsпроцессамнельзяприсваиватьглобальныеимена.ДляпросмотраболееподробныхсведенийвыберитеизменюView(Вид)командуSelectColumns(Выбратьстолбцы)иукажите,какаядополнительнаяинформациявасинтересует.ЕсливкладкаProcessesокнадиспетчеразадачсовсейочевидностьюпо Путь рыцаря 6 дней назад
10 AbrakaDaniel 6 дней назад
Сделай добро! Расскажи друзьям в соц.сети!
Привлекательный комментарий приветствуется :)

Создай свою текстовую игру онлайн на Apero.ru