![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Исследование дискет на наличие вируса в среде антивирусной программы.
1. Исполнители алгоритмов: человек, автомат, робот, компьютер. Компьютер как формальный исполнитель алгоритмов (программ). Схема выполнения программы компьютером. В определение алгоритма существенным образом входит еще одно фундаментальное понятие информатики — исполнитель. Это совсем не случайно, поскольку любой алгоритм обязательно пишется и оформляется в расчете на конкретного исполнителя. Более коротко и просто можно сказать, что исполнитель — это тот, кто выполняет алгоритмы. Сразу подчеркнем, что исполнители алгоритмов необычайно разнообразны. Все словесные алгоритмы (инструкции) пишутся для человека, следовательно, в данном случае он и будет являться исполнителем подобных алгоритмов. Многие окружающие нас автоматические устройства тоже действуют в соответствии о определенными алгоритмами. Вспомните простейшие из них — выключающийся по достижении определенной температуры воды электрический чайник или турникет в метро, а также более сложные автоматы, например, современная многопрограммная стиральная машина или CD-проигрыватель с возможностью переключения 3—5 дисков. Вершиной автоматических устройств являются роботы, т.е. устройства, способные выполнять ту или иную работу без участия человека. Термин " робот" ввел чешский писатель Карел Чапек в 1920 году в своей фантастической пьесе в качестве названия механических рабочих, заменивших людей на тяжелых физических работах. Современные роботы своим внешним видом совсем не похожи на рабочего, но, тем не менее, прекрасно справляются с его обязанностями на производстве. Едва ли человек сможет так быстро, безошибочно и качественно собрать плату сложнейшего компьютера, как это делает робот-манипулятор на автоматизированном производстве. Уже всерьез ведутся разговоры о роботах-хирургах, а японские роботы-музыканты и скульпторы давно являются непременным атрибутом всех международных выставок. Большой популярностью в быту пользуются сейчас автоматические собачки и прочая домашняя, с позволения сказать, " живность". Особо следует сказать о компьютерах. Наиболее существенным отличием компьютера от любого более простого автомата является его универсальность. Да, компьютер тоже работает по программе, но, в отличие от стиральной машины или даже автоматической собачки, программа эта далеко не единственная и очень легко может быть заменена. Производители компьютеров особенно заботятся об этом, разрабатывая все новые и новые устройства ввода информации, в том числе и программ. Итак, мы видели, что исполнители алгоритмов необычайно разнообразны. Есть ли у них какие-то общие черты, которые делают их похожими? Разумеется, есть! Во-первых, состояние каждого исполнителя описывается определенным набором характеристик. Для телевизора это канал, громкость, контрастность, для графического редактора — цвета точек создаваемого рисунка, для автоматической межпланетной станции — положение в пространстве, ориентация относительно Солнца, скорость и т.д. Полный набор характеристик, описывающий состояние исполнителя, и обстановка, в которой он действует, принято называть средой данного исполнителя. Во-вторых, для управления исполнителем и организации необходимых изменений в его среде имеется собственный строго определенный набор команд. В учебниках такой набор обычно называют системой команд исполнителя, или сокращенно СКИ. Исполнитель не способен выполнить ни одной команды, которая не попадает в его СКИ, даже если введенная команда отличается от существующей всего лишь единственной неправильно написанной буквой. Приведем примеры систем команд для нескольких различных исполнителей. Телевизор, " повинуясь" командам с пульта управления, может переключать каналы, регулировать громкость, яркость и т.д. Практически любая собака способна выполнять несколько команд хозяина типа " рядом", " голос" или им аналогичных. Очень четкую СКИ, часто представляемую в форме таблицы, имеет каждый процессор. Вся таблица 16 х 16 заполнена разнообразными командами, лишь немногие места в таблице не заняты. Четко просматривается наличие закономерностей в СКИ: коды 40—7F образуют " слой" команд переписи MOV, затем следуют ряды арифметических операций (ADD — сложение, SUB — вычитание), логических и т.д. Для нас сейчас наиболее интересно то, что приведенная система команд построена по определенным правилам и четко структурирована. Типичный контроллер дисковода IBM PC умеет исполнять 15 команд; наиболее понятными для неподготовленного читателя будут следующие: чтение идентификатора сектора, чтение данных, запись данных, чтение дорожки, форматирование дорожки и др. подобные команды работы с диском (сведения взяты из книги: Букмин А.В., Безрукий Ю.Л. Дисковая подсистема IBM-совместимых персональных компьютеров. M.: Бином, 1993, 284 с.). Завершая разговор о роли СКИ, подчеркнем, что исполнитель отказывается исполнять не только те команды, которые отсутствуют в списке. Даже синтаксически правильная команда при некоторых условиях не может быть выполнена. Например, невозможно выполнить команду деления, если делитель равен нулю; нельзя осуществить команду движения вперед, когда робот уперся в стену; невозможно произвести запись в сектор с несуществующим номером или на неотформатированную дискету (в; последнем случае на дискете вообще нет никаких секторов). Как бы не выглядела формулировка отказа исполнителя, ее кратко можно сформулировать как " Не могу": (в отличие от " Не понимаю" в случае синтаксической ошибки в записи команды). Более строго вывод должен звучать так: каждая команда 6 СКИ должна иметь четко оговоренные условия ее выполнения; все случаи аварийного прерывания команды из-за нарушения этих ' условий должны быть четко оговорены и корректно реализованы. Интересный пример нарушения этого правила связан с ошибкой в процессоре Pentium, обнаруженной осенью 1997 года. Оказалось, что при попытке сравнить 32-битный операнд с 64-битным процессор; не только не обеспечивал стандартной реакции на ошибочную инструкцию, как это ожидалось в подобном случае, но при некоторых неблагоприятных условиях мог даже полностью прекратить работу! Эта ошибка, названная " Pentium FO bug", имеется во всех процессорах Pentium и Pentium MMX; в более поздних процессорах ее нет. Третьей важной особенностью исполнителей часто выделяют его режим работы. Перечень режимов для каждого исполнителя, естественно, свой. Так, для графического редактора это рисование геометрических примитивов, стирание, выделение и т.д. Телевизор, помимо обычного режима работы, имеет дежурный режим, в котором ожидает, когда его включат для просмотра. Процессор Pentium также имеет несколько режимов работы: режим реальной адресации (реальный режим), защищенный режим виртуальной адресации (защищенный режим), режим виртуального процессора 8086 (V86) и режим системного управления (SMM). Их разбор выходит далеко за рамки нашего обсуждения; с точки зрения рассматриваемого вопроса важен сам факт существования нескольких режимов работы. Для большинства несложных учебных исполнителей особо выделяют режимы непосредственного и программного управления. В первом случае исполнитель ожидает команд от человека и каждую немедленно выполняет. Наглядным примером работы в таком режиме является устройство управления телевизором. Во втором случае исполнителю сначала задается пол-ный список команд (программа), а затем он исполняет все эти команды в автоматическом режиме — в таком режиме работает компьютер. Как вы, наверное, догадались, режимы непосредственного и программного управления не являются всеобщими. Уже упоминавшиеся телевизор и компьютер имеют только один из этих режимов, и, честное слово, никаких трудностей это не создает. Телевизор добросовестно исполняет принимаемые с пульта управления команды телезрителя, удовлетворяя сиюминутные желания и прихоти своего владельца (например, включить другой канал на время рекламы). Что же касается компьютера, то он, наоборот, специально был создан для работы в программном режиме, Именно в этом состояло и состоит его основное преимущество перед микрокалькулятором, производящим вычисления в зависимости от скорости нажатия кнопок человеком. Тем не менее, большинство исполнителей могут работать как в режиме непосредственного выполнения каждой команды, так и по программе. Первый режим обычно используется для знакомства с работой отдельных команд исполнителя и бывает, полезен при отладке, а второй, конечно, является основным. Особо подчеркнем, что не все команды могут выполняться в непосредственном режиме, примером чего могут служить команды ветвления и цикла, не имеющие смысла вне программного режима. И последний наглядный пример, который обязательно хочется здесь привести. Уже упоминавшийся выше исполнитель Бейсик может немедленно совершить действия, записанные в строке, когда она не имеет номера. Строка, содержащая номер, напротив, запоминается в общую программу и исполняется позднее после ввода команды run. А вот Паскаль всегда работает в программном режиме — особенности языка делают реализацию его отдельно взятого оператора невозможной. Примечание. То, что Бейсик первоначально был интерпретатором, а Паскаль всегда реализуется как компилятор, в обсуждаемой ситуации не представляется принципиально важным. Вспомните Quick Basic, который является компилятором, но сохраняет поддержку режима непосредственного исполнения строки команд. Таковы наиболее общие свойства исполнителей. Остается рассмотреть последнюю часть вопроса о компьютере как специфическом исполнителе алгоритмов. Рассматривая свойства алгоритмов в билете № 13, мы убедились, что они могут исполняться формально, а значит, это вполне под силу машине. ЭВМ — это универсальный исполнитель алгоритмов; иными словами, она может выполнять самые разнообразные алгоритмы (программы). Как мы уже видели, компьютер имеет собственную систему команд. Ее главное достоинство состоит в том, что машинные операции достаточно универсальны: арифметические и логические операции, перепись информации, переходы, сдвиги кодов — вот почти весь набор. Комбинируя их между собой, можно получить программу практически для любой области, подобно тому, как из одинаковых кирпичей можно сложить самые разнообразные строения. Итак, благодаря универсальной СКИ компьютер способен быть различными исполнителями в зависимости от того, какая программа введена и запущена в нем в данный момент. Диапазон исполнителей очень широк — от графичёского редактора до преобразователя из одного вида кодировки в другой. Важным для нас случаем являются программы, реализующие на компьютере различных учебных исполнителей. Среди них одним из самых известных является Черепашка, выполняющая команды языка Лого, придуманная Сеймуром Пейпертом. Широкое распространение у нас в стране также получили исполнители из Роботландии, разработанные группой авторов из Переславля-Залесского. На рисунке приведены некоторые из этих исполнителей: Пере-ливашка, помогающий решать логические задачи на переливание жидкости из одного сосуда в другой; Перевозчик, переправляющий на лодке известных персонажей волка, козу и капусту, и " высокоинтеллектуальный" Кукарача, умеющий двигать кубики по клетчатой доске. Во многих школьных учебниках также описываются другие исполнители: Вычислитель, Чертежник, Робот-манипулятор [2], Робот, еще один Чертежник, Стековый калькулятор, Счетчик [4], Паркетчик [5] — и многие другие. Кроме упоминающихся в учебниках, имеются также и другие исполнители, такие, как, например, этот симпатичный Кенгуренок Ру. Наконец, отдельную группу исполнителей образуют модели учебных ЭВМ Кроха [2], Нейман [3] и Малютка [5]. Совсем новую учебную модель современного RISC-компьютера предложил недавно известный читателю по серии книг " Искусство программирования на ЭВМ" профессор Дональд Кнут; он назвал ее MMIX. После прочтения внушительного перечня программных компьютерных исполнителей у внимательного читателя, наверное, возник вопрос: а есть ли у компьютера собственный алгоритм работы, благодаря которому он является таким универсальным исполнителем? Конечно, есть! Не только собственная система команд, о которой мы уже говорили раньше, но и свой алгоритм работы. Рассмотрим подробнее, как компьютер выполняет отдельные операции и как реализуется вся программа в целом. Важной составной частью процессора является счетчик адреса команд. Этот специальный внутренний регистр в устройстве управления постоянно указывает на ячейку памяти, в которой хранится следующая команда программы. При включении питания или при нажатии на кнопку сброса (начальной установки) в счетчик аппаратно заносится стартовый адрес находящейся в ПЗУ программы инициализации всех устройств и начальной загрузки ЭВМ. Дальнейшее функционирование компьютера определяется программой. Таким образом, вся деятельность ЭВМ — эта непрерывное выполнение тех или иных программ, причем программы эти могут, в свою очередь, загружать новые программы и т.д. Каждая программа состоит из отдельных машинных команд. Каждая машинная команда, в свою очередь, делится на ряд элементарных унифицированных составных частей, которые принято называть тактами (помните термин " тактовая частота процессора"? Он происходит именно отсюда!). В зависимости от сложности команды, она может быть реализована за разное количество тактов. Например, пересылка информации из одного внутреннего регистра процессора в другой выполняется за несколько тактов, а для перемножения двух целых чисел тактов требуется примерно на порядок больше. Существенное удлинение команды происходит, если обрабатываемые данные не находятся внутри процессора и их приходится считывать из ОЗУ. При выполнении каждой команды ЭВМ проделывает определенные стандартные действия, описанные ниже. 1. Согласно содержимому счетчика адреса команд считывается очередная команда программы. Ее код обычно заносится на хранение в специальный регистр УУ, который носит название регистра команд. 2. Счетчик команд автоматически изменяется так, чтобы в нем содержался адрес следующей команды. В простейшем случае для этой цели достаточно к текущему значению счетчика прибавить некоторую константу, определяющуюся длиной команды. 3. Считанная в регистр команд операция расшифровывается, извлекаются необходимые данные и над ними выполняются требуемые действия и, если это предусмотрено операцией, запись результата в ОЗУ. 4. Все описанные действия циклически повторяются сп. 1. Рассмотренный основной алгоритм работы ЭВМ позволяет шаг за шагом выполнить хранящуюся в ОЗУ линейную программу. Если же требуется изменить порядок вычислений для реализации развилки или цикла, достаточно в счетчик команд занести требуемый адрес (именно так происходит условный или безусловный переход). В современных компьютерах для ускорения основного цикла выполнения команды используется метод конвейеризации, позволяющий реализовать перечисленные выше этапы алгоритма параллельно.
|