IZONE - http://www.izcity.com/ - бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

О чем думает компьютер?

Дмитрий Турецкий

Наверняка вы неоднократно замечали такие моменты, когда компьютер кажется абсолютно бездействующим. Например, такие периоды есть при загрузке, когда появляется экран Windows, а потом несколько секунд - тишина... Иногда, нечто подобное наблюдается при запуске больших программ (точнее, программ, которые работают с большими объемами данных), или при работе антивирусов... Причем, как ни парадоксально, такое поведение очень часто только "ухудшается" при апгрейдах, например, при наращивании памяти...

Согласитесь, что это сильно раздражает. Дополнительную нервозность добавляет то, что никогда нельзя быть уверенным - зависла ли эта штука окончательно или через некоторое время "отмрет". Почти все пользователи начинают при этом шевелить мышку, щелкать ее кнопочками, нажимать клавиши на клавиатуре (чаще всего пробел, потому что enter - страшно, а в буквы веры нет :), надеясь, что эти шаманские действия каким-то образом оживят "умершего". Особо нервные, нажимают на Ctrl-Alt-Del, а то и на "reset"... А зачем вообще в компьютер встроены эти задержки?

На самом деле, таких причин две. Одна - "железная", а вторая - "софтовая". Начнем с "железной".

Дело в том, что компьютер не является единым целым. Точнее, является, но не совсем - он собран из отдельных блоков, которые как-то друг с другом взаимодействуют и обмениваются информацией. И вот это-то взаимодействие и вызывает задержки. Например, если вы вставили новый диск в CD-ROM, переключились в explorer и нажали на иконку этого CD-ROMа, то компьютер отправит ему (CD-ROMу) запрос о том, какой диск в него вставлен и что на этом диске записано. И будет ждать ответа. А CD-ROM, получив подобный запрос ответить немедленно не может - ему надо сначала раскрутить диск, направить лазер на нужный участок, прочитать данные... Вот вам и секунда-две-три "тишины"... А если диск плохо читается, или на нем что-то записано с ошибками, то и больше, т.к. CD-ROM попытается прочитать сбойный участок несколько раз и воспользоваться встроенными алгоритмами коррекции ошибок. А это тоже требует времени. Примерно то же самое можно наблюдать и с флоппи-дисками, например...

"Софтовые" причины встречаются значительно чаще. Основной их принцип заключается в том, что компьютер что-то делает в памяти, никак (или почти никак) не проявляя внешне свои действия. Большинство грамотно написанных программ "знают" о нервозности пользователей и поэтому выводят какой-нибудь индикатор того, что они работают, а не зависли. Например, может что-то изменяться в статусной строке, или появляться отдельное окошко с индикатором... Но беда в том, что все эти методы "визуализации" ненадежны. Дело в том, что для того, чтобы новые данные "появились" на экране, программе надо не только "написать" их в нужном месте, но и дать команду Windows перерисовать это окно. Рассмотрим, например, программу, которая конвертирует кучу файлов из кодировки Windows в KOI8-R. Программа должна прочитать файл, переконвертировать его, записать в новое место, а потом перйти к следующему файлу. И так пока не кончатся файлы в списке. Для того, чтобы сообщать пользователю о "ходе работ" можно выводить в статусной строке имя файла, а также число отконвертированных и оставшихся файлов. Логично это делать в начале или конце цикла. А теперь представим, что какой-то из файлов окажется очень большим - тогда программа напишет его имя в статусной строке, а потом надолго замрет, пока будет происходить его чтение-конвертирование-запись... Можно, конечно, добавить еще индикатор прогресса конвертирования каждого файла, но тогда программа начнет "жрать" больше ресурсов и работать медленнее... Причем, в данном случае, все еще не очень плохо, т.к. компьютер будет трещать винчестером читая/записывая данные, а сама конвертация занимает не очень много времени. А вот если с данными из прочитанного файла надо проводить какие-то сложные вычисления, то программа может показаться совсем зависшей - вычисления производятся в памяти (т.е. ничего не трещит и не мигает), ничего не выводится, а если программист вдобавок не вписал внутри "вычислительного цикла" команду на выполнение "отложенных" операций, то окно и на мышку реагировать не будет, пока вычисления не закончатся...

Как же определить зависла программа или нет? К сожалению, гарантированного способа не существует. Попробуйте повнимательнее присмотреться к компьютеру - если лампочка винчестера все-таки мигает, значит что-то происходит. Хотя, зациклившаяся задача может точно также писать какие-то кусочки информации на диск... Можно попробовать запустить еще какую-нибудь программу - если она запустится, значит, как минимум, сам компьютер не завис. С другой стороны, если она не запускается, то это может быть и потому, что другая программа использует более высокий приоритет... Так что самое простое - это оставить все как есть и пойти попить кофе. Крайне редко бывает так, что программе требуется больше 5-10 минут на вычисления и при этом она не выводит никаких индикаторов...

PS. То, что в списке задач (после нажатия Ctrl-Alt-Del) возле программы написано "не отвечает", ни о чем еще не говорит - если программа плотно занята какими-то вычислениями, то она и не будет отвечать...

PPS. Забавно, но иногда программисты сознательно встраивают задержки в свои программы, чтобы пользователю не было обидно, что его запросы выполняются мгновенно. Намного приятнее следить за (не очень медленно) ползущим индикатором прогресса... Особенно часто это делается во всевозможных бухгалтерских программах...

Источник: www.diskovod.ru/

 


Copyright © "Internet Zone"info@izcity.com
Копирование и использование данных материалов разрешается только в случае указания на журнал "Internet Zone", как на источник получения информации. При этом во всех ссылках обязательно явное указание адреса вэб-сайта http://www.izcity.com/. При наличии у копируемого материала авторов и источника информации - их также нужно указывать, наряду со ссылкой на нас.