"Измерение кинетического червя" - читать интересную книгу автора (НИКОЛАЕНКО АНДРЕЙ)***Петя не знал, сколько он спал. Когда он проснулся, за окном уныло разгорался серый рассвет, но это мог быть рассвет любого по счету дня. Сильно болела голова. Петя встал и нетвердыми шагами пошел в ванную. Стены продолжали кружиться вокруг него, ухитряясь одновременно оставаться на месте. Перед глазами плясали черные пятна с радужной каемкой. Ощущения были как после наркоза или отравления. Ступив босыми ногами на холодный кафельный пол ванной, Петя открыл воду и согнулся над раковиной, уперевшись в ее края руками. Голова не держалась и все время стремилась свеситься на шее, лишившейся всякой силы. Постояв немного, Петя сунул голову под струю холодной воды. Пульсирующий шар боли съежился до размеров горошины, затем постепенно вырос до прежних размеров. Но все-таки Петя почувствовал себя немного лучше. Он выключил воду, вытер голову полотенцем, вернулся в комнату, снова лег и заснул. Когда он проснулся снова, уже вечерело. Боль в голове почти прошла и превратилась в подобие ноющего назойливого присутствия посторонней субстанции. Сильно хотелось пить. Петя встал, оделся и пошел на кухню, отметив по дороге, что вращение стен стало гораздо медленней. Он выпил два стакана воды. Есть не хотелось, как и всегда при болезни. Петя достал градусник и померил температуру. 38 и 5. Плоховато, но жить можно. Только сейчас он вспомнил про компьютер. Он так и стоял включенным, только перешел в спящий режим. Петя шевельнул мышью, и в системном блоке загудел, пробуждаясь, винчестер, со слабым потрескиванием разогрелся монитор, и на экране отобразился текст. Петя узнал его – это была та самая программа, набранная им ночью. По внешнему виду было совершенно непонятно, что она должна делать. Он некоторое время раздумывал, сохранить ее на диске или нет, но потом решил все-таки сохранить, дав ей первое попавшееся имя – asdf. Исходный текст оказался больше, чем он мог предположить – около 200 килобайт. При других обстоятельствах Пете понадобилось бы недели две, чтобы напечатать такой объем. Уже чисто автоматически он попытался откомпилировать программу. Как он и ожидал, ничего не вышло. Компилятор исплевался сообщениями об ошибках и остановился. Полный бред. Петя встал из-за компьютера. Его знобило, кружилась голова. Он разыскал среди вороха вещей толстый шерстяной свитер и натянул его поверх рубашки, после чего отправился на кухню и поставил на огонь чайник. Во всех его действиях был какой-то отсутствующий, тупой автоматизм, в то время как в мозгу крутились хаотичные обрывки программных кодов, музыки, рекламных роликов и недавних разговоров. Все это складывалось в чрезвычайно сложную картину, имеющую ускользающий от понимания смысл. Он присел за стол и взял в руки банку Nesfake. Некоторое время он тупо изучал надписи на этикетке, потом оторвал ее и понес в комнату. Там он нашел фломастер и на обратной стороне этикетки написал свои имя, адрес и телефон, как того требовали правила конкурса. Графа "Город мечты" заставила его крепко задуматься. В конце концов он пожал плечами и вывел, не вполне осознавая, что делает: "Chiba city". Покончив с этикеткой, он словно лишился всех сил и некоторое время неподвижно сидел, прислушиваясь к хаосу в своей голове. Потом он снова подсел к компьютеру, решив попробовать разобраться с ошибками в программе. К своему изумлению, Петя обнаружил, что все ошибки были незначительными и поверхностными, связанными в основном с опечатками, когда палец случайно задевал соседнюю клавишу. Он исправлял их одну за другой, и даже стал слабо надеяться, что программа все-таки заработает. Засвистел чайник. Петя приготовил себе кружку дымящегося кофе и бутерброд с сыром и с двойной энергией принялся за работу. Он даже почувстствовал нечто вроде отрешенности, подобной той, что сопровождала набор загадочной программы. И вот наступил момент, когда программа откомпилировалась без ошибок. С замирающим сердцем Петя запустил ее. Система выдала сообщение, что программа произвела некорректное обращение к памяти и принудительно завершена. "А что ты ожидал?" – спросил сам себя Петя. Это был тупик. Если исправить синтаксические ошибки и описания функций было относительно просто, то копаться в логике программы, которая может и не иметь оной – безнадежное дело. Однако Петя хорошо помнил о Кинетическом Черве, и теперь не сомневался, что это очередное испытание в его квесте. Сначала он, ругнув сам себя, прицепил к компьютеру запасной винчестер и скопировал на него все свои файлы. Это следовало сделать еще перед первым запуском программы, ведь она вполне могла стереть весь винчестер. Потом он запустил отладчик и принялся трассировать программу с самого начала. Что она делала, оставалось абсолютно непонятным. Большая часть выполняемых ею инструкций была бессмысленной. Единственное, что Петя мог понять – сбой в работе происходил оттого, что программа производила запись в собственный сегмент кода. Такое часто бывает, если программа содержит скрытую ошибку… либо в самомодифицирующихся программах. Если это первый случай, то Пете не стоило даже надеяться отыскать ошибку, не зная хотя бы общей логики работы программы. Если же второй… то программе не позволяет модифицировать свой код операционная система. Значит, надо попробовать запустить программу в нулевом – привилегированном кольце защиты… Уже поздно ночью Петя закончил отлаживать код оболочки нулевого кольца. Изменять исходный текст программы он не решился, да и вряд ли бы из этого вышло что-то путное. Вместо этого он сделал небольшую оболочку, в которую "заворачивалась" программа и которая брала на себя обработку всех некорректных действий с памятью. Когда все было готово, он опять запустил программу. Экран очистился и долгое время не подавал признаков жизни. Клавиатура тоже не отзывалась. Петя уже протянул руку к кнопке перезагрузки комьютера, когда на экране появилось сообщение: ОПЕРАТИВНАЯ ПАМЯТЬ: 64 МБ ТРЕБУЕТСЯ: 112 МБ НЕ ХВАТАЕТ ПАМЯТИ и программа завершилась. Петя тихо и истерично захихикал. Памяти тебе, сволочь, не хватает? Будет тебе память. Завтра. Когда прошло напряжение работы, он почувствовал сильную усталость. Голова все еще болела. Глаза под опухшими веками покраснели и слезились. Не раздеваясь, он упал на диван и забылся тяжелым сном. |
|
|