1. Выполняет начальную проверку оборудования, в том числе определяет модель процессора и размер установленной оперативной памяти. Одновременно проверяется исправность оперативной памяти.
   2. Получает установки системной конфигурации из памяти CMOS.
   3. Устанавливает частоту шин в соответствии с настройками, содержащимися в CMOS.
   4. Проверяет наличие устройств для начала загрузки ОС, например дисковода, жесткого диска и привода компакт-дисков.
   5. Инициализирует видеоадаптер, клавиатуру, дисковод гибких дисков и системный динамик.
   6. Выдает звуковой сигнал о прохождении проверки.
   7. Инициализирует остальные устройства согласно настройкам CMOS.
   8. После того как процедура POST закончена, дополнительные адаптеры (видеокарта, контроллеры жесткого диска) выполняют свой тест внутренней диагностики. В процессе прохождения POST на экран выводятся сведения о ходе проверки.
   Программа BIOS заканчивает свое участие в процессе загрузки тем, что находит на жестком диске главную загрузочную запись (Master Boot Record, MBR) и передает управление ей. C этого момента вступают в дело программы, записанные на жестком диске компьютера. Коды данных приложений записаны на винчестере в виде вполне определенных файлов, своих для каждой операционной системы. Ниже описан процесс загрузки на примере системы Windows XP, для которой загрузочные файлы находятся в корневой директории диска C:, а также в папках Windows\ и Windows\System32\.
   1. Загрузчик MBR передает управление загрузочной записи активного раздела, а та, в свою очередь, обращается к файлу – загрузчику операционной системы. Заметим, что MBR и загрузочная запись раздела файлами не являются – эти секторы диска не отображаются в файловой системе. А вот загрузчик операционной системы – исполняемый файл, входящий в ее состав. В операционной системе Windows данный файл носит имя ntldr (сокращение от NT loader) и обязательно должен находиться в корневой папке загрузочного диска (обычно это диск C:). Там же должен быть файл boot.ini, в котором записано, где находятся файлы операционной системы.
   2. Программа ntldr читает файл boot.ini и запускает две следующие программы: ядро системы ntoskrnl.exe и программу ntdetect.com, которая собирает информацию об установленном оборудовании и сообщает ее ядру.
   3. Ядро операционной системы загружает в оперативную память из файла hal.dll так называемый уровень аппаратных абстракций (Hardware Abstraction Layer, HAL).
   4. Ядро и HAL запускают исполнительную систему Windows, основная часть которой содержится в файле win. com.
   5. Исполнительная система Windows читает конфигурацию оборудования из реестра и в соответствии с этим запускает драйверы и службы.
   6. Ядро запускает программу Session Manager (Smss.exe), которая:
   · переключает Windows из текстового режима в графический;
   · запускает менеджер входа в систему Logon Manager (файл systemroot\System32\Winlogon.exe);
   · создает файл подкачки.
   7. Менеджер входа в систему (Logon Manager, Winlogon. exe) запускает подсистему сервисов (Services. exe) и локальную систему безопасности (Local Security Authority, Lsass. exe), а затем выводит экран приветствия или входа в систему.
   8. После входа пользователя в систему загружается оболочка ОС, программа Explorer. exe. Все ее настройки берутся из реестра.
   9. Запускаются дополнительные программы, которые должны загружаться автоматически.
   Вся загрузка операционной системы Windows, в зависимости от производительности компьютера, занимает несколько десятков секунд. О том, как продвигается процесс загрузки, можно судить по виду экрана.
   Вот какие при этом могут быть неприятности.
   • В начале загрузки ОС компьютер успевает вывести сообщение об ошибке и зависает. Характерными считаются сообщения о невозможности загрузить компоненты ядра или исполнительной системы, выводимые в текстовом режиме. Например, сообщения Ошибка загрузки hal.dll или ntldr is missed указывают на конкретные файлы, послужившие причиной ошибки.
   • Операционная система, столкнувшись с ошибкой при своей загрузке, пытается автоматически восстановить нужные файлы или настройки. Операционные системы Windows создают и хранят резервные копии большинства системных файлов и настроек. Во многих случаях такое автоматическое восстановление в процессе загрузки выполняется совершенно незаметно для пользователя. Единственным признаком может быть то, что загрузка вдруг протекает намного дольше обычного. В другом случае на экран выводится сообщение о том, что система была восстановлена после серьезной ошибки и после перезагрузки ее работа будет продолжена.
   • При возникновении неустранимой критической ошибки во время загрузки служб и драйверов компьютер может зависнуть с появлением так называемого «синего экрана смерти» (Blue Screen Of Death, BSOD). Этот экран (рис. 1.1) является развернутым сообщением об ошибке.
   Рис. 1.1. «Синий экран смерти»
 
   Сообщение BSOD начинается фразой A problem has been detected and Windows has been shut down to prevent damage of your computer (Была обнаружена проблема, и работа Windows была завершена, чтобы предотвратить повреждение вашего компьютера). Затем следуют достаточно общие рекомендации по устранению данной проблемы на английском языке. Завершается сообщение строками вида
 
   Technical information:
   *** STOP: 0x0000007B (0xF9E62640, 0xC0000034, 0x00000000, 0x00000000)
 
   Первое число является кодом ошибки, а далее в скобках следуют параметры, смысл которых зависит от категории ошибки. По коду ошибки можно найти ее описание на сайте компании Microsoft. Там же приводятся конкретные рекомендации по поиску и устранению возможных причин данной ошибки.
   • Компьютер зависает в ходе загрузки без вывода каких-либо сообщений или начинает перезагружаться. Последнее нередко связано с тем, что при сбое критически важных служб может формироваться команда на автоматическую перезагрузку машины. Пока существует ошибка, такой цикл может повторяться до бесконечности.
   • В результате ошибки службы или драйвера компьютер автоматически перезагружается, а в ходе перезагрузки выводится меню дополнительных вариантов загрузки Windows. При этом по умолчанию предлагается загрузка в безопасном режиме или запуск последней удачной конфигурации. Именно так происходит перезагрузка после установки нового драйвера какого-либо устройства, если этот драйвер явился виновником ошибки. Если загрузка в безопасном режиме проходит успешно, можно попробовать найти и исправить причину сбоя, а затем перезагрузить компьютер обычным образом.
   Кроме ошибок, приводящих к краху системы, существуют программные неполадки, не затрагивающие критические системные процессы. В таких случаях загрузка операционной системы проходит до конца – и на экране появляется Рабочий стол. О наличии подобных ошибок пользователь может узнать лишь спустя некоторое время, при выполнении определенных действий. Допустим, проблема возникает при запуске какой-либо сетевой службы. Подобная неполадка никак себя не проявляет до тех пор, пока вы не попытаетесь выйти в Интернет. Ошибки драйверов, необходимых для записи дисков, обнаружатся только в процессе обращения к записывающему приводу CD или DVD.
   Если процесс загрузки компьютера прошел нормально или по крайней мере без критических ошибок, начинается работа операционной системы. Перейдем к описанию проблем, которые могут возникнуть при работе программ, вызываемых пользователем компьютера в процессе работы.

Ошибки программ при работе в системе Windows

   Программные ошибки, проявляющиеся во время работы компьютера, обязательно связаны с обращением к какой-либо функции или команде операционной системы либо с запуском и работой прикладной программы. Внешние проявления таких ошибок могут быть сведены к некоторым типичным случаям.
   • При запуске программа тут же завершает свою работу с сообщением об ошибке или без всякого сообщения. Повторные попытки запустить эту программу приводят к тому же результату.
   • Сразу после запуска или в ходе выполнения каких-либо операций приложение зависает, то есть перестает реагировать на любые команды. Закрыть его удается только нажатием сочетания клавиш ALt+F4 или через Диспетчер задач (рис. 1.2):
   1) запустите Диспетчер задач нажатием сочетания клавиш CtrL+ALt+DeLete;
   2) на вкладке Приложения щелкните кнопкой мыши на значке зависшего приложения;
   3) нажмите кнопку Снять задачу. Через некоторое время появится окно Завершение программы;
   4) в окне Завершение программы нажмите кнопку Завершить сейчас. Приложение будет закрыто.
   Рис. 1.2. Диспетчер задач и окно Завершение программы
 
   • Приложение в целом работает, но при попытке выполнить определенную операцию игнорирует команду или выводит сообщение о невозможности выполнить данную операцию. Эти три случая можно считать относительно благоприятными, так как они не приводят к «падению» операционной системы – после завершения сбойной задачи компьютер продолжает нормальную работу. Следующий вариант является более серьезным, так как приводит к критическому сбою Windows.
   • В ходе запуска приложения или обращения к команде меню, элементу управления какого-либо окна компьютер зависает, выводит «синий экран смерти», выключается или перезагружается.
   Наконец, существуют «псевдоошибки», которые связаны со случайными изменениями в настройках операционной системы, сделанными по неосторожности или в результате постороннего вмешательства. Последнее вполне возможно, если с компьютером работает несколько пользователей, а их вмешательство в систему ничем и никак не ограничено. К счастью, исключить такие ошибки достаточно просто: все подобные настройки вполне доступны, а подробное их описание легко найти в справочной системе Windows.
   Источником ошибок в работе Windows и приложений, работающих под управлением системы, могут быть неполадки как в программном, так и в аппаратном обеспечении компьютера. Ранее уже описывались возможные проблемы, проявляющиеся при поломке оборудования компьютера. Сейчас же познакомимся с другим источником – программным.

Источники программных ошибок

   Причины всех программных ошибок можно свести к двум самым общим случаям.
   • В первом случае нарушается физическая или логическая структура файлов, папок и дисков. Грубо говоря, где-то на диске вместо единицы записан ноль или наоборот; либо часть файла не читается вовсе. Возможно, файл был просто удален, то есть сведения о нем исчезли из файловой системы. На примере книги это опечатка, клякса или вырванная страница. Система пытается найти и прочитать очередной файл, ей это не удается, и в ходе загрузки происходит ошибка.
   • Во втором случае информация формально цела, но ошибочна по содержанию. Например, для какого-либо устройства может быть установлен несовместимый драйвер или программа заражена вирусом. Сюда же стоит отнести некорректные изменения системных настроек, содержащихся в реестре.
   Очевидно, что причины повреждения или утраты файлов могут быть различными. Иногда порча файлов бывает следствием аппаратных проблем – ошибок жесткого диска. Некорректное выключение компьютера (например, внезапное исчезновение напряжения в сети) также может привести к повреждению или утрате отдельных файлов. Наконец, их можно удалить или переместить совершенно случайно. Во избежание таких случайностей наиболее важным для операционной системы файлам и папкам присвоены атрибуты «скрытый» и «системный», и по умолчанию эти объекты просто не показываются в Проводнике Windows. Даже если в настройках свойств папки разрешить отображение защищенных системных папок и файлов, при попытке удаления или перемещения таких объектов будет выведено предупреждение (рис. 1.3).
   Рис. 1.3. Предупреждение при попытке удаления системного файла
 
   Возможно, кого-то данное предупреждение не остановит. Однако файл ntldr используется операционной системой. Результат его удаления проявится не сразу, а лишь при очередном обращении к нему в процессе работы. Загрузка Windows прервется в самом начале! На рис. 1.4 показано сообщение, сопровождающее такую ошибку. Положение спасет только загрузка компьютера с другого носителя, например установочного компакт-диска Windows, и копирование загрузчика обратно на жесткий диск.
   Рис. 1.4. Сообщение об ошибке загрузчика ОС
 
   Ошибки, связанные с утратой или повреждением файлов, обычно возникают на фоне полного благополучия. Они проявляются при очередном включении компьютера, даже если чуть раньше все работало совершенно нормально.
   Второй случай всегда является результатом вмешательства человека. Типичная ситуация: после обновления драйверов или установки новой программы вы перезагружаете компьютер, а он при этом зависает. Оказывается, новый установленный драйвер содержит ошибки или не совсем подходит к конкретной модели оборудования. При установке отдельных игр по умолчанию заодно заменяются и некоторые компоненты операционной системы, например отдельные системные библиотеки. Подобная практика среди разработчиков приложений не приветствуется: по правилам грамотного программирования установка прикладной утилиты не должна затрагивать компоненты ОС. Тем не менее такие приложения встречаются.
   Существует проблема несовместимости отдельных программ с определенными версиями операционных систем семейства Windows. В частности, это относится к запуску некоторых достаточно старых утилит на компьютерах с Windows Vista. Обычно сведения о совместимости приводятся в документации к программе или на сайте разработчика. Если таких сведений нет, остается проверять совместимость экспериментальным путем. Перед подобными экспериментами очень полезно создать резервную копию системного диска в программе типа Acronis True Image или Roxio GoBack. По меньшей мере стоит создать точку восстановления системы встроенными средствами Windows. Дело в том, что, пусть и очень редко, удаление программы может не вернуть систему в предыдущее состояние: остаются какие-либо изменения в реестре, файлы в системных папках.
   Не свободна от внутренних ошибок и сама операционная система. В любом приложении есть место для ошибки, сделанной программистами. Если же код программы занимает сотни мегабайт, счет ошибок идет на десятки. Бытует шутка, что каждая новая версия Windows исправляет ошибки, допущенные в более ранних сборках. По-видимому, это неизбежно, и никакое тестирование такую проблему полностью не решает. Единственный выход – создание разработчиками «заплаток» (patches) по мере выявления недостатков и установка этих исправлений самими пользователями. Для облегчения данной процедуры задумана функция автоматического обновления системы. По ряду причин в нашей стране службу автоматического обновления большинство пользователей отключают, предпочитая скачивать и устанавливать обновления самостоятельно. Первые исправления и дополнения появляются через считаные недели после официального выхода очередной версии ОС, а спустя некоторое время разработчики выпускают пакеты обновлений, называемые сервис-паками (Service Pack, SP). Практика показывает, что операционная система оказывается «доведенной до ума» не ранее, чем появится второй пакет обновлений (SP2). К этому времени обычно к выходу в свет готова уже следующая версия Windows!
   Очень часто о постороннем вмешательстве в свой компьютер пользователь даже не подозревает. Как вы догадались, речь идет о компьютерных вирусах. По статистике, больше половины всех компьютерных проблем вызывается вирусами и другими вредоносными модулями. Программа-вирус способна добавлять свой код к содержимому различных исполняемых файлов, после чего они также могут внедрять этот код в следующие файлы. В результате приложения начинают вести себя не совсем так, как ожидается. Проявления деятельности вредоносных модулей настолько разнообразны, что перечислить их все просто невозможно: компьютерным вредительством подчас занимаются весьма талантливые программисты, а их изобретательность безгранична. Придумайте любое безобразие, которое может твориться с компьютером, и наверняка окажется, что когда-то кто-то уже создал вирус с таким действием. Далее в этой главе мы познакомимся с вирусами поближе.

Сбои операционной системы

   Само понятие «ошибка» предполагает определенную повторяемость. На практике встречаются ситуации, когда ошибка возникает однократно, а после перезагрузки или просто завершения давшей сбой программы компьютер продолжает работать совершенно нормально. Поскольку ошибка больше не повторяется, сказать что-нибудь о ее причинах бывает затруднительно. Как правило, всякие случайные и неповторяющиеся сбои так и остаются загадкой.
   Можно только предположить, что за ними на самом деле скрываются аппаратные причины. Возможно, это неотфильтрованные выбросы напряжения питания, спровоцировавшие кратковременный сбой процессора или изменение содержимого отдельных ячеек памяти. Всерьез обсуждалось влияние космических частиц на стабильность оперативной памяти. Потоки таких частиц непрерывно бомбардируют Землю. Благодаря огромной энергии они способны пронизывать любые предметы, попадающиеся на их пути, и оставлять за собой ионизированный след. Конечно, вероятность встречи элементарной частицы с модулем памяти достаточно мала, но вполне реальна. Да и самое настоящее насекомое, залезшее в системный блок, тоже нельзя сбрасывать со счетов, особенно летом.
   Так или иначе, если код программы был неправильным изначально или ошибка возникла вследствие проблем с носителем информации, программа будет «спотыкаться» каждый раз на одном и том же месте. В проявлении характерных аппаратных неисправностей тоже можно проследить какую-либо закономерность, хотя и не столь очевидную. Но даже после исключения всех объяснимых программных и аппаратных проблем остается малая доля совершенно непонятных случайных сбоев. Вероятно, со сбоями, происходящими раз в несколько недель или месяцев, следует просто смириться.
   Странно не то, что компьютер иногда дает сбои. Достойно удивления и восхищения другое: как такая система, состоящая из многих миллиардов взаимосвязанных элементов, способна длительное время работать без каких-либо ошибок!

«Старение» операционной системы

   Давно замечено, что сразу после установки операционной системы на чистый диск компьютер работает быстрее всего, а со временем реальное быстродействие неуклонно снижается. Конечно, об износе или настоящем старении операционной системы не может быть и речи, но работа системы действительно постепенно ухудшается. Это вполне объективное явление, и связано оно со многими факторами.
   • В ходе работы компьютера постепенно происходит фрагментация файлов, записываемых на жесткий диск.
   • Особенно влияет на быстродействие фрагментация файла подкачки.
   • После установки и удаления прикладных программ часто остаются лишние или ошибочные записи в реестре, в результате чего размер реестра увеличивается.
   • Установка приложений нередко сопровождается инсталляцией автоматически загружаемых резидентных программ и служб.

Программы, память и файл подкачки

   Каждая работающая программа занимает определенное место в оперативной памяти. Сама операционная система Windows во время работы занимает в оперативной памяти не менее 40 Мбайт. Объем оперативной памяти, используемой каждой прикладной программой, может достигать десятков мегабайт. Вполне можно представить ситуацию, когда общее количество памяти, необходимое операционной системе и всем одновременно запущенным программам, превысит размер оперативной памяти, установленной в данном компьютере.
   Современные ОС умеют обходить такое ограничение. Для этого на жестком диске создается так называемый файл подкачки (swap file или page file). Часть информации, которая должна находиться в оперативной памяти, может сбрасываться в этот файл. Таким образом, файл подкачки как бы продолжает оперативную память. Иначе файл подкачки называют виртуальной памятью (в отличие от реальной физической памяти). Операционная система предоставляет программам весь нужный им объем памяти, не уточняя, реальная это память или виртуальная. При этом в файл подкачки перемещается та информация, к которой дольше всего не было обращений. За распределением информации в физической и виртуальной памяти операционная система следит постоянно. Стоит какой-либо программе обратиться к данным, которые были перемещены в виртуальную память, как ОС тут же освобождает место в физической памяти и перемещает туда запрашиваемую информацию. Освободить место в физической памяти можно единственным образом – перенеся данные оттуда в файл подкачки. Наблюдая за обращением различных программ к памяти, операционная система старается постоянно держать свободным не менее четверти объема физической памяти.
   Технология виртуальной памяти позволяет запускать на компьютере столько приложений, сколько нужно пользователю, невзирая на ограниченный объем физической памяти. Правда, за такую возможность приходится расплачиваться быстродействием системы. Реальная скорость обращения к жесткому диску в десятки или сотни раз меньше скорости работы оперативной памяти. Поэтому каждое обращение к виртуальной памяти заметно «притормаживает» машину. Рекомендуемый размер файла подкачки в 1,5 раза превышает объем оперативной памяти компьютера. При настройках по умолчанию операционная система Windows создает файл подкачки именно такого размера, а по мере необходимости может его уменьшать или увеличивать. С работой файла подкачки связаны три полезных вывода.
   • Виртуальная память – вынужденная мера, призванная обеспечить работу ОС даже на компьютерах с минимальным объемом оперативной памяти. Частые обращения системы к файлу подкачки обычно оказываются основным «тормозом» производительности. На практике из всех вариантов усовершенствования аппаратной части увеличение физической памяти дает самый заметный прирост общего быстродействия компьютера.
   • К «народным советам» по настройке файла подкачки стоит относиться осторожно. Для домашнего компьютера оптимальной чаще всего остается настройка, принятая по умолчанию при установке Windows: файл подкачки располагается на системном диске, а его размер автоматически определяется системой.
   • Возможна ситуация, когда диск, на котором находится файл подкачки, заполнен почти до предела. В таком случае при запуске большого количества ресурсоемких программ операционная система может выдать предупреждение о нехватке виртуальной памяти. Выход – освободить место на этом диске за счет удаления или перемещения каких-либо файлов.

Фрагментация файлов

   На физическом уровне жесткий диск записывает информацию только целыми секторами размером по 512 байт. Когда-то такой стандарт был удобен и достаточен. По мере роста емкости винчестеров возникло желание увеличить размер участков диска, к которым система обращается одномоментно. Современные жесткие диски чаще всего на уровне BIOS поддерживают функцию LBA (Logical Block Access – доступ к логическим блокам). В таком случае BIOS обращается не к каждому сектору отдельно, а к целым блокам, состоящим из нескольких физических секторов. Считывание и запись информации при таком обращении происходят сразу большими порциями и осуществляются гораздо быстрее. Наконец, на уровне файловой системы существует понятие «кластер». Кластер представляет собой группу секторов, или логических блоков, рассматриваемых как единое целое. Каждый кластер включает в себя от 8 до 128 секторов. В процессе форматирования диска средствами Windows размер кластера при желании можно задать вручную. Значение по умолчанию предлагается операционной системой в зависимости от размера диска: чем больше диск, тем больше размер кластеров на нем. После того как диск отформатирован, правильнее всего говорить не о секторах, а о кластерах – для любой операционной системы диск выглядит именно так.
   Если размер файла превышает размер сектора (логического блока, кластера), файл занимает несколько секторов (блоков, кластеров). Другими словами, фрагменты одного файла могут размещаться в разных кластерах. В процессе обращения к фай – лу операционная система собирает эти фрагменты воедино в оперативной памяти. Когда фрагменты файла занимают кластеры, следующие один за другим, все отлично – головка жесткого диска может считывать или записывать эти данные практически «не отходя от кассы». В действительности такая непрерывная запись возможна лишь в идеале. Допустим, мы по одному записываем файлы на только что отформатированный диск. Тогда файлы действительно располагаются на диске один за другим и каждый занимает кластеры, последовательно идущие друг за другом. Принято говорить, что файлы на таком диске не фрагментированы или что фрагментация диска составляет 0 %.