ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2020
Просмотров: 485
Скачиваний: 4
СОДЕРЖАНИЕ
Операнди та основні режими адресації
Мови програмування високого рівня
Різні погляди на програмування і різні парадигми програмування
Основними джерелами вірусів є:
Звідси випливає, що зараження комп'ютера не відбудеться, якщо:
Основними ранніми ознаками зараження комп'ютера вірусом є:
Коли вірус переходить в активну фазу можливі такі ознаки:
Існує дуже багато різних вірусів. Умовно їх можна класифікувати наступним чином:
DRWEB
Один з кращих антивірусів із сильним алгоритмом знаходження вірусів. Поліфаг, здатний перевіряти файли в архівах, документи Word і робочі книги Excel, виявляє поліморфні віруси, котрі в останній час, отримують все більше поширення. Достатньо сказати, що епідемію дуже небезпечного вірусу OneHalf зупинив саме DrWeb. Евристичний аналізатор DrWeb, досліджуючи програми на наявність фрагментів коду, характерних для вірусів, дозволяє знайти майже 90% невідомих вірусів. При завантаженні програми в першу чергу DrWeb перевіряє самого себе на цілісність, після чого тестує оперативну пам'ять. Програма може працювати у діалоговому режимі, має дуже зручний інтерфейс користувача, який можна настроювати.
ADINF
Антивірус-ревізор диска ADINF (Avanced DiskINFoscope) дозволяє знаходити та знищувати, як існуючі звичайні, stealth- і поліморфні віруси, так і зовсім нові. Антивірус має в своєму розпорядженні лікуючий блок ревізору ADINF - Adinf Cure Module - який може знешкодити до 97% всіх вірусів. Цю цифру наводить "ДіалогНаука", виходячи з результатів тестування, котре відбувалося на колекціях вірусів двох визнаних авторитетів в цій області - Д.Н.Лозинського й фірми Dr.Solomon's (Великобританія).
ADINF завантажується автоматично у разі вмикання комп'ютера і контролює boot-сектор і файли на диску (дата й час створення, довжина, контрольна сума), виводячи повідомлення про їх зміни. Завдяки тому, що ADINF здійснює дискові операції в обхід операційної системи, звертаючись до функцій BIOS, досягаються не тільки можливість виявлення активних stealth-вірусів на рівні переривання Int 13h, але і висока швидкість перевірки диску. Якщо знайдено boot-вірус, то ADINF просто відновить попередній завантажувальний сектор, котрий зберігається в його таблиці.
Якщо вірус є файловим, то тут на допомогу приходить лікуючий блок Adinf Cure Module, який на основі звіту основного модуля про заражені файли порівнює нові параметри файлів із попередніми, які зберігаються в спеціальних таблицях. При виявленні розбіжностей ADINF відновлює попередній стан файлу, а не знищує тіло вірусу, як це роблять поліфаги.
AVP
Антивірус AVP (AntiVirus Program) відноситься до поліфагів, у процесі роботи перевіряє оперативну пам'ять, файли, в тому числі архівні, на гнучких, локальних, мережних і CD-ROM дисках, а також системні структури даних, такі як завантажувальний сектор, таблицю розділів і т.д. Програма має евристичний аналізатор, котрий, за твердженнями розробників антивірусу здатний знаходити майже 80% усіх вірусів. Програма AVP є 32-розрядним додатком для роботи в середовищі операційних систем Windows 98, NT і 2000, має зручний інтерфейс, а також одну з найбільших у світі антивірусну базу. Нові бази антивірусів до AVP з'являються приблизно один раз у тиждень і їх можна отримати з Internet. Ця програма здійснює пошук і вилучення найрізноманітніших вірусів, у тому числі:
-
поліморфних, або вірусів, що самошифруються;
-
стелс-вірусів, або вірусів-невидимок;
-
нових вірусів для Windows;
-
макровірусів, що заражають документи Word і таблиці Excel.
Крім того, програма AVP здійснює контроль файлових операцій у системі у фоновому режимі, виявляє вірус до моменту реального зараження системи, а також визначає невідомі віруси за допомогою евристичного модуля.
8.
Алгоритм – це послідовність дій, спрямованих на розв’язання поставленої задачі.
Виконавець алгоритму
Кожний
алгоритм створюється з розрахунку на
конкретного виконавця, тому можна
сказати, що алгоритм
— це точні розпорядження (указівки,
команди, операції, інструкції) виконавцеві
здійснити послідовність дій, спрямованих
на розв’язання поставленої задачі.
Алгоритм
складається із команд — окремих указівок
виконавцеві виконати деякі конкретні
дії. Команди алгоритму виконуються одна
за одною, і на кожному кроці відомо, яка
команда повинна виконуватися. Почергове
виконання команд за кінцеве число кроків
приводить до розв’язання задачі. Для
того щоб виконавець міг розв’язати
задачу за заданим алгоритмом, він повинен
уміти виконувати кожну з дій, що вказується
командами алгоритму.
Виконавцями
алгоритмів можуть бути людина, тварини,
автомати, тобто ті, хто розуміє та може
виконати вказівки алгоритму.
Система
команд виконавця
— сукупність команд, які можуть бути
виконані виконавцем; кожна команда
алгоритму входить до системи команд
виконавця.
В основі роботи автоматичних
пристроїв лежить положення, що найпростіші
операції, на які розпадається процес
розв’язання задачі, може виконати
машина, яка спеціально створена для
виконання окремих команд алгоритму і
виконує їх у послідовності, вказаній в
алгоритмі.
Властивості алгоритму
Виконуючи
алгоритм, виконавець може не вникати в
зміст того, що він робить, і разом із тим
отримати потрібний результат, тобто
виконавець діє формально. Тому для
правильної побудови алгоритму необхідно
знати систему команд виконавця, бути
впевненим, що виконання алгоритму
завершиться за кінцеве число кроків.
Тому кажуть про деякі загальні властивості
алгоритмів.
Дискретність.
Алгоритм
розв’язання задачі повинен складатися
з послідовності окремих кроків —
відокремлених одна від одної команд
(указівок), кожна з яких виконується за
кінцевий час. Тільки закінчивши виконання
однієї команди, виконавець переходить
до виконання іншої.
Визначеність
(однозначність). Кожна команда алгоритму
однозначно визначає дії виконавця і не
припускає подвійного тлумачення. Суворо
визначеним є й порядок виконання
команд.
Формальність.
Будь-який виконавець, який володіє
заданою системою команд, може виконати
заданий алгоритм, не вникаючи в суть
задачі.
Результативність.
Виконання
алгоритму не може закінчуватися
невизначеною ситуацією або зовсім не
закінчуватися. Будь-який алгоритм
передбачає, що його виконання при
допустимих початкових даних за кінцеве
число кроків приведе до очікуваного
результату.
Масовість.
Алгоритм має передбачати можливість
зміни початкових (вхідних) даних у деяких
допустимих межах і можливість використання
його для розв’язання задач одного класу
(універсальність алгоритму).
Саме
через ці властивості часто дається
визначення поняття алгоритму
як скінченної однозначно визначеної
послідовності операцій, формальне
виконання якої приводить до розв’язання
певної задачі за кінцеве число кроків.
Базові структури алгоритму
Базові
структури алгоритму
— це структури, за допомогою яких
створюється алгоритм для розв’язання
певної задачі. Існують три основні
(базові) алгоритмічні структури, або
три основні типи алгоритмів: лінійний,
розгалужений та циклічний.
Лінійний
алгоритм
(послідовне виконання, структура
слідування) — це алгоритм, який забезпечує
отримання результату шляхом одноразового
виконання послідовності дій, незалежно
від вхідних даних і проміжних результатів.
Дії в таких алгоритмах виконуються
послідовно, одна за однією, тобто
лінійно.
Розгалужений
алгоритм
(умова, структура вибору) — у класичному
варіанті ця структура розглядається
як вибір дій у разі виконання або
невиконання заданої умови. Галуження
бувають повними і неповними.
Повне
галуження — це галуження, в якому певні
дії визначені й у разі виконання, і в
разі невиконання умови. Неповне галуження
— це розгалуження, в якому дії визначені
тільки у разі виконання (або у разі
невиконання) умови.
Циклічний
алгоритм
(цикл, структура повторення) — це
алгоритм, у якому передбачено повторення
деякої серії команд. За допомогою цієї
структури описуються однотипні дії, що
повторюються декілька разів. Такі
алгоритми забезпечують виконання довгої
послідовності дій, записаних порівняно
короткою послідовністю команд. Саме
використання циклів дозволяє у повній
мірі реалізувати швидкодію
комп’ютерів.
Основна особливість
базових алгоритмічних структур — це
їх повнота, тобто цих структур достатньо
для створення найскладнішого алгоритму.
Способи запису алгоритму
Процес
алгоритмізації
—
це визначення елементарних дій та
порядку їх виконання для розв’язання
поставленого завдання. Існують різні
способи запису алгоритмів (словесний,
формульно-словесний, метод блок-схем,
програмний та ін.), які застосовуються
для представлення алгоритму у вигляді,
що однозначно розуміється і розробником,
і виконавцем алгоритму.
Для опису
алгоритмів людина часто користується
природною мовою, але для запису багатьох
алгоритмів природна мова виявилась
незручною, тому виникла необхідність
у створенні штучних мов, наприклад мови
математичних формул, хімічних процесів
тощо. Існує спеціальна навчальна
алгоритмічна мова, яка була створена
для запису алгоритмів на папері; вона
використовує слова природної мови, але
має більш жорстку структуру. Найбільше
поширення для запису логічної структури
алгоритмів отримали графічні (структурні)
схеми, які спрощують складання та аналіз
алгоритму, полегшують перехід від запису
алгоритму до написання програми.
Графічна
схема (блок-схема) алгоритму
— це графічне зображення алгоритму у
вигляді спеціальних блоків з необхідними
словесними поясненнями. Кожний етап
алгоритму представляється у вигляді
геометричної фігури (блоку), що має певну
форму в залежності від характеру
операції. Блоки на схемі з’єднуються
стрілками (лініями зв’язку), які
визначають послідовність виконання
операцій та утворюють логічну структуру
алгоритму.
Основні блоки графічної
скеми:
• блок пуск-зупинка, що
визначає початок та кінець алгоритму
(для блоку пуск (початок) — визначений
тільки один вихід, для блоку зупинка
(кінець) — тільки вхід);
• блок
введення-виведення, що визначає введення
інформації в програму або виведення на
пристрій;
• блок процес, що визначає
зміну значення, форми уявлення або
розташування даних;
• блок перевірки
умови, що визначає подальші кроки
виконання алгоритму в залежності від
виконання умови.
Важливою особливістю
базових структур алгоритмів є те, що
вони мають один вхід і один вихід, що
дозволяє при відносній незалежності
конструювати окремі блоки алгоритмів,
а потім окремо розроблені структури
з’єднувати між собою (вихід однієї
базової структури сполучається із
входом іншої). Весь алгоритм представляє
лінійну послідовність базових структур.
9. Написання програми
Компілятор
сприймає програму, написану мовою
високого рівня. Текст цієї програми
називається початковим
кодом.
Результатом роботи компілятора є
об'єктний
код.
Різні
частини програми можуть компілюватися
незалежно. Програма, яка збирає в єдине
ціле незалежно відкомпільовані об'єктні
модулі, називається редактором
зв'язків.
При цьому відбувається налаштування
програми на реальні машинні адреси, з
якими вона буде працювати.
Результатом
роботи редактора зв'язків є програма,
готова до виконання (часто вона називається
завантажувальним модулем). Ця програма
може бути негайно виконана, а може бути
збережена на диску.
Програма, яка
завантажує готову програму в оперативну
пам'ять і забезпечує її запуск на
виконання, називається завантажувачем.
Завантажувач у найбільш типовому випадку
є частиною операційної системи. Він
повинен розмістити програму в оперативну
пам'ять і передати їй керування (це
означає встановлення програмного
лічильника на першу команду програми,
що виконується).
Розрізняють
абсолютні
і налаштовуючі
завантажувачі.
Абсолютний
завантажувач розміщує програму за
жорстко заданими адресами. Для цього в
об'єктному і завантажувальному коді
повинні бути визначені конкретні адреси
комірок пам'яті, з якими буде працювати
програма. Налаштовуючий завантажник
важче реалізувати, але він є значно
більш гнучким. Він може розмістити
програму в довільному місці пам'яті.
При цьому в завантажувальному коді
вказуються не явні адреси, а зміщення
відносно початку програми.
Асемблери
Слід
розрізняти поняття мови
асемблеру
і власне асемблери.
Мовою
асемблеру
прийнято називати машинно-орієнтовану
мову низького рівня (хоча і більш
високого, ніж машинний код). Мова асемблеру
має такі характерні особливості:
· одна команда асемблеру відповідає одній машинній команді. Певні послаблення цього принципу пов'язані з використанням макрокоманд, які на етапі підготовки програми автоматично замінюються деякою послідовністю машинних команд;
· на відміну від машинного коду, в мові асемблеру використовуються символічні позначення команд. Це робить програми, написані мовою асемблеру, придатними для сприйняття людиною, а сам процес програмування - більш простим і більш захищеним від помилок.
Асемблером
називається програма, призначена для
перекладу вихідних текстів програм,
написаних мовою асемблера, в машинні
коди. Сам процес перекладу називається
асемблюванням.
Зрозуміло, що асемблювання є набагато
простішим, ніж трансляція з мов високого
рівня.Втім, мови асемблеру часто також
називають асемблерами. З контексту, як
правило, зрозуміло, про що йде мова.Оскільки
існує чітка відповідність між асемблерними
інструкціями та машинними командами,
досить легкою задачею виявляється
зворотній переклад з машинної мови на
мову асемблера. Така операція називається
дизасемблюванням.
Незважаючи
на більш високу читабельність асемблерних
програм порівняно з машинним кодом,
програмування мовою асемблеру все-таки
залишається досить марудною справою.
Але доцільність використання асемблеру
диктується такими основними міркуваннями:
· ефективність. Компілятори з мов високого рівня не завжди генерують код, що є раціональним з точки зору швидкодії або використання пам'яті. Якщо програму зразу написати мовою асемблера, вона може стати значно більш ефективною;
· необхідність використання в програмах низькорівневих операцій з пам'яттю, зовнішніми пристроями і т.п. Якщо мова високого рівня не надає відповідних можливостей, програмування на асемблері залишається єдиним виходом.
На сучасному етапі рідко хто програмує на чистому асемблері. Програми в основному пишуться мовами високого рівня; асемблер використовується для програмування лише окремих критичних операцій. Ряд мов високого рівня надають у розпорядження програміста вбудовані асемблери, які дозволяють органічно інтегрувати асемблерні фрагменти до програм, основна частина яких пишеться цими мовами.
Основні вимоги до програм
Типова
програма реалізує так званий IPO-принцип
(Input - Processing - Output). Програма вводить деякі
вхідні
дані,
обробляє їх відповідно до заданого
алгоритму і видає вихідні
дані,
тобто результат. Велике значення мають
інтерактивні
програми,
які в ході своєї роботи можуть сприймати
команди від користувача і здійснювати
з ним діалго.
Інтерактивними є,
зокрема, сучасні операційні системи і
переважна більшість прикладних програм
загального призначення (текстові та
графічні редактори, електронні таблиці
та бази даних тощо).
Оскільки
програма по суті являє собою алгоритм,
записаний мовою, зрозумілою для
комп'ютера, програма має всі властивості,
характерні для алгоритмів. Але програма
є конкретною реалізацією алгоритма,
призначеною для практичного використання,
і властивості програм розглядають саме
з цієї точки зору.
Можна виділяти
такі вимоги до програм:
1. Правильність.
Програма
повинна видавати правильні результати
для будь-яких даних з заздалегідь
визначеного припустимого діапазону.
Це звучить банально, але з цим пов'язана
дуже серйозна проблема. Якщо програма
є достатньо складною, навіть
найкваліфікованіший програміст навряд
чи зможе з першого разу написати її без
помилок. Ці помилки можуть бути
найрізноманітніші: від суто механічних
("забув поставити крапку з комою")
до неналежного використання програмних
конструкцій або навіть помилок в самому
алгоритмі.
Загальноприйнятою є
така класифікація програмних помилок:
· синтаксичні, які пов'язані з порушенням формальних граматичних правил написання програм. Синтаксичні помилки виявляються на етапі компіляції;
· помилки часу виконання. Ці помилки знову ж-таки поділяються на такі категорії:
§ аварійні зупинки. Пов'язані з операціями, які неможливо виконати (ділення на нуль, звернення до неіснуючих файлів тощо). У таких випадках програма зупиняється;