Языки программирования 3

Содержание



Введение…………………………………………………………………………..3

1. Структура и типы данных языка программирования…………………..4

2. Базы данных, экспертные системы, искусственный интеллект………..9

3. Передача данных по сети…………………………………………………...20

4. Методы защиты от вирусов………………………………………………...28

Заключение……………………………………………………………………...37

Список литературы…………………………………………………………….39






Введение



Слово информатика привлекает исследователей по машинной обработке информации давно. За последние четыре-пять десятков лет информатика прошла официальный путь от названия научной дисциплины до названия науки. Возможно, что информатика неофициально уже существует 300 и более лет, так осознанная обработка сообщений (знания) с помощью различных устройств существовала давно. 

Информатика - это наука об описании, осмыслении, определении (толковании), представлении, обобщении (формализации) и использовании знаний с применением средств вычислительной техники и программ ее работы для получения нового знания в различных сферах деятельности человека.

Определение информатики возникло в недрах кибернетики. Информатика стала самостоятельной наукой, что породило споры о субординации двух наук. Сопоставление теории познания (гносеология или эпистемология) и информатики сводится к разделению их по определениям, по предмету, по рассматриваемым ими проблемам и по другим атрибутам научной дисциплины.

Теория познания - это раздел философии, в котором изучаются закономерности и возможности познания человеком, отношение знания (наблюдений, ощущений, представлений, понятий, обобщений и применений) к окружающему миру (объективной реальности), исследуются ступени и формы процесса познания, условия и критерии его достоверности и истинности. 


1. Структура и типы данных языка программирования



Язы́к программи́рования — формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.

Со времени создания первых программируемых машин человечество придумало уже более восьми с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.

Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространенным утверждениям, признаваемым большинством разработчиков, относятся следующие:

Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами. 

Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время, как естественные языки используются для общения людей между собой. В принципе, можно обобщить определение «языков программирования» — это способ передачи команд, приказов, четкого руководства к действию; тогда как человеческие языки служат также для обмена информацией. 

Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений. 

Язык программирования может быть представлен в виде набора спецификаций, определяющих его синтаксис и семантику.

Для многих широко распространённых языков программирования созданы международные стандарты. Специальные организации проводят регулярное обновление и публикацию спецификаций и формальных определений соответствующего языка. В рамках таких комитетов продолжается разработка и модернизация языков программирования и решаются вопросы о расширении или поддержке уже существующих и новых языковых конструкций.

Во внутреннем представлении обычно данные в современных цифровых компьютерах сохраняются в бинарном виде (в двоичном виде). Данные, которые представляют информацию из реального мира (имена, банковские счета, измерения и др.) — высокоуровневые концепции.

Особая система, по которой данные организуются в программе, — это система типов языка программирования; разработка и изучение систем типов известна под названием теория типов. Языки могут быть классифицированы как системы со статической типизацией и языки с динамической типизацией.

Статически-типизированные языки могут быть в дальнейшем подразделены на языки с обязательной декларацией, где каждая переменная и объявление функции имеет обязательное объявление типа, и языки с выводимыми типами. Иногда динамически-типизированные языки называются латентно типизированными.

Системы типов в языках высокого уровня позволяют определять сложные, составные типы, так называемые структуры данных. Как правило, структурные типы данных образуются как декартово произведение базовых (атомарных) типов и ранее определённых составных типов.

Основные структуры данных (списки, очереди, хэш-таблицы, двоичные деревья и пары) часто представлены особыми синтаксическими конструкциями в языках высокого уровня. Такие данные структурируются автоматически.

Существует несколько подходов к определению семантики языков программирования.

Наиболее широко распространены разновидности следующих: операционного (или так называемого математического), и деривационного (или аксиоматического).

При описании семантики в рамках операционного подхода обычно исполнение конструкций языка программирования интерпретируется с помощью некоторой воображаемой (абстрактной) ЭВМ.

Деривационная семантика описывает последствия выполнения конструкций языка с помощью языка логики и задания пред- и постусловий. Денотационная семантика оперирует понятиями, типичными для математики — множества, соответствия и др.

Язык программирования строится в соответствии с той или иной базовой моделью вычислений.

Несмотря на то, что большинство языков ориентировано на так называемую императивную модель вычислений, задаваемую так называемой фоннеймановской архитектурой ЭВМ, существуют и другие подходы. Прежде всего следует упомянуть языки со стековой вычислительной моделью (Forth, Factor, Postscript и др), а также функциональное (Лисп, Haskell, ML и др.) и логическое программирование (Пролог).

В настоящее время также активно развиваются проблемно-ориентированные, декларативные и визуальные языки программирования.

В вычислительной технике структура данных — это программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих интерфейс структуры данных. Структура данных часто является реализацией какого-либо абстрактного типа данных.

При разработке программного обеспечения большую роль играет проектирование хранилища данных, и представление всех данных в виде множества связанных структур данных. Хорошо спроектированное хранилище данных оптимизирует использование ресурсов (таких как время выполнения операций, используемый объём оперативной памяти, число обращений к дисковым накопителям), требуемых для выполнения наиболее критичных операций.

Структуры данных формируются с помощью типов данных, ссылок и операций над ними в выбранном языке программирования.

Различные виды структур данных подходят для различных приложений; некоторые из них имеют узкую специализацию для определённых задач. Например, Б-деревья обычно подходят для создания баз данных, в то время как хэш-таблицы используются повсеместно для создания различного рода словарей, например, для отображения доменных имён в интернет адреса компьютеров.

При разработке программного обеспечения сложность реализации и качество работы программ существенно зависит от правильного выбора структур данных. Это понимание дало начало формальным методам разработки и языкам программирования, в которых именно структуры данных, а не алгоритмы, ставятся во главу архитектуры программного средства. Большая часть таких языков обладает определённым типом модульности, позволяющим структурам данных безопасно переиспользоваться в различных приложениях. Объектно-ориентированные языки, такие как Java, C# и C++, являются примерами такого подхода.

Многие классические структуры данных представлены в стандартных библиотеках языков программирования или непосредственно встроены в языки программирования. Например, структура данных хэш-таблица встроена в языки программирования Lua, Perl, Python, Ruby, Tcl и др. Широко используется стандартная библиотека шаблонов STL языка C++.

Фундаментальными строительными блоками для большей части структур данных являются массивы, записи (см. конструкцию struct в языке Си и конструкцию record в языке Паскаль), размеченные объединения (см. конструкцию union в языке Си) и ссылки. Например, структура данных двусвязный список, может быть построена с помощью записей и зануляемых ссылок, а именно, каждая запись будет предоставлять блок данных (узел, node), содержащий ссылки на «левый» и «правый» узлы, а также сами хранимые данные.




2. Базы данных, экспертные системы, искусственный интеллект



База Данных (БД) — структурированный организованный набор данных, описывающих характеристики каких-либо физических или виртуальных систем.

«Базой данных» часто упрощённо или ошибочно называют Системы Управления Базами Данных (СУБД). Нужно различать набор данных (собственно БД) и программное обеспечение, предназначенное для организации и ведения базы данных (СУБД).

Организация структуры БД формируется исходя из следующих соображений:

Адекватность описываемому объекту/системе — на уровне концептуальной и логической модели. 

Удобство использования для ведения учёта и анализа данных — на уровне так называемой физической модели. 

Виды концептуальных (инфологических) моделей БД: «сущность-связь», семантические, графовые.

Виды логических (даталогических) моделей БД:

Документальные (архивы) — ориентированные на формат документа, дескрипторные, тезаурусные. 

Фактографические (картотеки) 

теоретико-графовые: иерархическая модель, сетевая модель.

теоретико-множественные: реляционная модель (ER-модель), многомерная модель.

объектно-ориентированные: объектная модель.

основанные на инвертированных файлах.

Таким образом, по модели представления данных БД классифицируются:

Картотеки 

Сетевые 

Иерархические 

Реляционные 

Многомерные 

Объектно-ориентированные 

Дедуктивные 

На уровне физической модели электронная БД представляет собой файл или их набор в формате TXT, CSV, Excel, DBF, XML либо в специализированном формате конкретной СУБД. Также в СУБД в понятие физической модели включают специализированные виртуальные понятия, существующие в её рамках — таблица, табличное пространство, сегмент, куб, кластер и т. д.

В настоящее время наибольшее распространение получили реляционные базы данных. Картотеками пользовались до появления электронных баз данных. Сетевые и иерархические базы данных считаются устаревшими, объектно-ориентированные пока никак не стандартизированы и не получили широкого распространения. Некоторое возрождение получили иерархические базы данных в связи с появлением и распространением XML.

Этапы проектирования базы данных

1. Концептуальное проектирование — сбор, анализ и редактирование требований к данным. Для этого осуществляются следующие мероприятия:

обследование предметной области, изучение ее информационной структуры 

выявление всех фрагментов, каждый из которых характеризуется пользовательским представлением, информационными объектами и связями между ними, процессами над информационными объектами 

моделирование и интеграция всех представлений 

По окончании данного этапа получаем концептуальную модель, инвариантную к структуре базы данных. Часто она представляется в виде модели «сущность-связь».

2. Логическое проектирование — преобразование требований к данным в структуры данных. На выходе получаем СУБД-ориентированную структуру базы данных и спецификации прикладных программ. На этом этапе часто моделируют базы данных применительно к различным СУБД и проводят сравнительный анализ моделей.

3. Физическое проектирование — определение особенностей хранения данных, методов доступа и т. д.

Различие уровней представления данных на каждом этапе проектирования реляционной базы данных:

Концептуальный уровень — Представление аналитика (используется инфологическая модель «сущность-связь»)

Логический уровень — Представление программиста

Физический уровень — Представление администратора

Экспе́ртная систе́ма (ЭС, expert system) — компьютерная программа, способная заменить специалиста-эксперта в разрешении проблемной ситуации. ЭС начали разрабатываться исследователями искусственного интеллекта в 1970-х годах, а в 1980-х получили коммерческое подкрепление.

Похожие действия выполняет программа-мастер (wizard). Мастера применяются как в системных программах так и в прикладных для интерактивного общения с пользователем (например, при установке ПО). Главное отличие мастеров от ЭС — отсутствие базы знаний; все действия жестко запрограммированы. Это просто набор форм для заполнения пользователем.

Другие подобные программы — поисковые или справочные (энциклопедические) системы. По запросу пользователя они предоставляют наиболее подходящие (релевантные) разделы базы статей. Например, для Википедии аналогами статических визардов являются категории, списки, шаблоны, порталы.

Структура экспертной системы:

Интерфейс пользователя 

Пользователь 

Интеллектуальный редактор базы знаний 

Эксперт 

Инженер по знаниям 

Рабочая (оперативная) память 

База знаний 

Решатель (механизм вывода) 

Подсистема объяснений 

База знаний состоит из правил анализа информации от пользователя по конкретной проблеме. ЭС анализирует ситуацию и, в зависимости от направленности ЭС, дает рекомендации по разрешению проблемы.

Как правило, база знаний ЭС содержит факты (статические сведения о предметной области) и правила - набор инструкций, применяя которые к известным фактам можно получать новые факты.

Обычно факты в базе знаний описывают те явления, которые являются постоянными для данной предметной области. Характеристики, значения которых зависят от условий конкретной задачи, ЭС получает от пользователя в процессе работы, и сохраняет их в рабочей памяти. Например, в медицинской ЭС факт "У здорового человека 2 ноги" хранится в базе знаний, а факт "У пациента одна нога" - в рабочей памяти.

База знаний ЭС создается при помощи трех групп людей:

эксперты той проблемной области, к которой относятся задачи, решаемые ЭС; 

инженеры по знаниям, являющиеся специалистами по разработке ИИС; 

программисты, осуществляющие реализацию ЭС. 

ЭС может функционировать в 2-х режимах.

Режим ввода знаний - в этом режиме эксперт с помощью инженера по знаниям посредством редактора базы знаний вводит известные ему сведения о предметной области в базу знаний ЭС. 

Режим консультации - пользователь ведет диалог с ЭС, сообщая ей сведения о текущей задаче и получая рекомендации ЭС. Например, на основе сведений о физическом состоянии больного ЭС ставит диагноз в виде перечня заболеваний, наиболее вероятных при данных симптомах. 

Классификация ЭС по решаемой задаче

Интерпретация данных 

Диагностирование 

Мониторинг 

Проектирование 

Прогнозирование 

Сводное Планирование 

Обучение 

Управление 

Ремонт 

Отладка 

Классификация ЭС по связи с реальным временем

Статические ЭС 

Квазидинамические ЭС 

Динамические ЭС 

Этапы разработки ЭС

Этап идентификации проблем 

Этап извлечения знаний 

Этап структурирования знаний 

Этап формализации 

Реализация ЭС 

Этап тестирования 

Наиболее известные/распространённые ЭС

CLIPS — весьма популярная ЭС (public domain) 

OpenCyc — мощная динамическая ЭС с глобальной онтологической моделью и поддержкой независимых контекстов 

Искусственный интеллект (англ. Artificial intelligence, AI) — раздел информатики, занимающийся формализацией задач, напоминающих задачи, выполняемые человеком. При этом в большинстве случаев заранее неизвестен алгоритм решения задачи. В некотором роде обособленно стоят задачи распознавания образов, которые традиционно включают в круг задач искусственного интеллекта. Искусственным интеллектом не являются боты компьютерных игр, а так же различных консолей.

Точного определения этой науки не существует, так как в философии не решён вопрос о природе и статусе человеческого интеллекта. Нет и точного критерия достижения компьютерами «разумности», хотя на заре искусственного интеллекта был предложен ряд гипотез, например, тест Тьюринга или гипотеза Ньюэлла — Саймона. На данный момент есть множество подходов как к пониманию задачи ИИ, так и созданию интеллектуальных систем.

Так, одна из классификаций выделяет два подхода к разработке ИИ:

нисходящий, семиотический — создание символьных систем, моделирующих высокоуровневые психические процессы: мышление, рассуждение, речь, эмоции, творчество и т. д.; 

восходящий, биологический — изучение нейронных сетей и эволюционные вычисления, моделирующих интеллектуальное поведение на основе более мелких «неинтеллектуальных» элементов. 

Эта наука связана с психологией, нейрофизиологией, трансгуманизмом и другими. Как и все компьютерные науки, она использует математический аппарат. Особое значение для неё имеют философия и робототехника.

Искусственный интеллект — очень молодая область исследований, старт которой был дан в 1956 году. Её исторический путь напоминает синусоиду, каждый «взлёт» которой инициировался какой-либо новой идеей. В настоящий момент её развитие находится на «спаде», уступая место применению уже достигнутых результатов в других областях науки, промышленности, бизнесе и даже повседневной жизни.

Единого ответа на вопрос чем занимается искусственный интеллект, не существует. Почти каждый автор, пишущий книгу об ИИ, отталкивается в ней от какого-либо определения, рассматривая в его свете достижения этой науки. Обычно эти определения сводятся к следующим:

ИИ изучает методы решения задач, которые требуют человеческого разумения. Исторически первый подход. Грубо говоря, речь идёт о том, чтобы научить ИИ решать тесты интеллекта. Это предполагает развитие способов решения задач по аналогии, методов дедукции и индукции, накопление базовых знаний и умение их использовать. 

ИИ изучает методы решения задач, для которых не существует способов решения или они неприемлемы (из-за ограничений по времени, памяти и т.д.). Благодаря такому определению, интеллектуальные алгоритмы часто привлекаются для решения NP-полных задач, например, задачи коммивояжёра. 

ИИ занимается моделированием человеческой высшей нервной деятельности. 

ИИ — это системы, способные оперировать со знаниями, а самое главное — обучаться. В первую очередь речь идёт о том, чтобы признать класс экспертных систем (называемых так потому, что они способны заменить «на посту» людей-экспертов) интеллектуальными системами. 

Последний подход, развиваемый с начала 1990-х годов называется агентно-ориентированным подходом. Этот подход акцентирует внимание на тех методах и алгоритмах, которые помогут интеллектуальному агенту выживать в окружающей среде при выполнении его задачи. Так, здесь значительно сильнее изучаются алгоритмы поиска и принятия решений. 

Самый общий подход предполагает, что ИИ будет способен проявлять поведение, не отличающееся от человеческого, причём, в нормальных ситуациях. Эта идея является обобщением подхода теста Тьюринга, который утверждает, что машина станет разумной тогда, когда будет способна поддерживать разговор с обычным человеком, и тот не сможет понять, что говорит с машиной (разговор идёт по переписке). 

Писатели-фантасты часто предлагают ещё один подход: ИИ возникнет тогда, когда машина будет способна чувствовать и творить. Так, хозяин Эндрю Мартина из «Двухсотлетнего человека» начинает относиться к нему как к человеку, когда тот создаёт игрушку по собственному проекту. А Дейта из Звёздного пути, будучи способным к коммуникации и научению, мечтает обрести эмоции и интуицию. 

Существуют различные подходы к построению систем ИИ. На данный момент можно выделить 4 достаточно различных подхода:

Логический подход. Основой для логического подхода служит Булева алгебра. Каждый программист знаком с нею и с логическими операторами с тех пор, когда он осваивал оператор IF. Свое дальнейшее развитие Булева алгебра получила в виде исчисления предикатов — в котором она расширена за счет введения предметных символов, отношений между ними, кванторов существования и всеобщности. Практически каждая система ИИ, построенная на логическом принципе, представляет собой машину доказательства теорем. При этом исходные данные хранятся в базе данных в виде аксиом, правила логического вывода как отношения между ними. Кроме того, каждая такая машина имеет блок генерации цели, и система вывода пытается доказать данную цель как теорему. Если цель доказана, то трассировка примененных правил позволяет получить цепочку действий, необходимых для реализации поставленной цели (такая система известна как экспертные системы). Мощность такой системы определяется возможностями генератора целей и машиной доказательства теорем. Добиться большей выразительности логическому подходу позволяет такое сравнительно новое направление, как нечеткая логика . Основным ее отличием является то, что правдивость высказывания может принимать в ней кроме да/нет (1/0) еще и промежуточные значения — не знаю (0.5), пациент скорее жив, чем мертв (0.75), пациент скорее мертв, чем жив (0.25). Данный подход больше похож на мышление человека, поскольку он на вопросы редко отвечает только да или нет. 

Под структурным подходом мы подразумеваем здесь попытки построения ИИ путем моделирования структуры человеческого мозга. Одной из первых таких попыток был перцептрон Френка Розенблатта. Основной моделируемой структурной единицей в перцептронах (как и в большинстве других вариантов моделирования мозга) является нейрон. Позднее возникли и другие коннекционисткие модели, которые большинству известны под термином нейронные сети (НС) и их реализации — нейрокомпьютеры. Эти модели различаются по строению отдельных нейронов, по топологии связей между ними и по алгоритмам обучения. Среди наиболее известных сейчас вариантов НС можно назвать НС с обратным распространением ошибки, сети Кохонена, сети Хопфилда, стохастические нейронные сети. В более широком смысле такой подход известен как Коннективизм . Различия между логическим и структурным подходом не столь принципиальны, как это может показаться на первый взгляд. Алгоритмы упрощения и вербализации нейронных сетей преобразуют модели структурного подхода в явные логические модели. С другой стороны, ещё в 1943 году Маккалок и Питтс показали, что нейронная сеть может реализовывать любую функцию алгебры логики. 

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

Имитационный подход. Данный подход является классическим для кибернетики с одним из ее базовых понятий черный ящик . Объект, поведение которого имитируется, как раз и представляет собой «черный ящик». Нам не важно, что у него и у модели внутри и как он функционирует, главное, чтобы наша модель в аналогичных ситуациях вела себя точно так же. Таким образом здесь моделируется другое свойство человека — способность копировать то, что делают другие, без разложения на элементарные операции и формального описания действий. Зачастую эта способность экономит ему массу времени, особенно в начале его жизни. 

В рамках гибридных интеллектуальных систем пытаются объединить эти направления. Экспертные правила умозаключений могут генерироваться нейронными сетями, а порождающие правила получают с помощью статистического обучения.

Многообещающий новый подход, называемый усиление интеллекта, рассматривает достижение ИИ в процессе эволюционной разработки как побочный эффект усиления человеческого интеллекта технологиями.

Банки применяют системы искусственного интеллекта (СИИ) в страховой деятельности (актуарная математика) при игре на бирже и управлении собственностью. В августе 2001 года роботы выиграли у людей в импровизированном соревновании по трейдингу (BBC News, 2001). Методы распознавания образов, (включая, как более сложные и специализированные, так и нейронные сети) широко используют при оптическом и акустическом распознавании (в том числе текста и речи), медицинской диагностике, спам-фильтрах, в системах ПВО (определение целей), а также для обеспечения ряда других задач национальной безопасности.

Разработчики компьютерных игр вынуждены применять ИИ той или иной степени проработанности. Стандартными задачами ИИ в играх являются нахождение пути в двухмерном или трёхмерном пространстве, имитация поведения боевой единицы, расчёт верной экономической стратегии и так далее.

Просматриваются два направления развития ИИ:

первое заключается в решении проблем связанных с приближением специализированных систем ИИ к возможностям человека и их интеграции, которая реализована природой человека. 

второе заключается в создании Искусственного Разума, представляющего интеграцию уже созданных систем ИИ в единую систему, способную решать проблемы человечества. 

Искусственный интеллект тесно связан с трансгуманизмом. А вместе с нейрофизиологией и когнитивной психологией он образует более общую науку, называемую когнитологией. Отдельную роль в искусственном интеллекте играет философия.




3. Передача данных по сети



Хотя стек протоколов и называется TCP/IP, сами протоколы TCP и IP являются важнейшими, но не единственными представителями этого семейства. 

Каждый уровень коммуникаций обслуживается несколькими протоколами. Рассмотрим их более подробно.

TCP и UDP - протоколы транспортного уровня, организующие поток данных между конечными системами для приложений верхнего уровня. Эти протоколы значительно отличаются друг от друга. 

TCP (Transmission Control Protocol) обеспечивает надежную передачу данных между двумя хостами. Он позволяет клиенту и серверу приложения устанавливать между собой логическое соединение и затем использовать его для передачи больших массивов данных, как если бы между ними существовало прямое физическое соединение. Протокол позволяет осуществлять дробление потока данных, подтверждать получение пакетов данных, задавать таймауты (которые позволяют подтвердить получение информации), организовывать повторную передачу в случае потери данных и т.д. Поскольку этот транспортный протокол реализует гарантированную доставку информации, использующие его приложения получают возможность игнорировать все детали такой передачи.

Протокол UDP (User Datagram Protocol) реализует гораздо более простой сервис передачи, обеспечивая подобно протоколам сетевого уровня, ненадежную доставку данных без установления логического соединения, но, в отличие от IP, - для прикладных систем на хост-компьютерах. Он просто посылает пакеты данных, дейтаграммы (datagrams), с одной машины на другую, но не предоставляет никаких гарантий их доставки. Все функции надежной передачи должны встраиваться в прикладную систему, использующую UDP. Протокол UDP имеет и некоторые 

преимущества перед TCP. Для установления логических соединений нужно время, и они требуют дополнительных системных ресурсов для поддержки на компьютере информации о состоянии соединения. UDP занимает системные ресурсы только в момент отправки или получения данных. 

Поэтому если распределенная система осуществляет непрерывный обмен данными между клиентом и сервером, связь с помощью транспортного уровня TCP окажется для нее более эффективной. Если же коммуникации между хост-компьютерами осуществляются редко, предпочтительней использовать протокол UDP.

Почему же существуют два транспортных протокола TCP и UDP, а не один из них? 

Дело в том, что они предоставляют разные услуги прикладным процессам. 

Большинство прикладных программ пользуются только одним из них. Программист выбирает тот протокол, который наилучшим образом соответствует его потребностям. 

Если нужна надежная доставка, то лучшим может быть TCP, если же нужна доставка датаграмм, то лучше может быть UDP. Если нужна эффективная доставка по длинному и ненадежному каналу передачи данных, то лучше может подойти протокол TCP, если же нужна эффективность на быстрых сетях с короткими соединениями, то лучшим может быть протокол UDP.

Среди известных распределенных приложений, использующих TCP, - такие как Telnet, FTP и SMTP. Протоколом UDP пользуется, в частности, протокол сетевого управления SNMP. Протоколы прикладного уровня ориентированы на конкретные прикладные задачи. Они определяют как процедуры по организации взаимодействия определенного типа между прикладными процессами, так и форму представления информации при таком взаимодействии.

Протокол TELNET позволяет обслуживающей машине рассматривать все удаленные терминалы как стандартные "сетевые виртуальные терминалы" строчного типа, работающие в коде ASCII, а также обеспечивает возможность согласования более сложных функций (например, локальный или удаленный эхо-контроль, страничный режим, высота и ширина экрана и т.д.) TELNET работает на базе протокола TCP. На прикладном уровне над TELNET находится либо программа поддержки реального терминала (на стороне пользователя), либо прикладной процесс в обсуживающей машине, к которому осуществляется доступ с терминала. Работа с TELNET походит на набор телефонного номера. Пользователь набирает на клавиатуре что-то вроде telnet delta и получает на экране приглашение на вход в машину delta. Протокол TELNET существует уже давно. Он хорошо опробован и широко распространен. Создано множество реализаций для самых разных операционных систем. 

Протокол FTP (File Transfer Protocol) распространен также широко как TELNET. Он является одним из старейших протоколов семейства TCP/IP. Также как TELNET он пользуется транспортными услугами TCP. Существует множество реализаций для различных операционных систем, которые хорошо взаимодействуют между собой. 

Пользователь FTP может вызывать несколько команд, которые позволяют ему посмотреть каталог удаленной машины, перейти из одного каталога в другой, а также скопировать один или несколько файлов. 

Протокол SMTP (Simple Mail Transfer Protocol) поддерживает передачу сообщений (электронной почты) между произвольными узлами сети internet. Имея механизмы промежуточного хранения почты и механизмы повышения надежности доставки, протокол SMTP допускает использование различных транспортных служб. Он может работать даже в сетях, не использующих протоколы семейства TCP/IP. Протокол SMTP обеспечивает как группирование сообщений в адрес одного получателя, так и размножение нескольких копий сообщения для передачи в разные адреса.

Сетевая файловая система NFS (Network File System) впервые была разработана компанией Sun Microsystems Inc. NFS использует транспортные услуги UDP и позволяет монтировать в единое целое файловые системы нескольких машин с ОС UNIX. Бездисковые рабочие станции получают доступ к дискам файл-сервера так, как будто это их локальные диски. NFS значительно увеличивает нагрузку на сеть. Если в сети используются медленные линии связи, то от NFS мало толку. Однако, если пропускная способность сети позволяет NFS нормально работать, то пользователи получают большие преимущества. Поскольку сервер и клиент NFS реализуются в ядре ОС, все обычные несетевые программы получают возможность работать с удаленными файлами, расположенными на подмонтированных NFS-дисках, точно также как с локальными файлами. 

Протокол SNMP (Simple Network Management Protocol) работает на базе UDP и предназначен для использования сетевыми управляющими станциями. Он позволяет управляющим станциям собирать информацию о положении дел в сети internet. 

Протокол определяет формат данных, их обработка и интерпретация остаются на усмотрение управляющих станций или менеджера сети. 

TCP и UDP идентифицируют приложения по 16-битным номерам портов. Серверы приложений обычно имеют заранее известные номера портов. Например, в каждой реализации TCP/IP, которая поддерживает сервер FTP, этот протокол передачи файлов получает для своего сервера номер TCP-порта 21. Каждый Telnet-сервер имеет TCP-порт 23, а сервер протокола TFTP (Trivial File Transfer Protocol) - UDP-порт 69. Службам, которые могут поддерживаться любой реализацией TCP/IP, назначаются номера портов в диапазоне от 1 до 1023. Назначение номеров портов находится в ведении организации Internet Assigned Numbers Authority (IANA). 

Клиент приложения обычно "не интересуется" номером своего порта для транспортного уровня, который он использует. Ему лишь необходимо гарантировать, что этот номер уникален для данного хоста. Номера портов клиентов приложений принято называть краткосрочными (т.е. недолговечными), поскольку в общем случае клиенты существуют ровно столько времени, сколько работающий с ним пользователь нуждается в соответствующем сервере. (Серверы, напротив, находятся в рабочем состоянии все время, пока включен хост, на котором они работают.) В большинстве реализаций TCP/IP краткосрочным номерам портов выделен диапазон от 1024 до 5000.

Internet Protocol (IP) - основной протокол сетевого уровня, позволяющий реализовывать межсетевые соединения. Он используется обоими протоколами транспортного уровня. IP определяет базовую единицу передачи данных в internet, IP-дейтаграмму, указывая точный формат всей информации, проходящей по сети TCP/IP. Программное обеспечение IP выполняет функции маршрутизации, выбирая путь данных по паутине физических сетей. Для определения маршрута поддерживаются специальные таблицы; выбор осуществляется на основе адреса сети, к которой подключен компьютер-адресат. Протокол IP определяет маршрут отдельно для каждого пакета данных, не гарантируя надежной доставки в нужном порядке. Он задает непосредственное отображение данных на нижележащий физический уровень передачи и реализует тем самым высокоэффективную доставку пакетов.

Кроме IP, на сетевом уровне используются также протоколы ICMP и IGMP. ICMP (Internet Control Message Protocol) отвечает за обмен сообщениями об ошибках и другой важной информацией с сетевым уровнем на другом хосте или маршрутизаторе. 

IGMP (Internet Group Management Protocol) используется для отправки IP-дейтаграмм множеству хостов в сети.

На самом нижнем уровне - сетевого интерфейса - используются специальные протоколы разрешения адресов ARP (Address Resolution Protocol) и RARP (Reverse Address Resolution Protocol). Эти протоколы применяются только в определенных типах физических сетей (Ethernet и Token Ring) для преобразования адресов сетевого уровня в адреса физической сети и обратно.

Адресация в сети.

Коммуникационная система считается универсальной, если она предоставляет возможность любому хосту взаимодействовать с любым другим хостом. Для того чтобы добиться такой универсальности, необходимо определить глобальный метод идентификации компьютеров в распределенной системе для доступа к ним. В TCP/IP выбрана схема идентификации, аналогичная адресации в физических сетях. Каждому сетевому интерфейсу присваивается уникальный 32-битный адрес (IP-адрес), который используется для всех коммуникаций с этим интерфейсом по internet. IP-адрес компьютера имеет определенную структуру. Она задает идентификатор сети, к которой подсоединен компьютер, и уникальный идентификатор самого компьютера. На рисунке 4 показаны различные классы internet-адресов.

Для 32-битных IP-адресов принята десятичная нотация, в которой каждый из четырех байтов адреса записывается десятичным числом. Адреса класса С, например, охватывают диапазон от 192.0.0.0 до 223.255.255.255. Структура адресов различных классов делает достаточно очевидным их применение. Адреса класса С, в которых 21 бит отводится для идентификатора сети и только 8 бит - для идентификатора хоста, присваиваются компьютерам локальных сетей небольших организаций, которые объединяют до 255 машин. Более крупные организации могут получить адреса класса В, которые способны обслужить до 256 сетей, в состав которых входит до 64 тыс. рабочих станций. И наконец, адреса класса А присваиваются компьютерам, подключенным к ограниченному числу глобальных сетей очень большого масштаба, например, в Arpanet. 

Помимо адресов, предназначенных для одного хоста (unicast), существуют также широковещательные (broadcast) и групповые (multicast) адреса. Широковещательные адреса позволяют обращаться ко всем хостам сети. В них поле идентификатора хоста состоит только из единиц. Механизм IP-адресации предоставляет возможность широковещательной передачи, но не гарантирует ее, поскольку она зависит от характеристик конкретной физической сети. В Ethernet, например, широковещательная передача может выполняться с той же эффективностью, что и обычная передача данных, но есть сети, которые вообще не поддерживают такой тип передачи или имеют для этого ограниченные возможности.

Групповые адреса (адреса класса D) используются для отправки сообщений определенному множеству адресатов (multicasting). Такая возможность необходима для многих приложений, например для реализации интерактивных конференций, отправки почты или новостей группе получателей. Для поддержки групповой передачи хосты и маршрутизаторы используют протокол IGMP, который предоставляет всем системам в физической сети информацию о том, какие хосты принадлежат к какой группе в настоящее время.

Уникальный IP-адрес назначается каждому сетевому интерфейсу специальной организацией, Internet Network Information Center (InterNIC), которая отвечает за выделение адресов сетям, объединенным в мировую сеть Internet. Назначение идентификаторов хостов не входит в компетенцию InterNIC и находится в ведении системного администратора. До 1 апреля 1993 г. (дата создания InterNIC) регистрационное обслуживание для Internet (назначение IP-адресов и имен доменов DNS) выполнялось организацией Network Information Center (NIC). В настоящее время NIC выполняет запросы только для сети DDN (Defense Data Network). Всех остальных пользователей Internet обслуживает регистрационный сервис InterNIC. 

В связи с бурным ростом Internet 32-битная схема адресации нынешней версии Internet Protocol, IPv4, уже не удовлетворяет потребности Мировой сети. Новая версия, IPv6, проект которой был обнародован в 1991 г., призвана решить эти проблемы. IPv6 обеспечит 128-битный формат IP-адреса и будет поддерживать автоматическое назначение адресов. 

TCP/IP дает пользователям возможность работать не с адресами хост-компьютеров, а с их именами, что, конечно, намного удобнее для человеческого восприятия. 

Распределенная база данных DNS (Domain Name System) обеспечивает отображение IP-адресов в имена хостов. Любое приложение может вызвать стандартную библиотечную функцию для преобразования IP-адреса в соответствующее имя хоста или наоборот. Эта база данных является распределенной, поскольку ни один объект в internet не обладает всей информацией об именах. Каждый объект (например, университетский факультет, компания или подразделение компании) поддерживает свою базу данных и имеет серверную программу, к которой могут обращаться другие системы (клиенты) в сети. DNS обеспечивает протокол, по которому взаимодействуют эти клиенты и серверы.




4. Методы защиты от вирусов



Наиболее распространенным средством нейтрализации ПВ являются антивирусные программы (антивирусы). Антивирусы, исходя из реализованного в них подхода к выявлению и нейтрализации вирусов, принято делить на следующие группы:

детекторы; 

фаги; 

вакцины; 

прививки; 

ревизоры; 

мониторы. 

Детекторы обеспечивают выявление вирусов посредством просмотра исполняемых файлов и поиска так называемых сигнатур - устойчивых последовательностей байтов, имеющихся в телах известных вирусов. Наличие сигнатуры в каком-либо файле свидетельствует о его заражении соответствующим вирусом. Антивирус, обеспечивающий возможность поиска различных сигнатур, называют полидетектором.

Фаги выполняют функции, свойственные детекторам, но, кроме того, "излечивают" инфицированные программы посредством "выкусывания" вирусов из их тел. По аналогии с полидетекторами, фаги, ориентированные на нейтрализацию различных вирусов, именуют полифагами.

В отличие от детекторов и фагов, вакцины по своему принципу действия подобны вирусам. Вакцина имплантируется в защищаемую программу и запоминает ряд количественных и структурных характеристик последней. Если вакцинированная программа не была к моменту вакцинации инфицированной, то при первом же после заражения запуске произойдет следующее. Активизация вирусоносителя приведет к получению управления вирусом, который, выполнив свои целевые функции, передаст управление вакцинированной программе. В последней, в свою очередь, сначала управление получит вакцина, которая выполнит проверку соответствия запомненных ею характеристик аналогичным характеристикам, полученным в текущий момент. Если указанные наборы характеристик не совпадают, то делается вывод об изменении текста вакцинированной программы вирусом. Характеристиками, используемыми вакцинами, могут быть длина программы, ее контрольная сумма и т.д.

Принцип действия прививок основан на учете того обстоятельства, что любой вирус, как правило, помечает инфицируемые программы каким-либо признаком с тем, чтобы не выполнять их повторное заражение. В ином случае имело бы место многократное инфицирование, сопровождаемое существенным и поэтому легко обнаруживаемым увеличением объема зараженных программ. Прививка, не внося никаких других изменений в текст защищаемой программы, помечает ее тем же признаком, что и вирус, который, таким образом, после активизации и проверки наличия указанного признака, считает ее инфицированной и "оставляет в покое".

Ревизоры обеспечивают слежение за состоянием файловой системы, используя для этого подход, аналогичный реализованному в вакцинах. Программа-ревизор в процессе своего функционирования выполняет применительно к каждому исполняемому файлу сравнение его текущих характеристик с аналогичными характеристиками, полученными в ходе предшествующего просмотра файлов. Если при этом обнаруживается, что, согласно имеющейся системной информации, файл с момента предшествующего просмотра не обновлялся пользователем, а сравниваемые наборы характеристик не совпадают, то файл считается инфицированным. Характеристики исполняемых файлов, получаемые в ходе очередного просмотра, запоминаются в отдельном файле (файлах), в связи с чем увеличения длин исполняемых файлов, имеющего место при вакцинации, в данном случае не происходит. Другое отличие ревизоров от вакцин состоит в том, что каждый просмотр исполняемых файлов ревизором требует его повторного запуска.

Монитор представляет собой резидентную программу, обеспечивающую перехват потенциально опасных прерываний, характерных для вирусов, и запрашивающую у пользователей подтверждение на выполнение операций, следующих за прерыванием. В случае запрета или отсутствия подтверждения монитор блокирует выполнение пользовательской программы. Антивирусы рассмотренных типов существенно повышают вирусозащищенность отдельных ПЭВМ и вычислительных сетей в целом, однако, в связи со свойственными им ограничениями, естественно, не являются панацеей. 

В связи с этим необходима реализация альтернативных подходов к нейтрализации вирусов: создание операционных систем, обладающих высокой вирусозащищенностью по сравнению с наиболее "вирусодружественной" MS DOS, разработка аппаратных средств защиты от вирусов и соблюдение технологии защиты от вирусов.

Проблему защиты от вирусов необходимо рассматривать в общем контексте проблемы защиты информации от несанкционированного доступа и технологической и эксплуатационной безопасности ПО в целом. Основной принцип, который должен быть положен в основу разработки технологии защиты от вирусов, состоит в создании многоуровневой распределенной системы защиты, включающей:

регламентацию проведения работ на ПЭВМ, 

применение программных средств защиты, 

использование специальных аппаратных средств. 

При этом количество уровней защиты зависит от ценности информации, которая обрабатывается на ПЭВМ. Для защиты от компьютерных вирусов в настоящее время используются следующие методы: Архивирование. Заключается в копировании системных областей магнитных дисков и ежедневном ведении архивов измененных файлов.

Архивирование является одним из основных методов защиты от вирусов. Остальные методы защиты дополняют его, но не могут заменить полностью.

Входной контроль. Проверка всех поступающих программ детекторами, а также проверка длин и контрольных сумм вновь поступающих программ на соответствие значениям, указанным в документации. Большинство известных файловых и бутовых вирусов можно выявить на этапе входного контроля. Для этой цели используется батарея (несколько последовательно запускаемых программ) детекторов. Набор детекторов достаточно широк, и постоянно пополняется по мере появления новых вирусов. Однако при этом могут быть обнаружены не все вирусы, а только распознаваемые детектором. Следующим элементом входного контроля является контекстный поиск в файлах слов и сообщений, которые могут принадлежать вирусу (например, Virus, COMMAND.COM, Kill и т.д.). Подозрительным является отсутствие в последних 2-3 килобайтах файла текстовых строк - это может быть признаком вируса, который шифрует свое тело.

Рассмотренный контроль может быть выполнен с помощью специальной программы, которая работает с базой данных "подозрительных" слов и сообщений, и формирует список файлов для дальнейшего анализа. После проведенного анализа новые программы рекомендуется несколько дней эксплуатировать в карантинном режиме. При этом целесообразно использовать ускорение календаря, т.е. изменять текущую дату при повторных запусках программы. Это позволяет обнаружить вирусы, срабатывающие в определенные дни недели (пятница, 13 число месяца, воскресенье и т.д.).

Профилактика. Для профилактики заражения необходимо организовать раздельное хранение (на разных магнитных носителях) вновь поступающих и ранее эксплуатировавшихся программ, минимизация периодов доступности дискет для записи, разделение общих магнитных носителей между конкретными пользователями.

Ревизия. Анализ вновь полученных программ специальными средствами (детекторами), контроль целостности перед считыванием информации, а также периодический контроль состояния системных файлов.

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

Сегментация. Предполагает разбиение магнитного диска на ряд логических томов (разделов), часть из которых имеет статус READ_ONLY (только чтение). В данных разделах хранятся выполняемые программы и системные файлы. Базы данных должны хранится в других секторах, отдельно от выполняемых программ. Важным профилактическим средством в борьбе с файловыми вирусами является исключение значительной части загрузочных модулей из сферы их досягаемости. Этот метод называется сегментацией и основан на разделении магнитного диска (винчестера) с помощью специального драйвера, обеспечивающего присвоение отдельным логическим томам атрибута READ_ONLY (только чтение), а также поддерживающего схемы парольного доступа. При этом в защищенные от записи разделы диска помещаются исполняемые программы и системные утилиты, а также системы управления базами данных и трансляторы, т.е. компоненты ПО, наиболее подверженные опасности заражения. В качестве такого драйвера целесообразно использовать программы типа ADVANCED DISK MANAGER (программа для форматирования и подготовки жесткого диска), которая не только позволяет разбить диск на разделы, но и организовать доступ к ним с помощью паролей. Количество ис-пользуемых логических томов и их размеры зависят от решаемых задач и объема винчестера. Рекомендуется использовать 3 - 4 логических тома, причем на системном диске, с которого выполняется загрузка, следует оставить минимальное количество файлов (системные файлы, командный процессор, а также программы - ловушки).

Фильтрация. Заключается в использовании программ - сторожей, для обнаружения попыток выполнить несанкционированные действия.

Вакцинация. Специальная обработка файлов и дисков, имитирующая сочетание условий, которые используются некоторым типом вируса для определения, заражена уже программа или нет. 

Автоконтроль целостности. Заключается в использовании специальных алгоритмов, позволяющих после запуска программы определить, были ли внесены изменения в ее файл.

Терапия. Предполагает дезактивацию конкретного вируса в зараженных программах специальными программами (фагами). Программы фаги "выкусывают" вирус из зараженной программы и пытаются восстановить ее код в исходное состояние (состояние до момента заражения). В общем случае технологическая схема защиты может состоять из следующих этапов:

входной контроль новых программ; 

сегментация информации на магнитном диске; 

защита операционной системы от заражения; 

систематический контроль целостности информации. 

Необходимо отметить, что не следует стремиться обеспечить глобальную защиту всех файлов, имеющихся на диске. Это существенно затрудняет работу, снижает производительность системы и, в конечном счете, ухудшает защиту из-за частой работы в открытом режиме. Анализ показывает, что только 20-30% файлов должно быть защищено от записи.

При защите операционной системы от вирусов необходимо правильное размещение ее и ряда утилит, которое можно гарантировать, что после начальной загрузки операционная система еще не заражена резидентным файловым вирусом. Это обеспечивается при размещении командного процессора на защищенном от записи диске, с которого после начальной загрузки выполняется копирование на виртуальный (электронный) диск. В этом случае при вирусной атаке будет заражен дубль командного процессора на виртуальном диске. При повторной загрузке информация на виртуальном диске уничтожается, поэтому распространение вируса через командный процессор становится невозможным.

Кроме того, для защиты операционной системы может применяться нестандартный командный процессор (например, командный процессор 4DOS, разработанный фирмой J.P.Software), который более устойчив к заражению. Размещение рабочей копии командного процессора на виртуальном диске позволяет использовать его в качестве программы-ловушки. Для этого может использоваться специальная программа, которая периодически контролирует целостность командного процессора, и информирует о ее нарушении. Это позволяет организовать раннее обнаружение факта вирусной атаки.

В качестве альтернативы MS DOS было разработано несколько операционных систем, которые являются более устойчивыми к заражению. Из них следует отметить DR DOS и Hi DOS. Любая из этих систем более "вирусоустойчива", чем MS DOS. При этом, чем сложнее и опаснее вирус, тем меньше вероятность, что он будет работать на альтернативной операционной системе.

Анализ рассмотренных методов и средств защиты показывает, что эффективная защита может быть обеспечена при комплексном использовании различных средств в рамках единой операционной среды. Для этого необходимо разработать интегрированный программный комплекс, поддерживающий рассмотренную технологию защиты. В состав программного комплекса должны входить следующие компоненты.

Каталог детекторов. Детекторы, включенные в каталог, должны запускаться из операционной среды комплекса. При этом должна быть обеспечена возможность подключения к каталогу новых детекторов, а также указание параметров их запуска из диалоговой среды. С помощью данной компоненты может быть организована проверка ПО на этапе входного контроля. 

Программа-ловушка вирусов. Данная программа порождается в процессе функционирования комплекса, т.е. не хранится на диске, поэтому оригинал не может быть заражен. В процессе тестирования ПЭВМ программа - ловушка неоднократно выполняется, изменяя при этом текущую дату и время (организует ускоренный календарь). Наряду с этим программа-ловушка при каждом запуске контролирует свою целостность (размер, контрольную сумму, дату и время создания). В случае обнаружения заражения программный комплекс переходит в режим анализа зараженной программы - ловушки и пытается определить тип вируса. 

Программа для вакцинации. Предназначена для изменения среды функционирования вирусов таким образом, чтобы они теряли способность к размножению. Известно, что ряд вирусов помечает зараженные файлы для предотвращения повторного заражения. Используя это свойство возможно создание программы, которая обрабатывала бы файлы таким образом, чтобы вирус считал, что они уже заражены. 

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

Резидентные средства защиты. Отдельная компонента может резидентно разместиться в памяти и постоянно контролировать целостность системных файлов и командного процессора. Проверка может выполняться по прерываниям от таймера или при выполнении операций чтения и записи в файл. 






Заключение



Язык программирования может быть представлен в виде набора спецификаций, определяющих его синтаксис и семантику.

Язык программирования строится в соответствии с той или иной базовой моделью вычислений.

Структуры данных формируются с помощью типов данных, ссылок и операций над ними в выбранном языке программирования.

База Данных (БД) — структурированный организованный набор данных, описывающих характеристики каких-либо физических или виртуальных систем.

Экспе́ртная систе́ма (ЭС, expert system) — компьютерная программа, способная заменить специалиста-эксперта в разрешении проблемной ситуации. ЭС начали разрабатываться исследователями искусственного интеллекта в 1970-х годах, а в 1980-х получили коммерческое подкрепление.

Искусственный интеллект (англ. Artificial intelligence, AI) — раздел информатики, занимающийся формализацией задач, напоминающих задачи, выполняемые человеком. 

Коммуникационная система считается универсальной, если она предоставляет возможность любому хосту взаимодействовать с любым другим хостом. 

Групповые адреса (адреса класса D) используются для отправки сообщений определенному множеству адресатов (multicasting). Такая возможность необходима для многих приложений, например для реализации интерактивных конференций, отправки почты или новостей группе получателей. 

Наиболее распространенным средством нейтрализации ПВ являются антивирусные программы (антивирусы). 

При защите операционной системы от вирусов необходимо правильное размещение ее и ряда утилит, которое можно гарантировать, что после начальной загрузки операционная система еще не заражена резидентным файловым вирусом. 

Это обеспечивается при размещении командного процессора на защищенном от записи диске, с которого после начальной загрузки выполняется копирование на виртуальный (электронный) диск. В этом случае при вирусной атаке будет заражен дубль командного процессора на виртуальном диске. 

При повторной загрузке информация на виртуальном диске уничтожается, поэтому распространение вируса через командный процессор становится невозможным.


Список литературы



		Скотт В. Эмблер, Прамодкумар Дж. Садаладж Рефакторинг баз данных: эволюционное проектирование = Refactoring Databases: Evolutionary Database Design (Addison-Wesley Signature Series). — М.: «Вильямс», 2007. — С. 368. 

		К. Дж. Дейт Введение в системы баз данных = Introduction to Database Systems. — 8-е изд. — М.: «Вильямс», 2006. — С. 1328. 

		Томас Коннолли, Каролин Бегг Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: A Practical Approach to Design, Implementation, and Management Third Edition. — 3-е изд. — М.: «Вильямс», 2003. — С. 1436. 

		Альфред В. Ахо, Джон Хопкрофт, Джеффри Д. Ульман Структуры данных и алгоритмы = Data Structures and Algorithms. — М.: «Вильямс», 2000. — С. 384. 

		Майкл Мейн, Уолтер Савитч Структуры данных и другие объекты в C++ = Data Structures and Other Objects Using C++. — 2-е изд. — М.: «Вильямс», 2002. — С. 832. 

		Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. — М.: Центр ЮрИнфоР, 2001. — 276 с. — ISBN 5-89158-079-9 

		Гаврилова Т. А., Хорошевский В. Ф. Базы знаний интеллектуальных систем. Учебник. — СПб.: Питер, 2000. 

		Джозеф Джарратано, Гари Райли «Экспертные системы: принципы разработки и программирование» : Пер. с англ. — М. : Издательский дом «Вильямс», 2006. — 1152 стр. с ил. 

		Э.Юдковский. «Искусственный интеллект как позитивный и негативный фактор глобального риска». — выходит в сборнике «Риски глобальной катастрофы», Оксфорд, 2007, русский перевод: http://www.proza.ru/texts/2007/03/22-285.html 

3