2.1. Программирование на языке высокого уровня 1. Встроенные типы языка Си++: целые, плавающие, логические, перечисления, символьные. 2. Объявления и определения. Область существования имени. 3. Область видимости имён. Классы памяти. 4. Операция и выражение присваивания. Арифметические операции. Арифметические выражения. Операции автоувеличения и автоуменьшения. Тернарная операция. 5. Логические и побитовые операции. Битовые маски. 6. Указатели. Указатели и массивы. Адресная арифметика. 7. Символьные массивы и строки. Многомерные массивы. 8. Динамическое распределение памяти, в том числе динамическое распределение одномерных и двумерных массивов. 9. Управление потоком выполнения программы. Операторы ветвления (if-else, switch). Операторы повторения (while, for, do-while). 10. Объявление и определение функций, передача параметров по значению, значения параметров по умолчанию, указатели на функции. 11. Ссылки. Передача аргументов в функции по ссылке. 12. Рекурсивные функции, функция в качестве аргумента другой функции, перегрузка функций. 13. Классы. Конструкторы и деструкторы. 14. Статические члены класса. Указатель this. Статические функции-члены. Указатели на члены класса. 15. Конструктор копирования и операция присваивания. 16. Дружественные функции. 17. Производные классы. Построение. Защищённые классы. 18. Преобразования типов, связь с наследованием. 19. Шаблоны функций. Шаблоны классов. Примеры использования. 20. Раннее и позднее связывание. Виртуальные функции. Абстрактные классы. 21. Переопределение стандартных операций. 22. Динамические структуры данных и их реализация (на примере односвязных списков). 2.2. Базы данных 23. История развития средств компьютерной обработки данных. Обоснование концепции баз данных, основные положения концепции. 24. Архитектура представления информации в концепции баз данных. 25. Понятие системы управления базами данных (СУБД). 26. Понятие и роль схемы и подсхемы. 27. База данных как средство отображения информационной модели предметной области. 28. Модели данных. Классические модели данных (плоская, иерархическая, сетевая) 29. Реляционная модель данных. Основные понятия. Нормализация отношений. 30. Операции реляционной алгебры. Реляционное исчисление.. 31. Языки манипулирования данными SQL и QBE (общие сведения). 32. Использование SQL для создания и актуализации баз данных, формирования представлений, хранимых процедур и триггеров, запросов к базе данных. 33. Системы управления базами данных. Общие свойства СУБД. Обобщенная схема обмена данных с использованием СУБД. 34. Типовые информационные процедуры, реализуемые СУБД. 35. Общие сведения о СУБД первого поколения (IMS-ОКА, ADABAS, IDS-Банк ОС), реляционных СУБД (FoxPro, Access), СУБД, обеспечивающих технологию клиент-сервер (ORACLE, MS SQL, MY SQL). 36. Информационные системы, основанные на БД и СУБД. Физическая организация базы данных; хешированные, индексные файлы; защита баз данных; целостность и сохранность баз данных. 37. Проектирование баз данных. Проектирование с использованием метода сущность – связь, средства поддержки проектирования (ERWin). 38. Традиционные методики проектирования БД, современная интеграционная методика проектирования. 39. Проектирование системы баз данных на принципах единой информационной среды. 40. Современные направления использования баз данных. 41. Распределенные базы данных и распределенная обработка. 42. Понятие транзакции и параллельная обработка. OLTP, OLAP, Data Mining технологии. 43. Единая информационная среда. 44. Базы знаний. 45. Хранилища данных. Базы данных большого объема. 2.3. Организация ЭВМ 46. Развитие и классификация однопроцессорных архитектур компьютеров. 47. Конвейерная обработка команд. 48. Cуперскалярная обработка команд. 49. Классификация архитектуры SISD. 50. CISC и RISC-архитектуры микропроцессоров. 51. VLIW-архитектура компьютера и EPIC-концепция. 52. SIMD-архитектура. Способы её реализации. 53. Многоядерные структуры процессора и многопотоковая обработка команд. 54. Технические и эксплуатационные характеристики ЭВМ. 55. Энергоэффективность процессора. 56. Классификация ЭВМ по назначению и функциональным возможностям. 57. Функциональные возможности, пути развития, современные разработки супер ЭВМ и мэйнфреймов. 58. Назначение, классификация, структурная организация серверов. 59. Классификация, структурная организация персональных компьютеров. 60. Функциональные возможности, назначение, платформы рабочих станций. 61. Типы данных интеловских процессоров. 62. Структура и форматы команд ЭВМ. 63. Способы адресации информации в ЭВМ. 64. Принципы организации системы прерывания программ. 65. Регистровые структуры процессоров IA-32, AMD64 (Intel64), IA-64. 66. Стратегия развития процессоров Intel. 67. Особенности процессорной микроархитектуры Intel Core. 68. Микроархитектура Intel Nehalem. 69. Семейство процессоров Intel Westmere. 70. Иерархическая структура памяти ЭВМ. 71. Способы организации кэш-памяти. 72. Принципы организации оперативной памяти. 73. Методы повышения пропускной способности ОП. 74. Методы управления памятью 75. Организация виртуальной памяти. 76. Общая характеристика и классификация интерфейсов ЭВМ. 77. Способы организации передачи данных. 78. Системная организация компьютеров на базе современных чипсетов. 79. Архитектуры вычислительных систем. Сильносвязанные и слабосвязанные многопроцессорные системы. 2.4. Операционные системы 80. Понятие операционной системы; эволюция развития операционных систем; функции операционных систем и подходы к построению операционных систем. 81. Архитектура операционной системы. Классификация операционных систем. Эффективность и требования, предъявляемые к ОС. 82. Понятие процесса, его состояния, модель представления процесса в операционной системе и операции, которые могут выполняться над процессами операционной системой. 83. Уровни планирования процессов в операционных системах. Основные цели и критерии планирования и параметры, на которых оно основывается. Алгоритмы планирования. 84. Кооперация процессов и основные аспекты ее логической организации (санкционированное взаимодействие процессов) 85. Алгоритмы синхронизации (алгоритмы корректной организации взаимодействия процессов). 86. Специальные механизмы синхронизации – семафоры Дейкстры, мониторы Хора, очереди сообщений. 87. Взаимоблокировки, тупиковые ситуации, "зависания" системы 88. Простейшие схемы управления памятью. Связывание логических и физических адресных пространств. 89. Виртуальная память. Разбиение адресного пространства процесса на части и динамическая трансляция адреса. Архитектурные средства поддержки виртуальной памяти. 90. Аппаратно-независимый уровень управления виртуальной памятью. 91. Файлы с точки зрения пользователя. Основные функции и интерфейс файловой системы. 92. Реализация файловой системы. Поддержка понятия логического блока диска, связывания имени файла и блоков его данных, разделение файлов и управление дисковым пространством. 93. Основные физические и логические принципы организации ввода-вывода в вычислительных системах. 94. Особенности взаимодействия процессов, выполняющихся на разных операционных системах. Функции сетевых частей операционных систем. 95. Защитные механизмы операционных систем. Организация идентификации и аутентификации, авторизации и аудита. 96. История семейства операционных систем UNIX/Linux. Генеалогия семейства операционных систем и некоторые известные версии UNIX. Операционные системы фирмы Microsoft. Отличия семейства UNIX/Linux от операционных систем Windows. 97. Основные понятия, связанные с интерфейсом операционных систем. Графический интерфейс пользователя в семействе UNIX/Linux. 98. История X Window system. Основные понятия системы X Window. X Window в Linux. Интегрированная графическая среда KDE. Интегрированная графическая среда GNOME. 99. Сетевые и распределенные ОС. Сетевые службы и сетевые сервисы. Одноранговые и серверные ОС. 2.5. Сети ЭВМ и телекоммуникации 100. Виды компьютерных сетей: WAN, LAN, MAN, PAN. Их особенности. 101. Топология сети. Виды топологий, их преимущества и недостатки. 102. Элементы сети: конечные устройства, промежуточные устройства, передающие среды. 103. Назначение и функции модели OSI. 104. Уровни модели OSI, назначение, примеры протоколов. 105. Протокольная единица данных. Инкапсуляция. Мультиплексирование. 106. Система доменных имен DNS. Рекурсивная и нерекурсивная схемы. Кириллические домены. 107. Типы записей DNS. Обратная зона. URL, FQDN. 108. Протокол DHCP. 109. Протокол HTTP. 110. Система электронной почты. Протоколы. 111. Транспортный уровень модели OSI. Назначение, протоколы. 112. Протокол UDP. Назначение, формат пакета. Псевдозаголовок. 113. Протокол TCP. Назначение, формат пакета. 114. Логическое соединение. Установка и завершение логического соединения. 115. Метод скользящего окна. 116. Типы IP-адресов. 117. Формат адреса IPv4. Разграничение номеров сети и узла. 118. Классовая адресация. Бесклассовая адресация. Маска сети, префикс. 119. Особые IPv4-адреса. 120. IPv6. Формат адреса IPv6. Типы адресов. 121. Маршрутизатор. Таблица маршрутизации. 122. Статическая и динамическая маршрутизация. Преимущества и недостатки. 123. Подуровни канального уровня, их задачи. Адрес канального уровня. 124. Вероятностный и детерминированный методы доступа к среде. Технологии CSMA/CD и CSMA/CA. 125. Витая пара. Состав, типы. 126. Коаксиальный кабель. Состав, типы. 127. Волоконно-оптический кабель. Мода. 128. Технология Ethernet. Формат кадра. 129. Физическая среда технологии Ethernet. 130. Физические уровни стандарта 802.11. 131. Алгоритм прозрачного моста. 132. Алгоритм покрывающего дерева. 2.6. Методы и средства защиты компьютерной информации 133. Понятие информационной безопасности (ИБ). Основные составляющие (конфиденциальность, целостность, доступность). Статистика нарушений ИБ. 134. Наиболее распространенные угрозы, уязвимые места защиты, средства обеспечения безопасности. 135. Административный уровень информационной безопасности: политика безопасности и программа безопасности. Структура соответствующих документов, меры по их разработке и сопровождению. 136. Управление рисками. Методика сопоставления возможных потерь от нарушений ИБ со стоимостью защитных средств. 137. Основные понятия в области технической защиты информации. 138. Основные объекты защиты информации и их классификация. Принципы классификации автоматизированных систем и средств вычислительной техники по классам защищенности от несанкционированного доступа. 139. Основные уязвимости стека протоколов TCP/IP. Основные классы атак в сетях на базе TCP/IP и способы борьбы с ними. 140. Классификация технических каналов утечки информации. Информационный сигнал и его характеристики. Физическая суть возникновения различных каналов утечки и их классификация. 141. Средства и методы обнаружения технических каналов утечки информации. Мероприятия по выявлению технических каналов утечки информации. Оценка защищенности информации от утечки по техническим каналам утечки информации. 142. Спецификация Internet-сообщества TLS. Протокол Secure Socket Layer (SSL). 143. Нетехнические меры защиты конфиденциальной информации от несанкционированного доступа: психологические меры и организационные меры. Уровни контроля информационных потоков 144. Защита от сетевых атак на основе межсетевого экранирования. Механизм работы сетевого экрана, история и основные аспекты использования сетевых экранов. 145. Противодействие методам социальной инженерии. 146. Обеспечение безопасности в сети Интернет 147. Общая схема симметричного шифрования, классификация методов симметричного шифрования. 148. Криптографические хеш-функции. 149. Поточные шифры и генераторы псевдослучайных чисел. 150. Криптографические алгоритмы с открытым ключом и их использование (асимметричная криптография): RSA, алгоритм Диффи-Хеллмана, алгоритм Эль-Гамаля, 151. Основные подходы к формированию электронной подписи на основе различных алгоритмов с открытым ключом. Отечественные и зарубежные стандарты на алгоритмы цифровой подписи. 152. Шифрование, помехоустойчивое кодирование и сжатие информации 153. Анализ рисков как основа управления информационной безопасностью предприятия. Методики управления и анализа рисков. 154. Криптографические алгоритмы. Обзор самых распространенных алгоритмов шифрования и тенденций развития современной криптографии. 155. Обзор современных методов криптоанализа. 156. Проблема аутентификации. Инфраструктура открытых ключей. Протоколы аутентификации в Windows. 157. Анализ безопасности протокола обмена информацией. Описание работы протокола в виде графического представления схемы и текстового описания. 158. Защита от вирусных угроз. Сценарии построения комплексной системы защиты от вирусных угроз. 159. Методология анализа защищенности системы на основе выявления уязвимостей информационной системы и обнаружения вторжений. 160. Методы и инструменты защиты от сетевых атак на основе технологии межсетевого экранирования. 161. Организационно-правовые аспекты обеспечения информационной безопасности. Разработка политики информационной безопасности с использованием общепринятых шаблонов и учетом специфики деятельности организации. 162. Основы работы антивирусных программ, существующие методы обнаружения вирусов, дополнительные средства обеспечения антивирусной безопасности, основные элементы антивирусной защиты. 163. Антивирусная защита мобильных пользователей: угрозы заражения, принципы действия вирусов для мобильных телефонов и средства защиты от вирусов. 164. Обнаружение вторжений. Основные типы систем обнаружения вторжений и датчиков вторжений. 165. Безопасность в ОС Windows 7, настройка ОС, управление пользователями и системой, поиск вторжений в ОС. 166. Безопасность беспроводных соединений. Основные понятия, относящиеся к криптографии с открытым ключом. Способы их использования: шифрование, создание и проверка электронной подписи, обмен ключами. Алгоритмы RSA и Диффи-Хеллмана. 1. Встроенные типы языка Си++: целые, плавающие, логические, перечисления, символьные. Встроенные типы языка Си++: целые, плавающие, логические, перечисления, символьные. Ключевыми словами, используемыми при объявлении основных типов данных, являются: Для целых типов char, int, short, long, signed, unsigned; Для плавающих типов: float, double, long double; Для классов: struct, union, class; Для перечисления: enum; Для типа void: void (пустой). Тип char, или символьный Данными типа char являются различные символы, причем значением этих символов является численное значение во внутренней кодировке ЭВМ. Символьная константа - это символ, заключенный в апострофы, например: '&', '4', '@', 'а'. Символ '0', например, имеет в кодировке ASCII значение 48. Существуют две модификации этого типа: signed char и unsigned char. Данные char занимают один байт и меняются в диапазоне: signed char (или просто char) -128 .. 127; unsigned char 0 .. 255. Отметим, что если необходимо иметь дело с переменными, принимающими значения русских букв, то их тип должен быть unsigned char, т.к. коды русских букв >127 (B кодировке ASCII). Символы, в том числе и неграфические, могут быть представлены как символьные константы с помощью т.н. управляющих последовательностей. Управляющая последовательность - это специальные символьные комбинации, которые начинаются с \ , за которым следует буква или комбинация цифр (см. табл. 2). Последовательности '\ddd' и '\xddd' позволяют представлять любой символ из набора ЭВМ как последовательность восьмеричных или шестнадцатеричных цифр соответственно. Например, символ возврата каретки можно задать так: '\r' или '\015' или 'x00D'. Специальные управляющие последовательности Тип int (эквивалент short int) Данные типа int занимают 2 байта и принимают целые значения из диапазона: -32768 . . 32767. Тип unsigned int Данные такого типа занимают 2 байта, их диапазон: 0 . . 65535. Тип long (long int) Такие данные занимают 4 байта и изменяются в диапазоне 0 . . 4 298 876 555. Отметим, что если целая константа выходит из диапазона int, то она автоматически становится константой типа long или даже unsigned long. Так, 32768 имеет тип long, 2676768999 имеет тип unsigned long. Задать тип константы можно и явно с помощью суффиксов 'U' и 'L': -6L 6U 33UL. В самом стандарте языка определено лишь, что sizeof (char)=1 и sizeof (char)<=sizeof (short)<=sizeof (int)<= sizeof (long). Здесь sizeof (type)- операция, определяющая размер типа type в байтах. Целая константа, которая начинается с нуля, является восьмеричной константой, а начинающаяся символами 0x - шестнадцатеричной константой, например Плавающие типы данных Информацию о данных плавающих типов, которые представляют в ЭВМ вещественные числа, приведем в табл. 3. Таблица 3 Тип Длина Диапазон Десятичных цифр float 4 3.4e-38 .. 3.4e38 7 double 8 1.7e-308 .. 1.7e308 15 long double 10 3.4e-4932 .. 1.1e4932 19 По умолчанию, плавающие константы имеют тип double, если они не выходят из соответствующего диапазона: 1.0, .3 -6. 2.3e-6 (означает 2.3 10), 3e-19, 1.2 - типа double. Суффикс говорит о том, что плавающая константа будет иметь тип long double: 3, 3E8, 1.6e-19, 1.3e-200 – long double. 2. Объявления и определения. Область существования имени. Любое имя, за исключением имён меток, должно быть объявлено в программе: int i, j; double d=7.3; extern int m; typedef unsigned int size_t; int add (int a, int b){ return a+b;} void func (char*, int); С именем может быть сопоставлен некоторый элемент, идентификатором которого оно является. Например, при объявлении int i, j; для переменных i, j отводится память, с этими именами сопоставляются участки памяти по 2 байта, которые можно использовать для хранения значений переменных. С именем size_t сопоставлено имя конкретного типа (unsigned int), синонимом которого является теперь size_t; с именем add сопоставлен код функции. Все такие объявления называют определениями. Однако не все объявления являются определениями. Из всех вышеприведённых объявлений два не являются определениями: extern int m; void func (char *, int); В первом из этих объявлений сообщается только, что переменная m имеет тип int, память же для неё должна выделяться где-то в другом месте, о чём говорит ключевое слово extern. Второе объявление говорит, что func есть имя функции с двумя аргументами, первый из которых - указатель на char, а второй - int, а сама функция не возвращает никакого значения. Такое объявление называют прототипом функции. Сама же функция func должна быть определена вместе со своим телом где-то в другом месте. В программе для каждого имени должно присутствовать одно и только одно определение, в то время как объявлений, не являющихся определениями, может быть как угодно много. Можно выделит 5 видов областей существования имени. 1) Область существования БЛОК. Блок - это фрагмент программы, заключённый в фигурные скобки { } 2) Область существования ФУНКЦИЯ. Эту область существования имеют только имена меток перехода, используемые оператором goto 3) Область существования ПРОТОТИП ФУНКЦИИ. Прототип функции есть объявление функции, не являющееся её определением. 4) Область существования ФАЙЛ. Область существования "файл" имеют имена, объявленные вне любого блока и класса. Такие имена называют глобальными. Глобальные имена определены от точки их объявления и до конца файла, где встретилось их объявление. 5) Область существования КЛАСС. Такую область существования имеют имена, объявленные в классах. Эти имена определены во всем классе, в котором они объявлены, независимо от точки их объявления. 3. Область видимости имён. Классы памяти. Область видимости является подобластью области существования имени. Если элемент языка, чьё имя находится в области своего существования, тем не менее, недоступен по этому имени, то будем говорить, что это имя скрыто или замаскировано. Глобальные имена видимы от точки их объявления до конца файла, если они не замаскированы локальными именами. Переменные из объемлющих блоков, как и глобальные, видимы во внутренних блоках. Если переменная, объявленная внутри блока, имеет то же имя, что и переменная объемлющего уровня, то имя объемлющего уровня маскируется и определение переменной в блоке заменяет определение объемлющего уровня на протяжении всего блока. Видимость замаскированной переменной восстанавливается при выходе из блока. Метки в функции видимы во всём теле функции. В С++ существуют 3 класса памяти. 1) Статическая память - статические данные, размещаемые в сегменте данных; 2) автоматические данные, размещаемые в специальном стеке (сегмент стека) или как частный случай, в регистрах процессора; 3) динамические данные, явно размещаемые в динамической памяти с помощью операций new и delete. Статические объекты существуют в течение всего времени выполнения программы. К ним относятся глобальные и локальные переменные, объявленные со служебным словом static Статические и глобальные переменные, если они не инициализированы явно, инициализируются нулевыми значениями. В любом случае, инициализация статических переменных осуществляется только один раз. Локальные переменные, не объявленные как static, являются автоматическими. Такие объекты начинают свое существование при объявлении его имени в блоке и заканчивают его при завершении этого блока. Если автоматический объект явно не инициализирован, то его значение до присвоения не определено. 4. Операция и выражение присваивания. Арифметические операции. Арифметические выражения. Операции автоувеличения и автоуменьшения. Тернарная операция. Операция присваивания обозначается символом '=' Простейший вид операции присвоения: v = e. Существует комбинированная операция присваивания вида a оп =b, здесь оп - знак одной из бинарных операций: + - * / % >> << & | ^ && ||. Присваивание a оп=b эквивалентно a = a оп b , за исключением того, что адресное выражение вычисляется только один раз. Бинарными арифметическими операциями являются + - * / %. (Существуют также унарные + и - ).При делении целых дробная часть отбрасывается. Так, 10/3 дает 3, в то время как 10/3.0 дает 3.33333... Операция a % b применяется только к целым операндам и дает остаток от деления a на b Операции авто увеличение/уменьшения являются унарными операциями присваивания. Они соответственно увеличивают или уменьшают значение операнда на 1. Операнд должен быть целого или плавающего типа и быть не константным адресным выражением . Тип результата соответствует типу операнда. Префиксная форма операций: ++ операнд - - операнд Постфиксная форма: операнд ++ операнд - -. Если знак операции стоит перед операндом, результатом операции является увеличенное или уменьшенное значение операнда. При этом результат является адресным выражением. Если знак операции стоит после операнда, значением выражения будет значение операнда. После использования этого результата значение операнда увеличивается или уменьшается. Результат постфиксной формы этих операций не является адресным. Тернарная операция, т.е. операция с тремя операндами, имеет форму операнд1 ? операнд2 : операнд3 Первый операнд может быть целого или плавающего типа (а также указателем, ссылкой или элементом перечисления). Для этой операции важно, является значение первого операнда нулем или нет. Если операнд1 не равен 0, то вычисляется операнд2 и его значение является результатом операции. Если операнд1 равен 0, то вычисляется операнд3, и его значение является результатом операции. Заметим, что вычисляется либо операнд2, либо операнд3, но не оба. 5. Логические и побитовые операции. Битовые маски. К логическим операциям относятся: унарная операция логическое НЕ, ! (отрицание); бинарная операция логическое И , && (конъюнкция); бинарная операция логическое ИЛИ, || (дизъюнкция). Операнды логических операций могут быть целых, плавающих и некоторых других типов, при этом в каждой операции могут участвовать операнды различных типов. Операнды логических выражений вычисляются слева направо. Результатом логической операции является 0 или 1 типа int. К побитовым, или поразрядным операциям относятся: операция поразрядного И (побитовое умножение) &; операция поразрядного ИЛИ (побитовое сложение) |; операция поразрядного исключающего ИЛИ ^; унарная операция поразрядного отрицания (дополнение) ~. Кроме того, рассматриваются операции сдвигов <<, >>. Операнды поразрядных операций могут быть любого целого типа. Операция & сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если оба соответствующих бита единицы, то соответствующий бит результата устанавливается в 1, в противном случае в 0. Операция | сравнивает каждый бит первого операнда с соответствующим битом второго операнда; если любой из них или оба равны 1, то соответствующий бит результата устанавливается в 1, в противном случае в 0. Операция ^ . Если один из сравниваемых битов равен 0, а другой равен 1, то соответствующий бит результата устанавливается в 1, в противном случае, т.е. когда оба бита равны 1 или оба равны 0, бит результата устанавливается в 0. Операция ~ меняет в битовом представлении операнда 0 на 1, а 1 - на 0. Операция | используется для включения битов: С= N|MASK устанавливает в 1 те биты в N, которые равны 1 в MASK. 6. Указатели. Указатели и массивы. Адресная арифметика. Указатель - это переменная, содержащая адрес некоторого объекта, например, другой переменной. Точнее - адрес первого байта этого объекта. Это дает возможность косвенного доступа к этому объекту через указатель. Массив - это совокупность элементов одного типа, которые расположены в памяти ЭВМ подряд, один за другим. Признаком объявления массива являются квадратные скобки. Чтобы обратиться к элементу этого массива, нужно применить операцию индексирования a[ind]. Внутри квадратных скобок помещается целое выражение, которое называется индексом. Нумерация элементов массива начинается с 0. Операция индексирования массива [ ] имеет 2 операнда - имя массива, т.е. указатель, и индекс, т.е. целое: a[i]. В языке С++ любое выражение указатель[индекс] по определению трактуется как *(указатель + индекс) и автоматически преобразуется к такому виду компилятором. Адресная арифметика: Указатель можно складывать с целым. Если к указателю pa прибавляется целое приращение i, то приращение масштабируется размером памяти, занимаемой объектом, на который указывает указатель pa. pa+i - это адрес i-го элемента после pa, размер всех этих i элементов равен размеру объекта, на который указывает pa. Указатели можно сравнивать. Если p и q указывают на элементы одного и того же массива, то такие отношения, как < >= и т.д. работают надлежащим образом. Указатели можно вычитать. Если p и q указывают на элементы одного и того же массива, то p - q дает количество элементов массива между p и q. 7. Символьные массивы и строки. Многомерные массивы. Строка являются массивом символов. Значением строки является указатель на первый ее символ: char *string = "строка\n"; Здесь указатель на символы string будет содержать адрес первого символа 'c' строки "строка\n", которая размещается в некоторой области памяти, начиная с этого адреса:. Двумерный массив рассматриваются как массив элементов, каждый из которых является одномерным массивом. Трехмерный - как массив, элементами которого являются двумерные массивы и т.д. int a[5][6][7]; Для двумерного массива mas выражение mas[i][j] интерпретируется как *(*(mas+i)+j). Здесь mas[i] - константный указатель на i-ю строку массива mas. В памяти массивы хранятся по строкам, т.е. при обращении к элементам в порядке их размещения в памяти быстрее всего меняется самый правый индекс. 8. Динамическое распределение памяти, в том числе динамическое распределение одномерных и двумерных массивов. Операция выделения памяти new. Часто выражение, содержащее операцию new, имеет следующий вид: указатель_на_тип_= new имя_типа (инициализатор) Инициализатор - это необязательное инициализирующее выражение, которое может использоваться для всех типов, кроме массивов. При выполнении оператора int *ip = new int; создаются 2 объекта: динамический безымянный объект и указатель на него с именем ip, значением которого является адрес динамического объекта. Можно создать и другой указатель на тот же динамический объект: int *other=ip; Если указателю ip присвоить другое значение, то можно потерять доступ к динамическому объекту. В результате динамический объект по-прежнему будет существовать, но обратится к нему уже нельзя. Такие объекты называются мусором. При выделении памяти объект можно инициализировать: int *ip = new int(3); Можно динамически распределить память и под массив: double *mas = new double [50]; Операция delete освобождает для дальнейшего использования в программе участок памяти, ранее выделенной операцией new: Совершенно безопасно применять операцию к указателю NULL. Результат же повторного применения операции delete к одному и тому же указателю не определен. Обычно происходит ошибка, приводящая к зацикливанию.Чтобы избежать подобных ошибок, можно применять следующую конструкцию: int *ip=new int[500]; ... if (ip){delete ip; ip=NULL;} else { cout <<" память уже освобождена \n"; } динамическое распределение: for (int i = 0; i< m; i++ ) if ((a[ i ] = new double[n])==NULL) // Распределяется строка матрицы { cout<<"Нет памяти!\n"; exit(1);} Освободить память здесь можно так: for (i=0; i< m; i++)delete a[ i ]; delete a; 9. Управление потоком выполнения программы. Операторы ветвления (if-else, switch). Операторы повторения (while, for, dowhile). Правильное использование управляющих конструкций — один из наиболее важных факторов, определяющих качество программного кода. Когда операторы выполняются последовательно, поочередно, программисту, сопровождающему ПО, достаточно легко в нем разобраться. В каждом сегменте программы есть только один набор начальных условий и, следовательно, один результат вычислений. Однако такие последовательные программы примитивны и мало на что способны. В реальной ситуации нужно выполнять те или иные сегменты кода в зависимости от каких-то условий. Чем более гибок язык программирования с точки зрения управляющих структур, тем больше возможностей в руках программиста. Когда один сегмент программы выполняется после того или иного сегмента, то наборов начальных условий несколько и возможных результатов вычислений тоже несколько. Запоминать все эти альтернативы становится трудно. Программисты делают ошибки при разработке программы, а те, кто занимается ее сопровождением, ошибаются при чтении исходного кода и внесении изменений. Вот почему современные языки программирования ограничивают возможности программиста при передаче управления от одного сегмента программы к другому. Такой подход называется структурным программированием. Программист использует лишь небольшой набор строго заданных конструкций (циклов и операторов условия), и каждый сегмент программного кода имеет только один вход (или два) и один выход (или два). Условный оператор Имеется две формы условного оператора: 1) if (выражение) оператор1 2) if (выражение) оператор1 else оператор2 Оператор1 выполняется в случае, если выражение принимает ненулевое значение. Если выражение принимает значение 0 (или указатель NULL), то выполняется оператор2. Примеры: if (a > b) c = a - b; else c = b - a; if (i < j) i++; else {j = i - 3; i ++;} При использовании вложенных операторов if текущий else всегда относится к самому последнему if, с которым еще не сопоставлен ни один else. Оператор выбора switch Этот оператор позволяет передать управление одному из нескольких помеченных метками операторов в зависимости от значения целочисленного выражения. Метки оператора switch имеют специальный вид: case целая_константа: Вид оператора switch: switch (целое_выражение ){ [объявления] [case константное_целое_выражение1:] ... [case константное_целое_выражение2: ] [операторы] ... [case константное_целое_выражение m:] ... [case константное_целое_выражение n:] [операторы] [default:] [операторы] } Здесь [ ] означают необязательную часть оператора, а ... говорит о том, что указанная конструкция может применяться сколько угодно раз. Блок после switch( ) называют телом оператора switch. Схема выполнения оператора: Сначала вычисляется выражение в круглых скобках (назовем его селектором). Затем вычисленное значение селектора последовательно сравнивается с константным выражением, следующим за case. Если селектор равен какому-либо константному выражению, стоящему за case, то управление передается оператору, помеченному соответствующим оператором case. Если селектор не совпадает ни с одной меткой варианта, то управление передается на оператор, помеченный словом default. Если default отсутствует, то управление передается следующему за switch оператору. Отметим, что после передачи управления по какой-либо одной из меток дальнейшие операторы выполняются подряд. Поэтому, если необходимо выполнить только часть из них, нужно позаботиться о выходе из switch. Это обычно делается с помощью оператора break, который осуществляет немедленный выход из тела оператора switch. Оператор цикла while Оператор цикла с предусловием имеет вид while (выражение) оператор Оператор называют телом цикла. При выполнении такого оператора сначала вычисляется значение выражения. Если оно равно 0, то оператор не выполняется и управление передается оператору, следующему за ним. Если значение выражения отлично от 0, то выполняется оператор, затем снова вычисляется выражение и т.д. Возможно, что тело цикла не выполнится ни разу, если выражение сразу будет равно 0. Пример 1: char с; while ( cin.get(c) ) cout<< c; Пример 2: while (1) { операторы ... } //Это - бесконечный цикл. Цикл с постусловием do-while Этот оператор цикла проверяет условие окончания в конце, после каждого прохода через тело цикла; поэтому тело цикла всегда выполняется по крайней мере один раз. Вид оператора: do оператор while (выражение) Сначала выполняется оператор, затем вычисляется выражение и, если оно отлично от нуля, то оператор выполняется снова и т.д. Если выражение становится равно нулю, цикл завершается. Оператор for Этот оператор цикла имеет вид: for ( оператор1 выражение1; выражение2 ) оператор2 Оператор1 может быть объявлением, пустым оператором или оператором-выражением. Наиболее распространенным является случай, когда оператор1 и выражение2 являются присваиваниями или обращениями к функциям, а выражение1 - условным выражением. Этот цикл эквивалентен следующей конструкции: оператор1 while (выражение1) { оператор2 выражение2; } Иногда оператор1 называют инициализатором цикла, а выражение2 реинициализатором. Любая из трех частей может быть опущена, хотя точка с запятой обязательно должна оставаться. Если отсутствует проверка, т.е. выражение1, то считается, как будто выражение1 отлично от 0, так что for ( ; ; ){ . . . } - бесконечный цикл и его надо каким-либо образом прервать. Пример: int n=20, s=0; for ( int i = 1; i <= n; i++ ) s+ = i*i; Использовать ли циклы while или for - это, в основном дело вкуса. Цикл for предпочтительнее там, где имеется простая инициализация и реинициализация, поскольку при этом управляющие циклом операторы наглядным образом оказываются вместе в начале цикла. Это наиболее очевидно в конструкции for (i = 0; i < n; i ++), которая применяется для обработки первых n элементов массива, аналогичной оператору цикла for Паскале. Аналогия, однако, не полная, так как границы цикла могут быть изменены внутри цикла, а управляющая переменная сохраняет свое значение после выхода из цикла, какова бы ни была причина этого выхода. 10. Объявление и определение функций, передача параметров по значению, значения параметров по умолчанию, указатели на функции. Функция не может быть определена в другой функции. С использованием функции связаны 3 понятия - определение функции, объявление функции и вызов функции. Определение функции имеет вид: тип имя ( список описаний аргументов ){ операторы } Здесь имя - это имя функции; тип - тип возвращаемого функцией значения; операторы в фигурных скобках { } часто называют телом функции. Аргументы в списке описаний называют формальными параметрами. Функция может и не возвращать никакого значения. В этом случае ее определение таково: void имя ( список описаний аргументов ){ операторы } Вызов такой функции имеет вид: имя ( список фактических аргументов ); Выполнение функции, не возвращающей никакого значения, прекращается оператором return без следующего за ним выражения. Выполнение такой функции и возврат из нее в вызывающую функцию происходит также и в случае, если при выполнении тела функции произошел переход на самую последнюю закрывающую фигурную скобку этой функции. Удобным свойством С++ является наличие предопределённых инициализаторов аргументов. Значения аргументов по умолчанию можно задать в объявлении функции, при этом они подставляются автоматически в вызов функции, содержащий меньшее число аргументов, чем объявлено. Например, следующая функция объявлена с тремя аргументами, два из которых инициализированы: void error (char* msg, int level = 0, int kill = 0); Указатель на функцию определим следующим образом: Тип_функции (*имя_указателя) (список параметров); Например, int (*fptr) (double); 11. Ссылки. Передача аргументов в функции по ссылке. Тип "ссылка на тип" определяется так: тип&, например: int& или double& Ссылочные типы устанавливают псевдонимы объектов. Ссылка обязательно должна быть инициализирована. После инициализации использование ссылки дает тот же результат, что и прямое использование переименованного объекта. Ссылку можно определить так: ссылка есть такой постоянный указатель на объект, к которому всегда при его использовании неявно применяется операция разрешения указателя *. Если тип инициализированной ссылки не совпадает с типом объекта, создаётся новый анонимный объект, для которого ссылка является псевдонимом. Инициализатор преобразуется и его значение используется для установки значения анонимного объекта. Ссылки часто используются в качестве формальных параметров функций. Механизм передачи параметров в функции с помощью ссылок называют в программировании передачей аргументов по ссылке. С помощью ссылок можно добиться изменения значений фактических параметров из вызывающей программы (без применения указателей). void swap (int & x, int & y). 12. Рекурсивные функции, функция в качестве аргумента другой функции, перегрузка функций. Ситуацию, когда функция тем или иным образом вызывает саму себя, называют рекурсией. Рекурсия, когда функция обращается сама к себе непосредственно, называется прямой; в противном случае она называется косвенной. Все функции языка С++ (кроме функции main) могут быть использованы для построения рекурсии. В рекурсивной функции обязательно должно присутствовать хотя бы одно условие, при выполнении которого последовательность рекурсивных вызовов должна быть прекращена. Обработка вызова рекурсивной функции ничем не отличается от вызова функции обычной: перед вызовом функции в стек помещаются её аргументы, затем адрес точки возврата, затем, уже при выполнении функции – автоматические переменные, локальные относительно этой функции. Но если при вызове обычных функций число обращений к ним невелико, то для рекурсивных функций число вызовов и, следовательно, количество данных, размещаемых в стеке, определяется глубиной рекурсии. Поэтому при рекурсии может возникнуть ситуация переполнения стека. При косвенной рекурсии осуществляется перекрёстный вызов функциями друг друга. Хотя бы в одной из них должно быть условие, вызывающее прекращение рекурсии. Косвенная рекурсия является одним из тех случаев, когда нельзя определить функцию до использования её имени в программе. Пусть функция f1() вызывает f2(), которая, в свою очередь, обращается к f1(). Пусть первая из них определена ранее второй. Для того чтобы иметь возможность обратиться к функции f2() из f1(), мы должны поместить объявление имени f2 раньше определения обеих этих функций В С++ можно переопределять имена функций и использовать одно и то же имя для нескольких функций с различным типом или числом аргументов. 4 этапа перегрузки функции: 1) Поиск функции, формальные аргументы которой соответствуют фактическим без всяких преобразований типов 2) Подбор такой функции, чтобы для соответствия формальных и фактических аргументов достаточно было использовать только такие стандартные преобразования 3) Подбор такой функции, для вызова которой достаточно осуществить любые стандартные преобразования аргументов 4) Подбор такой функции, для которых аргументы можно получить с помощью всех преобразований, рассмотренных до этого, а также преобразований типов, определённых самим программистом. 13. Классы. Конструкторы и деструкторы. Тип данных класс можно определить с помощью конструкции ключ_класса, имя_класса{ список _членов }; Здесь ключ_класса - одно из служебных слов struct, union, class; имя_класса - произвольный идентификатор; список_членов - определения и описания членов класса данных и функций. Класс - это набор из одной или более переменных и функций, возможно, различных типов, сгруппированных под одним именем. Класс может иметь имя, называемое тегом. Тег становится именем нового типа в программе. Каждый член класса распознаётся по своему имени, которое должно быть уникальным в данном классе. Члены класса называют его элементами или полями. В С++ предусмотрены специальные функции-члены класса, которые в большинстве случаев вызываются не программистом, а компилятором и которые предназначены для инициализации объектов абстрактных типов. Такие функции называются конструкторами. В случае вызова конструктора без аргументов - инициализация любого объекта будет происходить всегда совершенно одинаково, теми значениями, которые жестко определенны в этом конструкторе. В классе может быть только один конструктор с умалчиваемыми значениями параметров. Конструкторы многих классов выделяют память под объекты динамически, и после того, как необходимость в таких объектах отпадает, их рекомендуется удалить. Деструктор - функция, которая вызывается для объекта абстрактного типа, когда он выходит из области существования. Имя деструктора, как и конструктора, не может быть произвольным, оно образуется символом ~ и именем класса. Деструктор никогда не может иметь аргументов. Нельзя получить адрес ни конструктора, ни деструктора. Вызов конструктора происходит автоматически во время определения объекта абстрактного типа. Вызов деструктора происходит автоматически при выходе объекта из области своего существования. Деструктор может быть вызван и явно с обязательным указанием его полного имени. 14. Статические члены класса. Указатель this. функции-члены. Указатели на члены класса. Статические Член класса можно объявить со служебным словом static. Память под такие данные резервируется при запуске программы, .т.е. еще до того, как программист явно создаст первый объект данного абстрактного типа. При этом все объекты, сколько бы их ни было, используют эту заранее созданную одну - единственную копию своего статического члена. Статический член класса должен быть инициализирован после определения класса и до первого описания объекта этого класса с помощью так называемого полного или квалифицированного имени статического члена, которое имеет вид имя_класса::имя_статического_члена. Если статический член имеет доступ public, то его также можно использовать в программе с помощью квалифицированного имени, как и обычным образом, с помощью уточненного имени. Внутри функции - члена класса можно явно использовать указатель. Он всегда имеет имя this (ключевое слово). Перед началом выполнения кода функции указатель this инициализируется значением адреса объект, для которого вызвана данная функция-член. void write(){ cout << "Строка :"<< this ->string<<'\n'; } явное присваивание указателю this некоторого значения запрещено. Перед объявлением функции-члена класса можно поставить служебное слово static. Особенностью таких статических функций-членов является следующее: как и к статическому данному-члену класса, к ней можно обратиться еще до того, как в программе создан первый объект такого класса. Статические функции-члены (компонентные функции) позволяют получить доступ к частным статическим данным-членам класса, не имея еще ни одного объекта данного типа в программе. Для статической компонентной функции не определен указатель this. Когда это необходимо, адрес объекта, для которого вызывается статическая функция-член, должен быть передан ей явно в виде аргумента. Для членов класса (кроме битовых полей) определена операция получения адреса. Указатели на данные-члены класса никаких особенностей не имеют. Особенностью указателя на функцию-член класса является явное присутствие в его объявлении имени класса, за которым следует ::. 15. Конструктор копирования и операция присваивания. При работе с объектами абстрактных типов может возникнуть ситуация, когда один объект должен являться копией другого. При этом возможны два варианта. 1) Вновь создаваемый объект должен стать копией уже имеющегося. 2) Нужно скопировать один объект в другой, когда оба были созданы ране. В первом случае используется конструктор копирования, во втором операция присваивания. Конструктор копирования - это конструктор, первым аргументом которого является ссылка на объект того типа, в котором этот конструктор объявлен. Инициализация копированием происходит и при передаче функциям их аргументов и при возврате результата. Если аргумент или возвращаемое значение имеет абстрактный тип, то неявно вызывается конструктор копирования. Конструктор копирования генерируется компилятором самостоятельно, если он не был написан программистом. В этом случае создается точная копия инициализирующего объекта, что требуется далеко не всегда. В отличие от конструктора копирования, операция присваивания используется тогда, когда объекты, являющиеся операндами этой операции, уже существуют. Операция присваивания, наряду с операцией получения адреса, предопределена для объектов абстрактных типов по умолчанию, и ее можно использовать без каких либо дополнительных действий со стороны программиста. 16. Дружественные функции. Язык предоставляет для некоторых функций, как обычных, так и членов некоторого класса X, возможность получения доступа к личным членам класса Y. Такая функция называется привилегированной в классе Y, или дружественной классу X. Для объявления привилегированной функции используется служебное слово friend. Чтобы функция стала привилегированной в классе Y, она должна быть объявлена в этом классе как дружественная функция. Для дружественных функций не определён указатель this, они не имеют неявных аргументов, для них не определены уровни доступа. Одна и та же функция может быть объявлена привилегированной сразу в нескольких классах. class coord { friend triang::midx (); friend triang::midy (); friend triang::midz (); } Достаточно распространенным является случай, когда все функциичлены одного класса являются привилегированными в другом; предусмотрена даже упрощённая форма записи: class coord {… friend triang; }; или class coord {… friend class triang; }; В этом случае говорят, что класс triang является дружественным классу coord. Заметим, что для дружественных функций не определён указатель this, они не имеют неявных аргументов, для них не определены уровни доступа. Одна и та же функция может быть объявлена привилегированной сразу в нескольких классах. 17. Производные классы. Построение. Защищённые классы. Запись вида class Derived: public Base говорит о том, что класс Derived является таким заново создаваемым классом, который построен на основе класса Base. При этом класс Derived наследуетвсе свойства класса Base. Говорят, что Derived является классом, производным от класса Base, а класс Base является базовым классом для Derived. Если в программе будет создан объект типа Derived, то он будет содержать два указателя на две области динамической памяти - bmember, как подобъект типа Base и dmember. Процесс создания объекта типа Derived будет проходить в два этапа: сначала будет создан "подобъект" типа Base, причём это сделает конструктор класса Base. Затем будет выполнен конструктор класса Derived. Вызов деструкторов осуществляется в обратном порядке. Поскольку конструктор класса Base может требовать наличия одного аргумента при обращении к нему, то этот аргумент необходимо пе-редать. Чтобы передать список аргументов конструктору базового класса, этот список должен быть помещён в определении конструктора производного класса. Для регулирования уровня доступа к членам классов используются служебные слова public и private. Для этих же целей введено ключевое слово protected (защищенный). Если класс А не служит базовым ни для какого другого класса, то его защищенные члены ничем не отличаются от личных доступ к ним имеют только функции-члены данного класса и дружественные этому классу функции. Если же класс В является производным от A, то пользователи как класса А, так и В по-прежнему не имеют доступа к защищенным членам, но такой доступ могут иметь функции-члены класса В и функции, привилегированные в В. 18. Преобразования типов, связь с наследованием. Объект производного типа может рассматриваться как объект его базового тип. Обратное неверно. (Кошка есть млекопитающее, но не любое млекопитающее есть кошка.) Компилятор может неявно выполнить преобразование объекта производного типа к объекту типа базового: class Base {…}; class Der: public Base {…}; Der derived; Base b = derived; Обратное преобразование - Base к Der - должно быть определено программистом: Значительно чаще, чем преобразование типов, используется преобразование указателей, или ссылок на эти типы. Существует два типа преобразования указателей - явное и неявное. Явное преобразование будет выполнено всегда, неявное - только в определённых случаях. Если базовый класс является общим (public) базовым классом, т.е. мы имеем дело с отношением вида class Base {…}; class Der: public Base {…}; то принципы преобразования очень просты: неявно может быть выполнено преобразование указателя типа Der* к указателю типа Base*. Обратное преобразование обязательно должно быть явным. Другими словами, при обращении через указатели объект производного типа может рассматриваться как объект базового тип. Обратное утверждение неверно: Der derived; Base *bp = &derived; // Неявное преобразование. Der *dp1 = bp; // Ошибка. Der *dp2 = (Der*) bp; // Явное преобразование; теперь верно. То, что производный класс в некотором смысле может рассматриваться как его базовый, оказывает влияние на выбор нужной версии переопределённой функции. Сложность возникает, если для выбора одного из вариантов нужно выполнить неявное преобразование типов. Правила здесь таковы. Если нет точного соответствия списка формальных и фактических параметров, то наивысший приоритет среди выполняемых преобразований имеют преобразования производного типа к базовому. Это относится как к самому типу, так и к указателю на него. Только в том случае, если это невозможно, компилятор пробует выполнить другие преобразования (например, стандартные преобразования указателей). 19. Шаблоны функций. Шаблоны классов. Примеры использования. Цель введения шаблонов функций - автоматизация создания функций, которые могут обрабатывать разнотипные данные. В определении шаблонов семейства функций используется служебное слово template, за которым в угловых скобках следует список параметров шаблона. Каждый формальный параметр шаблона обозначается служебным словом class, за которым следует имя параметра. Шаблон семейства классов определяет способ построения отдельных классов подобно тому, как класс определяет правила построения и формат отдельных объектов. Шаблон семейства классов определяется так: template < список параметров шаблона > определение класса. В определении класса, входящего в шаблон, особую роль играет имя класса. Оно является не именем отдельного класса, а параметризованным именем семейства классов. Определение шаблона может быть только глобальным. template < class T > // Т-параметры шаблона; class vector { T *pv; // одномерный массив; int size; // размер массива. public: vector ( int ); ~vector ( ) { delete []pv; } T & operator [ ] ( int i ) { return pv [ i ]; } }; template < class T > vector < T >::vector ( int n ){ pv = new T[n]; size = n; } 20. Раннее и позднее связывание. Абстрактные классы. Раннее и позднее связывание Виртуальные функции. К механизму виртуальных функций обращаются в тех случаях, когда в базовый класс необходимо поместить функцию, которая должна по-разному выполняться в производных классах. Точнее, по-разному должна выполняться не единственная функция из базового класса, а в каждом производном классе требуется свой вариант этой функции. Предположим, необходимо написать функцию-член CalculatePay() (Расчет), которая подсчитывает для каждого объекта класса Employee (Служащий) ежемесячные выплаты. Все просто, если зарплата рассчитывается одним способом: можно сразу вставить в вызов функции тип нужного объекта. Проблемы начинаются с появлением других форм оплаты. Допустим, уже есть класс Employee, реализующий расчет зарплаты по фиксированному окладу. А что делать, чтобы рассчитать зарплату контрактников - ведь это уже другой способ расчета! В процедурном подходе пришлось бы переделать функцию, включив в нее новый тип обработки, так как в прежнем коде такой обработки нет. Объектно-ориентированный подход благодаря полиморфизму позволяет производить различную обработку. В таком подходе надо описать базовый класс Employee, а затем создать производные от него классы для всех форм оплаты. Каждый производный класс будет иметь собственную реализацию метода CalculatePay(). Другой пример: базовый класс figure может описывать фигуру на экране без конкретизации её вида, а производные классы triangle (треугольник), ellipse (эллипс) и т.д. однозначно определяют её форму и размер. Если в базовом классе ввести функцию void show () для изображения фигуры на экране, то выполнение этой функции будет возможно только для объектов каждого из производных классов, определяющих конкретные изображения. В каждый из производных классов нужно включить свою функцию void show(), для формирования изображения на экране. Доступ к функции show() производного класса возможен с помощью явного указания ее полного имени, например: triangle::show (); или с использованием конкретного объекта: triangle t; t.show (); Однако в обоих случаях выбор нужной функции выполняется при написании исходного текста программы и не изменяется после компиляции. Такой режим называется ранним или статическим связыванием. Большую гибкость, особенно при использовании уже готовых библиотек классов, обеспечивает так называемое позднее, или отложенное, или динамическое связывание, которое предоставляется механизмом виртуальных функций. Виртуальные функции Рассмотрим сначала, как ведут себя при наследовании не виртуальные функции-члены с одинаковыми именами, сигнатурами и типами возвращаемых значений. Результат: base::i = 1 der::i = 5 base::i = 8 Здесь указатель pbd имеет тип base*, однако его значение - адрес объекта D класса der. При вызове функции-члена по указателю на объект выбор функции зависит только от типа указателя, но не от его значения, что и иллюстрируется выводом base::i = 8. Настроив указатель базового класса на объект производного класса, не удается с помощью этого указателя вызвать функцию из производного класса. Таким способом не удается достичь позднего или динамического связывания. В производном классе нельзя определять функцию с тем же именем и с той же сигнатурой, но с другим типом возвращаемого значения, чем у виртуальной функции базового класса. Отметим, что конструктор не может быть виртуальным, а деструктор - может. Абстрактные классы Снова рассмотрим пример с вычислением площадей фигур. В этой программе использована виртуальная функция area(). Эта функция должна была быть первый раз определена в классе figure. Поскольку при нормальной работе не должно существовать объектов типа figure, а только объекты производных от него типов, то версия area () была определена так: figure::area {return 0;} Eсли бы тип возвращаемого значения у функции был void (например, при рисовании фигуры void show ( ), можно было бы написать: void figure::show () {} В обоих случаях эти функции фиктивны. Такого рода виртуальные функции можно было бы использовать для контроля ошибок, связанных с созданием объектов типа figure: void figure::area () { cout <<"Ошибка: попытка вычислить площадь "; cout <<"несуществующего объекта!\n"; exit (1); return 1; } В С++ существует более удобный и надежный способ. Версия виртуальной функции, которая, с одной стороны, должна быть определена, а с другой, никогда не должна использоваться, может быть объявлена как чисто виртуальная функция: class figure {. . . virtual double area () = 0; }; В классах, производных от figure, при наличии своей версии виртуальной функции area () она должна либо быть определена, либо, в свою очередь, объявлена как чисто виртуальная функция. Во время выполнения программы при обращении к чисто виртуальной функции выдается сообщение об ошибке и программа аварийно завершается. Класс, содержащий хотя бы одну чисто виртуальную функцию, называется абстрактным классом. Запрещено создание объектов таких классов. Это позволяет установить контроль со стороны компилятора за ошибочным созданием объектов фиктивных типов, таких как figurе. Заметим, что можно создавать указатели и ссылки на абстрактные классы. 21. Переопределение стандартных операций. В С++ есть возможность распространения действия стандартных операций на операнды абстрактных типов данных. Для того, чтобы переопределить одну из стандартных операций для работы с операндами абстрактных типов, программист должен написать функцию с именем Operator А , где А - обозначение этой операции (например, + - | += и т.д.). При этом в языке существует несколько ограничений: 1) нельзя создавать новые символы операций; 2) нельзя переопределять операции :: * (- разыменование, не бинарное умножение) ?: sizeof . .* # ## 3) символ унарной операции не может использоваться для переопределения бинарной операции и наоборот. Например, символ << можно использовать только для бинарной операции, ! - только для унарной, а & - и для унарной, и для бинарной; 4) переопределение операций не меняет ни их приоритетов, ни порядка их выполнения (слева направо или справа налево); 5) при перегрузке операции компьютер не делает никаких предположений о ее свойствах. Это означает, что если стандартная операция += может быть выражена через операции + и =, т.е. а + = b эквивалентно а = а + b, то для переопределения операций в общем случае таких соотно-шений не существует, хотя, конечно, программист может их обеспечить. Кроме того, не делается предположений, например, о коммутативности операции +: компилятор не имеет оснований считать, что а + b, где а и b абстрактных типов - это то же самое, что и b + a; 6) никакая операция не может быть переопределена для операндов стандартных типов. Для выполнения переопределенной унарной операции х (или х), где х объект некоторого абстрактного типа Class, компилятор пробует найти либо функцию Class::operator (void), либо ::operator (Class). Если найдены одновременно оба варианта, то фиксируется ошибка. Интерпретация выражения осуществляется либо как x.operator (void ), либо как operator (x.). Для выполнения переопределенной бинарной операции x y, где х обязательно является объектом абстрактного типа Class, компилятор ищет либо функцию Class::operator (type y), либо функцию ::operatr (Class, type y), причем type может быть как стандартным, так и абстрактным типом. Интерпретируется выражение x y либо как x.operator (y), либо как operator (x, y). Как для унарной, так и для бинарной операции число аргументов функции operator () должно точно соответствовать числу операндов этой операци. Заметим, что часто удобно передавать значения параметров в функцию operator () не по значению, а по ссылке. 22. Динамические структуры данных и их реализация (на примере односвязных списков). В языках программирования (Pascal, C, др.) существует и другой способ выделения памяти под данные, который называется динамическим. В этом случае память под величины отводится во время выполнения программы. Такие величины будем называть динамическими. Раздел оперативной памяти, распределяемый статически, называется статической памятью; динамически распределяемый раздел памяти называется динамической памятью (динамически распределяемой памятью). Использование динамических величин предоставляет программисту ряд дополнительных возможностей. Во-первых, подключение динамической памяти позволяет увеличить объем обрабатываемых данных. Во-вторых, если потребность в каких-то данных отпала до окончания программы, то занятую ими память можно освободить для другой информации. В-третьих, использование динамической памяти позволяет создавать структуры данных переменного размера. Работа с динамическими величинами связана с использованием еще одного типа данных — ссылочного типа. Величины, имеющие ссылочный тип, называют указателями. Указатель содержит адрес поля в динамической памяти, хранящего величину определенного типа. Сам указатель располагается в статической памяти. Адрес величины — это номер первого байта поля памяти, в котором располагается величина. Рассмотрим структуру typedef int ETYPE; struct elem { ETYPE data; elem *next; }; Назовем data - информационным элементом. У нас он - типа int, но может быть любого сложного необходимого нам типа ETYPE. Указатель next указывает на объект типа elem. Объекты типа elem можно упорядочить с помощью указателя next следующим образом (рис. 1.): Такая структура данных называется однонаправленным, или односвязным списком, иногда - цепочкой. Объекты типа elem из этого списка называют элементами списка или звеньями. Каждый элемент цепочки, кроме последнего, содержит указатель на следующий за ним элемент. Признаком того, что элемент является последним в списке, служит то, что член типа elem* этого звена равен NULL. Вместе с каждым списком рассматривается переменная, значением которой является указатель на первый элемент списка. Если список не имеет ни одного элемента, т.е. пуст, значением этой переменной должен быть NULL. 23.История развития средств компьютерной обработки данных. Обоснование концепции баз данных, основные положения концепции. История возникновения и развития подхода к организации хранения и обработки баз данных насчитывает около 40 лет и связана с историей использования компьютеров. первый этап (50-е годы): на комп-ах выполнялись лишь вычислительные задачи небольшого объема. второй этап (60-е годы):переход к новому поколению ЭВМ и появление нового класса задач( информационные: Vисходн.данных>VОЗУ , не числовые данные(символьные);исходн.данные хранятся отдельно от программ;файлиспольз. многократно;результат оформляется в виде документа удобного для анализа). К концу 60-х создан новый подход к использованию данных – концепция БД. В сер.60-х было предложено использовать один файл для описания объектов одного типа, что повлекло за собой создание СУБД. 70-е годы: развитие теории БД( иерархическая, сетевая и реляционная модели данных), создание БД сложной структуры. 80-е годы: переход на использование ПК, что привело к использованию локальных БД пользователей. Появилось множество реляционных СУБД. 90-е годы: появление корпоративных вычислительных сетей, следов-но усиление принципа комплексного использования информации БД, переход к обеспечению доступа пользователей и программ к информации БД через запрос на языке SQL. Появ. СУБД (MsSQL, MySQL, DB2, ORACLE) Основная особенность СУБД – это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры. Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД, стали называть банки данных, а затем "Базы данных" (БД). Основные черты концепции БД: данные отделяются от ПП(прикладной программы), появляется специальная программная надстройка для управления данными, называемая системой управления базами данных (СУБД); СУБД управляет данными и служит посредником между ними и ПП; ПП упрощаются, освобождаются от функций структуризации, хранения и поиска данных; появляются стандартизированные данные о фактографических данных – метаданные, управляемые СУБД; метаданные описывают информационные параметры и взаимосвязи фактографических данных о ПО; СУБД совместно с метаданными представляет собой стандартизированное инструментальное средство для моделирования ПО различной природы; происходит централизация (интеграция) данных, их многоаспектное использование для различных приложений, что сокращает избыточность данных, позволяет обеспечить более высокий уровень достоверности данных и оптимизировать различные процедуры ведения и использования БД. Основные положения концепции БД: Автономное, без избыточное хранение данных сложной структуры и значительного объема. Комплексное использование хранимой информации. Независимость программ обработки от физической структуры исходных данных. Дополнительные положения концепции БД: БД – есть отображение информационной модели предметной области. Однократный ввод первичной информации. Защита данных (авторизованный доступ, от катастрофического разрушения, криптография, ограничения целостности). Реорганизация БД (развитие) по мере необходимости с минимальным влиянием на действующие программы. 24. Архитектура представления информации в концепции баз данных. Архитектура СУБД обеспечивает потребности различных пользователей, выполнение их запросов, а также внутренние потребности, связанные с представлением данных в файлах и доступом к ним. Общепринятым в настоящее время является подход, обеспечивающий трехуровневое представление данных: на уровне внешних моделей соответствующих различным запросам различных пользователей; на логическом уровне, соответствующем интегральному взгляду на данные администратора ПО и администратора БД; на внутреннем уровне, соответствующем взгляду на данные системных программистов. СУБД поддерживает различные описания данных на всех уровнях и их преобразования из одних видов представления другие. Внешниевпредставления ... Концептуальное представление Физическое представление Концептуальное представление - логическая структура БД в целом в ограничениях СУБД по структуре данных. Это то, как «видит» БД потенциальный пользователь; Физическое представление - конкретное размещение значений данных в памяти (во внешней и в оперативной), способы и средства представления структурных характеристик (имен, размеров, адресов), установления связей между элементами структуры БД; Внешнее представление - часть структуры БД, используемая в конкретном приложении (запрос, программа получения каких-то документов и т.п.). Система управления базами данных (СУБД) обеспечивает возможность хранения описания всех этих представлений. 25. Понятие системы управления базами данных (СУБД). (СУБД) — специализированные программные средства, предназначенные для организации и ведения баз данных. (СУБД) обеспечивает возможность хранения описания трех представлений БД: концептуальное представление - логическая структура БД в целом в ограничениях СУБД по структуре данных. Это то, как «видит» БД потенциальный пользователь; физическое представление - конкретное размещение значений данных в памяти, способы и средства представления структурных характеристик, установления связей между элементами структуры БД; внешнее представление - часть структуры БД, используемая в конкретном приложении. Такое трехуровневое представление данных обеспечивает соблюдение основных принципов концепции БД. По степени универсальности различаются два класса СУБД — системы общего назначения(ОН) и специализированные системы(СС). СУБД ОН не ориентированы на какую-либо конкретную предметную область или на информационные потребности конкретной группы пользователей. СС обладают средствами настройки на работу с конкретной БД в условиях конкретного применения. Можно дать следующую обобщенную характеристику возможностям современных СУБД. 1. СУБД включает язык определения данных, с помощью которого можно определить базу данных, ее структуру, типы данных, а также средства задания ограничений для хранимой информации. 2. СУБД позволяет вставлять, удалять, обновлять и извлекать информацию из базы данных посредством языка управления данными. 3. Большинство СУБД могут работать на компьютерах с разной архитектурой и под разными операционными системами, причем на работу пользователя тип платформы влияния не оказывает. 4. Многопользовательские СУБД имеют достаточно развитые средства администрирования БД. 5. СУБД предоставляет контролируемый доступ к базе данных с помощью: системы обеспечения безопасности; системы поддержки целостности базы данных; системы управления параллельной работой приложений; системы восстановления. 26. Понятие и роль схемы и подсхемы. Описание концептуального и соответствующего ему физического представления (описание структуры БД) хранится автономно, называется схемой БД и создается до того, как начнет наполняться БД. Описание подмножества концептуального представления, которое соответствует внешнему представлению для некоторого приложения (описание части структуры БД, доступной программе обработки), называется подсхемой. Используя подсхему и схему, СУБД обеспечивает настройку приложения на работу с физической базой данных. Тем самым достигается универсализм СУБД по отношению соответствия внешнего представления – физическому, а значит, обеспечивается принцип независимости программ обработки от физической структуры БД. С другой стороны, программа обработки может получить только те данные и выполнять только те процедуры (чтения, а возможно обновления данных), которые указаны в ее подсхеме. Тем самым обеспечивается защита БД от несанкционированного доступа. Пользователь, проектируя обработку данных для получения требуемого результата, определяет требуемое внешнее представление как подмножество концептуального представления и в принципе может не знать физической организации БД. СУБД, «понимая» соответствие концептуального и физического представления и «зная» внешнее представление, определяет откуда физически надо выбрать требуемую информацию и в каком виде предоставить ее приложению (программе обработки или непосредственно конечному пользователю). Если осуществлена реорганизация (развитие) физической БД, меняется схема, но если из новой структуры БД возможно получить данные в соответствии с некоторой подсхемой, то программу, которой соответствует подсхема изменять не нужно – реализация принципа независимости программ от физической структуры БД. 27. База данных как средство отображения информационной модели предметной области. Концепция баз данных возникла и получила свое развитие для совершенствования комплексной обработки структурированной или как ее еще называют фактографической информации. Особенность ее заключается в следующем: 1. Информационно описывается множество объектов некоторой предметной области. Это могут быть объекты самой различной природы (личности, предметы производства, научные исследования, некоторые явления и др.). Главное, что объекты в предметной области обладают (могут быть описаны) некоторыми свойствами (параметрами, характеристиками, показателями и т.п.). При этом для разных объектов значение одноименного параметра может быть различным, но выбирается из одного множества возможных значений, называемого словарем (классификатором, доменом). Естественное понятие однородных (однотипных) объектов с информационной точки зрения может быть формально определено как множество объектов, для которых имеет смысл одно и то же полное множество параметров. 2. При информационном моделировании на ЭВМ предметная область отображается в компьютерные данные следующим образом: каждому параметру объекта предметной области соответствует данное, значению параметра у конкретного объекта - значение данного в записи, соответствующей этому объекту. Идентификатор (имя, название и т.п.) объекта также представляется как данное, но данное особого назначения - оно идентифицирует и запись (входит в идентификатор) и называется ключевым данным записи (по крайней мере, входит в ключ); описание множества однотипных объектов с определенной стороны (по некоторой группе параметров) представляется в виде файла, причем одному объекту в файле соответствует одна либо несколько записей. Одному объекту предметной области будет соответствовать несколько записей в файле в том случае, если по упомянутой группе параметров необходимо хранить несколько экземпляров описаний (за разные периоды времени, по технологическим переходам и т.п.); полная информация об объектах предметной области (всестороннее описание объектов) хранится в системе взаимосвязанных файлов, называемой базой данных. Взаимосвязь файлов отражает взаимосвязь объектов разных типов и различных описаний внутри одного типа. Необходимость хранения и эффективного использования информационной модели предметной области явилась одной из основных (наряду с обеспечением независимости программ от структуры хранения данных) причин возникновения концепции БД и использования СУБД. Под структурой данных будем понимать совокупность информационных элементов и связей между ними. Под моделью данных будем понимать соответствующих тип структуры данных и типовые операции по управлению данными. 28. Модели данных. Классические модели данных (плоская, иерархическая, сетевая) С возникновением концепции баз данных получила развитие теория структуризации данных, были определены типовые модели данных: иерархическая, сетевая, реляционная модель. Структура данных - совокупность информационных элементов и связей между ними. Моделью данных называется формализованное описание структуры единиц информации и операций над ними в информационной системе. Модель данных — это некоторая абстракция, в которой отражаются самые важные аспекты функционирования выделенной предметной области, а второстепенные — игнорируются. Модель данных включает в себя набор понятий для описания данных, связей между ними и ограничений, накладываемых на данные. В модели данных различают три главные составляющие: структурную часть, определяющую правила порождения допустимых для данной СУБД видов структур данных; управляющую часть, определяющую возможные операции над такими структурами; классы ограничений целостности данных, которые могут быть реализованы средствами этой системы. Линейная модель данных Свойства линейной структуры: элементами линейной структуры являются простые данные (данные, разделение которых на составляющие не имеет смысла). каждое данное имеет имя (идентификатор) и множество возможных значений, задаваемое словарем, диапазоном или правилом формирования; множество данных, составляющих линейную структуру, описывает множество однотипных объектов; все экземпляры линейной структуры (записи) однородны: -порядок следования данных во всех экземплярах структуры один и тот же; -размер и тип данного одного имени во всех экземплярах структуры одинаковы. Разные данные могут иметь различные размеры и типы; линейной структуре в информационных системах соответствует файл однотипных записей; среди элементов можно выделить так называемые ключевые данные, которыми являются одно либо несколько данных, значения которых однозначно определяют каждый экземпляр структуры. Такой ключ называют также первичным. Иерархическая структура данных По определению иерархической считается связь, когда каждому экземпляру элемента одного типа можно поставить в соответствие несколько экземпляров элементов второго типа. Элемент, каждому экземпляру которого можно поставить в соответствие несколько экземпляров второго, называется старшим. Иерархическую связь формально определяют как 1:М (один ко многим). Элементами иерархической структуры являются линейные структуры. В иерархической структуре элемент, являющийся подчиненным, в связи с одним элементом может быть старшим, в связи с другим элементом. Любой элемент может иметь более одного типа подчиненного элемента. Сетевая модель данных Элементами сетевой структуры данных являются линейные структуры. Для сетевой структуры справедливы все положения, характеризующие иерархическую структуру (иерархическая структура является частным случаем сетевой), а кроме того допускается: наличие более одной связи между двумя элементами подчиненный может иметь более одного старшего циклические подструктуры более одной связи между экземплярами одного типа Следует заметить, что в полном объеме сетевая структура не поддерживается ни одной реально действующей СУБД. Она была определена как универсальная структура, позволяющая реализовать информационную модель практически любой предметной области. 29.Реляционная модель данных. Основные понятия. Нормализация отношений. Реляционная база данных — это конечный (ограниченный) набор отношений. Отношения используются для представления сущностей, а также для представления связей между сущностями. Отношение — это двумерная таблица, имеющая уникальное имя и состоящая из строк и столбцов, где строки соответствуют записям, а столбцы — атрибутам. Каждая строка в таблице представляет некоторый объект реального мира или соотношения между объектами. Атрибут — это поименованный столбец отношения. Свойства сущности, его характеристики определяются значениями атрибутов. Порядок следования атрибутов не влияет на само отношение. Отношение строится с учетом ряда факторов. Каждому имени атрибута Аi, 1 ≤ i ≤ n ставится в соответствие множество допустимых для соответствующего столбца значений. Это множество Di называется доменом данного имени атрибута. Каждая строка отношения является множеством значений, взятых по одному из домена каждого имени атрибута. Домены являются произвольными непустыми конечными или счетными множествами и образуют множество: D = D1 ∪ D2 ∪ ... ∪ Dn. Отношение r со схемой R — это конечное множество отображений {t1, t2, ... tp) из R в D. Причем каждое отображение t∈ r должно удовлетворять следующему ограничению: t(Ai) принадлежит Di, где 1 ≤ i ≤ n Эти отображения называются кортежами. Каждый кортеж отношения отображает экземпляр сущности, а атрибут отношения отображает атрибут сущности. Множество кортежей называется телом отношения. Тело отношения отражает состояние сущности, поэтому во времени оно постоянно меняется. Тело отношения характеризуется кардинальным числом, которое равно количеству содержащихся в нем кортежей. Одной из главных характеристик отношения является его степень. Степень отношения определяется количеством атрибутов, которое в нем присутствует. Нормализация отношений Требование нормализации отношений направлено на обеспечение та-кой их структуры, которая исключает некорректное обновление значений некоторых атрибутов и ошибки в выполнении определенных операций выборки. Первая нормальная форма Отношение удовлетворяет первой нормальной форме (1НФ), если все его атрибуты атомарны (неделимы), т.е. среди атрибутов нет составных или с множественными значениями. Вторая нормальная форма Отношение удовлетворяет второй нормальной форме (2НФ), если оно удовлетворяет 1НФ и не содержит атрибутов, зависящих от части ключа. Приведение отношения ко 2НФ (нормализация по 2НФ) заключается в разбиении исходного отношения на два, одно из которых включает атрибуты ключа исходного отношения и атрибуты, зависящие от полного ключа, а второе – атрибуты зависящего от части ключа вместе с атрибутами этой части. Третья нормальная форма Отношение удовлетворяет третьей нормальной форме (3НФ), если оно удовлетворяет 2НФ, и среди его неключевых атрибутов нет зависящих от другого неключевого атрибута (нет атрибутов, транзитивно зависящих от ключа). Приведение отношения к 3НФ (нормализация по 3НФ) заключается в разбиении исходного отношения на два, одно из которых есть исходное отношение без атрибутов, зависящих от неключевого атрибута. Второе отношение состоит из атрибута, от которого в исходном отношении зависели исключенные атрибуты (оно станет ключом в новом отношении) плюс атрибуты, исключенные из исходного отношения. Для реляционных баз данных необходимо, чтобы все отношения базы данных обязательно находились в 1НФ. Нормальные формы более высокого порядка могут использоваться разработчиками по своему усмотрению. Однако следует стремиться к тому, чтобы довести уровень нормализации базы данных хотя бы до ЗНФ, тем самым, исключив из базы данных избыточность данных и аномалии обновления. 30.Операции реляционной алгебры. Реляционное исчисление. Большинство работающих языков запросов основано на реляционном исчислении. Реляционные исчисления — непроцедурные системы. Исчисления выражают только то, каким должен быть результат вычисления, но не то, каким образом проводить вычисления. Эта обязанность возлагается на процессор языка запросов данной СУБД. Различают реляционное исчисление кортежей и реляционное исчисление доменов. Поскольку реляционное исчисление доменов сходно с реляционным исчислением кортежей за исключением того, что переменные принимают значения в доменах, а не являются кортежами, а исчисление кортежей используется чаще, рассмотрим только исчисление кортежей. В дальнейшем, когда речь будет идти о реляционном исчислении, будет подразумеваться именно реляционное исчисление кортежей. Реляционное исчисление кортежей является, по сути, формализацией системы обозначений, предназначенной для образования множеств. В реляционном исчислении используются булевы операции (И, ИЛИ, НЕ) над условиями, которые могут быть истинными или ложными. В нем также используются кванторы существования и всеобщности, означающие, соответственно, что элемент определенного типа существует или что условие истинно для каждого элемента определенного типа. Восемь основных операций над отношениями реализуются в реляционной модели данных: • пять традиционных операций над множествами - объединение, пересечение, разность, декартово произведение, деление; • три специальные реляционные операции – проекции, выбора (селекции) и соединения. Объединением двух совместимых по объединению отношений R1 и R2 является отношение R3, содержащее множество всех кортежей, принадлежащих или R1, или R2, или обоим вместе. Пересечением двух совместимых по объединению отношений R1 и R2 является отношение R3, содержащее кортежи, принадлежащие как R1, так и R2. Разностью двух совместимых по объединению отношений R1 и R2 является отношение R3, кортежи которого принадлежат R1, но не принадлежат R2 (т.е. кортежи из R1, которых нет в R2). Декартовым произведением отношения А и отношения В является отношение С, со схемой равной объединению схем отношений А и В, кортежи которого получены путем конкатенации (присоединения) каждого кортежа отношения В с каждым кортежем отношения А. Операция деления одного отношения на другое отношение может быть выполнена, если все множество атрибутов делителя является подмножеством атрибутов делимого. Результирующее отношение содержит только те атрибуты делимого, которых нет в делителе. В него включаются только те кортежи, декартово произведение которых с делителем содержится в делимом. Проекция – это операция построения нового отношения путем выбора одних и исключения других атрибутов из исходного отношения. Выбор (селекция) – операция получения нового отношения с той же схемой, что и исходное отношение, но кортежи которого являются подмножеством кортежей исходного. В него включаются только те кортежи исходного отношения, значения определенных атрибутов которых удовлетворяют заданным ограничениям. Соединением отношения А по атрибуту Х с отношением В по атрибуту Y называется множество всех кортежей, являющихся конкатенацией таких кортежей а и кортежей b, для которых выполняется условие Х * Y (под * понимается одна из операций сравнения). Х и Y должны быть определены на одном и том же домене. 31.Языки манипулирования данными SQL и QBE (общие сведения). Практически одновременно с реляционной моделью данных были предложены два языка манипулирования реляционными данными: язык структурированных запросов – Structured Query Language – SQL; запрос по образцу – Query-by-Example (QBE). В начале более перспективным считался QBE, как наиболее близкий к пользовательскому интерфейсу (заполнение таблицы в основном соответствующей исходному отношению), однако с течением времени наибольшее распространение получил SQL, ставший в настоящее время по существу стандартом для реляционных СУБД, особенно СУБД, работающих в технологии клиент-сервер. SQL с самого начала являлся полным языком БД, обеспечивающим помимо средств формулирования запросов и манипулирования БД следующие возможности: средства определения и манипулирования схемой БД; средства определения ограничений целостности и триггеров; средства определения представлений БД; средства определения структур физического уровня, поддерживающих эффективное выполнение запросов; средства авторизации доступа к отношениям и их полям67); средства определения точек сохранения транзакции и выполнения фиксации и откатов транзакций. Данные, хранящиеся в столбцах таблиц SQL-ориентированной базы данных, являются типизированными, т. е. представляют собой значения одного из типов данных, предопределенных в языке SQL или определяемых. Язык Query-by-Example Специфика QBE заключается в том, что запрос на обработку формулируется путем заполнения пустой таблицы, в основном соответствующей исходному отношению, информация из которой необходима для ответа на запрос. Дополнительные столбцы могут появиться, если в результирующей таблице необходим столбец, значение которого является константой, либо вычисляется на основе значений из нескольких столбцов исходной таблицы. Первый столбец таблицы-запроса соответствует исходному отношению в целом и в заголовке содержит имя исходного отношения. В заголовках других столбцов таблицы–запроса располагаются имена атрибутов, а в строках – различные элементы запроса, относящиеся к соответствующим атрибутам. Для QBE не существует какого-либо стандарта в записи запросов. 32.Использование SQL для создания и актуализации баз данных, формирования представлений, хранимых процедур и триггеров, запросов к базе данных. Три́ггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением INSERT, удалением DELETE строки в заданной таблице, или изменением UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции. Момент запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанного с ним события; например, до добавления записи) или AFTER (после события). В случае, если триггер вызывается до события, он может внести изменения в модифицируемую событием запись (конечно, при условии, что событие — не удаление записи). Некоторые СУБД накладывают ограничения на операторы, которые могут быть использованы в триггере (например, может быть запрещено вносить изменения в таблицу, на которой «висит» триггер, и т. п.) 33.Системы управления базами данных. Общие свойства СУБД. Обобщенная схема обмена данных с использованием СУБД. (СУБД) — специализированные программные средства, предназначен-ные для организации и ведения баз данных. СУБД используется для обеспечения эффективного доступа к базе данных со стороны программ (предоставление только необходимой информации, обеспечение независимости от возможных изменение в структуре той части базы данных, которую не обрабатывает программа), по существу она исполняет функции операционной системы по управлению данными. Схема иллюстрирует это положение. В зависимости от способа взаимодействия СУБД и программы обработки либо в программу передается очередная запись требуемой структуры, не зависимо от того, где физически в БД расположены данные, составляющие требуемую структуру, либо для программы создается временный файл требуемой структуры. А B C СУБД ПO 1 А B C ПК 1 А С В А D ПO 2 А B C G А D F G А C D F G ПК 2 ПO 3 СУБД А D E ПO 6 Общие свойства СУБД 1. СУБД включает язык определения данных, с помощью которого можно определить базу данных, ее структуру, типы данных, а также средства задания ограничений для хранимой информации. 2. СУБД позволяет вставлять, удалять, обновлять и извлекать информацию из базы данных посредством языка управления данными. 3. Большинство СУБД могут работать на компьютерах с разной архитектурой и под разными операционными системами, причем на работу пользователя тип платформы влияния не оказывает. 4. Многопользовательские СУБД имеют достаточно развитые средства администрирования БД. 5. СУБД предоставляет контролируемый доступ к базе данных с помощью: системы обеспечения безопасности; системы поддержки целостности базы данных; системы управления параллельной работой приложений; системы восстановления. 34.Типовые информационные процедуры, реализуемые СУБД. 1. Определение структуры создаваемой базы данных, ее инициализация и проведение начальной загрузки. Данная процедура позволяет описать и создать в памяти структуру таблицы, провести начальную загрузку данных в таблицы. 2. Предоставление пользователям возможности манипулирования данными (выборка необходимых данных, выполнение вычислений, разработка интерфейса ввода/вывода, визуализация).Такие возможности в СУБД представляются либо на основе использования специального языка программирования, входящего в состав СУБД, либо с помощью графического интерфейса. 3. Обеспечение независимости прикладных программ и данных (логической и физической независимости).Обеспечение логической независимости данных предоставляет возможность изменения логического представления базы данных без необходимости изменения физических структур хранения данных. Обеспечение физической независимости данных предоставляет возможность изменять способы организации базы данных в памяти ЭВМ не вызывая необходимости изменения "логического" представления данных. 4. Защита логической целостности базы данных. Основной целью реализации этой функции является повышение достоверности данных в базе данных. Достоверность данных может быть нарушена при их вводе в БД или при неправомерных действиях процедур обработки данных, получающих и заносящих в БД неправильные данные. 5. Защита физической целостности. Развитые СУБД имеют средства восстановления базы данных, ведение журнала транзакций. 6. Управление полномочиями пользователей на доступ к базе данных. 7. Синхронизация работы нескольких пользователей. Коллизии(одновременной обращение к одним данным) могут привести к нарушению логической целостности данных, поэтому система должна предусматривать меры, не допускающие обновление данных другим пользователям, пока работающий с этими данными пользователь полностью не закончит с ними работать. 8. Управление ресурсами среды хранения. 9. Поддержка деятельности системного персонала. При эксплуатации базы данных может возникать необходимость изменения параметров СУБД, выбора новых методов доступа, изменения (в определенных пределах) структуры хранимых данных, а также выполнения ряда других общесистемных действий. 35.Общие сведения о СУБД первого поколения (IMS-ОКА, ADABAS, IDSБанк ОС), реляционных СУБД (FoxPro, Access), СУБД, обеспечивающих технологию клиент-сервер (ORACLE, MS SQL, MY SQL). Первые СУБД появились в конце 60-х годов, расцвет их применения приходится на 70-е начало 80-х годов. В то время на первый план выступала способность СУБД хранить данные сложной структуры и значительного объема и использовать установленные связи между информационными элементами при проектировании приложений. Другое важное достоинство - это обеспечение относительной независимости программ от структур хранения. Первые СУБД были ориентированы на программистов. Интерфейс с такими СУБД осуществлялся путем обращения к программе – СУБД из программы приложения, написанной на одном из базовых языков программирования и такие системы стали называть системами с базовым языком. При этом СУБД выполняла лишь простые операции выборки записей, удовлетворяющих определенным условиям и в определенной последовательности, а также включения, замены и удаления записей. Но все эти операции осуществлялись с учетом зафиксированной структуры БД, что существенно сокращало алгоритмическую часть программы, касающуюся согласованной выборки связанных записей, и снижало риск нарушения структурной целостности БД. IMS (Information Management System ) являлись весьма распространенными СУБД, обеспечивающими хранение и доступ к БД иерархической структуры. Элементом структуры является сегмент, который может состоять из одного или нескольких полей. Поле может иметь тип: символьный или числовой. Сегменты одного типа имеют единую для этого типа внутреннюю структуру и размер, в том числе фиксированные размеры и типы одноименных полей в различных реализациях сегментов. БД сложной логической структуры может быть разнесена в 10 физических наборов данных (файлов). IMS поддерживает 4 способа физической организации БД: иерархический последовательный метод доступа; иерархический индекснопоследовательный метод доступа; иерархический индексно-прямой метод доступа и иерархический прямой. Система IMS(ОКА) является системой с базовым языком. Единицей обмена между прикладной программой и БД является реализация сегмента определенного типа (с подсоединенными ключами старших сегментов) или совокупности реализаций сегментов, расположенных в одной иерархической ветви. Система обеспечивает выполнение всех типичных для СУБД функций: вставку, замену, удаление и чтение реализаций сегментов. Система ID СУБД IDS обеспечивают хранение и доступ к БД с сетевой структурой. Основной структурной единицей, обеспечивающей в конечном счете сетевую структуру любой сложности, является цепь. В цепь объединяются информационно зависимые логические записи. Запись представляет собой основную единицу информации и состоит из полей данных и служебных полей. Служебные поля предназначены для идентификации записи и организации цепей с помощью адресных ссылок. Информационные поля могут содержать числовые и символьные данные и имеют имена. Записи одного типа содержат одноименные данные и имеют фиксированную длину, равно как и одноименные поля. Записям одного типа присваиваются уникальное имя и тип. Записи адресуются в БД с помощью адресных ссылок, состоящих из номера «страницы» БД и номера байта начала записи на «странице». Цепи образуются с помощью адресных ссылок, хранящихся в записи и указывающих на следующую запись в этой цепи. Каждый цепи присваивается уникальное имя. Каждая запись может входить в любое количество цепей. Система также обеспечивает типовые операции доступа к данным – запоминание, выборку, модификацию и удаление записей из программ, написанных на классических языках программирования. Система ADABAS ADABAS сочетает в себе возможности СУБД с базовым языком и системы замкнутого типа и обеспечивает поддержание ограниченных сетевой и иерархической структур. БД в ADABAS является совокупностью связанных данных, организованных в виде файлов. Реализованное в системе динамическое установление связей между записями различных файлов позволяет создавать межзаписные иерархические и сетевые структуры. ADABAS осуществляет поиск по запросам пользователей записей в БД. Доступ к хранимым данным, обработку данных и выдачу результатов в виде справок и сводок заданной формы. Запросы вводятся в диалоговом режиме с видеотерминалов и в пакетном режиме в образе перфокарт. Языки запросов высокого уровня ориентированы на пользователейнепрограммистов. Обеспечивается и мультидоступ к БД. ADABAS дает возможность обращаться к БД и из прикладных программ, написанных на АССЕМБЛЕРЕ, КОБОЛе, ФОРТРАНе и PL/1, в том числе под управлением телемонитора. Система FoxPro СУБД FoxPro обеспечивает возможность работы в трех режимах: • выполнение откомпилированных программ, написанных на языке СУБД (xBASE-язык); • выполнение команд языка xBASE или команд SQL в режиме интер-претации; • обработка баз данных в экранном интерфейсе (без предварительного программирования и без знания команд языка xBASE). База данных FoxPro состоит из совокупности взаимосвязанных файлов, каждый из которых может быть представлен в виде таблицы. Запись файла соответствует строке таблицы, поле – столбцу таблицы. Файл и поля имеют имена – идентификаторы назначаемые при первоначальном создании файла. Все записи одного файла однотипны, имеют фиксированную длину, потому как одноименные поля во всех записях имеют один и тот же размер и тип значения. В одной записи (строке таблицы) у одного поля может быть только единственное значение. В файле (таблице) не может быть двух одинаковых записей. Одно либо несколько полей являются ключом записи. Значение ключа уникально. Файлы могут быть связаны друг с другом: • Возможные виды связей 1 : 1, 1 : М, М : 1, M : N: Система Access СУБД Access является СУБД реляционного типа, в которой разумно сбалансированы все средства и возможности, типичные для современных СУБД. В отличии от FoxPro, в Access все данные вместе с запросами и формами физически хранятся в одном файле. База данных Microsoft Access состоит из следующих объектов: таблицы, запросы, формы, отчеты, макросы, модули. Поскольку, как правило, система управления базами данных обрабатывает одновременно несколько таблиц, то существует возможность установления реляционных связей между таблицами. Клиент-сервер При использовании клиент-серверной технологии, на самом сервере, содержащим базу данных, функционирует некоторое программное обеспече-ние, которое называется "Сервером баз данных" или "Сервером БД". Клиент-серверная СУБД позволяет обмениваться клиенту и серверу минимально необходимыми объёмами информации. При этом основная вычислительная нагрузка ложится на сервер. Клиент может выполнять функции предварительной обработки перед передачей информации серверу, но в основном его функции за-ключаются в организации доступа пользователя к серверу. Таким образом, архитектура клиентсервер адаптирована для работы с большими объемами данных - сеть нагружается меньше, требования к пользовательским компьютерам, с точки зрения производительности, минимизируется. Однако возрастают требования к серверу, содержащему базу данных, поскольку теперь он один тянет нагрузку всех пользователей. Клиент-серверная СУБД располагается на сервере вместе с БД и осуществляет доступ к БД непосредственно, в монопольном режиме. Все клиентские запросы на обработку данных обрабатываются клиент-серверной СУБД централизованно. Недостаток клиент-серверных СУБД состоит в повышенных требованиях к серверу. Достоинства: потенциально более низкая загрузка локальной сети; удобство централизованного управления; удобство обеспечения таких важных характеристик как высо-кая надёжность, высокая доступность и высокая безопасность. Примеры: Oracle, Firebird, Interbase, IBM DB2, Informix, MS SQL Server, Sybase Adaptive Server Enterprise, PostgreSQL, MySQL, Cache. 36.Информационные системы, основанные на БД и СУБД. Физическая организация базы данных; хешированные, индексные файлы; защита баз данных; целостность и сохранность баз данных. Физические модели баз данных определяют способы размещения данных в среде хранения и способы доступа к этим данным, которые поддерживаются на физическом уровне. Хэширование Достаточно популярным подходом к организации индексов является использование техники хэширования. Общей идеей методов хэширования является применение к значению ключа некоторой функции свертки (хэш-функции), вырабатывающей значение меньшего размера. Значение хэш-функции затем используется для доступа к записи. В самом простом, классическом случае свертка ключа используется как адрес в таблице, содержащей ключи и записи. Основным требованием к хэшфункции является равномерное распределение значение свертки. При возникновении коллизий (одна и та же свертка для нескольких значений ключа) образуются цепочки переполнения. Главным ограничением этого метода является фиксированный размер таблицы. Если таблица заполнена слишком сильно или переполнена, но возникнет слишком много цепочек переполнения, и главное преимущество хэширования – доступ к записи почти всегда за одно обращение к таблице – будет утрачено. Расширение таблицы требует ее полной переделки на основе новой хэш-функции (со значением свертки большего размера). Индексные файлы Основное назначение индексов состоит в обеспечении эффективного прямого доступа к записи таблицы по ключу. Индексный файл — это файл особого типа, в котором каждая запись состоит из двух значений: данных и указателя. Данные представляют поле, по которому производится индексирование, а указатель осуществляет связывание с соответствующим кортежем индексированного файла. Если индексирование осуществляется по ключевому полю, то индекс называется первичным. Такой индекс к тому же обладает свойством уникальности, т. е. не содержит дубликатов ключа. Основное преимущество использования индексов заключается в значительном ускорении процесса выборки данных, а основной недостаток — в замедлении процесса обновления данных. Действительно, при каждом добавлении новой записи в индексированный файл потребуется также добавить новый индекс в индексный файл. Защита баз данных; целостность и сохранность баз данных Одним из основных требований к развитым СУБД является надежность хранения баз данных. Это требование предполагает, в частности, возможность восстановления согласованного состояния базы данных после любого рода аппаратных и программных сбоев. Очевидно, что для выполнения восстановлений необходима некоторая дополнительная информация. В подавляющем большинстве современных реляционных СУБД такая избыточная дополнительная информация поддерживается в виде журнала изменений базы данных. Поскольку основой поддержания целостного состояния базы данных является механизм транзакций, журнализация и восстановление тесно связаны с понятием транзакции. Общими принципами восстановления являются следующие: результаты зафиксированных транзакций должны быть сохранены в восстановленном состоянии базы данных; результаты незафиксированных транзакций должны отсутствовать в восстановленном состоянии базы данных. Возможны два основных варианта ведения журнальной информации. В первом варианте для каждой транзакции поддерживается отдельный локальный журнал изменений базы данных этой транзакцией. Эти локальные журналы используются для индивидуальных откатов транзакций и могут поддерживаться в оперативной памяти. Кроме того, поддерживается общий журнал изменений базы данных, используемый для восстановления состояния базы данных после мягких и жестких сбоев. Этот подход позволяет быстро выполнять индивидуальные откаты транзакций, но приводит к дублированию информации в локальных и общем журналах. Поэтому чаще используется второй вариант - поддержание только общего журнала изменений базы данных, который используется и при выполнении индивидуальных откатов. 37. Проектирование баз данных. Проектирование с использованием метода сущность – связь, средства поддержки проектирования (ERWin). Проектирование баз данных — процесс создания схемы базы данных и определения необходимых ограничений целостности Модель «сущность-связь»(англ. “Entity-Relationshipmodel”)или ER-модель является наиболее известным представителем класса семантических (концептуальных, инфологических) моделей предметной области. ER-модель обычно представляется в графической форме Основные преимущества ER-моделей: наглядность; модели позволяют проектировать базы данных с большим количеством объектов и атрибутов; ER-модели реализованы во многих системах автоматизированного проектирования баз данных (например, ERWin). Основные элементы ER-моделей: объекты (сущности); атрибуты объектов; связи между объектами. Сущность — объект предметной области, имеющий атрибуты. Связь между сущностями характеризуется: типом связи (1:1, 1:N, N:М); классом принадлежности. Класс может быть обязательным и необязательным. Если каждый экземпляр сущности участвует в связи, то класс принадлежности — обязательный, иначе — необязательный. 38. Традиционные методики проектирования БД, современная интеграционная методика проектирования. 39. Проектирование системы баз данных на принципах единой информационной среды. & 43. Единая информационная среда. Под информационной средой будем понимать систему, объединяющую: - корпоративную вычислительную сеть, обеспечивающую технические и технологические аспекты ИКТ (собственно сеть, компьютеризированные рабочие места и аудитории) - информационные ресурсы (собственные и внешние) и сервисы, используемые в управлении, в собственно образовательной и научно-исследовательской деятельности - программное обеспечение (базовое, системное, специальное) Функционирование, а тем более развитие, любого направления деятельности в настоящее время не мыслимо без широкого использования информационнокоммуникационных технологий (ИКТ), поэтому вопросы развития информационной среды (ИС) университета охватывают не только 5 и 8, но все другие направления ИОП и имеют первостепенное значение. Особенности вуза, влияющие на создание современной ИС 1) вуз имеет в функциональной части (логистике) специфические образовательную, научно-исследовательскую и административно-хозяйственную сферы деятельности (уникальное оборудование и программы); 2) информация является и ресурсом и инструментом и результатом деятельности, в связи с чем, появляется два вида взаимосвязанных информационных ресурсов – для управления и для технологии (собственно деятельности), определяется особая роль документа как основного носителя информации и все возрастающая роль менеджмента знаний (интеграция); 3) основными объектами информационной модели являются личности, они также могут выступать и как исходный ресурс, и как предмет (объект) деятельности, и как производитель (субъект) и как конечный продукт деятельности (интеграция); 4) кадровый состав сотрудников таков, что значительная часть имеет возраст 50 и более лет и недостаточность состава от 30 до 50 лет (повышение квалификации как базовой, так и специальной). 40. Современные направления использования баз данных. Новые направления использования БД связаны, в основном: - с повсеместным использованием корпоративных и глобальных вычислительных сетей; - со значительной «историей» функционирования информационных систем. Первое направление (работа в сети), в свою очередь, связано: - с проблемами параллельной (одновременной) работы многих, удаленных приложений (пользователей) с одной и той же БД (новые проблемы комплексного использования информации, теперь уже баз данных); - со стремлением повышения надежности и эффективности работы информационных систем за счет распределения данных и их обработки между узлами сети. Второе направление (накопление информации) приводит: - к необходимости интеграции данных и приложений созданных в разные периоды времени, в различных информационно-программных средах (ОС, СУБД, инструментальных средствах); - к новым подходам к использованию «исторических» данных (Warehouse , OLAP , DataMining , Managementknowledge) Проблема одновременной (параллельной) работы пользователей с одной БД прежде всего связывается с реализацией файл-серверной и клиент-серверной технологиями удаленной работы с БД. В обоих случаях это сетевая технология с выделением в сети сервера – спец компьютер с большой памятью, где размещается БД, но: Технология файл-сервер При обращении программы к данным БД сервера ВСЯ БД передается ПО СЕТИ на рабочую станцию, где и осуществляется обработка (как правило отбор необходимой информации из большой БД). В итоге, кроме того, что рабочая станция д.б. достаточно мощным ПК (СУБД там работает) и просмотр большого числа записей БД - ПЕРЕГРУЗКА СЕТИ. Технология клиент-сервер Программа на рабочей станции (клиентская часть) обращается к БД (к SQLсерверу).с запросом, как правило на языке SQL - это м.б. несколько десятков строк. Выборка данных осуществляется на мощной машине сервера с помощью серверной части – программы СУДБ (MS SQL, MySQL и др.) и возвращается ответ – м.б. один или несколько экранов. В итоге, сеть не загружена, рабочая станция м.б.не такой мощной, проще организовать распределенную обработку и защиту данных, оптимизировать работу БД Проблема файл-серверной технологии – перегрузка сети и необходимость мощной рабочей станции (компьютера пользователя) в связи с тем, что БД целиком перемещается по сети к каждой рабочей станции и вся обработка осуществляется на ней. При стандартной 2-х уровневой технологии клиент- сервер основная обработка осуществляется на сервере (как правило – SQL-сервер) – все, что можно «выжать» из SQL – делается на мощной машине сервера. 41. Распределенные базы данных и распределенная обработка. Под распределенной (DistributedDataBase - DDB) обычно подразумевают базу данных, включающую фрагменты из нескольких баз данных, которые располагаются на различных узлах сети компьютеров, и, возможно управляются различными СУБД. Распределенная база данных выглядит с точки зрения пользователей и прикладных программ как обычная локальная база данных. В этом смысле слово "распределенная" отражает способ организации базы данных, но не внешнюю ее характеристику. Основная задача систем управления распределенными базами данных состоит в обеспечении средства интеграции локальных баз данных, располагающихся в некоторых узлах вычислительной сети, с тем, чтобы пользователь, работающий в любом узле сети, имел доступ ко всем этим базам данных как к единой базе данных При этом должны обеспечиваться: - простота использования системы; возможности автономного функционирования при нарушениях связности сети или при административных потребностях; - высокая степень эффективности. Перечислим основные принципы создания и функционирования распределенных БД: прозрачность размещения данных для пользователя (пользователю распределенная БД должна представляться точно так же, как и нераспределенная); изолированность пользователей друг от друга (на работу одного пользователя с БД не должна влиять работа других пользователей с ней); синхронизация БД и непротиворечивость состояния данных в любой момент времени. Дадим более подробный перечень принципов распределенной БД, сформулированных К. Дейтом: 1.Локальная автономия. Это качество означает, что управление данными на каждом из узлов распределенной системы выполняется локально. База данных, расположенная на одном из узлов, является неотъемлемым компонентом распределенной системы. Будучи фрагментом общего пространства данных, она в то же время функционирует как полноценная локальная база данных, а управление ею осуществляется локально, независимо от других узлов системы. 2.Независимость узлов. Все узлы равноправны и независимы, а расположенные на них БД являются равноправными поставщиками данных в общее пространство данных. База данных на каждом из узлов полностью защищена от несанкциониро­ванного доступа. 3.Непрерывность операций. Это возможность непрерывного доступа к данным в рамках распределенной БД вне зависимости от их расположения и вне зависимости от операций, выполняемых на локальных узлах. 4.Прозрачность расположения. Пользователь, обращающийся к БД, ничего не должен знать о реальном, физическом размещении данных в узлах информационной системы. 5.Прозрачная фрагментация. Возможность распределенного (т. е. на различных узлах) размещения данных, логически представляющих собой единое целое. Существует фрагментация двух типов: горизонтальная и вертикальная. Первая означает, что строки таблицы хранятся на различных узлах. Вторая означает распределение столбцов логической таблицы по нескольким узлам. 6.Прозрачное тиражирование. Тиражирование данных — это асинхронный процесс переноса изменений объектов исходной базы данных в базы, расположенные на других узлах распределенной системы. 7.Обработка распределенных запросов. Возможность выполнения операций выборки данных из распределенной БД, посредством запросов, сформулированных на языке SQL. 8.Обработка распределенных транзакций. Возможность выполне­ния операций обновления распределенной базы данных, не нарушающих целостность и согласованность данных. Эта цель достигается применением двухфазного протокола фиксации транзакций. 9.Независимость от оборудования. Это свойство означает, что в качестве узлов распределенной системы могут выступать компью­теры любых моделей и производителей. 10. Независимость от операционных систем. Это качество вытекает из предыдущего и означает многообразие операционных систем, управляющих узлами распределенной системы. 11. Прозрачность сети. Доступ к любым базам данных осуществляется по сети. Спектр поддерживаемых конкретной СУБД сетевых протоколов не должен быть ограничением системы, основан­ной на распределенной БД. 12. Независимость от СУБД. Это качество означает, что в распределенной системе могут работать СУБД различных производителей, и возможны операции поиска и обновления в базах данных различных моделей и форматов. Выделились несколько самостоятельных технологий распределенной обработки данных: * клиент-сервер; * реплицирования; * объектного связывания. Можно выделить следующие идеи, лежащие в основе технологии клиент-сервер: *общие для всех пользователей данные, расположенные на одном или нескольких серверах; * множество пользователей, осуществляющих доступ к общим данным. Одним из важнейших преимуществ архитектуры клиент-сервер яв­ляется снижение сетевого трафика при выполнении запросов. Клиент посылает запрос серверу на выборку данных, запрос обрабатывается сервером, и клиенту передается не вся таблица (как было бы в техно­логии файл-сервер), а только результат обработки запроса. Построение быстродействующих информационных систем обеспе­чивают технологии репликации данных. Репликой называют копию БД, размещенную на другом компьюте­ре сети для автономной работы пользователей. Основная идея репликации заключается в том, что пользователи работают автономно с общими данными, растиражированными по локальным базам данных. Производительность работы системы повышается из-за отсутствия необходимости обмена данными по сети. Для реализации технологии репликации программное обеспечение СУБД дополняется функциями тиражирования данных, их структуры, системной информации, информации о конфигурировании распределенной системы. Технология объектного связывания данных решает задачу обеспечения доступа из одной локальной БД, открытой одним пользователем, к данным другой локальной БД, возможно, находящейся на другом компьютере, открытой другим пользователем. 42. Понятие транзакции и параллельная обработка. OLTP, OLAP, Data Mining технологии. Под транзакцией понимается неделимая с точки зрения воздействия на БД последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации) такая, что либо результаты всех операторов, входящих в транзакцию, отображаются в БД, либо воздействие всех этих операторов полностью отсутствует. При завершении транзакции оператором COMMIT результаты гарантированно фиксируются во внешней памяти; при завершении транзакции оператором ROLLBACK результаты гарантированно отсутствуют во внешней памяти. Типы транзакций: Неделимые транзакции- транзакции, в которых все действиявыполняются до конца, либо ни одно из них не выполняется. Прерванные транзакции- транзакции, приведшие к отказу до внесенияизменений в базу данных. OLTP (On-LineTransactionProcessing) – системы оперативной обработки транзакций. OLTP-системы предназначены для ввода, структурированного хранения и обработки информации (операций, документов) в режиме реального времени. Использование: OLTP-приложениями охватывается широкий спектр задач во многих отраслях — автоматизированные банковские системы, банковские и биржевые операции, в промышленности — регистрация прохождения детали на конвейере, фиксация в статистике посещений очередного посетителя веб-сайта, автоматизация бухгалтерского, складского учёта и учёта документов и т. п. Приложения OLTP, как правило, автоматизируют структурированные, повторяющиеся задачи обработки данных, такие как ввод заказов и банковские транзакции. OLTP-системы проектируются, настраиваются и оптимизируются для выполнения максимального количества транзакций за короткие промежутки времени OLAP (англ. onlineanalyticalprocessing, аналитическая обработка в реальном времени) — технология обработки данных, заключающаяся в подготовке суммарной (агрегированной) информации на основе больших массивов данных, структурированных по многомерному принципу. Причина использования OLAP для обработки запросов — это скорость. Термин DataMining обозначает не столько конкретную технологию, сколько сам процесс поиска корреляций, тенденций, взаимосвязей и закономерностей посредством различных математических и статистических алгоритмов: кластеризации, создания субвыборок, регрессионного и корреляционного анализа. Цель этого поиска — представить данные в виде, отражающем бизнес-процессы, а также построить модель, при помощи которой можно прогнозировать процессы, критичные для планирования бизнеса (например, динамику спроса на те или иные товары или услуги либо зависимость их приобретения от каких-то характеристик потребителя). DataMining– это процесс обнаружения в сырых данных ранее неизвестных, нетривиальных, практически полезных и доступных интерпретации знаний, необходимых для принятия решений в различных сферах человеческой деятельности. Суть и цель технологии DataMining можно охарактеризовать так: это технология, которая предназначена для поиска в больших объемах данных неочевидных, объективных и полезных на практике закономерностей. Еще несколько определений понятия DataMining. DataMining – это процесс выделения из данных неявной и неструктурированной информации и представления ее в виде, пригодном для использования. DataMining – это процесс выделения, исследования и моделирования больших объемов данных для обнаружения неизвестных до этого структур (patterns) с целью достижения преимуществ в бизнесе (определение SAS Institute). DataMining – это процесс, цель которого - обнаружить новые значимые корреляции, образцы и тенденции в результате просеивания большого объема хранимых данных с использованием методик распознавания образцов плюс применение статистических и математических методов (определение GartnerGroup). 44. Базы знаний. Развитие систем БД первоначально было мотивировано потребностью в эффективных средствах хранения, манипуляции и извлечения большого количества разнообразных данных. По достижению этих целей возникла дополнительная потребность: возможность задавать ИС правила, применяемые к хранимым фактам (данным), позволяющие выводить из них другие факты. Включение знаний в систему БД было подсказано исследованиями в области искусственного интеллекта (ИИ), которая занимается вопросом о том, как запрограммировать разумное поведение. Разработки в области ИИ включали исследования представлений логических правил, применяемых к данным. Экспертные системы — это особый раздел ИИ, посвященные представлению правил и процедур, которым следует специалист, решая задачи в конкретной предметной области. Экспертные системы — системы, моделирующие процесс принятия решений специалистами в разных предметных областях. Однако Экспертные системы не являются базами знаний, т.к. не обеспечивают полные возможности управления данными, присущие СУБД. Например, язык экспертных систем — язык ПРОЛОГ. Является мостом между БД и базами знаний. Он основан на исчислении предикатов, которые могут рассматриваться как реляционные таблицы, в нем также есть возможность выражения логики, которой пользуется человек, преобразуя факты из БД в информацию, помогающую принимать решения. Однако этот язык не обеспечивает необходимый набор возможностей СУБД —обработка транзакций, резервное копирование и восстановление, управление вспомогательными ЗУ. DATA-LOG и LogicalDataLanguage (LDL, логический язык данных), расширенные версии ПРОЛОГа, призванные решить эти проблемы, находятся в стадии разработки. Система управления базами знаний. Система, обладающая всеми стандартными возможностями системы управления базой данных, касающихся хранения данных и манипуляций ими, а также средствами создания правил вывода, их хранения и применения к хранимым таблицам данных. Основанная на знаниях система. Альтернативный термин для системы управления базой знаний. Система базы знаний (СБЗ) — это компьютерная система, имеющая следующие составляющие: 1. БД, содержащая основные факты. 2. БД, содержащая правила, которые позволяют делать выводы из БД фактов. 3. Программное обеспечение, называемое системой управления базой знаний(СУБД), которое поддерживает обычные функции СУБД, а такжеуправление процессом вывода а БД правил, оперирующих базой данных фактов. Наиболее активно развивающиеся области СБЗ: создание высокоскоростного оборудования, на котором выполняются операции с правилами; методы автоматического поддержания смысловой целостности баз знаний, в которых применяются правила, основанные на формальной логике, совершенствование способов применения логики к рассуждениям о знаниях, содержащих неопределенности, предположения и время. Примеры: Факт, хранящийся в БД фактов Поставщик Иванов находится в Томске Информация более высокого уровня: Поставщик Иванов надежен Второе основано на выводах, полученных на основе разных данныхфактов (сопоставление дат закупок и дат поставок, и т.д.). 1. 2. 3. 4. 45. Хранилища данных. Базы данных большого объема. Хранилище данных (англ. DataWarehouse) — предметно-ориентированная информационная база данных, специально разработанная и предназначенная для подготовки отчётов и бизнес-анализа с целью поддержки принятия решений в организации. Строится на базе систем управления базами данных и систем поддержки принятия решений. Данные, поступающие в хранилище данных, как правило, доступны только для чтения. Данные из OLTP-системы копируются в хранилище данных таким образом, чтобы построение отчётов и OLAP-анализ не использовал ресурсы транзакционной системы и не нарушал её стабильность. Как правило, данные загружаются в хранилище с определённой периодичностью, поэтому актуальность данных может несколько отставать от OLTP-системы. Принципы организации хранилища: Проблемно-предметная ориентация. Данные объединяются в категории и хранятся в соответствии с областями, которые они описывают, а не с приложениями, которые они используют. Интегрированность. Данные объединены так, чтобы они удовлетворяли всем требованиям предприятия в целом, а не единственной функции бизнеса. Некорректируемость. Данные в хранилище данных не создаются: т.е. поступают из внешних источников, не корректируются и не удаляются. Зависимость от времени. Данные в хранилище точны и корректны только в том случае, когда они привязаны к некоторому промежутку или моменту времени. Существуют два архитектурных направления – нормализованные хранилища данных и хранилища с измерениями. В нормализованных хранилищах, данные находятся в предметно ориентированных таблицах третьей нормальной формы. Нормализованные хранилища характеризуются как простые в создании и управлении, недостатки нормализованных хранилищ – большое количество таблиц как следствие нормализации, из-за чего для получения какой-либо информации нужно делать выборку из многих таблиц одновременно, что приводит к ухудшению производительности системы. Хранилища с измерениями используют схему «звезда» или схему «снежинка». При этом в центре «звезды» находятся данные (Таблица фактов), а измерения образуют лучи звезды. Различные таблицы фактов совместно используют таблицы измерений, что значительно облегчает операции объединения данных из нескольких предметных таблиц фактов (Пример – факты продаж и поставок товара). Таблицы данных и соответствующие измерениями образуют архитектуру «шина». Измерения часто создаются в третьей нормальной форме, в том числе, для протоколирования изменения в измерениях. Основным достоинством хранилищ с измерениями является простота и понятность для разработчиков и пользователей, также, благодаря более эффективному хранению данных и формализованным измерениям, облегчается и ускоряется доступ к данным, особенно при сложных анализах. Основным недостатком является более сложные процедуры подготовки и загрузки данных, а также управление и изменение измерений данных. Сверхбольшая база данных (англ. VeryLargeDatabase, VLDB) — это база данных, которая занимает чрезвычайно большой объём на устройстве физического хранения. Термин подразумевает максимально возможные объёмы БД, которые определяются последними достижениями в технологиях физического хранения данных и в технологиях программного оперирования данными. 46. Развитие и классификация однопроцессорных архитектур компьютеров. Исторически первыми появились однопроцессорные архитектуры. Классическим примером однопроцессорной архитектуры является архитектура фон Неймана со строго последовательным выполнением команд: процессор по очереди выбирает команды программы и также по очереди обрабатывает данные. По мере развития вычислительной техники архитектура фон Неймана обогатилась сначала конвейером команд (рис. 1.2), а затем многофункциональной обработкой и по классификации М. Флина получила обобщенное название SISD (SingleInstructionSingleData — один поток команд, один поток данных). Рис..1.2. Развитие и классификация однопроцессорных архитектур Архитектуры класса SISD охватывают те уровни программного параллелизма, которые связаны с одинарным потоком данных. Параллелизм циклов и итераций тесно связан с понятием множественности потоков данных и реализуется векторной обработкой. В классификации компьютерных архитектур М. Флина выделена специальная группа однопроцессорных систем с параллельной обработкой потоков данных – SIMD (SingleInstructionMultipleData, один поток команд – множество потоков данных). Ведущие поставщики микропроцессоров ищут пути повышения их производительности за счет многопотоковой обработки информации на нескольких внутренних ядрах процессора. Ярким примером является технология HyperThreading (HT), разработанная фирмой Intel, и позволяющая на одном физическом процессоре создавать два логических процессора, на которых могут выполняться параллельно два программных потока (threads), использующих в один и тот же момент времени разные блоки процессора. 47. Конвейерная обработка команд. В работе процессора можно выделить несколько основных стандартных фаз работы: 1. Выборка команды (ВК) 2. Вычисление адреса и выборка операнда (ВО) 3. Выполнение команды и запись результатов(АО) 4. Обработка прерываний 5. Изменение состояний процессора и системы в целом 1.ВК ( ) в этой фазе осуществляется передача содержимого счетчика команд в регистр адреса памяти, считывание команды из памяти в регистр команд, модификация содержимого счетчика команд для выборки следующей команды. 2.ВО ( ) выполняется вычисление адреса и обращение к памяти, считывание из памяти операндов и запись их в какие-то регистры. 3.АО ( ) инициализация кодом операции (дешифрация операции) цикла работы устройства управления. Этим управляющим сигналом выполняются операции в АЛУ. Результат операции записывается в регистр или ОП. Эти операции выполняются последовательно (последовательная обработка команд) по Фон-Нейману. команды n n+1 1 2 3 4 5 6 такты За 6 тактов выполняется две команды, неэффективно используется процессор, произв-сть и загрузка низкая. Трудности реализации: 1. конвейер приостанавливает свою работу при выборке любой команды условного перехода 2. конвейер может совмещать работу нескольких команд, если эти команды не взаимозависимы между собой (результат одной команды не используется другой). Ставят блоки прогнозирования ветвления предназначенные для того, чтобы выбрать с наибольшей вероятностью по какой ветви дальше пойдет программа. Совмещение обработки (конвейер команд) объем оборудования и усложняет схему управления. Это увеличение и усложнение возрастает с увеличением числа уровней совмещений, поэтому в каждом конкретном случае необходимо выбирать число уровней совмещений, для получения заданных параметров. Основным параметром является отношение производительности к стоимости. Опыт показал, что технически и экономически целесообразна переработка 5-6 команд. 48. Cуперскалярная обработка команд. Еще одной разновидностью однопотоковой архитектуры является суперскалярная обработка. Смысл этого термина заключается в том, что в аппаратуру процессора закладываются средства, позволяющие одновременно выполнять две или бо-лее скалярные операции, то есть команды обработки пары чисел. Суперскалярная архитектура базируется на многофункциональном параллелизме и позволяет увеличить производительность компьютера пропорционально числу одновременно выполняемых операций. Способы реализации супер-скалярной обработки могут быть разными. Первый способ применяется как в CISC, так и в RISC — процессорах и заключается в чисто аппаратном механизме выборки из буфера инструкций (или кэша инструкций) несвязанных команд и параллельном запуске их на исполнение. Этот метод хорош тем, что он «прозрачен» для программиста — состав-ление программ для подобных процессоров не требует никаких специальных усилий, ответственность за параллельное выполнение операций возлагается в основном на аппаратные средства. Второй способ реализации суперскалярной обработки заключается в кардинальной перестройке всего процесса трансляции и исполнения про-грамм. Уже на этапе подготовки программы компилятор группирует несвя-занные операции в пакеты, содержимое которых строго соответствует струк-туре процессора. Например, если процессор содержит функционально независимые устройства (сложения, умножения, сдвига и деления), то максимум, что ком-пилятор может «уложить» в один пакет — это четыре разнотипные операции: (сложение, умножение, сдвига и деления). Сформированные пакеты операций преобразуются компилятором в командные слова, которые по сравнению с обычными инструкциями выглядят очень большими. Отсюда и название этих суперкоманд и соответствующей им архитектуры — VLIW (verylargeInstructionWord — очень широкое командное слово). По идее, затраты на формирование суперкоманд должны окупаться скоростью их выполнения и простотой аппаратуры процессора, с которого снята вся «интеллектуальная» работа по поиску параллелизма несвязанных операций. Однако практическое внедрение VLIW — архитектуры затрудняется значительными проблемами эффективной компиляции. 49. Классификация архитектуры SISD. Классическим примером однопроцессорной архитектуры является архитектура фон Неймана со строго последовательным выполнением команд: процессор по очереди выбирает команды программы и также по очереди обрабатывает данные. Архитектура фон Неймана обогатилась конвейером команд, а затем многофункциональной обработкой и получила обобщенное название SISD (SingleInstructionSingleData — один поток команд, один поток данных). Данная архитектура породила CISC, RISC и архитектуру с суперскалярной обработкой (рис.1.1). Компьютеры с CISC (ComplexInstructionSetComputer) архитектурой имеют комплексную (полную) систему команд, под управлением которой выполняются всевозможные операции типа «память-память», «память-регистр», «регистр — память», «регистр — регистр». Компьютеры с RISC (ReducedInstructionSetComputer) архитектурой содержат набор простых, часть употребляемых в программах команд. Основными являются операции типа «регистр — регистр». суперскалярная обработка. Смысл этого термина заключается в том, что в аппаратуру процессора закладываются средства, позволяющие одновременно выполнять две или более скалярные операции, то есть команды обработки пары чисел. Суперскалярная архитектура базируется на многофункциональном параллелизме и позволяет увеличить производительность компьютера пропорционально числу одновременно выполняемых операций. Способы реализации суперскалярной обработки могут быть разными. Первый способ применяется как в CISC, так и в RISC — процессорах и заключается в чисто аппаратном механизме выборки из буфера инструкций (или кэша инструкций) несвязанных команд и параллельном запуске их на исполнение. Второй способ реализации суперскалярной обработки заключается в кардинальной перестройке всего процесса трансляции и исполнения программ. Уже на этапе подготовки программы компилятор группирует несвязанные операции в пакеты, содержимое которых строго соответствует структуре процессора.этот способ— организация архитектуры VLIW (verylargeInstructionWord — очень широкое командное слово). 50. CISC и RISC-архитектуры микропроцессоров. Компьютеры с CISC (ComplexInstructionSetComputer) архитектурой имеют комплексную (полную) систему команд, под управлением которой выполняются всевозможные операции типа «память-память», «память-регистр», «регистр — память», «регистр — регистр». Данная архитектура характеризуется: большим числом команд (более 200); переменной длиной команд (от 1 до 11 байт); значительным числом способов адресации и форматов команд; сложностью команд и многотактностью их выполнения; наличием микропрограммного управления, что снижает быстродействие и усложняет процессор. Обмен с памятью в процессе выполнения команды делают практически невозможной глубокую конвейеризацию арифметики, т.е. ограничивается тактовая частота процессора, а значит, и его производительность. Компьютеры с RISC (ReducedInstructionSetComputer) архитектурой содержат набор простых, часть употребляемых в программах команд. Основными являются операции типа «регистр — регистр». Данная архитектура характеризуется: - сокращенным числом команд; большинство команд выполняются за один машинный такт; постоянной длиной команд; небольшим количеством способов адресации и форматов команд; для простых команд нет необходимости в использовании микропрограммного управления; большим числом регистров внутренней памяти процессора. Компьютеры с RISC- архитектурой «обязаны» иметь преимущество в производительности по сравнению с CISC компьютерами, за которое приходится расплачиваться наличием в программах дополнительных команд обмена регистров процессора с оперативной памятью. 51. VLIW-архитектура компьютера и EPIC-концепция. VLIW - способреализации суперскалярной обработки, заключающийся в кардинальной перестройке всего процесса трансляции и исполнения программ. Уже на этапе подготовки программы компилятор группирует несвязанные операции в пакеты, содержимое которых строго соответствует структуре процессора. Например, если процессор содержит функционально независимые устройства (сложения, умножения, сдвига и деления), то максимум, что компилятор может «уложить» в один пакет — это четыре разнотипные операции: (сложение, умножение, сдвига и деления). Сформированные пакеты операций преобразуются компилятором в командные слова, которые по сравнению с обычными инструкциями выглядят очень большими. Отсюда и название этих суперкоманд и соответствующей им архитектуры — VLIW (verylargeInstructionWord — очень широкое командное слово). По идее, затраты на формирование суперкоманд должны окупаться скоростью их выполнения и простотой аппаратуры процессора, с которого снята вся «интеллектуальная» работа по поиску параллелизма несвязанных операций. Однако практическое внедрение VLIW — архитектуры затрудняется значительными проблемами эффективной компиляции. VLIW можно считать логическим продолжением идеологии RISC, расширяющей её на архитектуры с несколькими вычислительными модулями. Так же, как в RISC, в инструкции явно указывается, что именно должен делать каждый модуль процессора. Из-за этого длина инструкции может достигать 128 или даже 256 бит. Концепция EPIC (ExplicityParallelInstructionComputing – вычисления с явным параллелизмом команд, где «явным» означает явно указанным при трансляции) разработана совместно фирмами Intel и HewlettPackard и имеет ту же значимость, что и CISC- и RISC-архитектуры. Идеология создания EPIC направлена на то, чтобы упростить аппаратное обеспечение и, в то же время, извлечь как можно больше «скрытого параллелизма» на уровне команд, чем это можно сделать при реализации VLIW и суперскалярных стратегий, используя большую ширину «выдачи» команд и длинные (глубокие) конвейеры. EPIC предоставляет динамические механизмы на уровне аппаратуры так, что компилятор может управлять такими средствами, применяя их выборочно, где это возможно. Столь широкие возможности помогают компилятору использовать правила управления этими механизмами более оптимально, чем это позволяет аппаратура. Особенности EPIC: •большое количество регистров (128 64-разрядных регистров общего назначения); •использование простых инструкций, сгруппированных по три, одинаковой длины, образующих длинные командные слова LIW (longinstructionwords); •переупорядочиванием и оптимизацией команд, так же как и во VLIW, занимается компилятор, а не процессор; •команды из разных ветвей узлового ветвления снабжаются предикатными полями (полями условий) и запускаются параллельно; •выборка данных по предположению (выборка данных до того, как они потребуются, т. е. заранее); •масштабируемость архитектуры до большого количества функциональных устройств. EPIC-технология с явным заимствованием лучших идей из CISC и RISC архитектур использована в 64-разрядной интеловской архитектуре (IA-64) 52. SIMD-архитектура. Способы её реализации. Параллелизм циклов и итераций тесно связан с понятием множественности потоков данных и реализуется векторной обработкой. В классификации компьютерных архитектур М.Флина выделена специальная группа однопроцессорных систем с параллельной обработкой потоков данных — SIMD (SingleInstructionMultipleDate, один поток команд — множество потоков данных). Возможны два способа построения компьютеров этого класса. Это матричная структура и векторно-конвейерная обработка. Суть матричной структуры заключается в том, что имеется множество процессорных элементов, исполняющих одну и туже команду над различными элементами вектора, объединенных коммутатором. Основная проблема заключается в программировании обмена данными между процессорными элементами через коммутатор. В отличие от матричной, векторно-конвейерная структура компьютера содержит конвейер операций, на котором обрабатываются параллельно элементы векторов и полученные результаты последовательно записываются в единую память. При этом отпадает необходимость в коммутаторе процессорных элементов, служащим камнем преткновения в матричных компьютерах. Общим для всех векторных суперкомпьютеров является наличие в системе команд векторных операций, допускающих работу с векторами определенной длины, допустим, 64 элемента по 8 байт. В таких компьютерах операции с векторами обычно выполняются над векторными регистрами. Еще одним примером SIMD архитектуры является технология MMX, которая существенно улучшила архитектуру микропроцессоров фирмы Intel. Она разработана для ускорения выполнения мультимедийных и коммуникационных программ. В ММХ используются 4 новых типа данных и 57 новых инструкций. Команды ММХ выполняют одну и ту же функцию с различными частями данных, например, 8 байт графических данных передаются в процессор как одно упакованное 64-х разрядное число и обрабатываются одной командой. ММХкоманды используют восемь 64-разрядных регистров, «физически» размещенных в мантиссах регистров с плавающей запятой, и используются в том же режиме процессора, что и команды с плавающей запятой. Все программное обеспечение, созданное для ранее выпущенных процессоров, без всяких изменений может выполняться на процессорах с технологией ММХ. 53. Многоядерные структуры процессора и многопотоковая обработка команд. Корпорация Intel, лидер в разработке микропроцессоров с х86 архитектурой, ежегодно на протяжении долгого времени увеличивала производительность своих процессоров преимущественно за счет увеличения тактовой частоты и использования гиперконвейерной технологии выполнения команд, что в свою очередь значительно увеличивало энергопотребление и, соответственно, количество выделяемой процессором тепловой энергии. Это привело к тому, что компания уперлась в энергетический предел, ограничивающий возможности наращивания производительности процессорных кристаллов традиционными способами. Перед компанией Intel остро встала проблема разрешения противоречия между производительностью процессора и энергопотреблением. Использование многоядерных структур процессора является одним из путей решения этой проблемы. Совмещение в одном процессоре двух вычислительных ядер позволяет удерживать рассеиваемую им мощность в допустимых пределах за счет сравнительно незначительного понижения тактовой частоты ядер: при снижении рабочей частоты на 20 % производительность ядра падает примерно на 13 %, а энергопотребление – на 50 %. При этом двухъядерный процессор все равно существенно выигрывает в производительности (при тех же условиях до 70 %) за счет увеличения количества команд, выполняемых в процессоре за один такт, но для этого необходимо на программном уровне обеспечить загрузку обоих ядер, для чего требуется соответствующая оптимизация программного кода. Первыми стали использовать двухъядерные структуры разработчики RISCпроцессоров: •компания IBM ( процессоры Power 4, 5, Power PC G5); •Sun Microsystems (процессор Ultra Spare IV). Многопотоковая обработка команд на одном процессоре (ядре) основывается на том, что в каждый момент времени только часть ресурсов процессора (ядра) используется при выполнении программного кода. Неиспользуемые ресурсы также можно загрузить работой, например, задействовать для параллельного выполнения еще одного приложения. В этом случае операционная система (ОС) и приложения «видят» именно два логических процессора (ядра) и могут распределять работу между ними, как и в случае полноценной двухпроцессорной системы Для того, чтобы использовать технологии многопоточности, необходимы эффективные компиляторы, которые разработаны и поставляются вместе с микропроцессорами. 54. Технические и эксплуатационные характеристики ЭВМ. Производительность компьютера Этот показатель определяется архитектурой процессора, иерархией внутренней и внешней памяти, пропускной способностью системного интерфейса, системой прерывания, набором периферийных устройств в конкретной конфигурации, совершенством ОС и т. д. Основные единицы оценки производительности: • абсолютная, определяемая количеством элементарных работ, выполняемых в единицу времени; • относительная, определяемая для оцениваемой ЭВМ относительно базовой в виде индекса производительности. Для каждого вида производительности применяются следующие традиционные методы их определения. Пиковая производительность (быстродействие) определяется средним числом команд типа «регистр-регистр», выполняемых в одну секунду без учета их статистического веса в выбранном классе задач. Номинальная производительность (быстродействие) определяется средним числом команд, выполняемых подсистемой «процессор-память» с учетом их статистического веса в выбранном классе задач. Она рассчитывается, как правило, по формулам и специальным методикам, предложенным для процессоров определенных архитектур, и измеряется с помощью разработанных для них измерительных программ, реализующих соответствующую эталонную нагрузку. Для данных типов производительностей используются следующие единицы измерения: • MIPS (Mega Instruction Per Second) – миллионкомандвсекунду; • MFLOPS (MegaFloatingOperationsPerSecond) – миллион операций над числами с плавающей запятой в секунду; • GFLOPS (GigaFloatingOperationsPerSecond) – миллиард операций над числами с плавающей запятой в секунду и т. д. Системная производительность измеряется с помощью синтезированных типовых (тестовых) оценочных программ, реализованных на унифицированных языках высокого уровня. Унифицированные тестовые программы используют типичные алгоритмические действия, характерные для реальных применений, и штатные компиляторы ЭВМ. Они рассчитаны на использование базовых технических средств и позволяют измерять производительность для расширенных конфигураций технических средств. Результаты оценки системной производительности ЭВМ конкретной архитектуры приводятся относительно базового образца, в качестве которого используются ЭВМ, являющиеся промышленными стандартами систем ЭВМ различной архитектуры. Результаты оформляются в виде сравнительных таблиц, двумерных графиков и трехмерных изображений. Эксплуатационная производительность оценивается на основании использования данных о реальной рабочей нагрузке и функционировании ЭВМ при выполнении типовых производственных нагрузок в основных областях применения. 55. Энергоэффективность процессора. Энергоэффективностью процессора отношение производительности к энергопотреблению. Разработчики процессоров предложили оценивать производительность (Р) как произведение тактовой (рабочей) частоты процессора (f) на величину k, определяющую количество инструкций, исполняемых процессором за один такт: P=f·k Получается, что увеличить производительность можно, поднимая частоту и/или увеличивая количество инструкций, выполняемых за один такт. Первый подход ведет к увеличению энергопотребления, а второй требует использования определенной микроархитектуры процессора (многоядерной), в которой заложены различные технологии, направленные на повышение количества инструкций, выполняемых процессором за один такт. Что касается энергопотребления (W): W = fU2Cd f-тактовая частота, U- напряжение, Cd-динамическая ёмкость (зависит от количества транзисторов в кристалле и их активности во время работы процессора) Из приведенных формул вытекает следующее соотношение, определяющее энергоэффективность процессора: P/W = k / (U2 · Cd) Для получения наилучшего показателя разработчикам необходимо работать над оптимизацией микроархитектуры с целью улучшения функциональности исполнительных блоков, при этом не допуская чрезмерного увеличения динамической емкости. Что касается тактовой частоты, то, как показывают приведенные выкладки, на рассматриваемое соотношение она вообще не влияет. Напряжение питания ядра зависит от технологических особенностей изготовления процессора. Любой кристалл процессора состоит из огромного количества транзисторов, исчисляемого миллионами, необходимого для достижения высокой производительности процессора. Уменьшение размеров транзистора ведет к уменьшению напряжения питания, что в свою очередь снижает энергопотребление, к увеличению скорости работы и плотности размещения транзисторов на кристалле. Развитие микроэлектроники идет по направлению уменьшения размеров транзисторов и одновременного увеличения плотности их размещения на кристалле. Для оценки этих параметров была введена специальная характеристика «Норма технологического процесса производства полупроводниковых кристаллов», измеряемая в нанометрах (нм). Спроектированный в Intel по 45-нм нормам транзистор примерно на 20 % опережает своего 65-нм собрата по скоростным характеристикам и оказывается примерно на 30 % экономичнее с точки зрения затрат энергии на переключение. Современные ЭВМ около30 нм. Часто вместо характеристики «энергопотребление» используют характеристику «рассеиваемая тепловая мощность» процессора. Для этого используется специальный термин TDP – это величина, показывающая, на отвод какой тепловой мощности должна быть рассчитана система охлаждения процессора. Как правило, TDP показывает не максимальное теоретическое тепловыделение процессора, а типичное тепловыделение в реальных приложениях. Иногда, при длительных нагрузках на процессор (например, при кодировании видео) температура процессора может превысить заданный TDP. В этих случаях современные процессоры или дают сигнал выключения компьютера или переходят в так называемый режим троттлинга (trottling), когда процессор пропускает часть циклов. 56. Классификация возможностям. ЭВМ по назначению и функциональным Классификация ЭВМ по назначению По назначению ЭВМ можно разделить на три группы: универсальные (общего назначения), проблемно-ориентированные и специализированные. Универсальные ЭВМ предназначены для решения самых различных видов задач: научных, инженерно-технических, экономических, информационных, управленческих и др. В качестве универсальных ЭВМ используются различные типы компьютеров, начиная от супер-ЭВМ и кончая персональными ЭВМ. Причем одни универсальные ЭВМ могут работать в многопользовательском режиме (в вычислительных центрах коллективного пользования, в локальных компьютерных сетях и т. д.), другие – в однопользовательском режиме. Проблемно-ориентированные ЭВМ служат для решения более узкого круга задач, связанных, как правило, с управлением технологическими объектами, автоматизированным проектированием, разведкой и добычей нефти, банковским делом, издательской деятельностью и т. д. Специализированные ЭВМ используются для решения еще более узкого круга задач или реализации строго определенной группы функций. Такая узкая ориентация ЭВМ позволяет четко специализировать их структуру, во многих случаях существенно снизить их сложность и стоимость при сохранении высокой производительности и надежности их работы. Классификация ЭВМ по функциональным возможностям По функциональным возможностям и размерам ЭВМ можно разделить на супер-ЭВМ, большие и микро-ЭВМ. Функциональные возможности ЭВМ обуславливаются основными техникоэксплуатационными характеристиками. Большие ЭВМ за рубежом часто называют мэйнфреймами. Мэйнфрейм – это высокопроизводительная вычислительная система с большим объемом оперативной и внешней памяти, поддерживающая многопользовательский и многозадачный режимы работы. Супер-ЭВМ – мощные, высокоскоростные вычислительные машины с производительностью от десятков триллионов (GFLOPS) до нескольких квадриллионов (PFLOPS) операций с плавающей запятой в секунду. Супер-ЭВМ выгодно отличаются от больших универсальных ЭВМ по быстродействию числовой обработки, а от специализированных машин, обладающих высоким быстродействием в сугубо ограниченных областях, возможностью решения широкого класса задач с числовыми расчетами. Микро-ЭВМ по назначению можно разделить на серверы, рабочие станции, персональные компьютеры, встраиваемые и промышленные микро-ЭВМ. 57. Функциональные возможности, пути развития, современные разработки супер ЭВМ и мэйнфреймов. Особенности и характеристики современныхмэйнфреймов 1. Высокая надежность (среднее время наработки на отказ оценивается в 12– 15 лет) – результат почти 60-летнего совершенствования мэйнфреймов. 2. Повышенная устойчивость систем. Мэйнфреймы могут обнаруживать, исправлять и изолировать большинство аппаратных и программных ошибок. 3. Целостность данных. В мэйнфреймах используется память с исправлением ошибок. 4. Рабочая нагрузка мэйнфреймов может составлять 80–95 % от их пиковой производительности. 5. Высокая пропускная способность подсистемы ввода-вывода (канальная архитектура). 6. Масштабирование может быть как вертикальным, так и горизонтальным. Вертикальное масштабирование обеспечивается наращиванием до 12 центральных процессоров в одном компьютере. Горизонтальное – реализуется объединением компьютеров в многомашинный (до 32 машин) кластер, выглядящий с точки зрения пользователя единым компьютером. 7. Доступ к данным. При централизованной обработке информации данные хранятся на одном компьютере, прикладные программы не нуждаются в сборе исходной информации из множества источников, как при распределенной обработке, не требуется дополнительное дисковое пространство для их временного хранения, не возникают сомнения в их актуальности. Все это ведет к повышению стоимости и эффективности обработки. 8. Защита. Встроенные аппаратные и программные средства защиты, такие как криптографические устройства, программные продукты защиты операционных систем, обеспечивают совершенную защиту информации. 9. Непрекращающаяся совместимость – до сих пор в мэйнфреймах используются приложения, написанные в 70-е годы. Историю мэйнфреймов принято отсчитывать с появления в 1964 году универсальной компьютерной системы IBM System/360. За последние десятилетия мэйнфреймам неоднократно предрекали скорую кончину, однако время доказало, что сбить с ног этих «старожилов» не такто просто. Супер-ЭВМ выгодно отличаются от больших универсальных ЭВМ по быстродействию числовой обработки, а от специализированных машин, обладающих высоким быстродействием в сугубо ограниченных областях, возможностью решения широкого класса задач с числовыми расчетами. В настоящее время развитие суперкомпьютеров идет по следующим направлениям: векторно-конвейерные компьютеры, параллельные компьютеры с общей памятью, массивно-параллельные системы с распределенной памятью, кластерные системы. В 2009 г. был преодолен порог производительности суперкомпьютеров в 1 PFLOPS (1015 FLOPS). 58. Назначение, классификация, структурная организация серверов. Серверы Назначение: хранение файлов и обеспечение доступа к ним пользователей (клиентов), маршрутизация потоков данных, управление печатью сетевого принтера, обработка писем электронной почты, рассылка факсов и т. д. Серверами также называются программы, выполняющие эти функции. Ниже под термином «сервер» будет пониматься в первую очередь аппаратное решение. По функциональному назначению серверы можно подразделить на файлсерверы, серверы приложений (чаще всего используются для баз данных и поддержки документооборота), FTP-серверы (для удаленного доступа к данным через Internet), серверы внешних устройств (печати, сканирования, факсимильной связи) и Web-серверы. Рис. Классификация серверов по функциональному назначению По функциональным возможностям (мощности) серверы разделяют на серверы начального, среднего и корпоративного уровней. На каждом уровне используются свои способы организации серверов. Для небольшой сети функции сервера могут быть возложены на мощный настольный персональный компьютер. Для среднего уровня (50–200 клиентов и малых серверов) могут быть использованы мощные рабочие станции, а для корпоративного (200 и более) – мэйнфреймы. Кроме того, для каждого уровня иерархии разрабатываются и применяются компьютеры со специальной серверной организацией. В серверах начального уровня используются до 8 ядер, среднего уровня – до 16 ядер, корпоративного уровня – до 128 ядер. Приведенные классификации весьма условны, потому что в рамках любой серии серверов постоянно появляются модели большей мощности благодаря наращиванию ресурсов и модернизации конфигурации, причем различия внутри одной линейки компьютеров могут быть существенны. Основными требованиями при проектировании серверов являются: • большая мощность для обеспечения нормальной работы всех запускаемых приложений; • масштабируемость, необходимая при увеличении компьютерной сети предприятия или круга задач, решаемых сервером; • отказоустойчивость для обеспечения надежной работы всех выполняемых программ и сервисов; • удобный доступ к его компонентам с возможностью оперативной или даже «горячей» (автоматической) замены, что очень важно в случае необходимости бесперебойной работы системы. По конструктивному исполнению серверы могут быть башенными, стоечными и блейд-серверами («лезвиями»). 59. Классификация, компьютеров. структурная организация персональных Персональные компьютеры (ПК) – это однопользовательские микро-ЭВМ, удовлетворяющие требованиям общедоступности и универсальности применения. Для удовлетворения этим требованиям персональный компьютер должен иметь следующие характеристики: • невысокую стоимость, находящуюся в пределах доступности для индивидуального покупателя; • простоту использования; • возможность индивидуального взаимодействия пользователя с компьютером без посредников и ограничений; • высокие возможности по переработке, хранению и выдаче информации; • гибкость архитектуры, обеспечивающую ее адаптивность к разнообразным применениям в сфере управления, науки, образования, в быту; • высокую надежность, простоту ремонта и эксплуатации; • «дружественность» операционной системы; • наличие программного обеспечения, охватывающего практически все сферы человеческой деятельности. По функциональным возможностям и цене персональные компьютеры разделяются на бюджетные, среднего класса, бизнес ПК. По назначению ПК можно классифицировать на: бытовые, общего назначения, профессиональные и игровые. Бытовые ПК предназначены для массового потребителя, поэтому они должны быть достаточно дешевыми, надежными и иметь, как правило, простейшую базовую конфигурацию. Бытовые ПК используются для обучения, развлечений (видеоигры), управления бытовой техникой и т. д. Бытовой ПК способствовал взрывообразному росту интереса к Интернету, позволив тем самым развить наше представление о мире и сделать его более системным и детальным. Персональные компьютеры общего назначения применяются для решения различных задач научно-технического и экономического характера, а так же для обучения. Они размещаются на рабочих местах пользователей: на предприятиях, в учреждениях, магазинах, на складах, в вузах, офисах и т. д. Машины этого класса обладают достаточно большой емкостью оперативной памяти. Интерфейсы позволяют подключать большое количество периферийных устройств и средства для работы в составе вычислительных сетей. Минимизированы требования к средствам воспроизведения графики, а к средствам для работы со звуковыми данными требования вообще не предъявляются. ПК общего назначения используются прежде всего потребителяминепрофессионалами. Поэтому они снабжаются развитым программным обеспечением. Этот класс ПК получил наибольшее распространение на мировом рынке. Профессиональные ПК используются в научной сфере, для решения сложных информационных и производственных задач, где требуется высокое быстродействие, эффективная передача больших массивов информации, достаточно большая емкость оперативной памяти. Потребителями ПК этого класса, как правило, являются профессионалы-программисты, поэтому программное обеспечение должно быть достаточно богатым, гибким, включать различные программные инструментальные средства. По своим функциональным возможностям профессиональные ПК не только приближаются, но и вполне могут конкурировать с рабочими станциями начального уровня. Игровые ПК предназначены для компьютерных игр. Основными отличиями игрового ПК являются: производительный процессор, мощная видеокарта, повышенные требования к средствам воспроизведения звука, что обеспечивает достаточно комфортные условия для игры в современные ресурсоемкие компьютерные игры. Благодаря игровым ПК игры стали настоящим искусством. По способу использования ПК можно разделить на два основных класса: стационарные (настольные) и переносные (мобильные) ПК (см. рис. 1.9). В классе настольных ПК (desktop) можно выделить компактные и экологичные десктопы и неттопы (nettop). В последнее время в корпоративном мире принято считать, что, чем меньше размер компьютера, тем лучше. Рис. Классификация персональных компьютеров по способу использования Неттопы – это ориентированные на работу в Интернете настольные ПК на базе процессоров IntelAtom, представляют собой простые в использовании и компактные устройства, имеющие оптимальную производительность для использования всех технологий Интернета. Они отличаются надежностью и гибкими возможностями беспроводной связи. Эти устройства предназначены для обучения, просмотра видео и фотографий, общения в социальных сетях, Интернет-телефонии, работы с электронной почтой, обмена сообщениями, просмотра сайтов и решения других задач. Тонкий клиент (thinclient) в компьютерных технологиях – это бездисковый компьютер-клиент в сетях с клиент-серверной или терминальной архитектурой, который переносит все или большую часть задач по обработки информации на сервер. Тонкий клиент в большинстве случаев обладает минимальной аппаратной конфигурацией. Требования к переносным компьютерам сильно отличаются от требований к настольным ПК. Мобильные ПК должны иметь: • миниатюрные внутренние компоненты и периферийные устройства; • автономное электропитание; • низкое энергопотребление; • малые габариты и вес. Переносные ПК по своим конструктивным особенностям можно разделить на: ПК-блокноты (ноутбуки), планшетные ПК, ультра-моби-льные ПК и карманные устройства. Существует термин лэптоп (laptop – наколенный), который применяется как к ноутбукам, так и к планшетным ПК. К ноутбукам обычно относят лэптопы, выполненные в раскладном форм-факторе. ПК-блокноты (ноутбуки) Карманные устройства с диагональю экрана менее 7' Ультра-мобильные ПК (Ultra-Mobile PC, UMPC) – нечто среднее между планшетными и карманными ПК (с диагональю экрана неболее 7') 60. станций. Функциональные возможности, назначение, платформы рабочих Рабочая станция (Workstation), по определению экспертов IDC (InternationalDataCorporation), – это однопользовательская система с мощным одним или несколькими процессорами и многозадачной ОС, имеющая развитую графику с высоким разрешением, большую дисковую и оперативную память и встроенные сетевые средства. Изначально рабочие станции (WS) ориентируются на профессиональных пользователей. Этот вид ЭВМ появился на компьютерном рынке почти одновременно с персональными компьютерами (ПК) и в целом опережает их по своим вычислительным возможностям. В отличие от ПК, ориентированных на самый широкий круг пользователей, рабочие станции предназначены для корпоративного сектора рынка. Ориентация на корпоративное использование и на профессионального пользователя позволяет во многих случаях применять более совершенные и дорогостоящие аппаратные средства. Рабочие станции, используя те же процессоры и практически не отличаясь от ПК по внешнему виду, обладают рядом специфических характеристик, не свойственных ПК, таких, как поддержка профессиональной двух- и трехмерной графики и многодисковых конфигураций, большой объем и быстродействие жесткого диска, использование двух процессоров (в старших моделях), применение памяти с коррекцией ошибок. Благодаря этому у них выше производительность, надежность и больше графических возможностей, чем у ПК. Современная рабочая станция – это не просто большая вычислительная мощность. Это тщательно сбалансированные возможности всех подсистем машины, чтобы ни одна из них не стала «бутылочным горлышком», сводя на нет преимущества других. Кроме того, каждая WS, как правило, предназначена для решения определенного класса задач, поэтому в ней используется наиболее эффективное для этого класса аппаратное и программное оснащение. Традиционными областями применений рабочих станций является работа с компьютерной графикой (трехмерная анимация, создание трехмерных моделей, визуализация различных процессов), автоматизированное проектирование, издательская деятельность. Также WS применяются для осуществления сложных расчетов в самых различных областях науки, при моделировании различных процессов. В этом качестве WS вытеснили с рынка дорогостоящие мини-ЭВМ, которые как класс компьютеров прекратили свое существование. Одной из последних тенденций является удешевление рабочих станций начального уровня при довольно высоком уровне производительности, что позволяет говорить о появлении рынка компьютеров промежуточного уровня между ПК и рабочими станциями, являющихся компромиссом между ценой и производительностью. Еще одной тенденцией, которую стоит отметить, является появление мобильных рабочих станций. 61. ТИПЫ ДАННЫХ ИНТЕЛОВСКИХ ПРОЦЕССОРОВ Основными типами данных в компьютерах интеловской архитектуры являются: байт, слово, двойное слово, квадрослово и 128-разрядное слово (рис. 2.2). Каждый из представленных на рис. 2.2 типов данных может начинаться с любого адреса: это означает, что слово не обязано начинаться с чётного адреса; двойное слово – с адреса, кратного 4 и т.д. Таким образом достигается максимальная гибкость структур данных и эффективность использования памяти. На базе основных типов данных строятся все остальные типы, распознаваемые командами процессора. Целочисленные данные Четыре формата данных (байт, слово, двойное слово, учетверенное слово) с фиксированной точкой могут быть как со знаком, так и без знака. Под знак отводится старший бит формата данных. Представление таких данных и выполнение операций в арифметико-логическом устройстве (ALU) производится в дополнительном коде. 7 0 Байт байт Адрес N 7 0 15 старший младший байт байт Адрес N+1 Адрес N 31 0 15 старшее слово Слово Двойное слово младшее слово Адрес N+3 Адрес N+2 Адрес N+1 Адрес N 63 старшее двойное слово Адрес N+3 127 0 31 Квадромладшее двойное слово слово Адрес N+2 Адрес N+1 Адрес N 63 старшее квадро слово Адрес N+15 0 младшее квадро слово Адрес N+8 Адрес N+7 Адрес N 128разрядное слово Рис. 2.2. Основные типы данных Данные в формате с плавающей точкой х87 Формат включает три поля: Знак (S), Порядок и Мантисса (рис. 2.3). Поле мантиссы содержит значащие биты числа, а поле порядка содержит степень 2 и определяет масштабирующий множитель для мантиссы. Форматы данных поддерживаются блоком обработки чисел с плавающей точкой (FPU). 31 22 S Порядок 8 бит Мантисса 63 51 0 S Порядок 11 бит Мантисса 79 S Порядок 15 бит Одинарная точность 0 63 Мантисса Двойная точность 0 Расширенная (увеличенная) точность Рис. 2.3. Форматы данных с плавающей точкой Двоично-десятичные данные (BCD) На рис. 2.4 приведены форматы двоично-десятичных данных. 7 3 0 Цифра 7 Цифра 79 72 71 Игнорируется9 0 Цифра 0 Цифры Неупакованные BCD – одна цифра Упакованные BCD – две цифры 80-разрядное упакованное BСD в блоке FPU Рис. 2.4. Форматы двоично-десятичных данных Данные типа строка Строка представляет собой непрерывную последовательность бит, байт, слов или двойных слов (рис. 2.5). Строка бит может быть длиной до 1 Гбита, а длина остальных строк может составлять от 1 байта до 4 Гбайтов. Поддерживается АLU. A+N 7 0 N ... A+2N+1 A+2N 15 0 N A+4N+3 31 N А+3 А+2 А+1 А 7 07 07 07 0 3 2 1 0 А+3 115 1 ... А+3 31 A+4N 0 ... А+2 А+1 0 15 0 А А+1 А А+2 0 0 0 А+2 А+1 А А-1 7 07 07 07 0 Рис. 2.5. Данные типа строка Символьные данные Строка байт Строка слов Строка двойных слов Строка бит Поддерживаются строки символов в коде ASCII и арифметические операции (сложение, умножение) над ними (рис. 2.6). Поддержка осуществляется блоком АLU. 7 +N Символ N 0 7 +1 Символ 1 … ASCII 07 0 Символ 0 ASCII 0 ASCII ASCII Рис. 2.6. Символьные данные Данные типа указатель Указатель содержит величину, которая определяет адрес фрагмента данных. Поддерживается два типа указателей, приведенных на рис. 2.7. 47 +5 +4 +3 +2 +1 селектор 16 р. смещение 32 р. 3 1 +3 +2 +1 0 0 0 Длинный (дальний) указатель Короткий (ближний) указатель 0 смещение 32 р. Рис. 2.7. Данные типа указатель Данные ММХ-технологии Целочисленные данные могут быть как со знаком, так и без знака (рис. 2.8). 63 47 31 15 0 Упакованные 8 байт Данные 3 Данные 2 Данные 1 Данные 0 Данные 1 Данные 0 Данные Рис. 2.8. Данные ММХ-технологии Данные SSE-расширения Упакованные 4 слова Упакованные 2 двойных слова 64-разрядное слово На рис. 2.9 приведен 128-разрядный формат упакованных данных с плавающей точкой одинарной точности. 127 95 Данные 3 0 Упакованные 4 числа с плавающей Данные 0 запятой одинарной точности 63 Данные 2 31 Данные 1 Рис. 2.9. Данные SSE-расширения Данные расширения SSE2 На рис. 2.10 приведен 128-разрядный формат упакованных данных с плавающей точкой с двойной точностью. 127 63 Данные 1 Данные 0 0 Упакованные 2 числа с плавающей запятой двойной точности Рис. 2.10. Данные SSE2 расширения с плавающей запятой На рис. 2.11 показаны 4 формата упакованных в 128 бит целочисленных данных, которые могут быть как со знаком, так и без знака. 127 95 63 31 0 Упакованные 16 байт Упакованные 8 слов Данные 3 Данные 2 Данные 1 Данные 0 Данные 1 Данные 0 Данные Упакованные 4 двойных слова Упакованные 2 64-разрядных слова 128-разрядное слово Рис. 2.11. Целочисленные данные SSE2 расширения Данные в IA-64 В IA-64 непосредственно поддерживается 6 типов данных, в том числе три формата, используемых ранее (одинарная точность, двойная точность, расширенная точность), 82-разрядный формат данных с плавающей точкой (рис. 2.12) и 64разрядные целые – со знаком и без знака. 81 S Порядок 17 р. 63 0 Мантисса Рис. 2.12. Формат данных с плавающей точкой 82-разрядный 62. СТРУКТУРА И ФОРМАТЫ КОМАНД ЭВМ Команда представляет собой код, определяющий операцию и данные, участвующие в операции. По характеру выполняемых операций различают следующие основные группы команд: а) команды арифметических операций над числами с фиксированной и плавающей точками; б) команды десятичной арифметики; в) команды логических операций и сдвигов; г) команды передачи кодов; д) команды операций ввода/вывода; е) команды передачи управления; ж) команды векторной обработки; з) команды задания режима работы машины и др. Команда в общем случае состоит из операционной и адресной частей (рис. 2.14, а). В свою очередь, эти части, что особенно характерно для адресной части, могут состоять из нескольких полей. Операционная часть содержит код операции (КОП), который задает вид операции (сложение, умножение и др.). Адресная часть содержит информацию об адресах операндов и результате операции. Структура команды определяется составом, назначением и расположением полей в команде. Форматом команды называют ее структуру с разметкой номеров разрядов (бит), определяющих границы отдельных полей команды, или с указанием числа бит в определенных полях. Важной и сложной проблемой при проектировании ЭВМ является выбор структуры и форматов команды, т.е. ее длины, назначения и размерности отдельных ее полей. Естественно стремление разместить в команде в возможно более полной форме информацию о предписываемой командой операции. Однако в условиях, когда в современных ЭВМ значительно возросло число выполняемых различных операций и соответственно команд (в системе команд х86 более 500 команд) и значительно увеличилась емкость адресуемой основной памяти (4 Гбайт, 6 Гбайт), это приводит к недопустимо большой длине формата команды. Действительно, число двоичных разрядов, отводимых под код операции, должно быть таким, чтобы можно было представить все выполняемые машинные операции. Если ЭВМ выполняет М различных операций, то число разрядов в коде операции nкоп log2 М; например, при М = 500 nкоп = 9. Если основная память содержит S адресуемых ячеек (байт), то для явного представления только одного адреса необходимо в команде иметь адресное поле для одного операнда с числом разрядов nА log2 S; например, при S = 4 Гбайт nА = 32. Отмечавшиеся ранее, характерные для процесса развития ЭВМ расширение системы (наборы) команд и увеличение емкости основной памяти, а особенно создание микроЭВМ с коротким словом, потребовали разработки методов сокращения длины команды. При решении этой проблемы существенно видоизменилась структура команды, получили развитие различные способы адресации информации. Проследим изменения классических структур команд. Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна, как это показано на рис. 2.14, б, содержать следующую информацию: А1, А2 – адреса операндов, А3 – адрес результата, А4 – адрес следующей команды (принудительная адресация команд). Такая структура приводит к большой длине команды (например, при М = 500, S = 4 Гб длина команды – 137 бит) и неприемлема для прямой адресации операндов основной памяти. В компьютерах с RISC-архитектурой четырехадресные команды используются для адресации операндов, хранящихся в регистровой памяти процессора. Можно установить, что после выполнения данной команды, расположенной по адресу К (и занимающей L ячеек), выполняется команда из (К + L)-й ячейки. Такой порядок выборки команды называется естественным. Он нарушается только специальными командами передачи управления. В таком случае отпадает необходимость указывать в команде в явном виде адрес следующей команды. В трехадресной команде (рис. 2.14, в) первый и второй адреса указывают ячейки памяти, в которых расположены операнды, а третий определяет ячейку, в которую помещается результат операции. Можно условиться, что результат операции всегда помещается на место одного из операндов, например первого. Получим двухадресную команду (рис. 2.14, г), т.е. для результата используется подразумеваемый адрес. В одноадресной команде (рис. 2.14, д) подразумеваемые адреса имеют уже и результат операции, и один из операндов. Один из операндов указывается адресом в команде, в качестве второго используется содержимое регистра процессора, называемого в этом случае регистром результата, или аккумулятором. Результат операции записывается в тот же регистр. Наконец, в некоторых случаях возможно использование безадресных команд (рис. 2.14, е), когда подразумеваются адреса обоих операндов и результата операции, например при работе со стековой памятью. а Код операции Операционная часть б в г д Адресная часть КОП А1 А2 А3 КОП А1 А2 А3 КОП А1 А2 А4 е КОП А1 Рис. 2.14. Структуры а – обобщенная; б – четырехадресная; г – двухадресная; д – одноадресная; е – безадресная КОП в – команд: трехадресная; 63. СПОСОБЫ АДРЕСАЦИИ ИНФОРМАЦИИ В ЭВМ Следует различать понятия адресный код в команде АR и исполнительный (физический адрес) адрес АИ. Адресный код — это информация об адресе операнда, содержащаяся в команде. Исполнительный адрес — это номер ячейки памяти, к которой производится фактическое обращение. Таким образом, способ адресации можно определить как способ формирования исполнительного адреса операнда АИ.по адресному коду команды АК. В системах команд современных ЭВМ часто предусматривается возможность использования нескольких способов адресации операндов для одной и той же операции. Для указания способа адресации в некоторых системах команд выделяется специальное поле в команде — поле «метод» (указатель адресации УА), рис.2.3, а. В этом случае любая операция может выполняться с любым способом адресации, что значительно упрощает программирование. КОП УА А а) КОП А б) Рис.2.3. Общая структура команды: а) – с указателем метода адресации; б) – без указателя метода адресации Классификация способов адресации по наличию адресной инф-ции в команде. явная адресация неявная адресация. При явной адресации операнда в команде есть поле адреса этого операнда, в котором задается адресный код АК. Большинство методов адресации являются явными. При неявной адресации адресное поле в команде отсутствует, адрес операнда подразумевается кодом операции. Классификация способов адресации по кратности обращения в память. Широко используются следующие методы адресации операнда с различной кратностью обращения (r) в память: 1. Непосредственная (r = 0) 2. Прямая (r = 1) 3. Косвенная (r 2) Непосредственная адресация операнда. Обращение к регистровой памяти (РП) или ОП не производится (R = 0). Таким образом уменьшается время выполнения операции, сокращается объем памяти. Прямая адресация операндов. При этом способе (рис.2.5) адресации обращение за операндом в РП или ОП производится по адресному коду в поле команды, т.е. исполнительный адрес операнда совпадает с адресным кодом команды (АИСП. = АК). Обеспечивая простоту программирования, этот метод имеет существенные недостатки, так как для адресации к ячейкам памяти большой емкости требуется «длинное» адресное поле в команде. nКОП РК КОП nАК АК nКОП КОП mРП nАК АК mОП РП . . . а) АИ РП Операнд ОП m РП . . . б) МРП АИ ОП Операнд . . МОП Рис.2.5. Схема прямой адресации: а) – к регистровой памяти; б) – к основной памяти Косвенная адресация операндов. Адресный код команды указывает адрес ячейки памяти, в которой находится не сам операнд, а лишь адрес операнда, называемый указателем операнда. Адресация к операнду через цепочку указателей (косвенных адресов) называется косвенной. Адрес указателя - остается неизменным, а косвенный адрес может изменяться в процессе выполнения программы. Это обеспечив переадресацию данных, т.е. упрощает обработку массивов и списковых структур данных, упрощает передачу параметров подпрограммам, но не обеспеч перемещаемость программ в памяти. (рис. 2.6 а) 64. ПРИНЦИПЫ ОРГАНИЗАЦИИ СИСТЕМЫ ПРЕРЫВАНИЯ ПРОГРАММ Для оценки эффективности систем прерывания могут быть использованы следующие характеристики.1. Общее число запросов прерывания (входов в систему прерывания). 2. Время реакции — время между появлением запроса прерывания и моментом прерывания текущей программы. Для одного и того же запроса задержки в исполнении прерывающей программы зависят от того, сколько программ со старшим приоритетом ждут обслуживания, поэтому время реакции определяют для запроса с наивысшим приоритетом (tP). Время реакции зависит от того, в какой момент допустимо прерывание. Большей частью прерывание допускается после окончания текущей команды. В этом случае время реакции определяется в основном длительностью выполнения команды Это время реакции может оказаться недопустимо большим для ЭВМ, предназначенных для работы в реальном масштабе времени. В таких машинах часто допускается прерывание после любого такта выполнения команды (микрокоманды). Однако при этом возрастает количество информации, подлежащей запоминанию и восстановлению при переключении программ, так как в этом случае необходимо сохранять также и состояние счетчика тактов, регистра кода операции и некоторых других узлов. Такая организация прерывания возможна только в машинах с быстродействующей сверхоперативной памятью. Рис.3 .15. Упро щенн ая време нная диагр амма проце сса прер ыван ия Имеются ситуации, в которых желательно немедленное прерывание. Если аппаратура контроля обнаружила ошибку, то целесообразно сразу же прервать операцию, пока ошибка не оказала влияние на следующие такты работы программы. 3. Затраты времени на переключение программ (издержки прерывания) равны суммарному расходу времени на запоминание и восстановление состояния программы tизд= t3 + tв. 4. Глубина прерывания – максимальное число программ, которые могут прерывать друг друга. Если после перехода к прерывающей программе и вплоть до ее окончания прием запросов прекращается, то говорят, что система имеет глубину прерывания, равную 1. Глубина равна n, если допускается последовательное прерывание до n программ. Глубина прерывания обычно совпадает с числом уровней приоритета в системе прерыванияСистема с большим значением глубины прерывания обеспечивает более быструю реакцию на срочные запросы.Если запрос окажется не обслуженным к моменту прихода нового запроса от того же источника, то возникает так называемое насыщение системы прерывания.В этом случае предыдущий запрос от данного источника будет машинально утерян, что недопустимо. 65.Регистровые структуры центрального процессора IA-32. 80386 имеет 32 программно-доступных регистра. Подразделить их можно на следующие категории: 1. регистры общего назначения; 2. регистры сегментации; 3. регистр флагов; 4. регистры управления; 5. регистры системного адреса; 6. регистр тестов; 7. регистр отладки. Эти регистры являются также набором регистров процессоров Intel 8086 и Intel 80286, поэтому все 16-и разрядные регистры процессоров более ранних выпусков "покрываются" 32-х разрядными регистрами 80386-го процессора. Регистры базовой архитектуры микропроцессора включают: A)регистры общего адреса и данных Б)указатель команд В)регистр флагов. Данные регистры при включении новой задачи загружаются новым содержимым. Базовая архитектура содержит 6 прямо доступных сегмента, каждый размером до 4 Гбайт. Сегменты указываются значениями селектора, помещенными в регистр сегмента. Другой тип регистров – это регистры управления, системного адреса, отладки и тестов. Они используются для отладки операционных систем. 1. Регистры отладки и тестовые регистры Регистры отладки. Шесть доступных для программиста регистров отладки обеспечивают поддержку (на кристалле) отладки. Регистр отладки CRO-3 классифицирует четыре линейных останова. Другой из них DR6 используется для установки точек останова и регистра статуса отладки DR7, а также отображает текущее состояние точек останова. 2. Регистры общего назначения (РОН) Микропроцессор Intel 80386 имеет 8-м 32-х разрядных регистров общего назначения. Они поддерживают 16, 32-х разрядные адресные операнды, 1, 8, 16, 32, 64 операнды данных и битовые поля от 1 до 32 битов. Они называются: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Младшие 16 разрядов каждого регистра могут использоваться по отдельности, они называются: AX, BX, CX, DX, SI, DI, BP, SP. Также могут индивидуально использоваться младший (0-7) и старший (8-15) байты РОН AX, BX, CX, DX, соответственно их называют: AL, BL, CL, DL и AH, BH, CH, DH. 3. Указатель команд (IP) Регистр указателя команд представляет собой 32-х разрядный регистр, который называют EIP. Он содержит смещение следующей команды, которую нужно выполнить. Смещение всегда определяется относительно сегмента кода. Его младшие 16 бит называются IP и используются при шестнадцатиразрядной адресации. 4. Регистр флагов Регистр флагов является 32-х разрядным и называется EFLAGS. Определенные биты EFLAGS управляют некоторыми операциями и подчеркивают статус 80386. Младшие 16-ть разрядов EFLAGS представляют собой регистр FLAGS, который может использоваться при выполнении операций с 8086. Неопределенные биты являются зарезервированными, т. е. в настоящий момент они не имеют значения, однако могут быть использованы для специальных целей в последующих версиях микропроцессора. Все флаги младшего байта регистра устанавливаются арифметическими или логическими операциями процессора. 5. Сегментные регистры Шесть 16-ти разрядных сегментных регистров содержат базовые адреса сегментов, определяющие сегменты памяти текущей адресации. В защищенном режиме, каждый сегмент может иметь размеры от одного байта до целого линейного и физического пространства машины до 4Гб в режиме реальной адресации, максимальный размер сегмента ограничен на 64Кб. Шесть сегментов, адресуемых в любой данный момент, определяются содержимым регистров CS, SS, DS, ES, FS и GS. Значение в CS указывает на текущий сегмент кода, содержимое SS указывает текущий сегмент стека, а значения в DS, ES, FS, GS на сегменты данных. 6. Регистры дескриптора сегмента Регистры дескриптора сегмента невидимы для программиста. В 80386, регистр дескриптора невидимый для программиста соотнесен с каждым видимым регистром селектора. Каждый из них содержит 32-х битовый базовый адрес сегмента, его границу (предел) и другие необходимые признаки сегмента. Когда адрес сегмента загружается в сегментный регистр, ассоциативный (соотнесенный) регистр дескриптора автоматически модифицируется в соответствии с новой информацией. В защищенном режиме базовый адрес, граница, все признаки модифицируются содержимым регистра дескриптора сегмента, индексированного селектором. Каждый раз, когда происходит ссылка на ячейку памяти, регистр дескриптора сегмента, автоматически вовлекается ссылкой на ячейку памяти. 32-х битовый базовый адрес сегмента становится компонентом вычисления линейного адреса, 32-х битовое значение границы используется для операций контроля границы, а признаки проверяются на соответствие типу ссылки на ячейку памяти, которая запрашивается. 7. Управляющие регистры Три управл. регистра по 32 бита: CR0, CR2 и CR3. Наряду с регистрами системного адреса поддерживают состояние машины и воздействуют на все задачи в системе. 8. Регистры системного адреса Четыре специальных регистра существуют для обращения к таблицам или сегментам, поддерживаемыми 80286/80386 моделью защиты. Данные таблицы или сегменты следующие: GDT (таблица глобального дескриптора), IDT (таблица дескриптора прерывания), LDT (таблица локального дескриптора), TSS (сегмент состояния задачи). Адреса данных таблиц и сегментов помещены в память специальных регистров: регистров системного адреса и регистров системного сегмента. Называются данные регистры соответственно GDTR, IDTR, LDTR, TR.Регистровые структуры центрального процессора х86-64, IA-64. Регистры IA-64 В состав регистровых файлов IA-64 входят: 128 регистров общего назначения GPR (64-разрядных); 128 регистров с плавающей запятой FR (82-разрядных); 128 прикладных регистров (в основном 64-разрядных) AR; 64 одноразрядных регистров предикатов PR; 8 регистров переходов BR(64-разрядных);не менее 4-х регистров идентификатора процесса CPUID; счетчик команд IP; регистр маркера текущего окна CFM стека регистров и др. Регистры CPUID являются 64-разрядными. В CPUID-регистрах 0 и 1 лежит информация о производителе, в регистре 2 находится серийный номер процессора, а в регистре 3 задается тип процессора (семейство, модель, версия архитектуры и т.п.) и число CPUID-регистров. Разряды регистра 4 указывают на поддержку конкретных особенностей IA-64, т.е. тех, которые реализованы в данном процессоре. Прикладные регистры AR0-AR127 - специализированные (в основном 64разрядные) регистры, применяемые в IA-64 и IA-32. AR0-7 называются регистрами ядра; запись в них привилегированна, но они доступны на чтение в любом приложении и используются для передачи приложению сообщений от операционной системы. Среди других прикладных регистров укажем на AR16 (RSC) - регистр конфигурации стека регистров, используемый для управления работой "машиной" стека регистров IA-64 (RSE); AR17 (BSP), в котором находится адрес в памяти, где сохраняется положение GR32 в текущем окне стека; AR40 (FPSR) - регистр состояния для команд с плавающей запятой IA-64; AR44 (ITC) - интервальный таймер; AR64 (PFS) - регистр предыдущего состояния функции, куда автоматически копируются некоторые другие регистры при вызове подпрограмм; AR65 (LC), используемый для организации циклов со счетчиком, и, наконец, 6-разрядный регистр эпилога AR66 (EC). Ряд AR-регистров является фактически регистрами IA32 (дескриптор сегмента кодов, дескриптор сегмента стека) 64-разрядные регистры GR0-127 применяются не только для целочисленных операций IA-64; GR8-31 в режиме IA-32 используются также под целочисленные регистры и регистры селекторов и дескрипторов сегментов IA-32. GR0-31 называются статическими регистрами (GR0 всегда содержит 0), а GR32-127 - стекируемыми регистрами. Статические регистры "видны" всем программам. Стекируемые регистры становятся доступными в программной единице через окно стека регистров, включающее локальные и выходные регистры, число которых задается командой alloc. 82-разрядные регистры с плавающей запятой FR0-127 также подразделяются на статические (FR0-31, причем всегда FR0=0.0, FR1=1.0) и вращаемые (FR32-127). FR8-31 в режиме IA-32 содержат числа с плавающей запятой и мультимедийные регистры. Вращение регистров является в некотором роде частным случаем переименования регистров, применяемого во многих современных суперскалярных процессоров с внеочередным спекулятивным выполнением команд. В отличие от них, вращение регистров в IA-64 управляется программно. 64-разрядные регистры переходов BR0-7 применяются для указания адреса перехода в соответствующих командах перехода (если адрес перехода не кодируется в команде явно). Регистры предикатов PR0-63 являются одноразрядными; в них помещаются результаты команд сравнения. Обычно эти команды устанавливают сразу два регистра PR в зависимости от условия - соответственно истинность условия и его отрицания. Такая избыточность обеспечивает дополнительную гибкость. Регистры х86-64 В процессорах x86-64 архитектуры (Hammer, Athlon 64, Opteron) существующие в х86 регистры общего назначения (GPR) расширены с 32 до 64 бит (см. рис. 3.7) и к ним добавлены еще 8 новых 64-разрядных регистров (R8 – 15). Также 8 новых регистров (XMM8 – 15) добавлено в блок SSE, что обесп ечивает поддержку SSE-2. В блоке FPU используются существующие в х87 регистры данных (80разрядные). Регистр указателя команд (EIP) также расширен до 64 разрядов. Регистровые расширения - это один из самых больших шагов в развитии архитектуры, пару десятков лет просуществовавшей на восьми регистрах общего назначения. Новый REXпрефикс делает доступными 8 новых регистров общего назначения (R8 R15) и 8 новых регистров SSE (XMM8 XMM15), а также расширения всех РОН до 64 бит. Без префикса REX размер операнда по умолчанию для большинства команд - 32 бит. Это даёт доступ к регистрам EAX, EBX, ECX, EDX, EDI, ESI, EBP и ESP. Исключение составляют две группы команд, которые будут рассмотрены ниже. Чтобы получить доступ к полному 64-битному операнду (RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP) и новым регистрам R8 - R15, команда должна содержать префикс REX. Также префикс REX обеспечивает новую способность регистров, делая доступным младший значащий байт, слово или двойное слово любого регистра общего назначения для операций (см. рис. 2). При этом команда операции над байтами не может одновременно использовать старший байт наследованных 16разрядных регистров (ah, bh, ch, dh) и новый байтовый регистр. Эта возможность предоставляет компилятору единообразный набор 1-, 2-, 4- и 8-байтовых регистров для более удобного и эффективного распределения данных в регистрах. Для кодирования префикса REX использованы коды 40h - 4Fh2. Эти коды трактуются в 32-битном режиме как однобайтные инструкции INC (40h - 47h) и DEC (48h - 4Fh) над 32-разрядными регистрами EAX - ESP. 66. СТРАТЕГИЯ РАЗВИТИЯ ПРОЦЕССОРОВ INTEL Стратегия развития Intel заключается во внедрении новых микроархитектур процессоров, основанных на новых поколениях полупроводниковой производственной технологии. Темпы выпуска инновационных микроархитектур и полупроводниковых технологий основаны на принципе, который корпорация Intel называет моделью «TICK-TOCK» («ТИК-ТАК»). Каждый «TICK» обозначает (табл. 3.1) новый этап развития полупроводниковых технологий (техпроцесс – 65 нм, 45 нм, 32 нм), а каждый «TOCK» – создание новой микроархитектуры (Intel Core, Nehalem, Sandy Bridge). Переход на новый техпроцесс сопровождается выпуском соответствующих семейств процессоров (Penryn, Westmere). Этот цикл, как правило, повторяется каждые 2 года. Новаторская микроархитектура «обкатывается» на текущем производственном процессе, затем переносится на новую производственную технологию. Данная модель развития позволяет осуществлять внедрение единообразной процессорной микроархитектуры во всех сегментах рынка. Стратегия развития процессоров Intel Intel Core Penryn Nehalem NEW NEW NEW Microarchitecture Process Microarchitecture 65 nm 45 nm 45 nm 2006 г. 2007 г. 2008 г. TOCK TICK TOCK Westmere NEW Process 32 nm 2009 г. TICK Sandy Bridge NEW Microarchitecture 32 nm 2010 г. TOCK Стратегия развития архитектуры и полупроводниковой технологии, реализуемая корпорацией Intel, не только позволяет выпускать новые решения в соответствии с запланированными темпами, но и способствует внедрению инновационных решений в отрасли на уровне платформ, расширяя использование преимуществ высокой производительности и энергоэкономичности. 67. ОСОБЕННОСТИ МИКРОАРХИТЕКТУРЫ INTELCORE Микроархитектура Intel Core наследует философию эффективного энергопотребления, впервые реализованную в процессорах Intel Pen-tium M для мобильных ПК. Заимствовав лучшее от ставших основой для настольных и мобильных процессоров Intel микроархитектур Net Burst и Mobile, микроархитектура Intel Core содержит сотни нововведений, но основные из них сводятся к пяти технологическим решениям: 1. Технология Intel Wide Dynamic Execution (широкое динамическое исполнение). 2. Технология Intel Advanced Digital Media Boost (улучшенные цифровые медиа возможности). 3. Технология Intel Advanced Smart Cache (улучшенный интеллектуальный кэш). 4. Технология Intel Smart Memory Access (интеллектуальный доступ к памяти). 5. Технология Intel Intelligent Power Capability (интерактивное подключение подсистем). Рассмотрим подробнее каждую из перечисленных технологий. 68. МИКРОАРХИТЕКТУРА Intel Nehalem Микроархитектура Nehalem является дальнейшим развитием рассмотренной выше микроархитектуры Intel Core. Основные отличительные черты Nehalem Основными отличительными чертами данной микроархитектуры являются следующие: Усовершенствованное по сравнению с Core вычислительное ядро. Многопоточная технология SMT (Simultaneous Multi-Threading), позволяющая исполнять одновременно два вычислительных потока на одном ядре. Три уровня кэш-памяти: L1 кэш размером 64 Кбайта на каждое ядро, L2 кэш размером 256 Кбайт на каждое ядро, общий разделяемый L3 кэш размером 4, 8 и до 24 Мбайт. Интегрированный в процессор контроллер памяти с поддержкой нескольких каналов DDR3 SDRAM. Новая шина QPI с топологией точка – точка для связи процессора с чипсетом и процессоров между собой. Модульная структура. Монолитная конструкция – процессор состоит из одного полупроводникового кристалла. Технологический процесс с нормами производства – не более 45 нм. Использование двух, четырех или восьми ядер. Управление питанием и Turboрежим. Усовершенствования вычислительного ядра Рис. 3.8. Структура ядра процессора микроархитектуры Nehalem В рассматриваемом ядре так называемый предпроцессор содержит следующие блоки: блок выборки команд и преддекодирования; блок предсказания переходов (ветвлений); блок очередей инструкций; декодер инструкций; блок обнаружения циклов в программе. Сначала х86 инструкции выбираются (Fletch) из кэш-памяти команд. Если в потоке команд оказывается команда условного перехода (ветвление программы), то включается механизм предсказания ветвления, который формирует адрес следующей выбираемой команды до того, как будет определено условие выполнения перехода. Основной частью блока предсказания ветвлений является ассоциативная память, называемая буфером адресов ветвлений ВТВ (Branch Target Buffer), в котором хранятся адреса ранее выполненных переходов. Кроме того, ВТВ содержит биты, хранящие предысторию ветвления, которые указывают, выполнялся ли переход при предыдущих выборках данной команды. При поступлении очередной команды условного перехода указанный в ней адрес сравнивается с содержимым ВТВ. Если этот адрес не содержится в ВТВ, т.е. ранее не производились переходы по данному адресу, то предсказывается отсутствие ветвления. В этом случае продолжается выборка и декодирование команд, следующих за командой перехода. При совпадении указанного в команде адреса перехода с каким-либо из адресов, хранящихся в ВТВ, производится анализ предыстории. В процессе анализа определяется чаще всего реализуемое направление ветвления, а также выявляются чередующиеся переходы. Если предсказывается выполнение ветвления, то выбирается и загружается в конвейер команда, размещенная по предсказанному адресу. В дополнение к уже имеющемуся в Intel Core блоку предсказания переходов был добавлен в Nehalem ещё один «предсказатель» второго уровня. Он работает медленнее, чем первый, но зато благодаря более вместительному буферу, накапливающему статистику переходов, обладает лучшей глубиной анализа. Далее, разделенные х86 инструкции (Pre Decode) на простые и сложные организуются в виде очередей (Instruction Queues) на входах четырех декодеров. Декодеры преобразуют х86 команды в микрокоманды, под управлением которых в процессоре выполняются элементарные операции (микрооперации). Как в Intel Core, три декодера используются для обработки простых инструкций, один – для сложных. Каждая простая х86 инструкция преобразуется в 1–2 микрокоманды, а для сложной инструкции из памяти микрокода (u Code ROM) выбирается последовательность микрокоманд (микропрограмма), которая содержит более двух микрокоманд (технология micro-ops fusion). Используя технологию macro fusion, четыре декодера могут обработать одновременно пять х86 команд, преобразуя их в четыре микрокоманды. В Nehalem увеличилось число пар x86 команд, декодируемых в рамках этой технологии «одним махом». Кроме того, технология macro fusion стала работать и в 64-битном режиме, в то время как в процессорах семейства Core 2 она могла активироваться лишь при работе процессора с 32-битным кодом. Следующее усовершенствование, связанное с повышением продуктивности начальной части исполнительного конвейера, коснулось блока обнаружения циклов в программе Loop Stream Detector. Этот блок появился впервые в процессорах с микроархитектурой Core и предназначался для ускорения обработки циклов. Определяя в программе циклы небольшой длины, Loop Stream Detector (LSD) сохранял их в специальном буфере, что давало возможность процессору обходиться без их многократной выборки из кэша и предсказания переходов внутри этих циклов. В процессорах Nehalem блок LSD стал ещё более эффективен благодаря его переносу за стадию декодирования инструкций. Иными словами, теперь в буфере LSD сохраняются циклы в декодированном виде, из-за чего этот блок стал несколько похож на Trace Cache процессоров Pentium 4. Однако Loop Stream Detector в Nehalem – это особенный кэш. Во-первых, он имеет очень небольшой размер, всего 28 микроопераций, во-вторых, в нём сохраняются исключительно циклы. После декодирования производится переименование регистров, переупорядочение (Retirement Unit) и сохранение до момента выполнения 128 микрокоманд в буфере (Reorder Buffer). Это количество микрокоманд на 33 % больше, чем в Intel Core (96 микрокоманд). На следующем этапе планировщик (Scheduler) через станцию резервирования (Reservation Station – RES) вместимостью до 36 инструкций (Intel Core – 32 инструкции) отправляет микрокоманды непосредственно на исполнительные устройства. Также как Core 2, процессоры с микроархитектурой Nehalem способны отправлять на выполнение до шести микроопераций одновременно. В каждом ядре процессора Intel Nehalem используются три универсальных порта (Port0, Port1, Port5) для связи с различными исполнительными устройствами, два порта (Port3, Port4) – для организации записи/загрузки (Store) адреса и данных в память и один (Port2) для организации чтения/выгрузки (Load) данных из памяти. Универсальные порты осуществляют связь с тремя блоками – для обработки целочисленных 64-битных данных (ALU), выполнения сдвигов (Shift) и операций сравнения (LEA); с тремя блоками – для обработки чисел с плавающей точкой (FAdd, FMul, FPShuffes); с тремя 128-битными блоками для обработки потоковых данных (SSE); с одним блоком – для исполнения переходов (Branch); со специальными блоками Divide (деление), Complex Integer (сложные целочисленные операции). В данном процессоре (ядре), как и в любом другом современном процессоре, реализована конвейерная технология обработки команд. Длина каждого из четырех конвейеров составляет 14 ступеней. В микроархитектуре Nehalem Intel продолжила взятый ранее курс на увеличение числа поддерживаемых SIMD инструкций. Пополненный набор команд расширился за счет семи новых инструкций и получил название SSE4.2. В SSE4.2 добавлено пять инструкций, предназначенных для ускорения синтаксического анализа XML-файлов. Также с помощью этих же инструкций возможно увеличение скорости обработки строк и текстов. Ещё две новые инструкции из набора SSE4.2 нацелены на совершенно иные приложения. Первая из них аккумулирует контрольную сумму, а вторая подсчитывает число ненулевых бит в источнике. 69. СЕМЕЙСТВО ПРОЦЕССОРОВ Intel Westmere Основываясь на ошеломляющем успехе 45 нм производственного процесса с диэлектриками high-k и транзисторами с металлическими затворами, корпорация Intel в конце 2009 г. запустила 32 нм производственную технологию, в которой используются диэлектрики high-k и транзисторы с металлическими затворами второго поколения. Эта технология стала основой для новой 32 нм версии микроархитектуры Intel Nehalem. Новые процессоры Intel семейства Westmere стали первыми процессорами, созданными по нормам 32 нм техпроцесса. Эти процессоры известны под кодовыми названиями Clarkdale и Arrandale, предназначены для применения соответственно в настольных компьютерах и ноутбуках и входят в модельные линейки Intel Core i3, i5, i7. Процессоры Intel Westmere представляют собой двухъядерные решения. Кроме того, в их конструкции присутствуют два несущих кристалла (рис. 3.10), один из которых, выпускаемый по 32 нм техпроцессу, включает в себя два вычислительных ядра, разделяемую L3 кэшпамять, контроллер шины QPI. Второй, более крупный кристалл, изготавливаемый по 45 нм технологии, содержит графический процессор GPU, двухканальный контроллер памяти DDR3, контроллер интерфейса PCI Express 2.0 и контроллер шин DMI и FDI (Flexible Display Interface). Взаимодействие между двумя кристаллами происходит по высокоскоростной шине QPI. В табл. 3.3 приведены характеристики процессоров Intel Clarkdale. Характеристики процессоров Intel Clarkdale Характеристики процессора Core i3 Core i3 Core i5 Core i5 Core i5 Core i5 530 540 650 660 661 670 Техпроцесс ядра CPU, нм 32 Техпроцесс ядра GPU, нм 45 Количество ядер CPU/ исполняемых потоков, шт. 2/4 Объем L3 кэш-памяти, Мб 4 Номинальная частота ЦП, ГГц 2.93 3.06 3.2 3.33 3.33 3.46 Частота ЦП с Turbo Boost (максимум), ГГц N/A N/A 3.46 3.6 3.6 3.73 Частота GPU, МГц 733 733 733 733 900 733 Поддержка НТ Поддерживаемая память, частота памяти, Есть Dual Channel DDR3, 1333 МГц Технология Intel vPro Нет Нет Технология Intel VT-x Есть Есть Нет Есть Есть Технология Intel VT-d Нет Нет Есть Есть Нет Есть Технология Intel TXT Нет Нет Есть Есть Нет Есть Набор инструкций AESNI Нет Нет Есть TDP, Вт 73 87 73 Из таблицы следует, что все процессоры поддерживают технологию HyperThreading (HT) или SMT, увеличивающую число вычислительных потоков, и технологию виртуализации VT-x. В большинстве процессоров реализованы новые инструкции из расширения AES-NI для ускорения выполнения алгоритмов шифрования и расшифровки. В этих же процессорах выполняется технология Turbo Boost, которая позволяет разгонять одно из вычислительных ядер до повышенных частот, что ускоряет работу с однопоточными приложениями. 70. ИЕРАРХИЧЕСКАЯ СТРУКТУРА ПАМЯТИ ЭВМ Памятью ЭВМ называется совокупность запоминания, хранения и выдачи информации. устройств, служащих для Основными характеристиками отдельных устройств памяти (ЗУ) являются емкость памяти, быстродействие и стоимость хранения единицы информации (бита). Емкость памяти определяется максимальным количеством данных, которые могут в ней храниться. Емкость измеряется в двоичных единицах (битах), машинных словах, но большей частью в байтах (1 байт = 8 бит). Часто емкость памяти выражают через число К = 1024, например, К бит — килобит, К байт — килобайт, 1024 Кбайт = 1 Мбайт (Мегабайт), 1024 Мбайт = 1 Гбайт (гигабайт), 1024 Гбайт = 1 Тбайт (терабайт). Быстродействие (задержка) памяти определяется временем доступа и длительностью цикла памяти. Время доступа - промежуток времени между выдачей запроса на чтение и моментом поступления запрошенного слова из памяти. Длительность цикла памяти определяется мин. временем между двумя последовательными обращениями к памяти. Требования к увеличению емкости и быстродействия памяти, а также к снижению ее стоимости являются противоречивыми. Чем больше быстродействие, тем технически труднее достигается и дороже обходится увеличение емкости памяти. Стоимость памяти составляет значительную часть общей стоимости ЭВМ. Исходя из этого память ЭВМ организуется в виде иерархической структуры (рис.4.1) запоминающих устройств, обладающих различными быстродействием и емкостью [ 4.1 ]. Чем выше уровень, тем выше быстродействие соответствующей памяти, но меньше её емкость. К верхнему (сверхоперативному) уровню относятся регистры операционных и управляющих блоков процессора, сверхоперативная память, управляющая память, буферная память. На втором уровне находится основная или оперативная память. На последующих уровнях размещается внешняя и архивная память. Регистры Процессор Сверхоперативная память (СОП) Уровни Буферная память Сверхоперативный Оперативная память Оперативный Внешняя память Внешний Архивная память Архивный Рис.4.1. Иерархическая структура памяти Система управления памятью обеспеч обмен информационными блоками между уровнями, причем обычно первое обращение к блоку инф-ции вызывает его перемещение с более низкого медленного уровня на более высокий. Это позволяет при последующих обращениях к данному блоку осущ его выборку с более быстродействующего уровня памяти. Непрерывный рост производительности ЭВМ проявляется, в первую очередь, в повышении скорости работы процессора. Быстродействие ОП также растет, но все время отстает от быстродействия аппаратных средств процессора, в значительной степени потому, что одновременно происходит опережающий рост её емкости, что делает более трудным уменьшение времени цикла работы памяти. Поэтому, быстродействие ОП часто оказывается недостаточным для обеспечения требуемой производительности ЭВМ. Это проявляется в несоответствии пропускных способностей процессора и ОП. Возникающая проблема выравнивания их пропускных способностей решается путем использования сверхоперативных буферных памятей небольшой емкости и повышенного быстродействия, хранящих команды и данные, относящиеся к обрабатываемому участку программы. При обращении к блоку данных, находящемуся на оперативном уровне, его копия пересылается в сверхоперативную буферную память (СБП). Последующие обращения производятся к копии блока данных, находящейся в СБП. Поскольку время выборки из сверхоперативной буферной памяти tСБУ (5 ис) много меньше времени выборки из оперативной памяти tОП, введение в структуру памяти СБП приводит к уменьшению эквивалентного времени обращения tЭ по сравнению с tОП: tЭ = tСБП + tОП , где = (1 — q) и q — вероятность нахождения блока в СБП в момент обращения к нему, т.е. вероятность «попадания». Очевидно, что при высокой вероятности попадания эквивалентное время обращения приближается к времени обращения к СБП. В основе такой организации взаимодействия ОП и СБП лежит принцип локальности обращений, согласно которому при выполнении какой-либо программы (практически для всех классов задач) большая часть обращений в пределах некоторого интервала времени приходится на ограниченную область адресного пространства ОП. Причем обращения к командам и элементам данных этой области производятся многократно. Это позволяет копии наиболее часто используемых участков программ и некоторых данных загружать в СБП и таким образом обеспечить высокую вероятность попадания q. Высокая эффективность применения СБП достигается при q 0,9. Буферная память не является программно доступной: это значит, что она влияет только на производительность ЭВМ, но не должна оказывать влияния на программирование прикладных задач. Поэтому, она получила название кэш — памяти (в переводе с английского — тайник). В структуре одних ЭВМ используется объединенная кэш — память команд и данных, в других ЭВМ раздельные кэш — памяти для команд и для данных. Кэш — память, входящую в состав процессора, называют кэш — памятью первого уровня. В современных компьютерах применяют кэш — память второго уровня, которая находится между процессором и ОП и еще больше повышает производительность ЭВМ. 71. Способы организации КЭШ памяти В функциональном отношении КЭШ-память рассматривается буферное ЗУ, размещённое между основной (оперативной) памятью и процессором. Основное назначение КЭШ-памяти - кратковременное хранение и выдача активной информации процессору, что сокращает число обращений к основной (оперативной) памяти, скорость работы которой меньше чем КЭШ-памяти. В процессе работы отдельные блоки информации копируются из основной памяти в КЭШ-память, и когда процессор обращается за командой или данными, то сначала проверяется их наличие в КЭШ-памяти. Если необходимая информация находится там, то она быстро извлекается. Такой случай обращения называется КЭШпопаданием. Если необходимая информация в КЭШ-памяти отсутствует, то она выбирается из основной памяти и одновременно заносится в КЭШ- память. Такой случай называется КЭШ-промахов. Повышение быстродействия вычислительной системы достигается, когда КЭШпопадания реализуются намного чаще, чем КЭШ-промахи. Высокий процент КЭШпопаданий обеспечивается благодаря тому, что в большинстве случаев программы обращаются к ячейкам памяти, расположенным вблизи от ранее использованных. За единицу информации при обмене принята строка, причём под строкой понимается набор слов, выбираемый из оперативной памяти при одном к ней обращении. Хранимая в оперативной памяти (ОП) информация представляется, таким образом, совокупностью строк с последовательными адресами. В любой момент времени строки в КЭШ-памяти представляют собой копии строк из некоторого их набора в ОП, однако расположены они не обязательно в такой же последовательности, как в ОП. Типовая структура КЭШ-памяти. Включает основные блоки, кот обеспеч её взаим-ие с ОП и централ.процессором. Адресация ОП Основная ОП Блок замены строк Накопитель строк и адресных тегов Блок формирования запросов Блок сравнения адресов Регистр строк Адрес Блок от ЦП обработки адресов Селектордемультиплексор ЦП Слово к ЦП Кэш - память Строки, составленные из информационных слов, и связанных с ними адресные теги хранятся в накопителе, который является основой КЭШ-памяти. Адрес требуемого слова, поступающий от ЦП, вводится в блок обработки адресов (БОА), в котором реализуются принятые в данной КЭШ-памяти принципы использования адресов при организации их сравнения с адресными тегами. Само сравнение производится в блоке сравнения адресов (БСА), который конструктивно совмещается с накопителем, если КЭШ-память строится по схеме ассоциативной памяти. Назначение БСА состоит в выявлении попадания или промаха при обработке запросов от центрального процессора. Если если имеет место КЭШ-попадание (т.е. искомое слово храниться в КЭШ-памяти, о чём свидетельствует совпадение кодов адреса, поступающего от центрального процессора, и одного из адресов некоторого адресного тега ), то соответствующая строка из КЭШ-памяти переписывается в регистр строк. С помощью селектора-демультиплексора из неё выделяется искомое слово, которое и направляется в центральный процессор. В случае промаха с помощью блока формирования запросов (БФЗ) осуществляется инициализация выборки из ОП необходимой строки. Адресация ОП при этом производится в соответствии с информацией, поступившей от центрального процессора. Выбираемая из памяти строка вместе со своим адресным тегом помещается в накопитель и регистр строк, а затем искомое слово передается в центральный процессор. Для высвобождения места в КЭШ-памятис одна из строк удаляется. Определение удаляемой строки производится посредством блока замены строк (БЗС), в котором хранится информация , необходимая для реализации принятой стратегии обновления находящихся в накопителе строк. Способы размещения данных в КЭШ-памяти. Существует четыре способа размещения данных в КЭШ-памяти: прямое распределение полностью ассоциативное распределение частично ассоциативное распределение распределение секторов. Для того, чтобы конкретизировать описание, положим, что КЭШ-память может содержать 128 строк 16 слов в строке 8 р. , а основная память может содержать 128*128=16384 строк. Для адресации основной памяти используется 18 бит. Из них старшие 14 показывают адрес строки, а младшие 4 бит - адрес слова внутри этой строки. При одном обращении к памяти выбирается одна строка. 128 строк КЭШпамяти указываются 7-разрядными адресами. Если процессор намерен получить информацию из некоторой ячейки основной памяти, а копия содержимого этой ячейки уже имеется в КЭШ-памяти, то вместо оригинала считывается копия, время считывания составляет 50нс. Информация в КЭШ-памяти и основной памяти не изменяется. Если копии нет, то производится обращение к основной памяти с временем считывания 500нс. Полученная информация переписывается в процессор и попутно запоминается в КЭШ-памяти. Чтение информации в отсутствие копии отражено во второй строке таблицы. Информация в основной памяти не изменяется. При записи информации в ячейку памяти и наличии копии этой ячейки в КЭШ-памяти оригинал и копия обновляются. Таким образом, КЭШ-память ускоряет считывание команд и данных, которые "недавно" считывались или корректировались, а в остальных случаях выигрыша нет. При исп-нииКЭШ-памяти от 80 до 95% операций чтения выполняются быстро (за 506, а не 500нс). Для записи в КЭШ-памятьсущнескметодов замещения старой инф. Эти методы называются стратегией обновления основной памяти. Если результат обновления строк КЭШ-памяти не возвращается в основную память, то содержимое основной памяти становится неадекватным вычислительному процессу. Чтобы избежать этого, предусмотрены методы обновления основной памяти, которые можно разделить на две большие группы: метод сквозной записи и метод обратной записи. 72. Принципы организации оперативной памяти. Оперативная память удовлетворяет запросы кэш-памяти и устройств ввода/вывода. Она является местом назначения для ввода и источником для вывода. Существуют несколько методов организации оперативной памяти: 1) Метод строк/колонок (Row/column). ОП представляет собой матрицу разделенную на строки и колонки. При обращении к ОП одна часть адреса определяет строку, а другая - колонку матрицы. Ячейка матрицы, оказавшаяся на пересечении выбранных строк и колонок считывается в память или обновляется ее содержимое. 2) Метод статических колонок (Static-column) . При данном методе адресации ОП информация, относящаяся к какой-либо программе, размещается в определенной колонке. Последующее обращение к данной программе происходит в ту же самую колонку. За счет статичности части адреса (ее не надо передавать по адресной шине) доступ к данным осуществляется быстрее. 3) Метод чередования адресов (Interleaved). Впервые стал применяться в 386 моделях АТ компьютерах. Данный метод предполагает считывание (или запись) информации не по одному, а сразу по нескольким адресам: i, i+1, i+2 и т.д. Количество одновременно опрашиваемых адресов, по которым происходит считывание информации, определяет кратность чередования адресов, что соответствует количеству блоков ОП. На практике обычно используется 2-х или 4-х кратное чередование адресов, т.е. ОП делится на 2 или 4 блока. Запись информации в блоки осуществляется независимо друг от друга. Информация по адресу i хранится в первом блоке, по адресу i+1 - во втором блоке и т.д. Считываемая с блоков информация далее переписывается в кэш-память для последующей переработки. 4) Метод страничной организации (Page-mode) . Память адресуется не по байтам, а по границам страниц. Размер страницы обычно равен 1 или 2 Кбайта. Данный метод предполагает наличие в системе кэшпамяти емкостью не менее 128 Кб куда предварительно считываются требуемые страницы ОП для последующей переработки МП или другим устройством. Обновленная информация периодически из кэш-памяти сбрасывается в ОП. Последние два метода системной организации памяти предполагают обязательное наличие в системе сверх быстродействующей кэш-памяти для опережающего (read-ahaed) чтения в нее информации из ОП с последующей обработкой ее микропроцессором, что снижает время простоя последнего и повышает общую производительность системы. Для идентификации переменных и команд используются символьные имена (метки), виртуальные адреса и физические адреса (рис. 4.8). Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере. 73. Методы повышения пропускной способности ОП Существуют следующие методы повышения производительности ОП: увеличения размеров кэш-памяти; многоуровневой организации кэш-памяти; специальные способы организации DRAM; выборка широким словом; расслоение обращений. Непосредственно к ОП относятся последние 3 метода, которые мы и рассмотрим. специальные способы организации DRAM Исторически память развивалась по следующим стандартамSDRAM ->DDRSDRAM ->DDR2 SDRAM ->DDR3SDRAM. Можно рассмотреть все переходы в данных способах организации, но суть можно уловить уже при первом переходе. Обобщенно модуль памяти SDRAM можно представить следующим рисунком. Оно состоит из ядра, буферов, внешней и внутренней шины. Все работает в синхронном режимена одной и той же частоте. Частотаядра– 200 МГц Ядро памяти Частотабуфераввода/ вывода–200 МГц SDRAM-200 Внутренняя шина данных Буферы ввода/вывода Частотавнешнейшиныдан ных–200 МГц Внешняя шина данных Модуль памяти DDR на такой же частоте ядра выглядит как на рисунке ниже. Частотаядра– 200 МГц Частотабуфераввода/ вывода–200 МГц DDR-400 SDRAM Внутренняя Ядро Буферы шина данных памяти ввода/вывода «Эффективная» частотавнешнейшины– 400 МГц Внешняя шина данных Как видно скорость увеличивается в два раза. Это происходит из – за того, что передача данных от микросхем памяти модуля к контроллеру памяти по внешней шине данных осуществляется по обоим полупериодам синхросигнала (восходящему – «фронту», и нисходящему – «срезу»). В этом и заключается суть технологии «DoubleDataRate – DDR», именно поэтому «эффективная» частота памяти DDR-400 составляет 400 МГц, тогда как ее истинная частота, или частота буферов ввода/вывода, составляет 200 МГц.Таким образом, каждый буфер ввода-вывода передает на шину два бита информации за один такт, оставаясь при этом полностью синхронизированным с ядром памяти. Однако, чтобы такой режим работы стал возможным, необходимо, чтобы эти два бита были доступны буферу ввода/вывода на каждом такте работы памяти. Для этого требуется, чтобы каждая команда чтения приводила к передаче из ядра памяти в буфер сразу двух бит по двум независимым линиям передачи внутренней шины данных. Т.е. внутренняя шина данных удваивается. При дальнейших переходах к DDR2,а затем к DDR3, увеличивается тактовая частота буферов и внешней шины данных в два раза, а внутренняя шина данных удваивается. Преимущества такого подхода очевидны. С одной стороны, для достижения равной пиковой пропускной способности можно использовать вдвое меньшую внутреннюю частоту микросхем памяти (200 МГц для DDR-400 и всего 100 МГц для DDR2-400), что позволяет значительно снизить энергопотребление. Но очевидны и недостатки: функционирование буферов ввода/вывода микросхем DDR2 на вдвое большей частоте и использование более сложной схемы преобразования приводит к ощутимому возрастанию задержек (таймингов). выборка широким словом Этот способ основывается на свойстве локальности данных и программ. При выборке широким словом за одно обращение к ОП производится одновременная запись или считывание нескольких команд или слов данных из «широкой» ячейки. Широкое слово заносится в буферную память (кэш-память) или регистр, где оно расформировывается на отдельные команды или слова данных, которые могут последовательно использоваться процессором без дополнительных обращений к ОП. расслоение обращений Другой способ повышения пропускной способности ОП связан с построением памяти, состоящей на физическом уровне из нескольких модулей (банков) с автономными схемами адресации, записи и чтения. При этом на логическом уровне управления памятью организуются последовательные обращения к различным физическим модулям. Обращения к различным модулям могут перекрываться, и таким образом образуется своеобразный конвейер. Эта процедура носит название расслоения памяти. Известно несколько вариантов организации расслоения. за счет расслоения адресов. за счет обращения различных процессоров к различным модулям памяти 74. Методы управления памятью Все методы представлены на рисунке ниже. Так как использование внешней памяти относится вопросу организации виртуальной памяти. Рассмотрим методы без использования внешней памяти. Методы распределения памяти С использованием внешней памяти Без использования внешней памяти Фиксированными разделами Страничное распределение Динамическими разделами Сегментное распределение Перемещаемыми разделами Странично-сегментное распределение Распределение памяти фиксированными разделами заключается в разделение её на несколько разделов (сегментов) фиксированной величины. Само управление памятью в этом случаесравнивает размер программы, поступившей на выполнение, и свободных разделов памяти; выбирает подходящий раздел; осуществляет загрузку программы и настройку адресов. ОС a Раздел 1 Раздел 2 Очередь задач Раздел 3 – свободная память Преимущества б 1) Прост в реализации Недостатки ОС 1) Максимальное количество программ равно количеству разделов Раздел использование 1 Очереди к 2)Неэффективное разделам памяти, т.к. даже если программа Раздел 2 она будет имеет небольшой объём, занимать весь раздел 3 3) Если размер Раздел программы больше, чем раздел, то она не загрузится Распределение памяти динамическими разделами. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объём памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается и на это место может быть загружена другая задача. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков произвольного размера. Управление памятью в этом случае ведет таблицы свободных и занятых областей; анализ запроса; просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения поступившей задачи; загрузка задачи в выделенный ей раздел и корректировка таблиц свободных и занятых областей; корректировка таблиц свободных и занятых областей (после завершения задачи). П6 ОС ОС П1 П2 П3 ОС ОС П1 П1 П2 П2 П3 П3 П6 П4 П5 П5 П5 П5 t0 t1 – занятая область Преимущества 1) Загрузка программы только от размера ОП t2 t3 – свободная область Недостатки зависит 1) Неэффективное памяти, т.к. фрагментация использование присутствует Распределение памяти перемещаемыми разделами.Отличается от предыдущего способа процедурой сжатия, когда все занятые участкиперемещаютсяв сторону старших либо в сторону младших адресов так, чтобы вся свободная память образовывала единую свободную область. Управление такое же как и в предыдущем методе, только еще время от времени нужно копировать содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. ОС ОС П1 a П1 П2 b П3 П2 П3 П4 c П4 d Процедура сжатия a+b+c+d Преимущества Недостатки 1) Загрузка программы зависит 1) Время на процедуру сжатие может только от размера ОП быть очень большим 2) Эффективное использование памяти 75. Организация виртуальной памяти Концепция виртуальной памяти заключается в том, что пользователь пишет программы так, как будто в его распоряжении имеется однородная (одноуровневая) оперативная память большого объёма, но в действительности все данные, используемые программой, хранятся на нескольких разнородных запоминающих устройствах, обычно в ОП и на дисках, и при необходимости частями перемещаются между ними. Все эти действия выполняются автоматически, без участия программиста, т.е. механизм виртуальной памяти является прозрачным по отношению к пользователю. Наиболее распространенными реализациями виртуальной памяти являются страничное, сегментное и странично-сегментное распределение памяти. Страничное распределение. Виртуальное адресное пространство каждого процесса делится на части, называемые виртуальными страницами, одинакового, фиксированного размера. Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами.При загрузке процесса часть его виртуальных страниц помещается в оперативную память, а остальные – на диск. При загрузке операционная система создает для каждого процесса таблицу страниц, в которой устанавливается соответствие между номерами виртуальных и физических страниц для страниц, загруженных в оперативную память, или делается отметка о том, что виртуальная страница выгружена на диск (ВЗУ). Кроме того, в таблице страниц содержится управляющая информация, такая как признак модификации страницы, признак невыгружаемости, признак обращения к странице и другие данные, формируемые и используемые механизмом виртуальной памяти. При активизации очередного процесса в специальный регистр процессора загружается адрес таблицы страниц данного процесса. При каждом обращении к памяти происходит чтение из таблицы страниц информации о виртуальной странице, к которой произошло обращение. Если данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физический. Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит так называемое страничное прерывание. Выполняющийся процесс переводится в состояние ожидания и активизируется другой процесс из очереди готовых. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу и пытается загрузить ее в оперативную память. Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно, если же свободных страниц нет, то решается вопрос, какую страницу следует выгрузить из оперативной памяти. Преимущества Недостатки 1) Может использоваться как метод 1) Временные затраты на обработку без использования внешней памяти. страничных прерываний и В этом случае практически преобразования виртуальных адресов отсутствует фрагментация в физические (сильно зависит от размера страницы) Виртуальное адресное пространство процесса 1 0 1 2 3 4 Виртуальное адресное пространство процесса 2 0 1 2 3 4 5 Таблица страниц процесса 1 Nв.с. Nф.с. Упр.ин. 0 5 1 ВЗУ 2 ВЗУ 3 10 4 2 Таблица страниц процесса 2 Упр.ин. Nв.с. Nф.с. 0 8 1 ВЗУ 2 ВЗУ 3 ВЗУ 4 ВЗУ 5 11 Vвирт.стр. = Vфиз.стр. = 2k Регистр адреса таблицы страниц ВЗУ Физическая память 4 пр.1 0 пр.1 0 пр.2 5 пр.2 N физ. стр. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Страничный обмен Сегментное распределение.Данный метод похож на страничное распределение, исключая, что виртуальное адресное пространство процесса делится на сегменты, размер которых определяется программистом. А также сегменты в разных процессах могут указывать на один и тот же сегмент в оперативной памяти. Преимущества Недостатки 1) Более гибкий 1) Еще большие временные затраты 2) Фрагментация на уровне сегментов Странично-сегментное распределение. Виртуальное пространство процесса делится на сегменты, а каждый сегмент, в свою очередь, делится на виртуальные страницы, которые нумеруются в пределах сегмента. Оперативная память делится на физические страницы. Загрузка процесса выполняется операционной системой постранично. Для каждого сегмента создаётся своя таблица страниц, а для каждого процесса создаётся таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса. 76. Общая характеристика и классификация интерфейсов Интерфейс представляет собой совокупность линий и шин, сигналов, электронных схем и алгоритмов (протоколов), предназначенных для осуществления обмена информацией между устройствами. Интерфейсы характеризуются следующими параметрами: пропускной способностью интерфейса – количеством информации, которое может быть передано через интерфейс в единицу времени; максимальной частотой передачи информационных сигналов через интерфейс; информационной шириной интерфейса – числом бит или байт данных, передаваемых параллельно через интерфейс; максимально допустимым расстоянием между соединяемыми устройствами; динамическими параметрами интерфейса – временем передачи отдельного слова или блока данных с учётом продолжительности процедур подготовки и завершения передачи; общим числом проводов (линий) в интерфейсе. Можно выделить следующие четыре классификационных признака интерфейсов: способ соединения компонентов системы (радиальный, магистральный, смешанный); способ передачи информации (параллельный, последовательный, параллельнопоследовательный); принцип обмена информацией (асинхронный, синхронный); режим передачи информации (двусторонняя поочередная передача, односторонняя передача). Классификация интерфейсов по назначению содержит следующие уровни сопряжений: системные интерфейсы; локальные интерфейсы; интерфейсы периферийных устройств (малые интерфейсы); межмашинные интерфейсы. Организация шин интерфейсов многоуровневая, что обеспечивается использованием чипсетов–это одна или две микросхемы, предназначенные для организации взаимодействия между процессором, памятью, интерфейсом графического адаптера, портами ввода/вывода и остальными компонентами компьютера. Со временем эти микросхемы стали называть мостами, появились устоявшиеся термины «северный мост» (NorthBridge) и «южный мост» (SouthBridge) чипсета. 77. Способы организации передачи данных В подсистеме ввода/вывода ЭВМ используются три основных способа организации передачи данных между памятью и ПУ: программно-управляемая передача, передача по запросу прерывания от ПУ и прямой доступ к памяти (ПДП). Программно-управляемая передача данных осуществляется при непосредственном участии и под управлением процессора, который при этом выполняет специальную подпрограмму ввода/вывода. Операция ввода/вывода инициируется центральным процессором, т.е. текущей командой программы. Данный способ является простым в реализации, но при обработке команды ввода/вывода ЦП бесполезно тратит время, ожидая готовности ПУ. Это значительно снижает производительность ЭВМ. Передача данных по запросу прерывания от ПУ реализуется под управлением контроллера прерываний (КПР). Схема работы такова: ПУ выдает в КПР запрос на прерывание, который, в свою очередь, вырабатывает для ЦП сигнал прерывания. ЦП по этому сигналу приостанавливает работу текущей программы и передает управление подпрограмме ввода/вывода. Подпрограмма обрабатывает запрос и по её завершении ЦП возвращается к работе по текущей программе. Выполнение текущей программы продолжается. Прямой доступ к памяти – это такой способ обмена данными, который обеспечивает автономно от ЦП установление связи и передачу данных между ОП и ПУ. Прямой доступ к памяти освобождает процессор от управления операциями ввода/вывода, позволяет осуществлять параллельно во времени выполнение процессором программы с обменом данными между ОП и ПУ, производить этот обмен со скоростью, ограничиваемой только пропускной способностью ОП или ПУ. Прямым доступом к памяти управляет контроллер ПДП, который выполняет следующие функции: Управление инициируемой процессором или ПУ передачей данных между ОП и ПУ. Задание размера блока данных, который подлежит передаче, и области памяти, используемой при передаче. Формирование адресов ячеек ОП, участвующих в передаче. Подсчёт числа единиц данных (байт, слов), передаваемых от ПУ в ОП или обратно, и определение момента завершения заданной операции ввода/вывода. В современных ЭВМ используются все перечисленные способы передачи данных. 78. Системная организация компьютеров на базе современных чипсетов Современные чипсетыориентируются под процессорыIntelи AMD, а также зависят непосредственно отих микроархитектуры, поэтому их количество очень большое. Рассмотрим только чипсеты Intel Х58 и AMD 890GX. ЧипсетIntel Х58предназначен для системной организации компьютеров на базе процессоров с микроархитектурой Nehalem. Схема чипсета представлена на рисунке ниже. PCI Express 2.0 Graphics Support for Multi-card configurations: 1x16, 2x16, 4x8 or other combination DDR3 memory 8,5Гб/с Processor Intel Core i7Bloomfield DDR3 memory 8,5Гб/с DDR3 memory 8,5Гб/с QPI (25,6Гб/с) up to 36 lanes Х58 IOH 2 Гб/с DMI 12 Hi-Speed USB 2.0 Ports; 480 Dual EHCI; USBPort Disable Mб/ seach 500 6 PCI Express x1 Mб/ seach Intel Integrated 10/100/1000 MAC GLCI LCI Intel Gigabit LAN Connect Intel High Definition Audio ICH10R LPC or SPI 6 SerialATAPorts; 3 eSATA; Port Disable Гб/с seach Intel Matrix Storage Technology BIOS Support Intel Extreme Tuning Support Intel Turbo Memory vitch User Pinning Чипсет Intel Х58 состоит из северного моста IOHи южного моста ICH10R, соединённые шиной DMI. Связь с процессором поддерживается за счёт интерфейса QPI. Северный мост IOH целиком отдан под контроллер шины PCI Express 2.0.Оперативная память соединяется напрямую с процессорной шиной. С выходом пятой серии чипсетов появилась возможность создания массивов видеокарт, как того, так и другого производителя. Южный мост ICH10R поддерживает подключение до 6 устройств PCI Express x1, до 12 портов USB 2.0, а также отвечает за взаимодействие с контроллерами накопителей и встроенными аудио- и сетевыми адаптерами. Чипсет AMD 890GXсостоит изсеверного моста AMD890и южного моста SB850, которые соединяются через шину «A-LinkExpress III». Связь с процессором поддерживается за счет шины HyperTransport 3.0. Северный мост поддерживает шину PCI Express 2.0 x16, которая может быть разбита на две шины (PCI-E x8+x8) для CrossFire и поддерживает 6 линий PCI-E 2.0 x1 для дополнительных слотов на материнской плате. Интегрированная графика, встроенная в северный мост 890 GX, использует ядро RV620, которое работает на тактовой частоте 700 МГц. AM3 Socket DDR3 1333 Mhz HyperTransport 3.0 20,6Гб/с 1x16 / 2x8 16 Гб/с DVI, HDMI, DisplayPort VGA DDR3 Performance Cache AMD 890 GX HD Audio PCIExpress 2.0 6x1 PCI Express 2.0 Alink Express III 2 Гб/с 14 x USB 2.0 2x1 PCI-E 2.0 PCIExpress 2.0 6 x SATA 6Гб/с AMD SB850 Parallel ATA Gigabit Ethernet Южный мост SB 850 включает контроллер накопителей SATA (c обратной совместимостью с IDE) на 6 портов (до 6 Гб/с) с поддержкой режимов RAID для всех SATA-портов, один контроллер PATA и сетевой контроллер (GigabitEthernet), 14 портов USB 2.0, стандартный HD-аудиокодек и две линии x1 PCI-E 2.0. 79. Архитектуры вычислительных систем. Сильносвязные и слабосвязные многопроцессорные системы По классификации М. Флина архитектурысистем делятся на: MISD (MultipleInstructionSingleData) – множество потоков команд – один поток данных; MIMD (MultipleInstructionMultipleData)– множество потоков команд – множество потоков данных. Классификация по двум критериям: способу построения памяти (общая или распределенная) и способу передачи информации показана в таблице.Здесь приняты следующие обозначения: Р – элементарный процессор, М – элемент памяти, К – коммутатор, С – кэш-память. Типы Типы памяти передачи Общая память Общая Распределенная сообщений и распределенная память Шинные соединения Р 1. 2. Р Р Р … Р С С Р … 3. С М М М Р Р Р … М М Фиксированные перекрестные соединения 4. Р 5. Р С С Р 7. Р … Р Р Р С Р Р Р Р М 9. Р … Р М К Р М М М 8. К М С М Р Р Р М Р М Коммутационные структуры 6. М Р М М М Р … Р К MIMD-системы по способу взаимодействия процессоров делятся на системы с сильной и слабой связью. Системы с сильной связью основаны на объединении процессоров на общем поле оперативной памяти. Системы со слабой связью представляются многопроцессорными и многомашинными системами с распределенной памятью. MIMD Слабосвязанные Сильносвязанные Симметричные Распределенная память Общая память МРР Перекрестная коммутация, многоблочная и многовходовая ОП Кластеры Общая шина SMP Многомашинные комплексы 80. Понятие операционной системы; эволюция развития операционных систем; функции операционных систем и подходы к построению операционных систем. ОС – базовый комплекс компьютерных программ, обеспечивающий управление аппаратными средствами компьютера, работу с файлами, ввод и вывод данных, а также выполнение прикладных программ и утилит. В основном эволюцию развития ОС разделяют на 5 поколений: Первое поколение (1940 – 50). Только появились ламповые вычислительные устройства. Разработан принцип программы. ОС отсутствуют, вся работа по управлению ведется разработчиками. Второе поколение (1950 – 60). Вычислительные устройства работают на полупроводниковых элементах. Появляется прообраз ОС - системы пакетной обработки, которые просто автоматизируют запуск одной программы из пакета за другой и тем самым увеличивают коэффициент загрузки процессора. Третье поколение (1960 - 70). Полупроводниковые элементы объединяются в интегральные микросхемы. Появляются ОС с поддержкойаппарата прерывания,планирования заданий, мультипрограммирования. Одна и та жеОС начинает работать на различных устройствах, но она по-прежнему остается пакетной. Также появляетсяоперационная система реального времени (ОСРВ), в которой ЭВМ применяется для управления техническими объектами. Характерным свойством для ОСРВ является реактивность- готовность системы вырабатывать управляющие воздействия незамедлительно. Четвертое поколение (1970-80). ОС были многорежимными системами, обеспечивающими пакетную обработку, разделение времени, режим реального времени и мультипроцессорный режим. Появляется вытесняющая многозадачность и приоритетное планирование, а также выделение квот на использование ограниченных ресурсов компьютеров. Реализуется механизм виртуальной памяти и развитых файловых систем. Пятое поколение (с середины 1980-х гг. по н.в.). ОС используют возможности сетевых технологий, в том числе технологии клиент – сервер, интерфейс становится графическим и дружественным. Также существует 5 основных подходов к построению ОС Монолитное ядро Микроядернаяархитектура Многоуровневая система Виртуальная машина Смешанная система 81. Архитектура операционной системы. Классификация операционных систем. Эффективность и требования, предъявляемые к ОС. Рассмотрим существующие архитектуры ОС. Монолитное ядро - это такая схема операционной системы, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой.Примером систем с монолитным ядром является большинство Unixсистем. Преимущества Недостатки 1) Наиболее архитектурно зрелые 1) Сложность в сопровождении системы Многоуровневые системы. Всю вычислительную системуможно разбить на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты уровня N-1. Нижним уровнем в таких системах обычно является hardware, верхним уровнем – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Преимущества Недостатки 1) Хорошо реализуется 1) Сложность в проектировании 2) Хорошо тестируется 2) Временные затраты на 3) Хорошо модифицируется прохождение всех уровней. Виртуальными машинами называют программную или аппаратную среду, исполняющую некоторый код. Зачастую виртуальная машина эмулирует работу реального компьютера. Примерами служит VMWareWorkstation и VirtualBox. Преимущества Недостатки 1) На одной машине множество 1) Меньше в производительности, чем различных ОС реальная система Микроядерная архитектура. Это такая архитектура, когда большинство составляющих ОCявляются самостоятельными программами.Взаимодействие между ними обеспечивает микроядро, которое работает в привилегированном режиме. Также оно осуществляет планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью. Преимущества Недостатки 1) Высокая степень модульности ядра 1) Дополнительные расходы на ОС взаимодействие с микроядром 2) Большая надежность системы 2) Сложность в проектировании Смешанные системы. В большинстве случаев современные операционные системы используют различные комбинации вышеприведенных подходов. У ОС сформировалась своя классификация: по назначению (общего, специального), по режиму обработки задач (однозадачные, мультипрограммные), по способу взаимодействия с системой (диалоговые, с пакетной обработкой) по способам построения (рассмотрены выше) К операционным системам современных компьютеров предъявляется ряд требований. Главным требованием является выполнение основных функций эффективного управления ресурсами и обеспечения удобного интерфейса для пользователя и прикладных программ. Современная ОС должна поддерживать мультипрограммную обработку, виртуальную память, свопинг, развитый интерфейс пользователя (многооконный графический, аудио -, менюориентированный и т.д.), высокую степень защиты, удобство работы, а также выполнять многие другие необходимые функции и услуги. Кроме этих требований функциональной полноты, к ОС предъявляется ряд важных эксплуатационных требований. Эффективность. Надежность и отказоустойчивость. Безопасность (защищенность). Предсказуемость. Расширяемость. Переносимость. Совместимость. Удобство. Масштабируемость. 82. Понятие процесса, его состояния, модель представления процесса в операционной системе и операции, которые могут выполняться над процессами операционной системой. Понятие процесса характеризует некоторую совокупность набора исполняющихся команд, ассоциированных с ним ресурсов и текущего момента его выполнения, находящуюся под управлением операционной системы. В любой момент процесс полностью описывается своим контекстом, состоящим из регистровой, системной и пользовательской частей. Процессы могут находиться в пяти основных состояниях: рождение, готовность, исполнение, ожидание, закончил исполнение В операционной системе процессы представляются определенной структурой данных, которая содержит следующую информацию (для разных ОС различается): состояние, в котором находится процесс; адрес команды, которая должна быть выполнена для него следующей; содержимое регистров процессора; данные, необходимые для планирования использования процессора и управления памятью; учетные данные; сведения об устройствах ввода-вывода, связанных с процессом. Из состояния в состояние процесс переводится операционной системой в результате выполнения над ним операций. Операционная система может выполнять над процессами следующие пары операций: создание процесса - завершение процесса, приостановка процесса - запуск процесса, блокирование процесса - разблокирование процесса, изменение приоритета процесса. 83. Уровни планирования процессов в операционных системах. Основные цели и критерии планирования и параметры, на которых оно основывается. Алгоритмы планирования. Планирование – это работа по определению того, в какой момент времени прервать выполнение одного процесса и какому процессу предоставить возможность выполняться. При построении алгоритмов планирования выделяют три различных уровня: долгосрочное; краткосрочное; среднесрочное. К числу целей можно отнести следующие: Справедливость. Эффективность. Сокращение полного времени выполнения. Сокращение времени ожидания. Сокращение времени отклика. Критерии планирования: Предсказуемость. Минимальные накладные расходы. Равномерная загрузка ресурсов вычислительной системы Масштабируемость Параметры планирования: Статические – предельные значения ресурсов системы: размер оперативной памяти, максимальное количество памяти на диске для осуществления свопинга, количество подключенных устройств ввода-вывода и т.п. Динамические – значения ресурсов системы на текущий момент. Алгоритмы планирования FCFS. Работает по принципу первым пришел, первым обслужен. Преимуществом алгоритма FCFS является легкость его реализации, недостатками – среднее время ожидания и среднее полное время выполнения для этого алгоритма существенно зависят от порядка расположения процессов в очереди. RoundRobin. По сути, это алгоритм FCFS, только реализованный в режиме вытесняющего планирования (очередной процесс передается на исполнение по таймеру по истечении определенного кванта времени). ShortestJobFirst. Если выбирать процесс не по порядку (как в FCFS и RR), а основываясь на его минимальном времени непрерывного использования процессора, то это позволит повысить производительность алгоритма планирования использования процессора. Описанный алгоритм получил название «кратчайшая работа первой» (англ. ShortestJobFirst, SJF). Основную сложность при реализации алгоритма SJF представляет невозможность точно знать в каждом случае время исполнения очередного процесса. 84. Кооперация процессов и основные аспекты ее логической организации (санкционированное взаимодействие процессов) Для нормального функционирования процессов операционная система старается максимально обособить их друг от друга. Тем не менее существуют причины для их взаимодействия: Повышение скорости работы. Совместное использование данных. Модульная конструкция какой-либо системы. Удобства работы пользователя Категории средств обмена информацией Сигнальные. Канальные. Разделяемая память. Логическая организация механизма передачи информации Установление связи. При использовании прямой адресации связь между процессами в классической операционной системе устанавливается автоматически, без дополнительных инициализирующих действий. При использовании непрямой адресации инициализация средства связи может и не требоваться. Информация, которой должен обладать процесс для взаимодействия с другими процессами, – это некий идентификатор промежуточного объекта для хранения данных, если он, конечно, не является единственным и неповторимым в вычислительной системе для всех. Информационная валентность процессов и средств связи. При прямой адресации только одно фиксированное средство связи может быть задействовано для обмена данными между двумя процессами, и только эти два процесса могут быть ассоциированы с ним. При непрямой адресации может существовать более двух процессов, использующих один и тот же объект для данных, и более одного объекта может быть использовано двумя процессами. Особенности передачи информации с помощью линий связи Буферизация Буфер нулевой емкости или отсутствует. Буфер ограниченной емкости. Буфер неограниченной емкости. Поток ввода/вывода и сообщения Поток ввода-вывода. Операции передачи/приема не интересуются содежимим данных Сообщения. Процессы налагают на передаваемые данные некоторую структуру. Весь поток информации они разделяют на отдельные сообщения. Надежность средств связи. Передача данных через разделяемую память является надежным способом связи. В остальных случаях нужно повышать надежность. Завершение связи. Для способов связи, которые не подразумевали никаких инициализирующих действий, обычно ничего специального для окончания взаимодействия предпринимать не надо. Если установление св. требовало некоторой инициализации, то необходимо выполнить операции освобождения ресурса. 85. Алгоритмы синхронизации (алгоритмы корректной организации взаимодействия процессов). Критическая секция Критическая секция – часть программы, результат выполнения которой может непредсказуемо меняться, если переменные, относящиеся к ней, изменяются другими потоками в то время, когда выполнение этой части еще не завершено. В примере критическая секция – файл “заказов”, являющийся разделяемым ресурсом для процессов R и S. Алгоритм Деккера - первое известное корректное решение проблемы взаимного исключения. Если два процесса пытаются перейти в критическую секцию одновременно, алгоритм позволит это только одному из них, основываясь на том, чья в этот момент очередь. Если один процесс уже вошёл в критическую секцию, другой будет ждать, пока первый покинет её. Это реализуется при помощи использования двух флагов (индикаторов "намерения" войти в критическую секцию) и переменной turn (показывающей, очередь какого из процессов наступила). Процессы объявляют о намерении войти в критическую секцию; это проверяется внешним циклом «while». Если другой процесс не заявил о таком намерении, в критическую секцию можно безопасно войти (вне зависимости от того, чья сейчас очередь). Взаимное исключение всё равно будет гарантировано, так как ни один из процессов не может войти в критическую секцию до установки этого флага (подразумевается, что, по крайней мере, один процесс войдёт в цикл «while»). Это также гарантирует продвижение, так как не будет ожидания процесса, оставившего «намерение» войти в критическую секцию. В ином случае, если переменная другого процесса была установлена, входят в цикл «while» и переменная turn будет показывать, кому разрешено войти в критическую секцию. Процесс, чья очередь не наступила, оставляет намерение войти в критическую секцию до тех пор, пока не придёт его очередь (внутренний цикл «while»). Процесс, чья очередь пришла, выйдет из цикла «while» и войдёт в критическую секцию. + не требует специальных Test-and-set инструкций, по этому легко переносим на разные языки программирования и архитектуры компьютеров -Действует только для двух процессов Алгоритм Петерсона — программный алгоритм взаимного исключения потоков исполнения кода. Перед тем как начать исполнение критической секции кода (то есть кода, обращающегося к защищаемым совместно используемым ресурсам), поток должен вызвать специальную процедуру (назовем ее EnterRegion) со своим номером в качестве параметра. Она должна организовать ожидание потока своей очереди входа в критическую секцию. После исполнения критической секции и выхода из нее, поток вызывает другую процедуру (назовем ее LeaveRegion), после чего уже другие потоки смогут войти в критическую область. Если оба процесса подошли к прологу практически одновременно, то они оба объявят о своей готовности и предложат выполняться друг другу. При этом одно из предложений всегда следует после другого. Тем самым работу в критическом участке продолжит процесс, которому было сделано последнее предложение. -Как и алгоритм Деккера, действует только для 2 процессов +Более простая реализация, чем у алгоритма Деккера Алгоритм булочной. Алгоритм Петерсона дает нам решение задачи корректной организации взаимодействия двух процессов. Давайте рассмотрим теперь соответствующий алгоритм для n взаимодействующих процессов. Каждый вновь прибывающий процесс получает метку с номером. Процесс с наименьшим номером метки обслуживается следующим. К сожалению, из-за неатомарности операции вычисления следующего номера алгоритм булочной не гарантирует, что у всех процессов будут метки с разными номерами. В случае равенства номеров меток у двух или более процессов первым обслуживается клиент с меньшим значением имени (имена можно сравнивать в лексикографическом порядке). Разделяемые структуры данных для алгоритма – это два массива 86. Специальные механизмы синхронизации – семафоры Дейкстры, мониторы Хора, очереди сообщений. Семафоры Для устранения этого недостатка во многих ОС предусматриваются специальные системные вызовы (аппарат для работы с критическими секциями. В разных ОС аппарат событий реализован по своему, но в любом случае используются системные функции, которые условно называют WAIT(x) и POST(x), где x – идентификатор некоторого события (например, освобождение ресурса). Обобщающее средство синхронизации процессов предложил Дейкстра, который ввел новые примитивы, обозначаемые V (“открытие”) и P (“закрытие”), оперирующие над целыми неотрицательными переменными, называемыми семафорами. Доступ любого процесса к семафору, за исключением момента его инициализации, может осуществляться только через эти две атомарные операции. Смысл P(S) заключается в проверке текущего значения семафора S, и если S>0, то осуществляется переход к следующей за примитивом операции, иначе процесс переходит в состояние ожидания. P(S): Пока S==0 Процесс блокируется; S=S-1; Операция V(S) связана с увеличением значения S на 1 и переводом одного или нескольких процессов в состояние готовности к исполнению процессором. V(S): S=S+1; В простом случае, когда семафор работает в режиме 2-х состояний (S>0 и S=0), ео алгоритм работы полностью совпадает с алгоритмом работs мьютекса, а S выполняет роль блокирующей переменной. “+”: пассивное ожидание (постановка в очередь и автоматическая выдача ресурсов) возможность управления группой однородных ресурсов “-”: не указывают непосредственно на критический ресурс некорректное использование операций может привести к нарушению работоспособности (например, переставив местами операции P(e) и P(b) в функции Writer()). Мониторы Для облегчения работы программистов при создании параллельных программ без усилий на доказательства правильности алгоритмов и отслеживание взаимосвязанных объектов (что характерно при использовании семафоров) предложено высокоуровневое средство синхронизации, называемое мониторами. Мониторы – тип данных, обладающий собственными переменными, значения которых могут быть изменены только с помощью вызова функций-методов монитора. Функции-методы могут использовать в работе только данные, находящиеся внутри монитора, и свои параметры. Доступ к мониторам в каждый момент времени имеет только один процесс. Для организации не только взаимоисключений, но и очередности процессов, подобно семафорам f(full) и e(empty), было введено понятие условных переменных, над которыми можно совершать две операции wait и signal, отчасти похожие на операции P и V над семафорами. Функция монитора выполняет операцию wait над какой-либо условной переменной. При этом процесс, выполнивший операцию wait, блокируется, становится неактивным, и другой процесс получает возможность войти в монитор. Когда ожидаемое событие происходит, другой процесс внутри функции совершает операцию signal над той же самой условной переменной. Это приводит к пробуждению ранее заблокированного процесса, и он становится активным. Исключение входа нескольких процессов в монитор реализуется компилятором, а не программистом, что делает ошибки менее вероятными. Требуются специальные языки программирования и компиляторы (встречаются в языках, “параллельный Евклид”,”параллельный Паскаль”,Java). Следует отметить, что условные переменные мониторов не запоминают предысторию, поэтому операцию signal всегда должна выполняться после операции wait(иначе выполнение операции wait всегда будет приводить к блокированию процесса). Очереди сообщений Механизм очередей сообщений позволяет процессам и потокам обмениваться структурированными сообщениями. Один или несколько процессов независимым образом могут посылать сообщения процессу – приемнику. Очередь сообщений представляет возможность использовать несколько дисциплин обработки сообщений (FIFO, LIFO, приоритетный доступ, произвольный доступ). При чтении сообщения из очереди удаления сообщения из очереди не происходит, и сообщение может быть прочитано несколько раз. В очереди присутствуют не сами сообщения, а их адреса в памяти и размер. Эта информация размещается системой в сегменте памяти, доступном для всех задач, общающихся с помощью данной очереди Основные функции управления очередью: Создание новой очереди Открытие существующей очереди Чтение и удаление сообщений из очереди Чтение без последующего удаления Добавление сообщения в очередь Завершение использование очереди Удаление из очереди всех сообщений Определение числа элементов в очереди 87. Взаимоблокировки, тупиковые ситуации, "зависания" системы Предположим, что несколько процессов конкурируют за обладание конечным числом ресурсов. Если запрашиваемый процессом ресурс недоступен, ОС переводит данный процесс в состояние ожидания. В случае когда требуемый ресурс удерживается другим ожидающим процессом, первый процесс не сможет сменить свое состояние. Такая ситуация называется тупиком (deadlock) . Говорят, что в мультипрограммной системе процесс находится в состоянии тупика, если он ожидает события, которое никогда не произойдет. Системная тупиковая ситуация, или "зависание системы", является следствием того, что один или более процессов находятся в состоянии тупика. Иногда подобные ситуации называют взаимоблокировками . В общем случае проблема тупиков эффективного решения не имеет. Взаимоблокировка возникает, когда две и более задач постоянно блокируют друг друга в ситуации, когда у каждой задачи заблокирован ресурс, который пытаются заблокировать другие задачи. Например: Транзакция А создает общую блокировку строки 1. Транзакция Б создает общую блокировку строки 2. Транзакция А теперь запрашивает монопольную блокировку строки 2 и блокируется до того, как транзакция Б закончится и освободит общую блокировку строки 2. Транзакция Б теперь запрашивает монопольную блокировку строки 1 и блокируется до того, как транзакция A закончится и освободит общую блокировку строки 1. Транзакция А не может завершиться до того, как завершится транзакция Б, а транзакция Б заблокирована транзакцией А. Такое условие также называется цикличной зависимостью: транзакция А зависит от транзакции Б, а транзакция Б зависит от транзакции А и этим замыкает цикл. Тупик возникает при перестановке местами операций P(e) и P(b) в примере с процессами “читатель” и “писатель”, рассмотренном выше – ни один из этих потоков не сможет завершить начатую работу и возникнет тупиковая ситуация, которая не может разрешиться без внешнего воздействия. Тупиковые ситуации следует отличать от простых очередей хотя те и другие возникают при совместном использовании ресурсов и внешне выглядят схоже. Однако очередь – неотъемлемый признак высокого коэффициента использования ресурсов при случайном поступлении запросов а тупик – “неразрешимая” ситуация. Проблема тупиков требует решения следующих задач: -распознавание тупиков, -предотвращение тупиков, -восстановление системы после тупиков. Распознавание тупиков В случаях, когда тупиковая ситуация образована многими процессами, использующими много ресурсов, распознавание тупика является не тривиальной задачей. Существуют формальные, программно-реализованные методы распознавания тупиков, основанные на ведении таблиц распределения ресурсов и таблиц запросов к занятым ресурсам, анализ которых позволяет обнаружить взаимные блокировки. Предотвращение тупиков Тупики могут быть предотвращены на стадии проектирования и разработки программного обеспечения, чтобы тупик не мог возникнуть ни при каком соотношении взаимных скоростей процессов. Существует подход динамического предотвращения тупиков, заключающийся в использовании определенных правил при назначении ресурсов процессам (например, ресурсы могут выделяться в определенной последовательности, общей для всех процессов, как диск и принтер в примере). Восстановление системы после тупиков При возникновении тупиковой ситуации не обязательно снимать с выполнения все заблокированные процессы, а можно: снять только часть из них, при этом освобождая ресурсы, ожидаемые остальными процессами вернуть некоторые процессы в область «свопинга» совершить «откат» некоторых процессов до т.н. контрольной точки, в которой запоминается вся информация, необходимая для восстановления выполнения программы с данного места. Контрольные точки расставляются в программе в местах, после которых возможно возникновение тупика. 88. Простейшие схемы управления памятью. Связывание логических и физических адресных пространств. Распределение памяти: В однопрограммных ОС: Непрерывное Оверлейное В мультипрограммных ОС: Фиксированными разделами Динамическими разделами Перемещаемыми разделами Непрерывное распределение – это самая простая и распространенная схема, согласно которой вся память условно может быть разделена на три области: Область, занимаемая ОС Область, в которой размещается исполняемый процесс Свободная область памяти Такая схема распределения влечет за собой два вида потерь вычислительных ресурсов: Потерю процессорного времени, потому что процессор простаивает, пока задача ожидает завершения операций ввода-вывода Потерю самой ОП, потому что далеко не каждая программа использует всю память, а режим работы в этом случае однопрограммный (+) Недорогая реализация, которая позволяет отказаться от многих второстепенных функций ОС, например, защита памяти – единственное, что следует защищать программные модули и области памяти самой ОС) Если логическое адресное пространство программы должно быть больше, чем свободная область памяти, или весь возможный объем ОП, то вся программа может быть разбита на главный и второстепенные сегменты, а в ОП одновременно могут находится только ее главная часть и один или несколько неперекрывающихся сегментов (структуры с перекрытием) Образное представление организации памяти с использованием структуры с перекрытием Поочередно можно загружать в память ветви А-В, А-С-D и А-С-Е программы Мультипрограммные ОС Для организации мультипрограммного режима необходимо обеспечить одновременное расположение в ОП нескольких задач (целиком или частями) При решении этой задачи ОС должна учитывать целый ряд моментов: Следует ли назначать каждому процессу одну непрерывную область физической памяти или фрагментами Должны ли сегменты программы, загруженные в память, находится в одном месте в течении всего периода выполнения процесса или можно ее время от времени сдвигать Что следует предпринять, если сегменты программы не помещаются в имеющуюся память РАСПРЕДЕЛЕНИЕ ПАМЯТИ ФИКСИРОВАННЫМИ РАЗДЕЛАМИ Простейший способ управления ОП состоит в том, что память разбивается на несколько областей фиксированной величины, называемых разделами. Разбиение может быть выполнено вручную оператором во время старта системы или во время ее установки. В каждом разделе и в каждый момент времени может располагаться по одной задаче, и к каждому разделу в отдельности можно применить методы, используемые при распределении памяти в однопрограммных ОС. Очередной новый процесс, поступивший на выполнение помещается либо в общую очередь(а), либо в очередь к некоторому разделу(б) Подсистема управления памятью в этом случае выполняет следующие задачи: Сравнивает объем памяти, требуемый для вновь поступившего процесса, с размерами свободных разделов и выбирает подходящий раздел Осуществляет загрузку программы в один из разделов и настройку и настойку адресов (+): простота (-):Существенные потери памяти от внутренней фрагментации Учитывая то, что в каждом разделе может выполняться только один процесс, то уровень мультипрограммирования заранее ограничен числом разделов, так как независимо от размера программы она будет занимать весь раздел Применялся в ранних мультипрограммных ОС, сейчас – в ОСРВ за счет детерминированности вычислительного процесса и небольших затрат на реализацию РАСПРЕДЕЛЕНИЕ ПАМЯТИ ДИНАМИЧЕСКИМИ РАЗДЕЛАМИ Чтобы уменьшить потери от внутренней фрагментации, целесообразно размещать в ОП задачи «плотно», одну за другой, выделяя ровно столько памяти, сколько задача потребует (распределение памяти динамическими разделами) Обобщенный алгоритм: Вся память свободна. Каждому вновь поступающему процессу выделяется вся необходимая память (если достаточный объем памяти отсутствует, то процесс не создается) После завершения процесса память освобождается, и на это место может быть загружен другой процесс Задачами операционной системы при реализации данного метода управления памятью является: ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти, при поступлении новой задачи - анализ запроса, просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения поступившей задачи, загрузка задачи в выделенный ей раздел и корректировка таблиц свободных и занятых областей, после завершения задачи корректировка таблиц свободных и занятых областей. Выбор раздела для вновь поступившей задачи может осуществляться по разным правилам. Например: "первый попавшийся раздел достаточного размера"(first fit) "раздел, имеющий наименьший достаточный размер"(best fit) "раздел, имеющий наибольший достаточный размер"(worst fit) (+) Значительная гибкость (-) Внешняя фрагментация памяти – наличие большого числа несмежных участков свободной память небольшого РАСПРЕДЕЛЕНИЕ ПАМЯТИ ДИНАМИЧЕСКИМИ РАЗДЕЛАМИ Одним из методов борьбы с фрагментацией является перемещение всех занятых участков («сжатие», «уплотнение», «дефрагментация») в сторону старших либо в сторону младших адресов, так, чтобы вся свободная память образовывала единую свободную область (рисунок). Дефрагментация может выполняться: При каждом завершении задачи (меньше однократной вычислительной работы) В случае, когда для вновь поступившей задачи нет свободного раздела достаточного размера (процедура выполняется реже) (+) более эффективное использование памяти (-) требует значительных временных затрат Задачи по управлению памятью отслеживание свободной и занятой памяти выделение и освобождение памяти процессам вытеснение процессов из ОП на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов возвращение процессов в оперативную память, когда в ней освобождается место настройка адресов программы на конкретную область физической памяти зашита памяти (не позволит выполняемому процессу записывать или читать данные из памяти, назначенной другому процессу). Функция, как правило, реализуется программно – аппаратными средствами Типы адресации Отобрание осуществляется в два этапа: 1) системой программирования с использованием библиотечных модулей (компиляция трансляция) 2) ОС (подсистема управления памятью, которая использует дополнительную информацию от ОС) Логическое (символьное имя) Преобразование имен прпограммы Виртуальное адресное пространство Виртуальное пространство Система программирования Операционная система Физическая память компьютера Ячейка оперативной памяти Между первым и вторым этапами обращения к памяти имеют форму виртуального адреса. Множество всех допустимых значений виртуального адреса для некоторой программы определяет ее виртуальное адресное пространство. Возможны различные варианты перехода от символьных имен к физическим адресам. Частным случаем отображения пространства имен является полная тождественность виртуального адресного пространства физической памяти (система программирования генерирует абсолютную двоичную программу) Часть программных модулей любой ОС обязательно должны быть абсолютными двоичными программами (например, программы загрузки) 89. Виртуальная память. Разбиение адресного пространства процесса на части и динамическая трансляция адреса. Архитектурные средства поддержки виртуальной памяти. Суть концепции виртуальной памяти заключается в следующем. Информация, с которой работает активный процесс, должна располагаться в оперативной памяти. В схемах виртуальной памяти у процесса создается иллюзия того, что вся необходимая ему информация имеется в основной памяти. Для этого, во-первых, занимаемая процессом память разбивается на несколько частей, например страниц. Во-вторых, логический адрес (логическая страница), к которому обращается процесс, динамически транслируется в физический адрес (физическую страницу). И, наконец, в тех случаях, когда страница, к которой обращается процесс, не находится в физической памяти, нужно организовать ее подкачку с диска. Для контроля наличия страницы в памяти вводится специальный бит присутствия, входящий в состав атрибутов страницы в таблице страниц . Возможность выполнения программы, находящейся в памяти лишь частично, имеет ряд вполне очевидных преимуществ. Программа не ограничена объемом физической памяти. Упрощается разработка программ, поскольку можно задействовать большие виртуальные пространства, не заботясь о размере используемой памяти. Поскольку появляется возможность частичного помещения программы (процесса) в память и гибкого перераспределения памяти между программами, можно разместить в памяти больше программ, что увеличивает загрузку процессора и пропускную способность системы. Объем ввода-вывода для выгрузки части программы на диск может быть меньше, чем в варианте классического свопинга, в итоге каждая программа будет работать быстрее. Но введение виртуальной памяти позволяет решать другую, не менее важную задачу – обеспечение контроля доступа к отдельным сегментам памяти и, в частности, защиту пользовательских программ друг от друга и защиту ОС от пользовательских программ. Каждый процесс работает со своими виртуальными адресами, трансляцию которых в физические выполняет аппаратура компьютера. Таким образом, пользовательский процесс лишен возможности напрямую обратиться к страницам основной памяти, занятым информацией, относящейся к другим процессам. Архитектурные средства поддержки виртуальной памяти делятся на сегментные, страничные и сегментно-страничные распределения памяти. Сегментный Программу необходимо разбивать на части и уже каждой такой части выделять физическую память. Естественным способом разбиения программы на части является разбиение её на логические элементы – сегменты. Разбиение на сегменты позволяет дифференцировать способы доступа к разным частям программы(сегментам). Можно запретить обращаться с операциями записи и чтения в кодовый сегмент программы, а для сегмента данных разрешить только чтение. Разбиение программы на «осмысленные» части делает принципиально возможным разделением одного сегмента несколькими процессами. Логически обращение к элементам программы в этом случае будет состоять из имени сегмента и смещения относительно начала этого сегмента. Вся информация о текущем размещении сегментов задачи в памяти сводится в таблицу сегментов (таблицу дескрипторов сегментов задачи), формируемую для каждого исполняемого процесса. При размещении каждого из сегментов в оперативной или внешней памяти ОС отмечает в дескрипторе текущее местоположение сегмента. При передаче управления следующей задаче ОС должна занести в соответствующий регистр адрес таблицы дескрипторов сегментов этой задачи. Сама таблица дескрипторов сегментов, в свою очередь, также представляет собой сегмент данных, который обрабатывается диспетчером памяти ОС. Поэтому: общий объём виртуального адресного пространства задачи может превосходить объём физической памяти компьютера, на котором эта задача будет выполняться. Даже если потребности в памяти не так велики, можно размещать в памяти больше задач, поскольку любой задаче, как правило, все её сегменты одновременно не нужны. Решение проблемы замещения (определения того сегмента, который должен быть либо перемещён во внешнюю память, либо просто замещён новым) используются следующие дисциплины: FIFO (First In First Out) первый пришёл – первый ушёл LRU (Least Recently Used ) не используемый дольше других LFU (Least Frequently Used) используемый реже других Random-случайный выбор сегмента Страничный способ при котором все фрагменты задач считаются равными, причем длина фрагмента в идеале должна быть кратна степени 2, чтобы операции сложения можно было заменить операциями конкатенации. Часть виртуальных страниц задачи могут быть размещены в ОП, а часть – во внешней памяти. Место во внешней памяти называют файлом подкачки, или страничным файлом(paging file). Иногда это файл называют swap – файлом, тем самым подчеркивая, что записи этого файла – страницы – замещают друг друга в ОП Разбиение всей ОП на страницы одинаковой величины, причем кратной степени двойки, приводит к тому, что вместо одномерного адресного пространства памяти можно говорить о двумерном. Первая координата адресного пространства – это номер страницы, вторая координата – номер ячейки внутри выбранной страницы (индекс). Таким образом, физический адрес определяется парой (Рр, i), а виртуальный адрес – парой (Pv, i), где Pv – номер виртуальной страницы, Рр – номер физической страницы, i – индекс ячейки внутри страницы Виртуальный адрес Регистр таблицы страниц 32000 17 P (Page) 612 I (index) Таблица страниц текущей задачи 32017 P Номер физической страницы Права доступа 1 23 R-X P – Бит присутствия Страница №23 23000 23612 Количество битов, отводимое под индекс, определяет размер страницы, а количество битов, отводимое под номер виртуальной страницы, - объем потенциально доступной для программы виртуальной памяти. Для отображения виртуального адресного пространства задачи на физическую память, как и в случае сегментного способа организации, для каждой задачи необходимо иметь таблицу страниц для трансляции адресных пространств, отличающихся от дескриптора сегмента прежде всего тем, что в ней нет поля длины – все страницы имеют одинаковый размер. При обращении к виртуальной странице, не оказавшейся в данный момент в ОП, возникает прерывание и управление передается диспетчеру памяти, который должен найти свободное место. Обычно предоставляется первая же свободная страница. Если свободной физической страницы нет, то диспетчер памяти по одной из дисциплин замещения (LRU, LFU,FIFO, случайный доступ) определит страницу, подлежащую расформированию или сохранению во внешней памяти. На ее месте он разместит новую виртуальную страницу, к которой было обращение из задачи, но которой не оказалось в ОП. Для абсолютного большинства современных ОС характерна дисциплина замещения страниц LRU как наиболее эффективная. Так, именно эта дисциплина использована в OS/2 и Linux. Однако в ОС Windows NT/2000/XP разработчики, желая сделать их максимально независимыми от аппаратных возможностей процессора, отказались от этой дисциплины и применили правило FIFO. Поэтому, чтобы компенсировать ее неэффективность была введена «буферизация» тех страниц, которые должны быть записаны в файл подкачки на диск или просто расформированы. Принцип буферизации следующий: прежде чем замещаемая страница действительно окажется во внешней памяти или просто расформированной, она помечается как «кандидат на выгрузку». Если в следующий раз произойдет обращение к странице, находящейся в таком «буфере», то страница никуда не выгружается и уходит в конец списка FIFO В противном случае страница действительно выгружается, а на ее место в «буфер» попадает следующий «кандидат». Величина «буфера» не может быть большой, поэтому эффективность страничной реализации памяти в Windows NT/2000/XP намного ниже, чем в других ОС, и явление пробуксовки проявляется даже при относительно большом объеме ОП Структура таблицы страниц Многоуровневые таблицы страниц Основную проблему для эффективной реализации таблицы страниц создают большие размеры виртуальных адресных пространств современных компьютеров, которые обычно определяются разрядностью архитектуры процессора. В 32-битном адресном пространстве при размере страницы 4 Кбайт (Intel) получаем 232/212=220, то есть приблизительно 106 страниц – таблица должна иметь примерно 106 строк, а запись в строке состоит из нескольких байтов. Каждый процесс нуждается в своей таблице страниц. Для того чтобы избежать размещения в памяти огромной таблицы, ее разбивают на ряд фрагментов. В ОП хранят лишь некоторые, необходимые для конкретного момента исполнения фрагмента таблицы страниц. В силу свойства локальности число таких фрагментов относительно невелико. Локальность – способность в течение ограниченного отрезка времени работать с небольшим набором адресов памяти. Различают временную локальность (высокая вероятность повторного обращения по одному и тому же адресу в ближайшее время) и пространственную локальность (высокая вероятность повторного обращения по соседнему адресу в ближайшее время). Одним из наиболее распространенных способов разбиения является организация так называемой многоуровневой таблице страниц. Виртуальный адрес P1 P2 d Таблица первого уровня Таблица второго уровня Страничные кадры по 4Кб При помощи одной таблицы второго уровня можно охватить 4Мбайт ОП. Для размещения процесса с большим объемом занимаемой памяти достаточно иметь в ОП одну таблицу первого уровня и несколько таблиц второго уровня. Очевидно, что суммарное количество строк в этих таблицах много меньше 220. Количество уровней в таблице страниц зависит от конкретных особенностей архитектуры. Примером реализации одноуровневого (DEC PDP-11), двухуровневого (Intel, DEC VAX), трехуровневого (Sun SPARC, DEC Alpha) пейджинга, а также пейджинга с заданным количеством уровней (Motorola). Инвертированная таблица страниц В этой таблице содержится по одной записи на каждый страничный кадр физической памяти. Достаточно одной таблицы для всех процессов. Для хранения функции отображения требуется фиксированная часть основной памяти, независимо от разрядности архитектуры, размера и количества процессоров. Например, для Pentium с 256 Мбайт ОП нужна таблица размером 64 Кбайт строк. Несмотря на экономию ОП, применение инвертированной таблицы имеет существенный минус – записи в ней (как и в ассоциативной памяти) не отсортированы по возрастанию номеров виртуальных страниц, что усложняет трансляцию адреса. Один из способов решения данной проблемы – использование хеш-таблицы виртуальных адресов. Часть виртуального адреса, представляющая собой номер страницы, отображается в хеш-таблицу с использованием функции хеширования. Инвертированная таблица страниц Каждой странице физической памяти соответствует одна запись в хеш-таблице и инвертированной таблице страниц. Виртуальные адреса, имеющие одно значение хеш-функции, сцепляются друг с другом. Обычно длина цепочки не превышает двух записей. Ассоциативная память Поиск номера кадра, соответствующего нужной странице, в многоуровневой таблице страниц требует нескольких обращений к основной памяти, поэтому занимает много времени. В некоторых случаях такая задержка недопустима. Решение проблемы ускорения – снабдить компьютер (процессор) аппаратным устройством для отображения виртуальных страниц в физические без обращения к таблице страниц, то есть иметь небольшую быструю кеш-память, хранящую необходимую на данный момент часть таблицы страниц. Это устройство называют ассоциативной памятью или буфером поиска трансляции (translation lookaside buffer - TLB). Высокое значение вероятности нахождения данных в ассоциативной памяти связано с наличием у данных объективных свойств: пространственной и временной локальности. Общая схема функционирования В первый момент времени осуществляется поиск информации о необходимой странице в ассоциативной памяти. Если нужная запись найдена, то производится отображение этой страницы в физическую память (за исключением случаев нарушения привилегий, когда запрос на обращение к памяти отклоняется). Если запись в ассоциативной памяти отсутствует, отображение осуществляется через таблицу страниц: происходит замена одной из записей в ассоциативной памяти найденной записью из таблицы страниц (конструкция ассоциативной памяти должна позволять выявлять те «старые» записи, которые могут быть замещены «новыми»). Одна запись таблицы в ассоциативной памяти содержит информацию об одной виртуальной странице: ее атрибуты и кадр, в котором она находится (поля в точности соответствуют полям в таблице страниц). Число удачных поисков номера страницы в ассоциативной памяти по отношению к общему числу поисков называется hit ratio («процент попаданий в кэш»). Обращение к одним и тем же страницам повышает hit ratio (чем больше hit ratio, тем меньше среднее время доступа к данным, находящимся в ОП). Пример: Если для доступа к памяти через таблицу страниц необходимо 100 нс, а для доступа через ассоциативную память – 20 нс. Если hit ratio = 90%, то среднее время доступа -> 0,9x20+0,1x100=28нс. Минус: При переключении контекста процесса при использовании ассоциативной памяти требуется ее «очистка», что ведет к увеличению времени переключения контекста. Сегментно-страничный Метод представляет собой комбинацию сегментного и страничного распределения памяти и сочетает в себе достоинства обоих подходов. Виртуальное пространство процесса делится на сегменты, а каждый сегмент в свою очередь делиться на виртуальные страницы, которые нумеруются в пределах сегмента. ОП делиться на физические страницы. Загрузка процесса выполняется ОС постранично, при этом часть страниц размещается в ОП, а часть на диске. Для каждого сегмента создается своя таблица страниц, структура которой идентична структуре таблицы страниц при страничном распределении. Для каждого процесса создается таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса. Адрес таблицы сегментов загружается в специальный регистр процесса, когда активизируется соответствующий процесс. Виртуальный адрес состоит из двух составляющих: 1. указание на номер сегмента 2. смещение относительно начала сегмента 2.1. виртуальная страница 2.2. индекс На практике, появления в системе большого количества таблиц страниц стараются избежать, организуя не перекрывающиеся сегменты в одном виртуальном пространстве, для описания которого хватает одной таблицы страниц. Таким образом, одна таблица страниц отводится для всего процесса. +Разбиение программы на сегменты позволяет размещать отдельные сегменты в памяти целиком, что позволяет сократить число обращений к отсутствующим страницам, так как вероятность выхода за пределы сегмента меньше вероятности выхода за пределы страницы; +Наличие сегментов облегчает разделение программных модулей между параллельными процессами; +Возможна динамическая компоновка задачи; +Выделение памяти страницам позволяет минимизировать фрагментацию. -Сложность реализации и высокие вычислительные затраты позволяют использовать его редко в дорогих и мощных вычислительных системах. Принципиальная возможность реализации сегментно-страничной организации памяти заложена в семейство микропроцессоров i80x86, однако вследствие слабой аппаратной поддержки, трудностей при создании систем программирования и ОС в ПК эта возможность не используется. 90. Аппаратно-независимый уровень управления виртуальной памятью. Большинство ОС используют сегментно-страничную виртуальную память. Для обеспечения нужной производительности менеджер памяти ОС старается поддерживать в оперативной памяти актуальную информацию, пытаясь угадать, к каким логическим адресам последует обращение в недалеком будущем. Решающую роль здесь играет удачный выбор стратегии замещения, реализованной в алгоритме выталкивания страниц. Стратегии управления страничной памятью Программное обеспечение подсистемы управления памятью связано с реализацией следующих стратегий: Стратегия выборки (fetch policy) - в какой момент следует переписать страницу из вторичной памяти в первичную. Существует два основных варианта выборки - по запросу и с упреждением. Алгоритм выборки по запросу вступает в действие в тот момент, когда процесс обращается к отсутствующей странице, содержимое которой находится на диске. Его реализация заключается в загрузке страницы с диска в свободную физическую страницу и коррекции соответствующей записи таблицы страниц. Алгоритм выборки с упреждением осуществляет опережающее чтение, то есть кроме страницы, вызвавшей исключительную ситуацию, в память также загружается несколько страниц, окружающих ее (обычно соседние страницы располагаются во внешней памяти последовательно и могут быть считаны за одно обращение к диску). Такой алгоритм призван уменьшить накладные расходы, связанные с большим количеством исключительных ситуаций, возникающих при работе со значительными объемами данных или кода; кроме того, оптимизируется работа с диском. Стратегия размещения (placement policy) - в какой участок первичной памяти поместить поступающую страницу. В системах со страничной организацией все просто - в любой свободный страничный кадр. В случае систем с сегментной организацией необходима стратегия, аналогичная стратегии с динамическим распределением. Стратегия замещения (replacement policy) - какую страницу нужно вытолкнуть во внешнюю память, чтобы освободить место в оперативной памяти. Разумная стратегия замещения, реализованная в соответствующем алгоритме замещения страниц, позволяет хранить в памяти самую необходимую информацию и тем самым снизить частоту страничных нарушений . Замещение должно происходить с учетом выделенного каждому процессу количества кадров. Кроме того, нужно решить, должна ли замещаемая страница принадлежать процессу, который инициировал замещение, или она должна быть выбрана среди всех кадров основной памяти. Алгоритмы замещения страниц Алгоритм FIFO. Выталкивание первой пришедшей страницы Простейший алгоритм. Каждой странице присваивается временная метка. Реализуется это просто созданием очереди страниц, в конец которой страницы попадают, когда загружаются в физическую память, а из начала берутся, когда требуется освободить память. Для замещения выбирается старейшая страница. К сожалению, эта стратегия с достаточной вероятностью будет приводить к замещению активно используемых страниц, например страниц кода текстового процессора при редактировании файла. Заметим, что при замещении активных страниц все работает корректно, но page fault происходит немедленно. Оптимальный алгоритм (OPT) Каждая страница должна быть помечена числом инструкций, которые будут выполнены, прежде чем на эту страницу будет сделана первая ссылка. Выталкиваться должна страница, для которой это число наибольшее. Этот алгоритм легко описать, но реализовать невозможно. ОС не знает, к какой странице будет следующее обращение. Выталкивание дольше всего не использовавшейся страницы. Алгоритм LRU LRU - хороший, но труднореализуемый алгоритм. Необходимо иметь связанный список всех страниц в памяти, в начале которого будут хранится недавно использованные страницы. Причем этот список должен обновляться при каждом обращении к памяти. Много времени нужно и на поиск страниц в таком списке. Выталкивание редко используемой страницы. Алгоритм NFU Поскольку большинство современных процессоров не предоставляют соответствующей аппаратной поддержки для реализации алгоритма LRU, хотелось бы иметь алгоритм, достаточно близкий к LRU, но не требующий специальной поддержки. Для него требуются программные счетчики, по одному на каждую страницу, которые сначала равны нулю. При каждом прерывании по времени (а не после каждой инструкции) операционная система сканирует все страницы в памяти и у каждой страницы с установленным флагом обращения увеличивает на единицу значение счетчика, а флаг обращения сбрасывает. К андидатом на освобождение оказывается страница с наименьшим значением счетчика, как страница, к которой реже всего обращались. УПРАВЛЕНИЕ КОЛИЧЕСТВОМ СТРАНИЦ, ВЫДЕЛЕННЫХ ПРОЦЕССУ. МОДЕЛЬ РАБОЧЕГО МНОЖЕСТВА Трешинг (Thrashing) Хотя теоретически возможно уменьшить число кадров процесса до минимума, существует какое-то число активно используемых страниц, без которого процесс часто генерирует page faults. Высокая частота страничных нарушений называется трешинг. Часто результатом трешинга является снижение производительности вычислительной системы. Один из нежелательных сценариев развития событий может выглядеть следующим образом. При глобальном алгоритме замещения процесс, которому не хватает кадров, начинает отбирать кадры у других процессов, которые в свою очередь начинают заниматься тем же. В результате все процессы попадают в очередь запросов к устройству вторичной памяти (находятся в состоянии ожидания), а очередь процессов в состоянии готовности пустеет. Загрузка процессора снижается. Операционная система реагирует на это увеличением степени мультипрограммирования, что приводит к еще большему трешингу и дальнейшему снижению загрузки процессора. Таким образом, пропускная способность системы падает из-за трешинга. Эффект трешинга, возникающий при использовании глобальных алгоритмов, может быть ограничен за счет применения локальных алгоритмов замещения. При локальных алгоритмах замещения если даже один из процессов попал в трешинг, это не сказывается на других процессах. Однако он много времени проводит в очереди к устройству выгрузки, затрудняя подкачку страниц остальных процессов. Критическая ситуация типа трешинга возникает вне зависимости от конкретных алгоритмов замещения. Единственным алгоритмом, теоретически гарантирующим отсутствие трешинга, является рассмотренный выше не реализуемый на практике оптимальный алгоритм. Страничные демоны Подсистема виртуальной памяти работает производительно при наличии резерва свободных страничных кадров. Алгоритмы, обеспечивающие поддержку системы в состоянии отсутствия трешинга, реализованы в составе фоновых процессов (их часто называют демонами или сервисами), которые периодически "просыпаются" и инспектируют состояние памяти. Если свободных кадров оказывается мало, они могут сменить стратегию замещения. Их задача - поддерживать систему в состоянии наилучшей производительности. Программная поддержка сегментной модели памяти процесса Чаще всего виртуальная память процесса ОС разбивается на сегменты пяти типов: кода программы, данных, стека, разделяемый и сегмент файлов, отображаемых в память. Сегмент программного кода содержит только команды. Сегмент программного кода не модифицируется в ходе выполнения процесса, обычно страницы данного сегмента имеют атрибут read-only. Следствием этого является возможность использования одного экземпляра кода для разных процессов. Сегмент данных, содержащий переменные программы и сегмент стека, содержащий автоматические переменные, могут динамически менять свой размер (обычно данные в сторону увеличения адресов, а стек - в сторону уменьшения) и содержимое, должны быть доступны по чтению и записи и являются приватными сегментами процесса. С целью обобществления памяти между несколькими процессами создаются разделяемые сегменты, допускающие доступ по чтению и записи. Вариантом разделяемого сегмента может быть сегмент файла, отображаемого в память. Специфика таких сегментов состоит в том, что из них откачка осуществляется не в системную область выгрузки, а непосредственно в отображаемый файл. Реализация разделяемых сегментов основана на том, что логические страницы различных процессов связываются с одними и теми же страничными кадрами. 91. Файлы с точки зрения пользователя. Основные функции и интерфейс файловой системы. Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы организовать эффективную работу с данными, хранящимися во внешней памяти, и обеспечить пользователю удобный интерфейс при работе с такими данными. Организовать хранение информации на магнитном диске непросто. Это требует, например, хорошего знания устройства контроллера диска, особенностей работы с его регистрами. Непосредственное взаимодействие с диском - прерогатива компонента системы ввода-вывода ОС, называемого драйвером диска. Для того чтобы избавить пользователя компьютера от сложностей взаимодействия с аппаратурой, была придумана ясная абстрактная модель файловой системы. Операции записи или чтения файла концептуально проще, чем низкоуровневые операции работы с устройствами. Перечислим основные функции файловой системы. 1. Идентификация файлов. Связывание имени файла с выделенным ему пространством внешней памяти. 2. Распределение внешней памяти между файлами. Для работы с конкретным файлом пользователю не требуется иметь информацию о местоположении этого файла на внешнем носителе информации. Например, для того чтобы загрузить документ в редактор с жесткого диска, нам не нужно знать, на какой стороне какого магнитного диска, на каком цилиндре и в каком секторе находится данный документ. 3. Обеспечение надежности и отказоустойчивости. Стоимость информации может во много раз превышать стоимость компьютера. 4. Обеспечение защиты от несанкционированного доступа. 5. Обеспечение совместного доступа к файлам, так чтобы пользователю не приходилось прилагать специальных усилий по обеспечению синхронизации доступа. 6. Обеспечение высокой производительности. Иногда говорят, что файл - это поименованный набор связанной информации, записанной во вторичную память. Для большинства пользователей файловая система - наиболее видимая часть ОС. Она предоставляет механизм для онлайнового хранения и доступа как к данным, так и к программам для всех пользователей системы. С точки зрения пользователя, файл - единица внешней памяти, то есть данные, записанные на диск, должны быть в составе какого-нибудь файла . Общие сведения о файлах Имена файлов Файлы представляют собой абстрактные объекты. Их задача - хранить информацию, скрывая от пользователя детали работы с устройствами. Когда процесс создает файл, он дает ему имя. После завершения процесса файл продолжает существовать и через свое имя может быть доступен другим процессам. Правила именования файлов зависят от ОС. Многие ОС поддерживают имена из двух частей (имя+расширение), например progr.c ( файл, содержащий текст программы на языке Си) или autoexec.bat ( файл, содержащий команды интерпретатора командного языка). (до 255 символов). Типы файлов Важный аспект организации файловой системы и ОС - следует ли поддерживать и распознавать типы файлов. Если да, то это может помочь правильному функционированию ОС, например не допустить вывода на принтер бинарного файла. Основные типы файлов: регулярные (обычные) файлы и директории (справочники, каталоги ). Обычные файлы содержат пользовательскую информацию. Директории системные файлы, поддерживающие структуру файловой системы. В каталоге содержится перечень входящих в него файлов и устанавливается соответствие между файлами и их характеристиками ( атрибутами ). Мы будем рассматривать директории ниже. Обычные (или регулярные) файлы реально представляют собой набор блоков (возможно, пустой) на устройстве внешней памяти, на котором поддерживается файловая система. Такие файлы могут содержать как текстовую информацию (обычно в формате ASCII), так и произвольную двоичную (бинарную) информацию. Текстовые файлы содержат символьные строки, которые можно распечатать, увидеть на экране или редактировать обычным текстовым редактором. Другой тип файлов - нетекстовые, или бинарные, файлы. Обычно они имеют некоторую внутреннюю структуру. Например, исполняемый файл в ОС Unix имеет пять секций: заголовок, текст, данные, биты реаллокации и символьную таблицу. ОС выполняет файл, только если он имеет нужный формат. Другим примером бинарного файла может быть архивный файл. Типизация файлов не слишком строгая. Атрибуты файлов Кроме имени ОС часто связывают с каждым файлом и другую информацию, например дату модификации, размер и т. д. Эти другие характеристики файлов называются атрибутами. Операции над файлами Операционная система должна предоставить в распоряжение пользователя набор операций для работы с файлами, реализованных через системные вызовы. Создание файла, не содержащего данных. Смысл данного вызова - объявить, что файл существует, и присвоить ему ряд атрибутов. При этом выделяется место для файла на диске и вносится запись в каталог. Удаление файла и освобождение занимаемого им дискового пространства. Открытие файла. Перед использованием файла процесс должен его открыть. Цель данного системного вызова - разрешить системе проанализировать атрибуты файла и проверить права доступа к нему, а также считать в оперативную память список адресов блоков файла для быстрого доступа к его данным. Открытие файла является процедурой создания дескриптора или управляющего блока файла. Дескриптор (описатель) файла хранит всю информацию о нем. Иногда, в соответствии с парадигмой, принятой в языках программирования, под дескриптором понимается альтернативное имя файла или указатель на описание файла в таблице открытых файлов, используемый при последующей работе с файлом . Например, на языке Cи операция открытия файла fd=open(pathname,flags,modes); возвращает дескриптор fd, который может быть задействован при выполнении операций чтения ( read(fd,buffer,count); ) или записи. Закрытие файла. Если работа с файлом завершена, его атрибуты и адреса блоков на диске больше не нужны. В этом случае файл нужно закрыть, чтобы освободить место во внутренних таблицах файловой системы. Позиционирование. Дает возможность специфицировать место внутри файла, откуда будет производиться считывание (или запись) данных, то есть задать текущую позицию. Чтение данных из файла. Обычно это делается с текущей позиции. Пользователь должен задать объем считываемых данных и предоставить для них буфер в оперативной памяти. Запись данных в файл с текущей позиции. Если текущая позиция находится в конце файла, его размер увеличивается, в противном случае запись осуществляется на место имеющихся данных, которые, таким образом, теряются. Операции над директориями Создание директории. Вновь созданная директория включает записи с именами ' .' и ' ..', однако считается пустой. Удаление директории. Удалена может быть только пустая директория. Открытие директории для последующего чтения. Hапример, чтобы перечислить файлы, входящие в директорию, процесс должен открыть директорию и считать имена всех файлов, которые она включает. Закрытие директории после ее чтения для освобождения места во внутренних системных таблицах. Поиск. Данный системный вызов возвращает содержимое текущей записи в открытой директории. Вообще говоря, для этих целей может использоваться системный вызов Read, но в этом случае от программиста потребуется знание внутренней структуры директории. Получение списка файлов в каталоге. Переименование. Имена директорий можно менять, как и имена файлов. Создание файла. При создании нового файла необходимо добавить в каталог соответствующий элемент. Удаление файла. Удаление из каталога соответствующего элемента. Если удаляемый файл присутствует только в одной директории, то он вообще удаляется из файловой системы, в противном случае система ограничивается только удалением специфицируемой записи. Доступ к файлам происходит по 3 группам: Владелец (Owner). Группа (Group). Hабор пользователей, разделяющих файл и нуждающихся в типовом способе доступа к нему. Остальные (Univers). 92. Реализация файловой системы. Поддержка понятия логического блока диска, связывания имени файла и блоков его данных, разделение файлов и управление дисковым пространством. Общая структура файловой системы Нижний уровень - оборудование. Это в первую очередь магнитные диски с подвижными головками. Шаг движения пакета головок является дискретным, и каждому положению пакета головок логически соответствует цилиндр магнитного диска. Цилиндры делятся на дорожки (треки), а каждая дорожка размечается на одно и то же количество блоков (секторов) таким образом, что в каждый блок можно записать по максимуму одно и то же число байтов. Следовательно, для обмена с магнитным диском на уровне аппаратуры нужно указать номер цилиндра, номер поверхности, номер блока на соответствующей дорожке и число байтов, которое нужно записать или прочитать от начала этого блока. Таким образом, диски могут быть разбиты на блоки фиксированного размера и можно непосредственно получить доступ к любому блоку (организовать прямой доступ к файлам). Непосредственно с устройствами (дисками) взаимодействует часть ОС, называемая системой ввода-вывода. Система ввода-вывода предоставляет в распоряжение более высокоуровневого компонента ОС - файловой системы - используемое дисковое пространство в виде непрерывной последовательности блоков фиксированного размера. Система ввода-вывода имеет дело с физическими блоками диска, которые характеризуются адресом, например диск 2, цилиндр 75, сектор 11. Файловая система имеет дело с логическими блоками, каждый из которых имеет номер (от 0 или 1 до N). Размер логических блоков файла совпадает или является кратным размеру физического блока диска и может быть задан равным размеру страницы виртуальной памяти, поддерживаемой аппаратурой компьютера совместно с операционной системой. В структуре системы управления файлами можно выделить базисную подсистему, которая отвечает за выделение дискового пространства конкретным файлам, и более высокоуровневую логическую подсистему, которая использует структуру дерева директорий для предоставления модулю базисной подсистемы необходимой ей информации, исходя из символического имени файла. Она также ответственна за авторизацию доступа к файлам. Стандартный запрос на открытие (open) или создание (create) файла поступает от прикладной программы к логической подсистеме. Логическая подсистема, используя структуру директорий, проверяет права доступа и вызывает базовую подсистему для получения доступа к блокам файла. После этого файл считается открытым, он содержится в таблице открытых файлов, и прикладная программа получает в свое распоряжение дескриптор (или handle в системах Microsoft) этого файла. Дескриптор файла является ссылкой на файл в таблице открытых файлов и используется в запросах прикладной программы на чтение-запись из этого файла. Запись в таблице открытых файлов указывает через систему выделения блоков диска на блоки данного файла. Если к моменту открытия файл уже используется другим процессом, то есть содержится в таблице открытых файлов, то после проверки прав доступа к файлу может быть организован совместный доступ. При этом новому процессу также возвращается дескриптор - ссылка на файл в таблице открытых файлов. Далее в тексте подробно проанализирована работа наиболее важных системных вызовов. Управление Дисковым пространством Выделение непрерывной последовательности блоков. Файл храниться в виде непрерывной последовательности блоков, характеризующийся адресом и длиной. «+»: простота реализации (очевидно), хорошая производительность (так как для операции чтения требуется только одна операция позиционирования. После этого не нужно искать цилиндры и тратить время на ожидание поворота диска, поэтому данные могут считываться с максимальной скоростью) «-»: фрагментация (очевидно), невозможность записи, если размер файла не известен (бывает, что размера диска достаточно для записи файла, однако из-за фрагментации, есть вероятность, что не будет последовательного блока достаточной длины) Пример: CD. Связный список Запись в директории содержит указатель на первый и последний блок файла. Каждый блок содержит указатель на следующий блок. «+»: отсутствие фрагментации, нет необходимости знать размер. «-»: при доступе к файлу невозможно перейти к произвольному фрагменту, требуется место для указателей, ненадежность (если потеряется хотя бы один указатель, то файл невозможно будет прочитать, а дисковое пространство будет потеряно) Таблица отображения файлов Все указатели хранятся не в дисковых блоках, а в дисковой таблице файлов, называемой FAT = File Allocation Table «+»: надежность (очевидно) «-»: для современных жестких дисков таблица получается очень большой Индексные узлы С каждым файлом связывается небольшая таблица – индексный узел. Запись в директории относящаяся к файлу содержит адрес индексного узла. Первые несколько адресов блоков хранятся непосредственно в узле. Для больших файлов один из адресов индекса узла указывает на блок косвенной адресации, который содержит адреса дополнительных блоков. Если этого недостаточно используется 2х или 3х уровневая косвенная адресация. Логические блоки: Размер блока Размер логического блока играет важную роль. В некоторых системах (Unix) он может быть задан при форматировании диска. Небольшой размер блока будет приводить к тому, что каждый файл будет содержать много блоков. Чтение блока осуществляется с задержками на поиск и вращение, таким образом, файл из многих блоков будет читаться медленно. Большие блоки обеспечивают более высокую скорость обмена с диском, но из-за внутренней фрагментации (каждый файл занимает целое число блоков, и в среднем половина последнего блока пропадает) снижается процент полезного дискового пространства. Для систем со страничной организацией памяти характерна сходная проблема с размером страницы. Проведенные исследования показали, что большинство файлов имеют небольшой размер. Например, в Unix приблизительно 85% файлов имеют размер менее 8 Кбайт и 48% - менее 1 Кбайта. Можно также учесть, что в системах с виртуальной памятью желательно, чтобы единицей пересылки диск-память была страница (наиболее распространенный размер страниц памяти - 4 Кбайта). Отсюда обычный компромиссный выбор блока размером 512 байт, 1 Кбайт, 2 Кбайт, 4 Кбайт. Структура файловой системы на диске В начале раздела находится суперблок, содержащий общее описание файловой системы, например: тип файловой системы; размер файловой системы в блоках; размер массива индексных узлов ; размер логического блока. Описанные структуры данных создаются на диске в результате его форматирования (например, утилитами format, makefs и др.). Их наличие позволяет обращаться к данным на диске как к файловой системе, а не как к обычной последовательности блоков. В файловых системах современных ОС для повышения устойчивости поддерживается несколько копий суперблока. В некоторых версиях Unix суперблок включал также и структуры данных, управляющие распределением дискового пространства, в результате чего суперблок непрерывно подвергался модификации, что снижало надежность файловой системы в целом. Выделение структур данных, описывающих дисковое пространство, в отдельную часть является более правильным решением. Массив индексных узлов (ilist) содержит список индексов, соответствующих файлам данной файловой системы. Размер массива индексных узлов определяется администратором при установке системы. Максимальное число файлов, которые могут быть созданы в файловой системе, определяется числом доступных индексных узлов. В блоках данных хранятся реальные данные файлов. Размер логического блока данных может задаваться при форматировании файловой системы. Заполнение диска содержательной информацией предполагает использование блоков хранения данных для файлов директорий и обычных файлов и имеет следствием модификацию массива индексных узлов и данных, описывающих пространство диска. Отдельно взятый блок данных может принадлежать одному и только одному файлу в файловой системе. 93. Основные физические и логические принципы организации ввода-вывода в вычислительных системах. Физические принципы организации ввода-вывода Общие сведения об архитектуре компьютера В современных компьютерах выделяют как минимум три шины: шину данных, состоящую из линий данных и служащую для передачи информации между процессором и памятью, процессором и устройствами ввода-вывода, памятью и внешними устройствами; адресную шину, состоящую из линий адреса и служащую для задания адреса ячейки памяти или указания устройства ввода-вывода, участвующих в обмене информацией; шину управления, состоящую из линий управления локальной магистралью и линий ее состояния, определяющих поведение локальной магистрали . В некоторых архитектурных решениях линии состояния выносятся из этой шины в отдельную шину состояния. Количество линий, входящих в состав шины, принято называть разрядностью ( шириной ) этой шины. Ширина адресной шины, например, определяет максимальный размер оперативной памяти, которая может быть установлена в вычислительной системе. Ширина шины данных определяет максимальный объем информации, которая за один раз может быть получена или передана по этой шине. Операции обмена информацией осуществляются при одновременном участии всех шин. Рассмотрим, к примеру, действия, которые должны быть выполнены для передачи информации из процессора в память. В простейшем случае необходимо выполнить три действия. На адресной шине процессор должен выставить сигналы, соответствующие адресу ячейки памяти, в которую будет осуществляться передача информации. На шину данных процессор должен выставить сигналы, соответствующие информации, которая должна быть записана в память. После выполнения действий 1 и 2 на шину управления выставляются сигналы, соответствующие операции записи и работе с памятью, что приведет к занесению необходимой информации по нужному адресу. Современные вычислительные системы могут иметь разнообразную архитектуру, множество шин и магистралей, мосты для перехода информации от одной шины к другой и т. п. Для нас сейчас важными являются только следующие моменты. Устройства ввода-вывода подключаются к системе через порты. Могут существовать два адресных пространства: пространство памяти и пространство ввода-вывода. Порты, как правило, отображаются в адресное пространство ввода-вывода и иногда – непосредственно в адресное пространство памяти. Использование того или иного адресного пространства определяется типом команды, выполняемой процессором, или типом ее операндов. Физическим управлением устройством ввода-вывода, передачей информации через порт и выставлением некоторых сигналов на магистрали занимается контроллер устройства. Структура контроллера устройства Контроллеры устройств ввода-вывода весьма различны как по своему внутреннему строению, так и по исполнению (от одной микросхемы до специализированной вычислительной системы со своим процессором, памятью и т. д.), поскольку им приходится управлять совершенно разными приборами. Не вдаваясь в детали этих различий, мы выделим некоторые общие черты контроллеров, необходимые им для взаимодействия с вычислительной системой. Обычно каждый контроллер имеет по крайней мере четыре внутренних регистра, называемых регистрами состояния , управления, входных данных и выходных данных. Для доступа к содержимому этих регистров вычислительная система может использовать один или несколько портов, что для нас не существенно. Для простоты изложения будем считать, что каждому регистру соответствует свой порт. Регистр состояния содержит биты, значение которых определяется состоянием устройства ввода-вывода и которые доступны только для чтения вычислительной системой. Эти биты индицируют завершение выполнения текущей команды на устройстве ( бит занятости ), наличие очередного данного в регистре выходных данных ( бит готовности данных ), возникновение ошибки при выполнении команды ( бит ошибки ) и т. д. Регистр управления получает данные, которые записываются вычислительной системой для инициализации устройства ввода-вывода или выполнения очередной команды, а также изменения режима работы устройства. Часть битов в этом регистре может быть отведена под код выполняемой команды, часть битов будет кодировать режим работы устройства, бит готовности команды свидетельствует о том, что можно приступить к ее выполнению. Регистр выходных данных служит для помещения в него данных для чтения вычислительной системой, а регистр входных данных предназначен для помещения в него информации, которая должна быть выведена на устройство. Обычно емкость этих регистров не превышает ширину линии данных (а чаще всего меньше ее), хотя некоторые контроллеры могут использовать в качестве регистров очередь FIFO для буферизации поступающей информации. Опрос устройств и прерывания. Построив модель контроллера и представляя себе, что скрывается за словами "прочитать информацию из порта" и "записать информацию в порт", мы готовы к рассмотрению процесса взаимодействия устройства и процессора. Как и в предыдущих случаях, примером нам послужит команда записи, теперь уже записи или вывода данных на внешнее устройство. В нашей модели для вывода информации, помещающейся в регистр входных данных, без проверки успешности вывода процессор и контроллер должны связываться следующим образом. Процессор в цикле читает информацию из порта регистра состояний и проверяет значение бита занятости. Если бит занятости установлен, то это означает, что устройство еще не завершило предыдущую операцию, и процессор уходит на новую итерацию цикла. Если бит занятости сброшен, то устройство готово к выполнению новой операции, и процессор переходит на следующий шаг. 1. Процессор записывает код команды вывода в порт регистра управления. 2. Процессор записывает данные в порт регистра входных данных. 3. Процессор устанавливает бит готовности команды. В следующих шагах процессор не задействован. 4. Когда контроллер замечает, что бит готовности команды установлен, он устанавливает бит занятости. 5. Контроллер анализирует код команды в регистре управления и обнаруживает, что это команда вывода. Он берет данные из регистра входных данных и инициирует выполнение команды. 6. После завершения операции контроллер обнуляет бит готовности команды. 7. При успешном завершении операции контроллер обнуляет бит ошибки в регистре состояния, при неудачном завершении команды – устанавливает его. 8. Контроллер сбрасывает бит занятости. При необходимости вывода новой порции информации все эти шаги повторяются. Если процессор интересует, корректно или некорректно была выведена информация, то после шага 4 он должен в цикле считывать информацию из порта регистра состояний до тех пор, пока не будет сброшен бит занятости устройства, после чего проанализировать состояние бита ошибки. Как видим, на первом шаге (и, возможно, после шага 4) процессор ожидает освобождения устройства, непрерывно опрашивая значение бита занятости. Такой способ взаимодействия процессора и контроллера получил название polling или, в русском переводе, способа опроса устройств. Если скорости работы процессора и устройства ввода-вывода примерно равны, то это не приводит к существенному уменьшению полезной работы, совершаемой процессором. Если же скорость работы устройства существенно меньше скорости процессора, то указанная техника резко снижает производительность системы и необходимо применять другой архитектурный подход. Для того чтобы процессор не дожидался состояния готовности устройства вводавывода в цикле, а мог выполнять в это время другую работу, необходимо, чтобы устройство само умело сигнализировать процессору о своей готовности. Технический механизм, который позволяет внешним устройствам оповещать процессор о завершении команды вывода или команды ввода, получил название механизма прерываний . Логические принципы организации ввода-вывода Структура системы ввода-вывода В области технического обеспечения удалось выделить несколько основных принципов взаимодействия внешних устройств с вычислительной системой, т. е. создать единый интерфейс для их подключения, возложив все специфические действия на контроллеры самих устройств. Тем самым конструкторы вычислительных систем переложили все хлопоты, связанные с подключением внешней аппаратуры, на разработчиков самой аппаратуры, заставляя их придерживаться определенного стандарта. Похожий подход оказался продуктивным и в области программного подключения устройств ввода-вывода. Мы можем разделить устройства на относительно небольшое число типов, отличающихся по набору операций, которые могут быть ими выполнены, считая все остальные различия несущественными. Мы можем затем специфицировать интерфейсы между ядром операционной системы, осуществляющим некоторую общую политику ввода-вывода, и программными частями, непосредственно управляющими устройствами, для каждого из таких типов. Более того, разработчики операционных систем получают возможность освободиться от написания и тестирования драйверов, передав эту деятельность производителям самих внешних устройств. Фактически мы приходим к использованию принципа уровневого или слоеного построения системы управления вводом-выводом для операционной системы. Два нижних уровня этой слоеной системы составляет hardware: сами устройства, непосредственно выполняющие операции, и их контроллеры, служащие для организации совместной работы устройств и остальной вычислительной системы. Следующий уровень составляют драйверы устройств ввода-вывода, скрывающие от разработчиков операционных систем особенности функционирования конкретных приборов и обеспечивающие четко определенный интерфейс между hardware и вышележащим уровнем – уровнем базовой подсистемы ввода-вывода, которая, в свою очередь, предоставляет механизм взаимодействия между драйверами и программной частью вычислительной системы в целом. 94. Особенности взаимодействия процессов, выполняющихся на разных операционных системах. Функции сетевых частей операционных систем. Все цели объединения компьютеров в вычислительные сети не могут быть достигнуты без организации взаимодействия процессов на различных вычислительных системах. Будь то доступ к разделяемым ресурсам или общение пользователей через сеть – в основе всего этого лежит взаимодействие удаленных процессов, т. е. процессов, которые находятся под управлением физически разных операционных систем. 1. Взаимодействие удаленных процессов принципиально отличается от ранее рассмотренных случаев. Общей памяти у различных компьютеров физически нет. Удаленные процессы могут обмениваться информацией, только передавая друг другу пакеты данных определенного формата (в виде последовательностей электрических или электромагнитных сигналов, включая световые) через некоторый физический канал связи или несколько таких каналов, соединяющих компьютеры. Поэтому в основе всех средств взаимодействия удаленных процессов лежит передача структурированных пакетов информации или сообщений. 2. При взаимодействии локальных процессов и процесс–отправитель информации, и процессполучатель функционируют под управлением одной и той же операционной системы. При организации сети можно обеспечить прямую связь между всеми вычислительными комплексами, соединив каждый из них со всеми остальными посредством прямых физических линий связи или подключив все комплексы к общей шине (по примеру шин данных и адреса в компьютере). Однако такая сетевая топология не всегда возможна по ряду физических и финансовых причин. Поэтому во многих случаях информация между удаленными процессами в сети передается не напрямую, а через ряд процессов-посредников, "обитающих" на вычислительных комплексах, не являющихся компьютерами отправителя и получателя и работающих под управлением собственных операционных систем. Однако и при отсутствии процессовпосредников удаленные процесс-отправитель и процесс-получатель функционируют под управлением различных операционных систем, часто имеющих принципиально разное строение. 3. Протяженные сетевые линии связи подвержены разнообразным физическим воздействиям, приводящим к искажению передаваемых по ним физических сигналов (помехи в эфире) или к полному отказу линий (мыши съели кабель). Даже при отсутствии внешних помех передаваемый сигнал затухает по мере удаления от точки отправления, приближаясь по интенсивности к внутренним шумам линий связи. Промежуточные вычислительные комплексы сети, участвующие в доставке информации, не застрахованы от повреждений или внезапной перезагрузки операционной системы. Поэтому вычислительные сети должны организовываться исходя из предпосылок ненадежности доставки физических пакетов информации. 4. При организации взаимодействия удаленных процессов участники этого взаимодействия должны иметь уникальные адреса в рамках всей сети. 5. Физическая линия связи, соединяющая несколько вычислительных комплексов, является разделяемым ресурсом для всех процессов комплексов, которые хотят ее использовать. Если два процесса попытаются одновременно передать пакеты информации по одной и той же линии, то в результате интерференции физических сигналов, представляющих эти пакеты, произойдет взаимное искажение передаваемых данных. Для того чтобы избежать возникновения такой ситуации (race condition!) и обеспечить эффективную совместную работу вычислительных систем, должны выполняться условия взаимоисключения, прогресса и ограниченного ожидания при использовании общей линии связи, но уже не на уровне отдельных процессов операционных систем, а на уровне различных вычислительных комплексов в целом. Формальный перечень правил, определяющих последовательность и формат сообщений, которыми обмениваются сетевые компоненты различных вычислительных систем, лежащие на одном уровне, мы и будем называть сетевым протоколом . Всю совокупность вертикальных и горизонтальных протоколов (интерфейсов и сетевых протоколов ) в сетевых системах, построенных по "слоеному" принципу, достаточную для организации взаимодействия удаленных процессов, принято называть семейством протоколов или стеком протоколов. Сети, построенные на основе разных стеков протоколов, могут быть объединены между собой с использованием вычислительных устройств, осуществляющих трансляцию из одного стека протоколов в другой, причем на различных уровнях слоеной модели Уровни OSI: Уровень 1 – физический. Этот уровень связан с работой hardware. На нем определяются физические аспекты передачи информации по линиям связи, такие как: напряжения, частоты, природа передающей среды, способ передачи двоичной информации по физическому носителю, вплоть до размеров и формы используемых разъемов. В компьютерах за поддержку физического уровня обычно отвечает сетевой адаптер. Уровень 2 – канальный. Этот уровень отвечает за передачу данных по физическому уровню без искажений между непосредственно связанными узлами сети. На нем формируются физические пакеты данных для реальной доставки по физическому уровню . Протоколы канального уровня реализуются совместно сетевыми адаптерами и их драйверами (понятие драйвера рассматривалось в лекции 13). Уровень 3 – сетевой. Сетевой уровень несет ответственность за доставку информации от узла-отправителя к узлу-получателю. На этом уровне частично решаются вопросы адресации, осуществляется выбор маршрутов следования пакетов данных, решаются вопросы стыковки сетей, а также управление скоростью передачи информации для предотвращения перегрузок в сети. Уровень 4 – транспортный. Регламентирует передачу данных между удаленными процессами. Обеспечивает доставку информации вышележащим уровням с необходимой степенью надежности, компенсируя, быть может, ненадежность нижележащих уровней, связанную с искажением и потерей данных или доставкой пакетов в неправильном порядке. Наряду с сетевым уровнем может управлять скоростью передачи данных и частично решать проблемы адресации. Уровень 5 – сеансовый. Координирует взаимодействие связывающихся процессов. Основная задача – предоставление средств синхронизации взаимодействующих процессов. Такие средства синхронизации позволяют создавать контрольные точки при передаче больших объемов информации. В случае сбоя в работе сети передачу данных можно возобновить с последней контрольной точки, а не начинать заново. Уровень 6 – уровень представления данных. Отвечает за форму представления данных, перекодирует текстовую и графическую информацию из одного формата в другой, обеспечивает ее сжатие и распаковку, шифрование и декодирование. Уровень 7 – прикладной. Служит для организации интерфейса между пользователем и сетью. На этом уровне реализуются такие сервисы, как удаленная передача данных, удаленный терминальный доступ, почтовая служба и работа во Всемирной паутине (Web-браузеры). Организация взаимодействия удаленных процессов требует от сетевых частей операционных систем поддержки определенных протоколов. Сетевые средства связи обычно строятся по "слоеному" принципу (уровни OSI). Формальный перечень правил, определяющих последовательность и формат сообщений, которыми обмениваются сетевые компоненты различных вычислительных систем, лежащие на одном уровне, называется сетевым протоколом. Каждый уровень слоеной системы может взаимодействовать непосредственно только со своими вертикальными соседями, руководствуясь четко закрепленными соглашениями – вертикальными протоколами или интерфейсами. Вся совокупность интерфейсов и сетевых протоколов в сетевых системах, построенных по слоеному принципу, достаточная для организации взаимодействия удаленных процессов, образует семейство протоколов или стек протоколов. 95. Защитные механизмы операционных систем. Организация идентификации и аутентификации, авторизации и аудита. Идентификация и аутентификация Наиболее распространенным способом контроля доступа является процедура регистрации. Обычно каждый пользователь в системе имеет уникальный идентификатор. Идентификаторы пользователей применяются с той же целью, что и идентификаторы любых других объектов, файлов, процессов. Идентификация заключается в сообщении пользователем своего идентификатора. Для того чтобы установить, что пользователь именно тот, за кого себя выдает, то есть что именно ему принадлежит введенный идентификатор, в информационных системах предусмотрена процедура аутентификации (authentication, опознавание, в переводе с латинского означает "установление подлинности"), задача которой - предотвращение доступа к системе нежелательных лиц. Обычно аутентификация базируется на одном или более из трех пунктов: то, чем пользователь владеет (ключ или магнитная карта); то, что пользователь знает (пароль); атрибуты пользователя (отпечатки пальцев, подпись, голос). Пароли, уязвимость паролей Наиболее простой подход к аутентификации - применение пользовательского пароля. Когда пользователь идентифицирует себя при помощи уникального идентификатора или имени, у него запрашивается пароль. Если пароль, сообщенный пользователем, совпадает с паролем, хранящимся в системе, система предполагает, что пользователь легитимен. Пароли часто используются для защиты объектов в компьютерной системе в отсутствие более сложных схем защиты. Недостатки паролей связаны с тем, что трудно сохранить баланс между удобством пароля для пользователя и его надежностью. Пароли могут быть угаданы, случайно показаны или нелегально переданы авторизованным пользователем неавторизованному. Есть два общих способа угадать пароль. Один связан со сбором информации о пользователе. Люди обычно используют в качестве паролей очевидную информацию (скажем, имена животных или номерные знаки автомобилей). Другой способ - попытаться перебрать все наиболее вероятные комбинации букв, чисел и знаков пунктуации (атака по словарю). Несмотря на все это, пароли распространены, поскольку они удобны и легко реализуемы. Шифрование пароля Для хранения секретного списка паролей на диске во многих ОС используется криптография. Система задействует одностороннюю функцию, которую просто вычислить, но для которой чрезвычайно трудно (разработчики надеются, что невозможно) подобрать обратную функцию. Хранятся только кодированные пароли. В процессе аутентификации представленный пользователем пароль кодируется и сравнивается с хранящимися на диске. Таким образом, файл паролей нет необходимости держать в секрете. Авторизация После успешной регистрации система должна осуществлять авторизацию (authorization) - предоставление субъекту прав на доступ к объекту. Средства авторизации контролируют доступ легальных пользователей к ресурсам системы, предоставляя каждому из них именно те права, которые были определены администратором, а также осуществляют контроль возможности выполнения пользователем различных системных функций. Система контроля базируется на общей модели, называемой матрицей доступа. Различают дискреционный (избирательный) способ управления доступом и полномочный (мандатный). При дискреционном доступе, подробно рассмотренном ниже, определенные операции над конкретным ресурсом запрещаются или разрешаются субъектам или группам субъектов. С концептуальной точки зрения текущее состояние прав доступа при дискреционном управлении описывается матрицей, в строках которой перечислены субъекты, в столбцах - объекты, а в ячейках - операции, которые субъект может выполнить над объектом. Полномочный подход заключается в том, что все объекты могут иметь уровни секретности, а все субъекты делятся на группы, образующие иерархию в соответствии с уровнем допуска к информации. Иногда это называют моделью многоуровневой безопасности, которая должна обеспечивать выполнение следующих правил. Простое свойство секретности. Субъект может читать информацию только из объекта, уровень секретности которого не выше уровня секретности субъекта. Генерал читает документы лейтенанта, но не наоборот. *-свойство. Субъект может записывать информацию в объекты только своего уровня или более высоких уровней секретности. Генерал не может случайно разгласить нижним чинам секретную информацию. Большинство операционных систем реализуют именно дискреционное управление доступом. Матрица доступа - Модель безопасности, в которой по столбцам хранится: Список прав доступа Мандаты возможностей(список допустимых операций) Другие способы контроля доступа Аудит системы защиты Аудит, таким образом, заключается в регистрации специальных данных о различных типах событий, происходящих в системе и так или иначе влияющих на состояние безопасности компьютерной системы. К числу таких событий обычно причисляют следующие: вход или выход из системы; операции с файлами (открыть, закрыть, переименовать, удалить); обращение к удаленной системе; смена привилегий или иных атрибутов безопасности (режима доступа, уровня благонадежности пользователя и т. п.). Если фиксировать все события, объем регистрационной информации, скорее всего, будет расти слишком быстро, а ее эффективный анализ станет невозможным. Следует предусматривать наличие средств выборочного протоколирования как в отношении пользователей, когда слежение осуществляется только за подозрительными личностями, так и в отношении событий. Слежка важна в первую очередь как профилактическое средство. Можно надеяться, что многие воздержатся от нарушений безопасности, зная, что их действия фиксируются. Помимо протоколирования, можно периодически сканировать систему на наличие слабых мест в системе безопасности. Такое сканирование может проверить разнообразные аспекты системы: короткие или легкие пароли; неавторизованные set-uid программы, если система поддерживает этот механизм; неавторизованные программы в системных директориях; долго выполняющиеся программы; нелогичная защита как пользовательских, так и системных директорий и файлов. Примером нелогичной защиты может быть файл, который запрещено читать его автору, но в который разрешено записывать информацию постороннему пользователю; потенциально опасные списки поиска файлов, которые могут привести к запуску "троянского коня"; изменения в системных программах, обнаруженные при помощи контрольных сумм. 96. История семейства операционных систем UNIX/Linux. Генеалогия семейства операционных систем и некоторые известные версии UNIX. Операционные системы фирмы Microsoft. Отличия семейства UNIX/Linux от операционных систем Windows. История Unix Операционная система UNIX была создана еще до эры коммерческого софта. Она писалась инженерами, как система "для себя". Поэтому в нее были заложены передовые на то время концепции. В дальнейшем своем развитии при добавлении новых черт, обычно считалось, что делать нужно "правильно". Т.е. например если нужно было выбирать из двух решений, одно из которых было с инженерной точки зрения "неправильным", например повышало производительность сегодня, но могло принести затруднения в дальнейшем, как правило, такое решение отвергалось и выбиралось "правильное" решение, пусть и с определенной потерей производительности. Первые версии UNIX были написаны на Ассеблере, затем система была переписана на СИ. Это дало системе уникальную переносимость. На PC UNIX был портирован, а точнее заново написан (Linux) сразу, как только развитие PC, а точнее выпуск PC на процессоре i386, позволило это сделать. В 1985 году стартовал проект POSIX. Это стандарт на интерфейсы UNIX-подобных ОС. Во многом благодаря наличию такого стандарта, так быстро смог появится на свет и достигнуть зрелости Linux — свободная воплощение UNIX. Развитие интернета с самого начала и до нашего времени неразрывно связано с серверами под управлением ОС UNIX. Сначала с коммерческими, а теперь все больше и больше со свободными. С точки зрения коммерциализации развитие UNIX можно разделить на три этапа. Некоммерческое распространение в университетах. Распространение коммерческих UNIX систем. Появление свободных реализаций (Linux, FreeBSD) и вытеснение коммерческих систем (настоящий момент). До появления системы X Window System UNIX была системой с текстовым интерфейсом, затем добавился графический, но традиционно текстовый интерфейс сохраняет важное значение. Очень важно то, что UNIX с самого начала был многозадачной и многопользовательской системой. Т.е. на одной машине могут работать сразу несколько пользователей, и выполняться несколько программ одновременно. Фирменной чертой всех UNIX-подобных ОС была и остается надежность. Табличка: Наиболее известные ОС: Ubuntu, Gentoo, Android, RedHat, Solaris, FreeBSD OC фирмы Microsoft: Windows 3.11, Windows 95, Windows 98, Windows ME, Windows 4.0, Windows 2000, Windows 2003, Windows Xp, Windows Vista, Windows 2008, Windows 7, Windows 2008 R2, Windows 8 Сравнение UNIX Поскольку UNIX разрабатывалась инженерами и для инженеров, в ее основу была положена концепция toolbox (ящик с инструментами). Что это значит? Это значит, что при создании софта и встроенных утилит для UNIX не делали универсальные программы, каждая из которых выполняла бы внутри себя все, необходимые пользователю действия, а для каждой небольшой задачи создавалась своя утилита, которая выполняла свою задачу, только одну, но делала это хорошо. Дело пользователя было при помощи набора этих утилит выполнить операции, которые ему нужно сделать. При этом из этого набора утилит можно составлять цепочки и последовательности действий, что позволяет легко автоматизировать рутинные, часто повторяющиеся операции. Для того, чтобы утилиты могли обмениваться между собой результатами своей работы, в качестве носителя информации был выбран текстовый файл. Для обмена информацией между утилитами были изобретены "pipes" (трубы). При помощи "труб" информация с выхода одной команды может быть передана на вход второй, та ее обрабатывает, выдает свою информацию на выход, которая может быть передана на вход третьей и так далее. В общем, в результате UNIX позволяет пользователю легко создавать простые программные комплексы, выполняющие повторяющиеся действия как по команде пользователя, так и в автономном режиме. Такой подход имеет как плюсы, так и недостатки. С одной стороны он дает больший контроль над системой, гибкость в настройке, но при этом повышается порог вхождения в систему, или говоря простыми словами, прежде, чем что нибудь сделать, как правило, нужно изучить основы. Windows В Windows доминирует другая концепция. Эта концепция — максимально облегчить вхождение пользователя в задачу. Программы в Windows как правило большие, на каждое действие есть пункт в меню или иконка. В системы программы связываются как правило с большим трудом. Ухудшает ситуацию о построением комплексов на базе Windows то, что большинство программ — коммерческие и используют свои, бинарные и как правило закрытые форматы данных и файлов. Такой подход превращает компьютер в устройство, которое может выполнять ограниченный изготовителем ПО набор функций, в пределе в этакий своеобразный "тостер", который выполняет только то, что задумал его изготовитель. Плюс такого подхода — легкость вхождения неподготовленного пользователя. Минус — то, что обманутый кажущейся легкостью пользователь вообще не хочет ничему учиться и не выполнять необходимых действий. На поводу идут и производители софта. Это одна из причин такого обилия документов отформатированных пробелами, пренебрежения безопасностью и как следствие вирусных эпидемий. 97. Основные понятия, связанные с интерфейсом операционных систем. Графический интерфейс пользователя в семействе UNIX/Linux. Интерфейс в широком смысле – определенная стандартами граница между взаимодействующими независимыми объектами. Интерфейс задает параметры, процедуры и характеристики взаимодействия объектов. 1. 2. 3. Интерфейс командной строки WIMP-интерфейс (Window – окно, Image – образ, Menu – меню, Pointer – указатель). SILK-интерфейс (Speech – речь, Image – образ, Language – язык, Knowledge – знание). Первые операционные системы фирмы Microsoft для персональных компьютеров IBM PC (они назывались MS DOS) также поддерживали командный режим, схожий с другими системами. Строка, в которой набирались команды, была схожей с приведенными выше. Сегодня командный режим операционных систем обеспечивается эмуляторами cmd.exe (для 32-х разрядного режима) или command.com (для 16-х разрядного режима). В графическом режиме семейства UNIX/Linux командная строка эмулируется программой Терминал (xterm). WIMP-интерфейс (Window – окно, Image – образ, Menu – меню, Pointer – указатель). Характерной особенностью этого вида интерфейса является то, что диалог с пользователем ведется не с помощью команд, а с помощью графических образов – меню, окон, других элементов. Хотя и в этом интерфейсе подаются команды машине, но это делается "опосредованно", через графические образы. Этот вид интерфейса реализован на двух уровнях технологий: простой графический интерфейс и "чистый" WIMP-интерфейс. SILK-интерфейс (Speech – речь, Image – образ, Language – язык, Knowledge – знание). Этот вид интерфейса наиболее приближен к обычной, человеческой форме общения. В рамках этого интерфейса идет обычный "разговор" человека и компьютера. При этом компьютер находит для себя команды, анализируя человеческую речь и находя в ней ключевые фразы. Результат выполнения команд он также преобразует в понятную человеку форму. Этот вид интерфейса наиболее требователен к аппаратным ресурсам компьютера, и поэтому его применяют в основном для военных целей. Первое появление графического интерфейса следует связывать с фирмой XEROX. Графический интерфейс пользователя в семействе UNIX/Linux 1987 году ряд фирм решили создать единый стандарт оконного интерфейса для UNIX и для этого основали X Consortium ("Консорциум X"). В нем приняли участие IBM, DEC, HP и другие компании. Этот проект возник в противовес объединению AT&T и Sun. С 1997 X Consortium преобразовалась в "Открытую группу Х" (X fortheOpenGroup) [16]. Информацию о деятельности этой организации (ее современное имя X.Org Foundation) можно получить в Интернете. Трехмерный графический интерфейс появился сравнительно недавно. Но самые последние версии популярных операционных систем реализуют его. Это относится к разновидностям Linux, Mac OS и версий Microsoft начиная с Vista. Основные понятия системы X Window X Windowsystem (или просто X Window, а теперь часто и Х) – графическая среда пользователя, поддерживающая одновременное выполнение многих программ в сети. В основе X Window – библиотека графических программ, используемых для создания GUI. Достоинством системы X Window является ее мобильность (она не связана с конкретной операционной системой и не рассчитана на специфическое техническое обеспечение). Работа Х-системы основана на специфической модели клиент/сервер. В традиционной модели "клиент-сервер" с пользователем взаимодействует клиентская часть. В системе же X Window с пользователем взаимодействует Xсервер. Он отвечает за вывод информации на экран пользователя и получение им команд. Такой сервер как бы "владеет" аппаратурой пользователя (называемой Xтерминал) и представляет этот ресурс программам – клиентам. Именно они формируют изображение, выводимое на экране. При инициализации X Windowsystem первым шагом будет загрузка X-сервера. Об этом можно узнать по появлению на сером экране в центре указателя мыши в виде крестика. Но для окончательного вывода на экран сформированного программой клиентом изображения одного X-сервера мало. Для этого еще необходим менеджер окон. Таким образом, система X Window представляет собой комплекс взаимодействующих компонент. X Window в Linux Графический интерфейс семейства UNIX/Linux похож на интерфейс других систем, но имеет отличия. Он поддерживает метафору рабочего стола. Но в отличие от некоторых систем имеет нескольких рабочих столов, которые иногда называются еще и "рабочие места". Их количество можно изменять. Хотя графический UNIX зародился раньше, чем у других операционных систем, сейчас работа с использованием GUI аналогична у Linux и Windows. Пользователь работает с приложением в окне, имеющем прямоугольную форму. Последний содержит стандартные элементы – строка заголовка, главное меню, панели инструментов и т.д. В X Windows управление окнами приложений, их элементами выполняет компонент, называемый "менеджер окон" (иногда используют название "оконные менеджеры" или "диспетчер окон"). Может быть задействовано несколько диспетчеров окон. Но сегодня пользователи редко выбирают менеджеры окон. Им представляются интегрированные графические среды. Две наиболее распространенные из них – KDE и GNOME – будут коротко рассмотрены далее. Но сначала приведем список инструментов пользователя. На странице Википедии "Менеджер окон X WindowSystem" приводятся такие списки. Интерфейс пользователя в UNIXподобных системах: 1. среды рабочего стола: CDE, EDE, etoile, GNOME, JDS, KDE, LXDE, Mezzo, OpenWindows, ROX, Xfce, Xpde; 2. оконные менеджеры: AfterStep, Awesome, Blackbox, CTWM, dwm, Enlightenment, Fluxbox, FVWM, IceWM, JWM, Openbox, Sawfish, twm, WindowMaker, wmii; 3. командные оболочки: ash, Bash, BusyBox, csh, dash, esshell, fish, ksh, psh, rc, rsh, Sash, Scsh, sh, tcsh, Thompsonshell, zsh и прочие. Приводятся три категории: среды рабочего стола, оконные менеджеры и командные оболочки. Последние обеспечивают режим командной строки. Как видим, их много. Название первой образовано от английского shell (оболочка). В разных вариантах Linux распространена оболочка, имя которой Bash образовано от Bornagainshell (разработана Born). 98. История X Windowsystem. Основные понятия системы X Window. X Window в Linux. Интегрированная графическая среда KDE. Интегрированная графическая среда GNOME. Графический интерфейс пользователя в семействе UNIX/Linux 1987 году ряд фирм решили создать единый стандарт оконного интерфейса для UNIX и для этого основали X Consortium ("Консорциум X"). В нем приняли участие IBM, DEC, HP и другие компании. Этот проект возник в противовес объединению AT&T и Sun. С 1997 X Consortium преобразовалась в "Открытую группу Х" (X fortheOpenGroup) [16]. Информацию о деятельности этой организации (ее современное имя X.Org Foundation) можно получить в Интернете. Трехмерный графический интерфейс появился сравнительно недавно. Но самые последние версии популярных операционных систем реализуют его. Это относится к разновидностям Linux, Mac OS и версий Microsoft начиная с Vista. Основные понятия системы X Window X Windowsystem (или просто X Window, а теперь часто и Х) – графическая среда пользователя, поддерживающая одновременное выполнение многих программ в сети. В основе X Window – библиотека графических программ, используемых для создания GUI. Достоинством системы X Window является ее мобильность (она не связана с конкретной операционной системой и не рассчитана на специфическое техническое обеспечение). Работа Х-системы основана на специфической модели клиент/сервер. В традиционной модели "клиент-сервер" с пользователем взаимодействует клиентская часть. В системе же X Window с пользователем взаимодействует Xсервер. Он отвечает за вывод информации на экран пользователя и получение им команд. Такой сервер как бы "владеет" аппаратурой пользователя (называемой Xтерминал) и представляет этот ресурс программам – клиентам. Именно они формируют изображение, выводимое на экране. При инициализации X Windowsystem первым шагом будет загрузка X-сервера. Об этом можно узнать по появлению на сером экране в центре указателя мыши в виде крестика. Но для окончательного вывода на экран сформированного программой клиентом изображения одного X-сервера мало. Для этого еще необходим менеджер окон. Таким образом, система X Window представляет собой комплекс взаимодействующих компонент. X Window в Linux Графический интерфейс семейства UNIX/Linux похож на интерфейс других систем, но имеет отличия. Он поддерживает метафору рабочего стола. Но в отличие от некоторых систем имеет нескольких рабочих столов, которые иногда называются еще и "рабочие места". Их количество можно изменять. Хотя графический UNIX зародился раньше, чем у других операционных систем, сейчас работа с использованием GUI аналогична у Linux и Windows. Пользователь работает с приложением в окне, имеющем прямоугольную форму. Последнийсодержит стандартные элементы – строка заголовка, главное меню, панели инструментов и т.д. В X Windows управление окнами приложений, их элементами выполняет компонент, называемый "менеджер окон" (иногда используют название "оконные менеджеры" или "диспетчер окон"). Может быть задействовано несколько диспетчеров окон. Но сегодня пользователи редко выбирают менеджеры окон. Им представляются интегрированные графические среды. Две наиболее распространенные из них – KDE и GNOME – будут коротко рассмотрены далее. Но сначала приведем список инструментов пользователя. На странице Википедии "Менеджер окон X WindowSystem" приводятся такие списки. Интерфейс пользователя в UNIXподобных системах: 4. среды рабочего стола: CDE, EDE, etoile, GNOME, JDS, KDE, LXDE, Mezzo, OpenWindows, ROX, Xfce, Xpde; 5. оконные менеджеры: AfterStep, Awesome, Blackbox, CTWM, dwm, Enlightenment, Fluxbox, FVWM, IceWM, JWM, Openbox, Sawfish, twm, WindowMaker, wmii; 6. командные оболочки: ash, Bash, BusyBox, csh, dash, esshell, fish, ksh, psh, rc, rsh, Sash, Scsh, sh, tcsh, Thompsonshell, zsh и прочие. Приводятся три категории: среды рабочего стола, оконные менеджеры и командные оболочки. Последние обеспечивают режим командной строки. Как видим, их много. Название первой образовано от английского shell (оболочка). В разных вариантах Linux распространена оболочка, имя которой Bash образовано от Bornagainshell (разработана Born). Интегрированная графическая среда KDE Часто графическую среду KDE называют наиболее распространенной. Проект был основан в октябре 1996 года студентом МаттиасомЭттрихом, а в июле 1998 года выпущена версия 1.0. Сокращение образовано от K DesktopEnvironment. Она строится на основе инструментария разработки пользовательского интерфейса с именем Qt. Интересной особенностью последнего является свойство кроссплатформенности. Хотя эта среда разрабатывается для UNIX-подобных систем, но возможен ее запуск и на других платформах, например, с использованием cygwin под MicrosoftWindows. KDE включает в себя набор тесно взаимосвязанных программ пользователя. В его рамках разрабатывается полнофункциональный офисный пакет KOffice, а также интегрированная среда разработки KDevelop. В 2010 году начат выпуск версии 4.0, содержащей следующие основные нововведения: переход на четвертую версию библиотеки элементов интерфейса Qt; новый стиль оформления – Oxygen; новый мультимедийный интерфейс API – Phonon; объединение Superkaramba, рабочего стола и панели Kicker в одно приложение – Plasma. Эта версия обеспечивает новые технологии не только для UNIX, но и для MicrosoftWindows и Mac OS X. Узнать компьютер, на котором работает KDE, можно по его талисману – дракончику. Интегрированная графическая среда GNOME Название GNOME является акронимом от английского GNU NetworkObjectModelEnvironment ("сетевая объектная среда GNU"). В рамках проекта GNOME создаются две вещи – рабочая среда GNOME, простая в использовании и привлекательная на вид среда рабочего стола; а также платформа разработки GNOME – расширяемая среда для создания приложений, тесно интегрируемых с рабочим столом. Его история начинается с 1997 года и связана с именами Мигеля де Иказа и Федерико Мена. Основной целью было создать полностью свободную рабочую среду для операционной системы GNU/Linux [68], поскольку основной инструмент разработки Qt – другой интегрированной среды KDE – не был лицензирован на условиях GNU GPL. Отметим, что эти проблемы были ликвидированы в версии Qt 2.2 в 2000 году. Среда рабочего стола GNOME была построена на основе GTK+, созданной при разработке мощного графического пакета GIMP. Кроме того, используется еще много различных технологий и библиотек. Описываемая интегрированная среда может быть запущена на большинстве UNIX-систем, адаптирована для работы под управление Solaris, а также через специальный порт может быть запущена под Windows. Логотипом системы является следующее изображение (пятка Гнома). 99. ОС. Сетевые и распределенные ОС. Сетевые службы и сетевые сервисы. Одноранговые и серверные Существует два основных подхода к организации операционных систем для вычислительных комплексов, связанных в сеть, – этосетевые и распределенные операционные системы. В сетевых операционных системах для того, чтобы задействовать ресурсы другого сетевого компьютера, пользователи должны знать о его наличии и уметь это сделать. Каждая машина в сети работает под управлением своей локальной операционной системы, отличающейся от операционной системы автономного компьютера наличием дополнительных сетевых средств (программной поддержкой для сетевых интерфейсных устройств и доступа к удаленным ресурсам), но эти дополнения существенно не меняют структуру операционной системы. Сетевая ОС предоставляет пользователю некую виртуальную вычислительную систему, работать с которой гораздо проще, чем с реальной сетевой аппаратурой. В то же время эта виртуальная система не полностью скрывает распределенную природу своего реального прототипа, то есть является виртуальной сетью. При использовании ресурсов компьютеров сети пользователь сетевой ОС всегда помнит, что он имеет дело с сетевыми ресурсами и что для доступа к ним нужно выполнить некоторые особые операции, например отобразить удаленный разделяемый каталог на вымышленную локальную букву дисковода или поставить перед именем каталога еще и имя компьютера, на котором тот расположен. Пользователи сетевой ОС обычно должны быть в курсе того, где хранятся их файлы, и должны использовать явные команды передачи файлов для перемещения файлов с одной машины на другую. Работая в среде сетевой ОС, пользователь хотя и может запустить задание на любой машине компьютерной сети, всегда знает, на какой машине выполняется его задание. По умолчанию пользовательское задание выполняется на той машине, на которой пользователь сделал логический вход. Если же он хочет выполнить задание на другой машине, то ему нужно либо выполнить логический вход в эту машину, используя команду типа remotelogin, либо ввести специальную команду удаленного выполнения, в которой он должен указать информацию, идентифицирующую удаленный компьютер. Распределенная система, напротив, внешне выглядит как обычная автономная система. Пользователь не знает и не должен знать, где его файлы хранятся, на локальной или удаленной машине, и где его программы выполняются. Он может вообще не знать, подключен ли его компьютер к сети. Внутреннее строениераспределенной операционной системы имеет существенные отличия от автономных систем. Распределенная ОС, динамически и автоматически распределяя работы по различным машинам системы для обработки, заставляет набор сетевых машин работать как виртуальный унипроцессор. Пользователь распределенной ОС, вообще говоря, не имеет сведений о том, на какой машине выполняется его работа. Распределенная ОС существует как единая операционная система в масштабах вычислительной системы. Каждый компьютер сети, работающей под управлением распределенной ОС, выполняет часть функций этой глобальной ОС. Распределенная ОС объединяет все компьютеры сети в том смысле, что они работают в тесной кооперации друг с другом для эффективного использования всех ресурсов компьютерной сети. Сетевые и сервисные службы Под службой понимается сетевой компонент, который реализует некоторый набор услуг, который предоставляется данной службой. Таким образом, сервис – это интерфейс между потребителем услуг (например, пользователем) и поставщиком услуг (службой). Реализация сетевых служб реализуется программными средствами, причём все сетевые службы соответствуют архитектуре «клиент-сервер». Пара модулей сетевой операционной системы «клиент-сервер» обеспечивает доступ пользователей к определённому типу ресурсов, например к файлам. В этом случае говорят, что пользователь имеет дело с файловой службой. Обычно сетевая ОС поддерживает несколько видов сетевых служб: файловую службу, службу печати, службу электронной почты, службу удалённого доступа и т.д. Кроме доступа к аппаратным, программным средствам и данным, сетевые службы решают и другие, более специфические задачи, например, задачи, связанные с распределённой обработкой данных. К таким задачам относится обеспечение синхронизации нескольких копий данных, размещение на разных узлах (служба репликации), или организация выполнения одной задачи параллельно на нескольких машинах сети (служба вызова удалённых процедур). Одной из важнейших сетевых служб является DNS – служба – служба определения соответствия доменного имени узла и его IP – адреса. Среди сетевых служб выделяется отдельная группа административных служб, используемых только администратором сети для управления вычислительной сетью, например, служба администрирования пользовательских учётных записей (позволяет администратору вести общую базу данных о пользователях сети), служба мониторинга сети (позволяет анализировать сетевой трафик), служба безопасности (в её функции аутентификация пользователей и процессов) и др. Как правило, сетевая ОС предоставляет услуги основных сетевых служб, обеспечивающих стандартные функции вычислительно сети. Дополнительные услуги могут предоставляться сетевыми службами, реализуемыми системными сетевыми приложениями или утилитами, работающими под управлением ОС. Например, услуги почтового клиента в ОС семейства Windows предоставляются программой OutlookExpress, которая интегрирована в операционную систему. Одним из главных показателей качества сетевой службы является её удобство, и в первую очередь удобство работ с ней для пользователя. Именно поэтому сетевые службы обеспечиваются специальным интерфейсом, в большинстве случаев интуитивно понятным пользователю. 100. Виды компьютерных сетей: WAN, LAN, MAN, PAN. Их особенности. WAN (WideAreaNetwork-глобальные) - это сети, объединяющие территориально сосредоточенные компьютеры. LAN (LocalAreaNetwork-локальные) это объединение компьютеров, сосредоточенных на небольшой территории ( обычно в радиусе 1-2 км). MAN (MetropolitenAreaNetwork-городские) - это сети, предназначенные для обслуживания территорий крупного города. PAN (PersonalAreaNetwork-персональные) - это сети, предназначенные для взаимодействия устройств, принадлежащих одному владельцу на небольшом расстоянии (обычно до 10м). 101. Топология сети. Виды топологий, их преимущества и недостатки. Топология сети – конфигурация графа, вершинам которого соответствуют узлы и коммуникационное оборудование сети, а ребрам – физические или информационные связи между вершинами. Виды: 1) Полносвязная – это топология, в которой каждый компьютер непосредственно связан со всеми остальными. Точка – точка – два компьютера соединяются между собой напрямую через коммутационное оборудование. 2) Ячеистая – каждая рабочая станция сети соединяется с несколькими другими рабочими станциями этой же сети (есть транзитные узлы) . “+” – высокая отказоустойчивость “-” – сложность настройки; переизбыточный расход кабеля 3) Кольцевая – каждый компьютер соединен линиями только с двумя другими, от одного он только получает информацию, а другому только передает. 4) Звездообразная – все компьютеры подсоединены к центральному узлу (коммутатору). “+” – конфликты не возможны, т.к управление централизировано “-” – масштабируемость ограничена числом портов 5) Общая шина – представляет собой общий кабель, к которому подсоединены все рабочие станции. На концах кабеля находятся терминаторы, для предотвращения отражения сигнала. Топологии бывают: a) Физическая топология – геометрическое расположение линий связи относительно узлов сети и физического подключения узлов сети. b) Логическая топология – определяет направление потоков данных между узлами сети и способы передачи данных. 102. Элементы сети: конечные устройства, промежуточные устройства, передающие среды. Интерфейс – это формально определённая логическая или физическая единица между взаимодействующими не зависимыми объектами. Интерфейс задаёт: параметры, процедуры и характеристики взаимодействия Физический интерфейс (порт)-определяется набором физ. связи и хар-ки сигналов Логический интерфейс(протокол)-это набор информационных сообщений определённого формата, в котором обмениваются 2 устройства или программы, а так же набор правил,опред. набор сообщений и соотств. Реакцию на них. Конечные устройства – устройства, которые являются потребителями или источниками информациями. 1. 2. 3. 4. 5. 6. 7. 1. 2. 3. 4. 5. 6. Конечные устройства (потребители или источники информации) Компьютер IP-телефоны Сетевые принтеры Камеры безопасности Мобильные устройства Холодильники Стиральные машины Промежуточные устройства – устройства, которые обеспечивают прохождение информации по сети. Концентратор Коммутатор Маршрутизатор Точка беспроводного доступа Модем Брэкмаундер Задачи промежуточных устройств Регенерация и передача сигнала Поддержание информации о путях передачи информации через сеть Уведомление других устройств об ошибках и сбоях Перенаправление данных по альтернативным путям при сбоях сети Классификация и перенаправление пакетов согласно приоритетам качества облуживанием Разрешение или запрещения потоков данных на основе настроек безопасности Передающие среды – обеспечивает перенос информации между абонентами вычислительной сети. Металлические провода в кабелях; Пластик или стекло (оптика); Wireless Характеристики: o o Расстояние на которое может быть передан сигнал Объем и скорость передачи данных 103. Назначение и функции модели OSI. OSI (OpenSystemInterconnection) – это абстрактная сетевая модель для коммуникации. Модель состоит из семи уровней, расположенных друг над другом. Уровни взаимодействуют друг с другом (по «вертикали») посредством интерфейсов, и могут взаимодействовать с параллельным уровнем другой системы (по «горизонтали») с помощью протоколов. Каждый уровень может взаимодействовать только со своими соседями и выполнять отведённые только ему функции. Определяет уровни взаимодействия системы в сетях с коммутацией пакетов Стандартные название уровней Функции, которые выполняет каждый уровень НЕ содержит описаний реализации конкретного набора протоколов 104. Уровни модели OSI, назначение, примеры протоколов. Прикладной – обеспечивает взаимодействие сети и пользователя, предоставляет приложениям доступ к сетевым службам (HTTP, POP3, SMTP, FTP, BitTorrent). Представления – отвечает за представление передаваемой по сети информации, не меняя ее содержания (ASCII/Unicode, SSL, Big/Little-Endian). Сеансовый – отвечает за поддержание сеансов связи, позволяя приложениям взаимодействовать между собой длительное время (NetBIOS, PPTP, RPC). Транспортный – предназначен для передачи данных с той степенью надежности, которая требуется верхним уровням (TCP, UDP). Сетевой – служит для образования единой транспортной системы объединяющей несколько сетей и называемый составной сетью (IP, IPv4, IPv6, ICMP, RIP). Канальный – обеспечивает взаимодействии сетей на физическом уровне и осуществляет контроль за ошибками которые могут возникнуть (Ethernet, IEEE 802.11, PPP). Физический – предназначен для передачи потока данных по физическим каналам связи, осуществляет преобразование битов данных в соответствии с методами кодирования цифровых сигналов, определяет стандарты передающего оборудования, а так же физические, электрические и механические интерфейсы (IRDA, USB, RS-232, Ethernet, IEEE 802.11, DSL, ISDN, GSM). 105. Протокольная единица данных. Инкапсуляция. Мультиплексирование. Протокольная единица данных (ProtocolDataUnit, PDU) – это термин, используемый для обозначения единиц обмена данных, протоколами разных уровней. Инкапсуляция – метод построения модульных сетевых протоколов, при котором логически независимые уровни сети абстрагируются от ниже лежащих механизмов, путем включения в более высокоуровневые объекты. Мультиплексирование – означает, способность транспортного уровня одновременно обрабатывать несколько потоков данных. ProtocolDataUnit (PDU) - протокольная единица обмена, модуль данных протокола (в OSI представляет собой объект данных, которыми обмениваются "машины протокола" (сущности уровня) в пределах данного уровня; содержит как управляющую информацию (PCI), так и пользовательские данные). Инкапсуляция – метод построения модульных сетевых протоколов, при котором логически независимые функции сети абстрагируются от нижележащих механизмов путем включения или инкапсулирования в более высокоуровневые объекты. PDU – ProtocolDataUnit (протокольная единица обмена). Мультиплекси́рование (англ. multiplexing, muxing) — уплотнение канала, т. е. передача нескольких потоков (каналов) данных с меньшей скоростью (пропускной способностью) по одному каналу, при помощи устройства под названием мультиплексор. 106. Система доменных имен DNS. Рекурсивная и нерекурсивная схемы. Кириллические домены. Система доменных имен DNS – распределенная база данных, способная по запросы, содержащему доменное имя хоста сообщить ip-адрес или какую-то другую информацию. Рекурсивная и не рекурсивная схемы: При НЕ рекурсивной схеме, клиент сам выполняет итеративно последовательность запросов к каждому серверу. 1) DNS-клиент обращается к корневому DNS-серверу с указанием полного доменного имени. 2) DNS-сервет отвечает клиенту, указывая адрес следующего DNS-сервера, обслуживающего домена верхнего уровня, заданный в следующей старшей части запрошенного имени. 3) DNS-клиент делает запрос следующего DNS-сервера, который отсылает его к DNS-серверу нужного поддомена и тд, пока не будет найден DNS-сервер, в котором хранится соответствие запрошенного имени IP-адресу. Этот сервер дает окончательный ответ клиенту. При рекурсивной схеме, клиент поручает эту работу своему DNS серверу. Чтобы не выполнять по 10 раз опросы, идет кеширование на 10 дней. 1) DNS-клиент запрашивает локальный DNS-сервер, то есть тот сервер, обслуживающий поддомен, которому принадлежит имя клиента. 2) Далее возможны два варианта действий: a. Если локальный DNS-сервер знает ответ, то он сразу возвращает его клиенту b. Если локальный сервер не знает ответ, то он выполняет итеративные запросы к корневому серверу и тд точно так же, как это делал клиент в предыдущем варианте, а получив ответ, передает его клиенту, который все это время ждет его от своего локального DNS-сервера. Кириллические домены: Кириллические домены поддерживаются за счет использования Punycode, который был разработан для однозначного преобразования доменных имен, включающих Unicode символы, в последовательность ASCII-символов, так как в системе доменных имеет разрешены только 26 символов латинского алфавита. 107. Типы записей DNS. Обратная зона. URL, FQDN. Распределенная система, способная по запросу, содержащему доменное имя хоста сообщить IP-адрес или другую информацию. Характеристики DNS: 1. Распределенность хранения информации – каждый узел в сети в обязательном порядке должен хранить только те данные, которые входят в его зону ответственности и, возможно, адреса корневых DNS-серверов 2. Кэширование информации – узел может хранить некоторое количество данных, не из своей зоны ответственности для уменьшения нагрузки на сеть. 3. Иерархическая структура, в которой все узлы объединены в дерево, и каждый узел может или самостоятельно определять работу нижестоящих узлов, или делегировать их другим узлам. Резервирование – за хранение и обслуживание своих узлов отвечает несколько серверов, разделенных как физически, так и логически, что обеспечивает Типы записей DNS: А – связывает имя хоста с IP адресом. CNAME – каноническое имя записи. MX – указывает сервера обмена почтой для данного домена. NS – указывает на DNS сервер для данного имени. PTR – связывает IP адрес с его доменным именем. SOA – указывает на каком сервере хранится идентификатор данного домена. Зона – логический узел в дереве имен. Право администрировать зону может быть передано третьим лицам. Обратная зона - дает возможность DNS преобразовывать адреса в имена машин. URL (Uniform Resource Location) – определитель месторасположения ресурсов. FQDN (Fully Qualified Domain Name) — имя домена, включающее в себя имена всех родительских доменов иерархии DNS. 108. Протокол DHCP DHCP – протокол динамического конфигурирования хостов – это протокол обеспечивающий конфигурирование адресов (обеспечивающий отсутствие дублированных адресов) за счет централизованного управления их распределением. Режимы выдачи адресов: Ручное назначение статических адресов Автоматическое назначение статических адресов – в момент первого назначения DHCP сервером IP адреса устанавливается соответствие между физическим и IP адресом. Автоматическое назначение IP адресов – адрес выдается клиенту на заданное время, называемое сроком аренды. DHCP-сообщения: DHCPDECLINE –Если после получения подтверждения (DHCPACK) от сервера клиент обнаруживает, что указанный сервером адрес уже используется в сети, он рассылает широковещательное сообщение отказа DHCP DHCPNAK -Если по каким-то причинам сервер не может предоставить клиенту запрошенный IP-адрес, или если аренда адреса удаляется администратором, сервер рассылает широковещательное сообщение отмены DHC DHCPRELEASE-Клиент может явным образом прекратить аренду IP-адреса. Для этого он отправляет сообщение освобождения DHCP –не рассылается широковещательно DHCPINFORM -предназначено для определения дополнительных параметров TCP/IP (например, адреса маршрутизатора по умолчанию, DNSсерверов и т. п.) теми клиентами, которым не нужен динамический IP-адрес 109. Протокол HTTP. Форматы сообщений HTTP (англ.HyperTextTransferProtocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом. Сообщения состоят из 3 частей: 1. Стартовая строка – определяет тип сообщения 2. Заголовки – характеризуют тело сообщения, параметры передачи и прочие сведения; представляют собой строки, содержащие разделенную двоеточием пару параметр:значение. 3. Тело сообщения – непосредственно данные. Как происходит приняте и посылка сообщений 1. GET - получаем информацию, без отправки сведений POST – можем отправлять файл HEAD – возвращает все свойства, кроме самого файла 2. URL –ссылка 3. Версия протокола HTTP -стартовая строка ответа 4. Код состояния -1хх – информация о процессе передачи -2хх – операция и обработка прошла успешно -3хх – запрос нужно произвести по другому адресу -4хх – ошибка на стороне клиента -5хх- ошибка на стороне сервера 5. Поясняющая фраза 110. Система электронной почты. Протоколы. Сетевая почтовая служба – это распределенное клиент-серверное приложение главной функцией которого является предоставление пользователям сети обмениваться электронными сообщениями. Почтовый клиент – это программа позволяющая оформить и отправить сообщение. Электронное сообщение – это сообщение содержащее, заголовок и тело сообщения. Протоколы: SMTP (SimpleMailTransferProtocol — простой протокол передачи почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. SMTP используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю. Для приёма почты почтовый клиент должен использовать протоколы POP3 или IMAP. Сервер SMTP — это конечный автомат с внутренним состоянием. POP3 (PostOfficeProtocolVersion 3 — протокол почтового отделения, версия 3) используется почтовым клиентом для получения сообщений электронной почты с сервера. Обычно используется в паре с протоколом SMTP. POP3 сессия состоит из нескольких режимов. Как только соединение с сервером было установлено и приглашение было отправлено, сессия переходит в режим авторизации. В этом режиме клиент должен идентифицировать себя на сервере. После успешной идентификации сессия переходит в режим передачи. В этом режиме клиент запрашивает сервер выполнить определённые команды. Когда клиент отправляет команду QUIT, сессия переходит в режим обновления. В этом режиме POP3 сервер освобождает все занятые ресурсы и завершает работу. После этого TCP соединение закрывается. IMAP предоставляет пользователю обширные возможности для работы с почтовыми ящиками, находящимися на центральном сервере. Почтовая программа, использующая этот протокол, получает доступ к хранилищу корреспонденции на сервере так, как будто эта корреспонденция расположена на компьютере получателя. Электронными письмами можно манипулировать с компьютера пользователя (клиента) без постоянной пересылки с сервера и обратно файлов с полным содержанием писем 111. Транспортный уровень модели OSI. Назначение, протоколы Транспортный уровень Предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности, в которой они были переданы. Назначение: 1. Отслеживание отдельных коммуникаций 2. Сегментация и повторная сборка данных Введение в протоколы TCP и UDP TCP – транспортный протокол, предоставляющий поток данных с предварительной установкой соединения, за счет этого дающий уверенность в достоверности доставляемых данных, осуществляет повторный запрос данных в случае потери и устраняет дублирование. UDP – транспортный протокол передачи данных в сети IP без установления соединения. Не гарантирует доставку пакетов. 112. Протокол UDP.Сравнение с TCP, псевдозаголовок UDP (англ.UserDatagramProtocol — протокол пользовательских датаграмм) — это транспортный протокол для передачи данных в сетях IP без установления соединения. Он является одним из самых простых протоколов транспортного уровнямодели OSI. Его IP-идентификатор — 0x11. В отличие от TCP, UDP не гарантирует доставку пакета, поэтому аббревиатуру иногда расшифровывают как UnreliableDatagramProtocol (протокол ненадёжныхдатаграмм). Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных. Псевдозаголовок UDP-заголовок не содержит информации об адресе отправителя и получателя, поэтому даже при совпадении порта получателя нельзя с точностью сказать, что сообщение пришло в нужное место. Для проверки того, что UDP-сообщение достигло пункта своего назначения, используется дополнительныйпсевдозаголовок: Поле «протокол» содержит в себе значение 17 (00010001 в двоичном виде, 0x11 — в шестнадцатеричном) — идентификатор UDP-протокола. Поле «длина UDP-датаграммы» содержит в себе длину UDP-сообщения (UDP-заголовок + данные; длина псевдозаголовка не учитывается) в октетах, то есть совпадает с одноименным полем в UDP-заголовке. Псевдозаголовок не включается в UDP-сообщение. Он используется для расчета контрольной суммы перед отправлением сообщения и при его получении (получатель составляет свой псевдозаголовок, используя адрес хоста, с которого пришло сообщение, и собственный адрес, а затем считает контрольную сумму). 113. Протокол TCP. Назначение, формат пакета. TransmissionControlProtocol – протокол, основанный на логическом соединении, что позволяет осуществлять гарантированную доставку данных, используя в качестве инструмента ненадежный дейтаграммный сервис. Используется в почтовых программах, веб-браузерах. Выполняет функции протокола транспортного уровня модели OSI. TCP — это транспортный механизм, предоставляющий поток данных, с предварительной установкой соединения, за счёт этого дающий уверенность в достоверности получаемых данных, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета (см. также T/TCP). В отличие от UDP, гарантирует, что приложение получит данные точно в такой же последовательности, в какой они были отправлены, и без потерь. Механизм действия протокола В отличие от традиционной альтернативы — UDP, который может сразу же начать передачу пакетов, TCP устанавливает соединения, которые должны быть созданы перед передачей данных. TCP соединение можно разделить на 3 стадии: Установка соединения Передача данных Завершение соединения Завершение соединения Завершение соединения можно рассмотреть в три этапа: 1. Посылка серверу от клиента флагов FIN и ACK на завершения соединения. 2. Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто. 3. После получение этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто. Формат пакета: Порт источника Порт назначения Номер последовательности Номер подтверждения Длина заголовка Зарезерв. Флаги Размер окна Контрольная сумма Указатель важности Опции Данные 114. Логическое соединение. Установка и завершение логического соединения. Устраняет: Потери Искажения Дублирование Нарушение порядка Всегда дуплексное. Установка соединения называется тройным рукопожатием: 1) Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN. Сервер получает сегмент, запоминает номер последовательности и пытается создать сокет (буфера и управляющие структуры памяти) для обслуживания нового клиента. В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN и ACK, и переходит в состояние SYN-RECEIVED. В случае неудачи сервер посылает клиенту сегмент с флагом RST. 2) Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK. Если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED. Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться. Если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново. 3) Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED. В противном случае после тайм-аута он закрывает сокет и переходит в состояние CLOSED. Завершение соединения можно рассмотреть в три этапа: 1) Посылка серверу от клиента флагов FIN и ACK на завершение соединения. 2) Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто. 3) После получения этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто. 115. Метод скользящего окна. В этом методе для повышения скорости передачи данных источнику разрешается передать некоторое количество кадров в непрерывном режиме, то есть в максимально возможном для источника темпе без получения на эти пакеты квитанций. Количество пакетов, которые разрешается передавать таким образом, называется размером окна. 116. Типы IP-адресов. 1) Unicast(уникальный). Используется при идентификации отдельных интерфейсов и служит для однонаправленной передачи данных. 2) Broadcast(широковещательный). 3) Multicast(групповой). Идентифицирует группу сетевых интерфейсов(IGMP). 4) Anycast(произвольной рассылки). Задает группу адресов, но данные должны быть доставлены не всем, а любому из адресатов. Индивидуальные адреса IPv4 Индивидуальный адрес IPv4 определяет расположение интерфейса в сети. IPv4 должен быть уникальным по всей сети и иметь унифицированный формат. Каждый индивидуальный адрес IPv4 включает идентификаторы сети и узла. Идентификатор сети (также называется адресом сети) - это фиксированная часть индивидуального адреса IPv4, которая определяет набор интерфейсов, расположенных в одном сегменте физической или логической сети, ограниченной маршрутизаторами IPv4. Сегмент в сети TCP/IP называется подсетью. Все системы в одной физической или логической подсети должны иметь одинаковый идентификатор сети, уникальный для всей сети TCP/IP. Идентификатор сетевого узла (также называется адресом сетевого узла) - это изменяемая часть индивидуального адреса IPv4, которая используется для определения интерфейса сетевого узла в подсети. Идентификатор сетевого узла должен быть уникальным для идентификатора сети. Если идентификатор сети уникален для сети TCP/IP и идентификатор сетевого узла уникален для идентификатора сети, то весь индивидуальный адрес IPv4, состоящий из идентификатора сети и идентификатора сетевого узла, будет уникальным для всей сети TCP/IP. Групповые адреса IPv4 Групповые адреса IPv4 используются для единичной доставки пакета от одного адреса нескольким адресам. В интрасети с поддержкой многоадресной рассылки IPv4 пакет IPv4, направленный на групповой адрес IPv4, переадресуется маршрутизаторами подсетям. Он переадресуется подсетям, где размещены узлы, прослушивающие трафик, который был послан на групповой адрес IPv4. Многоадресная рассылка IPv4 обеспечивает эффективную доставку данных от одного источника нескольким получателям, применяемую в различных типах связи. Групповые адреса IPv4 определяются классом D адресов Интернета: 224.0.0.0/4. Групповые адреса IPv4 входят в диапазон от 224.0.0.0 до 239.255.255.255. Групповые адреса IPv4 для префикса адреса 224.0.0.0/24 (224.0.0.0–224.0.0.255) зарезервированы для группового трафика локальной подсети. Широковещательные адреса IPv4 Протокол IPv4 использует набор широковещательных адресов для обеспечения доставки от одного адреса всем адресам в рамках подсети. Пакеты, отправляемые на широковещательные адреса IPv4, обрабатываются всеми интерфейсами подсети. 117. Формат адреса IPv4. Разграничение номеров сети и узла. IPv4 использует 32-битные (четырёхбайтные) адреса, ограничивающие адресное пространство 4 294 967 296 (232) возможными уникальными адресами. В современной сети Интернет используется IP четвёртой версии, также известный как IPv4. В протоколе IP этой версии каждому узлу сети ставится в соответствие IPадрес длиной 4 октета (8-битных байта). При этом компьютеры в подсетях объединяются общими начальными битами адреса. Количество этих бит, общее для данной подсети, называется маской подсети (ранее использовалось деление пространства адресов по классам — A, B, C; класс сети определялся диапазоном значений старшего октета и определял число адресуемых узлов в данной сети, сейчас используется бесклассовая адресация). Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например, 192.168.0.1. (или 128.10.2.30 — традиционная десятичная форма представления адреса). Класс Первые Начало Конец Количество Количество биты диапазона диапазона сетей хостов A 0 1.0.0.0 126.0.0.0 126 16 777 214 B 10 128.0.0.0 191.255.0.0 16384 65 534 C 110 192.0.0.0 223.255.255.0 2 млн. 254 D 1110 224.0.0.0 239.255.255.255 Групповые адреса E 11110 240.0.0.0 247.255.255.255 Резерв Специальные адреса IPv4 0.0.0.0 – 223.255.255.255 – обычные адреса 224.0.0.0 – 239.255.255.255 – групповые адреса 240.0.0.0 – 255.255.255.255 – зарезервированные адреса Частные адреса – адреса, которые могут использоваться только в частных сетях и для хостов, которым не требуется подключение к интернету: 1) 10.0.0.0 – 10.255.255.255; 2) 172.16.0.0 – 172.31.255.255 (172.16.0.0/12); 3) 192.168.0.0 – 192.168.255.255 Адреса, которые нельзя использовать: Адрес сети; Адрес широковещания; Шлюз по умолчанию (0.0.0.0) Loopback-адреса – адреса, осуществляющие передачу данных от источника обратно тому же источнику без специальной обработки или модификации (127.0.0.1 – 127.255.255.255) Локальные адреса – адреса, назначаемые компьютерам в тех случаях, когда они не могут получить IP адрес от DHCP-сервера (169.254.0.0 – 169.254.255.255) Test-Net - используются для тестирования и обучения (192.0.2.0 – 192.0.2.255) Частные адреса – адреса, которые могут использоваться только в частных сетях и для хостов, которым не требуется подключение к интернету: 10.0.0.0 – 10.255.255.255 172.16.0.0 – 172.31.255.255 (172.16.0.0/12) 192.168.0.0 – 192.168.255.255 118. Классовая адресация. Организации, выделяющие адреса Классовая адресация— метод IP-адресации. Использование этого метода не позволяет экономно использовать ограниченный ресурс IP-адресов, поскольку невозможно применение различных масок подсетей к различным подсетям. Класс 1 1 октет2 Адреса Маска количество октет10 А 1–127 00000001N.H.H.H 255.0.0.0 Сетей – 128 01111111 Хостов - 16777214 B 128 – 10000000N.N.H.H 255.255.0.0 Сетей – 16384 191 10111111 Хостов – 65534 С 192 – 11000000N.N.N.H 255.255.255.0 Сетей – 2097150 223 11011111 Хостов – 254 D 224 11100000Multicast 239 11101111 E 240 – 11110000Experimental 255 11111111 Уникальный IP-адрес назначается каждому сетевому интерфейсу специальной организацией, InternetNetworkInformationCenter (InterNIC), которая отвечает за выделение адресов сетям, объединенным в мировую сеть Internet. До 1 апреля 1993 г. (дата создания InterNIC) регистрационное обслуживание для Internet (назначение IP-адресов и имен доменов DNS) выполнялось организацией NetworkInformationCenter (NIC). В настоящее время NIC выполняет запросы только для сети DDN (DefеnseDataNetwork). Всех остальных пользователей Internet обслуживает регистрационный сервис InterNIC. Нетрудно посчитать, что всего в пространстве адресов IP - 128 сетей по 16 777 216 адресов класса A, 16384 сети по 65536 адресов класса B и 2 097 152 сети по 256 адресов класса C, а также 268 435 456 адресов многоадресной рассылки и 134 317 728 зарезервированных адресов. С ростом сети Интернет эта система оказалась неэффективной и была вытеснена CIDR (бесклассовой адресацией). 119. Особые IPv4-адреса. В протоколе IP существует несколько соглашений об особой интерпретации IPадресов: если весь IP-адрес состоит только из двоичных нулей, то он обозначает адрес того узла, который сгенерировал этот пакет; этот режим используется только в некоторых сообщениях ICMP; если все двоичные разряды IP-адреса равны 1, то пакет с таким адресом назначения должен рассылаться всем узлам, находящимся в той же сети, что и источник этого пакета. Такая рассылка называется ограниченным широковещательным сообщением (limitedbroadcast); если в поле номера узла назначения стоят только единицы, то пакет, имеющий такой адрес, рассылается всем узлам сети с заданным номером сети. Например, в сети 192.190.21.0 с маской 255.255.255.0 пакет с адресом 192.190.21.255 доставляется всем узлам этой сети. Такая рассылка называется широковещательным сообщением (broadcast) Специальные адреса IPv4 0.0.0.0 – 223.255.255.255 – обычные адреса 224.0.0.0 – 239.255.255.255 – групповые адреса 240.0.0.0 – 255.255.255.255 – зарезервированные адреса для будущего использования и экспериментов Частные адреса – адреса, которые могут использоваться только в частных сетях и для хостов, которым не требуется подключение к интернету: 1) 10.0.0.0 – 10.255.255.255; 2) 172.16.0.0 – 172.31.255.255 (172.16.0.0/12); 3) 192.168.0.0 – 192.168.255.255 Адреса, которые нельзя использовать: Адрес сети Адрес широковещания Шлюз по умолчанию (0.0.0.0) Loopback-адреса – адреса, осуществляющие передачу данных от источника обратно тому же источнику без специальной обработки или модификации (127.0.0.1 – 127.255.255.255) Локальные адреса – адреса, назначаемые компьютерам в тех случаях, когда они не могут получить IP адрес от DHCP-сервера (169.254.0.0 – 169.254.255.255) Test-Net - используются для тестирования и обучения (192.0.2.0 – 192.0.2.255) Частные адреса – адреса, которые могут использоваться только в частных сетях и для хостов, которым не требуется подключение к интернету: 10.0.0.0 – 10.255.255.255 172.16.0.0 – 172.31.255.255 (172.16.0.0/12) 192.168.0.0 – 192.168.255.255 120. Формат адреса IPv6. Описание полей: Version: версия протокола; для IPv6 это значение равно 6 (значение в битах — 0110). Trafficclass: приоритет пакета (8 бит). Это поле состоит из двух значений. Старшие 6 бит используются DSCP для классификации пакетов.[4][5] Оставшиеся два бита используются ECN для контроля перегрузки.[6] Flowlabel: метка потока (см. метки потоков). Payloadlength: в отличие от поля Totallength в протоколе IPv4 данное поле не включает заголовок пакета (16 бит). Максимальный размер, определённый размером поля, — 64 Кбайта. При большем размере может использоваться Jumbopayload[7]. Nextheader: задаёт тип расширенного заголовка (англ. IPv6 extension), который идёт следующим. В последнем расширенном заголовке поле Nextheader задаёт тип транспортного протокола (TCP, UDP и т. д.) Hop limit:аналогполя time to live в IPv4 (8 бит). SourceAddress и DestinationAddress: адрес отправителя и получателя соответственно; по 128 бит. Увеличение адреса с 32 бит до 128 по логике увеличит и таблицы маршрутизации. Чтобы такого не произошло, надо строить иерархическую систему адресации 1) Основная форма: x:x:x:x:x:x:x:x Здесь x - это шестнадцатеричное 16-битное число (т.е. имеющее в себе максимум 4 символа в шестнадцатеричной системе). Примеры: fabc:de12:3456:7890:ABCD:EF98:7654:3210 108b:0:0:0:8:800:200C:417A 2)Сжатая форма. Здесь, для уменьшения длинны адреса, в котором присутствует несколько групп, содержащих в себе только нулевые биты, применяется сокращение "::" - оно означает, что на его месте находится какое-то количество групп с нулевыми битами. Выглядеть этот тип записи будет следующим образом: Примеры: (1 форма) 108b:0:0:0:8:800:200C:417A (2 форма) 108b::8:800:200C:417A 3) Альтернативная форма. Очевидно, что переход на IPv6 будет плавным: одновременно перевести на новую инфраструктуру все подключённые к Сети устройства невозможно (куда проще было в своё время перейти на IPv4). Специально для «смутного времени» в IPv6 предусмотрено два типа «переходных» адресов. Первые выдаются узлам, ответственным за туннелирование трафика между IPv6 и IPv4, и состоят из 96 нулевых бит и привычного адреса IPv4. Вторые предназначены узлам, которые не поддерживают новую систему адресации: 80 нулевых бит плюс 16 единичных бит, а потом — адрес IPv4(RFC 2373). Пример: 0:0:0:0:0:0:13.1.68.3 0:0:0:0:0:FFFF:129.144.52.38 121. Маршрутизатор. Таблица маршрутизации. Маршрутиза́тор или роутер, рутер — сетевое устройство, на основании информации о топологии сети и определённых правил принимающее решения о пересылке пакетов сетевого уровня (уровень 3 модели OSI) между различными сегментами сети. К маршрутизатору подключается несколько сетей. У каждого интерфейса свой IP адрес. К маршрутизатору подключается несколько сетей. Таблица маршрутизации — электронная таблица (файл) или база данных, хранящаяся на маршрутизаторе или сетевом компьютере, описывающая соответствие между адресами назначения и интерфейсами, через которые следует отправить пакет данных до следующего маршрутизатора. Является простейшей формой правил маршрутизации. Таблица маршутизации обычно содержит: адрес сети или узла назначения, либо указание, что маршрут является маршрутом по умолчанию маску сети назначения (для IPv4-сетей маска /32 (255.255.255.255) позволяет указать единичный узел сети) шлюз, обозначающий адрес маршрутизатора в сети, на который необходимо отправить пакет, следующий до указанного адреса назначения интерфейс (в зависимости от системы это может быть порядковый номер, GUID или символьное имя устройства) метрику — числовой показатель, задающий предпочтительность маршрута. Чем меньше число, тем более предпочтителен маршрут (интуитивно представляется как расстояние). TTL – время, в течение которого запись остается действительной. Источник – сообщает, как маршрут узнал о сети (статическая конфигурация, RIP и т.д.) 122. Статическая и динамическая маршрутизация. Преимущества и недостатки. Стати́ческая маршрутиза́ция - вид маршрутизации, при котором маршруты указываются в явном виде при конфигурации маршрутизатора. Вся маршрутизация при этом происходит без участия каких-либо протоколов маршрутизации. Достоинства: Лёгкость отладки и конфигурирования в малых сетях. Отсутствие дополнительных накладных расходов (из-за отсутствия протоколов маршрутизации) Мгновенная готовность (не требуется интервал для конфигурирования/подстройки) Низкая нагрузка на процессор маршрутизатора Предсказуемость в каждый момент времени Недостатки: Очень плохое масштабирование (добавление N+1 сети потребует сделать 2*(N+1) записей о маршрутах, причём на большинстве маршрутизаторов таблица маршрутов будет различной, при N>3-4 процесс конфигурирования становится весьма трудоёмким) Низкая устойчивость к повреждению линии связи. Необходимость ведения документации по маршрутам и проблема ее синхронизации с реальными маршрутами. Нет балансировки загрузки. Динамическая маршрутизация — вид маршрутизации, при котором таблица маршрутизации редактируется программно. В случае UNIX-систем демонами маршрутизации; в других системах — служебными программами, которые называются иначе, но фактически играют ту же роль. Демоны маршрутизации обмениваются между собой информацией, которая позволяет им заполнить таблицу маршрутизации наиболее оптимальными маршрутами. Протоколы, с помощью которых производится обмен информацией между демонами, называется протоколами динамической маршрутизации. Протоколы динамической маршрутизации: RIP ,OSPF, EIGRP,BGP,IS-IS. Демоны динамической маршрутизации: Quagga, GNU Zebra, XORP, Bird Достоинства: Минимум ручной работы. Недостатки: Трафик. Непредсказуемость 123. Подуровни канального уровня, их задачи. Адрес канального уровня Этот уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть. Полученные с физического уровня данные он упаковывает в кадры, проверяет на целостность, если нужно исправляет ошибки (посылает повторный запрос поврежденного кадра) и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня MAC (Media Access Control) обеспечивает адресацию и механизмы управления доступом к каналам, что позволяет нескольким терминалам или точкам доступа общаться между собой в многоточечной сети (например, в локальной или городской вычислительной сети). Регулирует разделяемую среду. Подуровень MAC выступает в качестве интерфейса между подуровнем управления логической связью и физическим (первым) уровнем модели OSI, и эмулирует полнодуплексный логический канал связи в многоточечной сети, LLC (Logical Link Control) подуровень управления логической связью. Обеспечивает обслуживание сетевого уровня, управление передачей данных; управление передачей данных; обеспечивает проверку и правильность передачи информации по соединению. Примеры протоколов: IEEE 802.11, Ethernet. На этом уровне работают коммутаторы, мосты. Адрес канального уровня. Механизм адресации уровня MAC(Media Access Control) называется физической адресацией или MAC-адресами. MAC-адрес представляет собой уникальный серийный номер, который присваивается каждому сетевому устройству (такому, как сетевая карта в компьютере или сетевой коммутатор) во время изготовления и позволяет однозначно определить его среди других сетевых устройств в мире (OUI – Organizationally Unique Identifier, распределяет IEEE). Это гарантирует, что все устройства в сети будут иметь различные MAC-адреса (по аналогии с почтовыми адресами), что делает возможным доставку пакетов данных в место назначения внутри подсети, т.е. физической сети, состоящей из нескольких сегментов, взаимосвязанных повторителями, хабами, мостами или свичами (но не IPмаршрутизаторами). IP-маршрутизаторы могут соединять несколько подсетей. Пространства адресов: EUI-48 2 F 22 OUI 24 Interface ID Флаги(F): 1-й – указывает, для одиночного или группового адреса предназначен данный кадр, 2-й – является ли MAC адрес глобально или локально администрируемым. EUI-64 24 OUI 2 F 40 Interface ID EUI-48 -> EUI-64 22 OUI 16 FFFE 24 Interface ID 124. Вероятностный метод доступа к среде. Технологии CSMA/CD и CSMA/CA. Разделяемая среда – физическая среда передачи данных, к которой непосредственно подключено несколько конечных узлов и которой они могут пользоваться только по очереди. Вероятностный метод – все узлы имеют возможность получить доступ к среде, при условии, что она свободна, однако корректная передача информации не гарнатируется. Узел, желающий послать кадр в сеть, прослушивает линию. Если линия занята или обнаружена коллизия, то попытка передачи откладывается на некоторое время. Недостаток – неопределенное время доставки кадра. Детерминированный метод – узлы получают доступ к сети в предопределенном порядке. Последовательность определяется контроллером сети, который может быть централизованным или распределенным. Коллизия – искажение информации в результате наложение двух и более кадров от станций, пытающихся передать кадр в один и тот же момент времени. CSMA/CA (Carrier Sense Multiple Access / Collision Avoidance) – множественный доступ с прослушиванием несущей и избеганием коллизий. Станция, которая собирается начать передачу, посылает jam signal (сигнал затора, усиливает коллизию). После продолжительного ожидания всех станций, которые могут послать jam signal, станция начинает передачу фрейма. Если во время передачи станция обнаруживает jam signal от другой станции, она останавливает передачу на отрезок времени случайной длины и затем повторяет попытку. CSMA/CD (Carrier Sense Multiple Access / Collision Detect) – множественный доступ с прослушиванием несущей и обнаружением коллизий. RST – Ready To Send, CTS – Clear To Send. Узел, готовый послать кадр, прослушивает линию. При отсутствии несущей он посылает сигнал запроса на передачу и в течении определенного времени ожидает ответа от адресата. При отсутствии ответа попытка передачи откладывается. В случае обнаружения коллизий в момент передачи отправляется jam сигнал, для того, чтобы было ясно, что сигнал испорчен, и ни кто его по ошибке не принял. CSMA/CA отличается от CSMA/CD тем, что коллизиям подвержены не пакеты данных, а только jam-сигналы. Отсюда и название «Collision Avoidance» — предотвращение коллизий (именно пакетов данных). 125. Витая пара. Состав, типы. Вита́я па́ра (англ. twisted pair) — вид кабеля связи, представляет собой одну или несколько пар изолированных проводников, скрученных между собой (с небольшим числом витков на единицу длины), покрытых пластиковой оболочкой. Свивание проводников производится с целью повышения связи проводников одной пары (электромагнитная помеха одинаково влияет на оба провода пары) и последующего уменьшения электромагнитных помех от внешних источников, а также взаимных наводок при передаче дифференциальных сигналов. Для снижения связи отдельных пар кабеля (периодического сближения проводников различных пар) в кабелях UTP категории 5 и выше провода пары свиваются с различным шагом. Витая пара — один из компонентов современных структурированных кабельных систем. Используется в телекоммуникациях и в компьютерных сетях в качестве сетевого носителя во многих технологиях, таких как Ethernet, Arcnet и Token ring. В настоящее время, благодаря своей дешевизне и лёгкости в монтаже, является самым распространённым решением для построения локальных сетей. Неэкранированный витая пара (UTP – Unshielded Twisted Pair) Скорость передачи от 20кбит/с до 10гбит/с Используется для прокладки коммуникаций внутри зданий. Обычно используется четыре пары кабелей, обозначающихся разными цветами (в парах один – одноцветный, второй – со штриховкой). Категория Полоса частот Скорость передачи 1 20 кбит/с 20 кбит/с 1 пара 2 1 МГц 4 Мбит/с 2-е пары 3 16 МГц 10 Мбит/с 4-е пары 4 20 МГц 16 Мбит/с 5 100 МГц 100 Мбит/с Заменил 3ю к-ю 5е 125 МГц 100 Мбит/с Усовершенст-й 6 250 МГц 1000 Мбит/с 6а 500 МГц 10 Гбит/с 7 600 МГц 10 Гбит/с Экранированная витая пара (STP – Shielded Twisted Pair) Хорошо защищает сигнал от электромагнитные колебания во вне. Прямой порядок: внешних помех, а так же уменьшает Используется для подключения оконечного оборудования(принтер, коммутаторы..) Так же используют в технологиях Ethernet Перекрестный порядок: Crossover Используется для соединения 2 экземпляров оборудования (PC-PC). 126. Коаксиа́льный ка́бель. Состав, типы Коаксильный кабель (коаксиальная пара) — Пара, проводники которой расположены соосно и разделены изоляцией. Коаксиа́льный ка́бель (от лат. co — совместно и axis — ось, то есть «соосный»), также известный как коаксиал (от англ. coaxial), — электрический кабель, состоящий из расположенных соосно центрального проводников и экрана и служащий для передачи высокочастотных сигналов. Каждая пара представляет собой внутреннюю медную жилу и соосную ей внешнюю жилу, которая может быть медной трубкой или оплеткой. Внешняя жила играет двоякую роль, по ней передается информационные сигналы и она является защитой внутренней жилы от внешних полей. Тип кабеля Сопротивление Диаметр Применение проводника RG-8 «Толстый» 50 Ом 2,71 мм Ethernet 10Base-5 RG-58 «Тонкий» 75 Ом 0,89 мм Ethernet 10Base-2 RG-59 75 Ом 0,81 мм Кабельное ТВ 127. Волоконно-оптический кабель. Мода Оптоволокно — нить из оптически прозрачного материала (стекло, пластик), используемая для переноса света внутри себя посредством полного внутреннего отражения. Состоит из тонких гибких стеклянных волокон по которым распространяется сигнал. Каждый световод состоит из центрального проводника и стеклянной оболочки, обладающей меньшим показателем преломления, чем световод. Распространяющиеся по серцевине лучи света не выходят за ее пределы отражаясь от ее оболочки. Многомодовый – широкий внутренний сердечник, в котором существует несколько световых лучей, отражающихся от внешнего проводника под разными углами. Возникающая при этом интерференция ухудшает качество сигнала, в качестве источника света применяются светодиоды. Скорость не более 1Гбит/с. Расстояние до 2 км. Одномодовые – гораздо меньше диаметр сердечника, соизмеримый с длинной волны(5-10мкм). Практически все лучи распространяются вдоль оптической оси, не отражаясь от внешнего проводника. Скорость – десятки Гбит/с, расстояние – десятки км. Используются коннекторы 8P8C (8 Position 8 Contact). 128. Технология Ethernet. Формат кадра Ethernet – семейство компьютерных сетевых технологий, определяющее набор кабельных и сигнальных стандартов для физического и канального уровня модели OSI, а также формат адресации MAC. Формат кадра 8 6 Преамбула Адрес получателя Технология 6 Адрес отправителя 2 Длина 46-1500 Данные 4 Контрольная сумма В стандарте первых версий (Ethernet v1.0 и Ethernet v2.0) указано, что в качестве передающей среды используется коаксиальный кабель, в дальнейшем появилась возможность использовать витую пару и оптический кабель. Причинами перехода на витую пару были: возможность работы в дуплексном режиме; низкая стоимость кабеля «витой пары»; более высокая надёжность сетей при неисправности в кабеле; большая помехозащищенность при использовании дифференциального сигнала; возможность питания по кабелю маломощных узлов, например IP-телефонов (стандарт Power over Ethernet, POE); отсутствие гальванической связи (прохождения тока) между узлами сети. При использовании коаксиального кабеля в российских условиях, где, как правило, отсутствует заземление компьютеров, применение коаксиального кабеля часто сопровождалось пробоем сетевых карт, и иногда даже полным «выгоранием» системного блока. Причиной перехода на оптический кабель была необходимость увеличить длину сегмента без повторителей. Метод управления доступом (для сети на коаксиальном кабеле) — множественный доступ с контролем несущей и обнаружением коллизий (CSMA/CD, Carrier Sense Multiple Access with Collision Detection), скорость передачи данных 10 Мбит/с, размер пакета от 72 до 1526 байт, описаны методы кодирования данных. Режим работы полудуплексный, то есть узел не может одновременно передавать и принимать информацию. Количество узлов в одном разделяемом сегменте сети ограничено предельным значением в 1024 рабочих станции (спецификации физического уровня могут устанавливать более жёсткие ограничения, например, к сегменту тонкого коаксиала может подключаться не более 30 рабочих станций, а к сегменту толстого коаксиала — не более 100). Однако сеть, построенная на одном разделяемом сегменте, становится неэффективной задолго до достижения предельного значения количества узлов, в основном по причине полудуплексного режима работы. Стандарты Ethernet определяют проводные соединения и электрические сигналы на физическом уровне, формат кадров и протоколы управления доступом к среде — на канальном уровне модели OSI. Ethernet в основном описывается стандартами IEEE группы 802.3. Ethernet стал самой распространённой технологией ЛВС в середине 90-х годов прошлого века, вытеснив такие устаревшие технологии, как Arcnet, FDDI и Token ring 129. Физическая среда технологии Ethernet. Исторически первые сети технологии Ethernet были созданы на коаксиальном кабеле диаметром 0,5 дюйма. В дальнейшем были определены и другие спецификации физического уровня для стандарта Ethernet, позволяющие использовать различные среды передачи данных. Метод доступа CSMA/CD и все временные параметры остаются одними и теми же для любой спецификации физической среды технологии Ethernet 10 Мбит/с. Физические спецификации технологии Ethernet на сегодняшний день включают следующие среды передачи данных. l0Base-5 - коаксиальный кабель диаметром 0,5 дюйма, называемый «толстым» коаксиалом. Имеет волновое сопротивление 50 Ом. Максимальная длина сегмента 500 метров (без повторителей). l0Base-2 - коаксиальный кабель диаметром 0,25 дюйма, называемый «тонким» коаксиалом. Имеет волновое сопротивление 50 Ом. Максимальная длина сегмента 185 метров (без повторителей). l0Base-T - кабель на основе неэкранированной витой пары (Unshielded Twisted Pair, UTP). Образует звездообразную топологию на основе концентратора. Расстояние между концентратором и конечным узлом - не более 100 м. l0Base-F - волоконно-оптический кабель. Топология аналогична топологии стандарта l0Base-T. Имеется несколько вариантов этой спецификации - FOIRL (расстояние до 1000 м), l0Base-FL (расстояние до 2000 м), l0Base-FB (расстояние до 2000 м). Число 10 в указанных выше названиях обозначает битовую скорость передачи данных этих стандартов - 10 Мбит/с, а слово Base - метод передачи на одной базовой частоте 10 МГц (в отличие от методов, использующих несколько несущих частот, которые называются Broadband - широкополосными). Последний символ в названии стандарта физического уровня обозначает тип кабеля. 130. Физические уровни стандарта 802.11 Все рассматриваемые далее методы передачи данных позволяют передать кадр подуровня MAC с одной станции на другую. Различаются они используемыми технологиями и достижимыми скоростями. При передаче в инфракрасном диапазоне (вне диапазона видимого света) используются длины волн 0,85 или 0,95 мкм. Возможны две скорости передачи: 1 и 2 Мбит/с. При 1 Мбит/с используется схема кодирования с группировкой четырех бит в 16-битное кодовое слово, содержащее 15 нулей и 1 единицу. Это так называемый код Грея. Сигналы инфракрасного диапазона не проникают сквозь стены, поэтому соты, расположенные в разных комнатах, очень хорошо изолированы друг от друга. Однако из-за довольно низкой пропускной способности (а также потому, что солнечный свет может искажать инфракрасные сигналы) этот метод не слишком популярен. В методе FHSS (Frequency Hopping Spread Spectrum — передача широкополосных сигналов по методу частотных скачков) используются 79 каналов шириной 1 МГц каждый. Диапазон, в котором работает этот метод, начинается с 2,4 ГГц (это нелицензируемый [ISM] диапазон). Для определения последовательностей скачков частот используется генератор псевдослучайных чисел. Поскольку при этом для всех станций используется один и тот же генератор, они синхронизированы во времени и одновременно осуществляют одинаковые частотные скачки. Период времени, в течение которого станция работает на определенной частоте, называется временем пребывания. Это настраиваемая величина, но она должна быть не более 400 мс. Постоянная смена частот — это неплохой (хотя, конечно, недостаточный) способ защиты информации от несанкционированного прослушивания, поскольку незваный слушатель, не зная последовательности частотных переходов и времени пребывания, не сможет подслушать передаваемые данные. При связи на более длинных дистанциях может возникать проблема многолучевого затухания, и FHSS может оказаться хорошим подспорьем в борьбе с ней. Этот метод также относительно слабо чувствителен к интерференции с радиосигналом, что делает его популярным при связи между зданиями. Главный недостаток FHSS — это низкая пропускная способность. Третий метод модуляции называется DSSS (Direct Sequence Spread Spectrum — передача широкополосного сигнала по методу прямой последовательности). Скорости передачи ограничены 1 или 2 Мбит/с. Каждый бит передается в виде 11 элементарных сигналов, которые называются последовательностью Баркера. Для этого используется модуляция с фазовым сдвигом со скоростью 1 Мбод (1 бит на бод при работе на 1 Мбит/с и 2 бита на бод при работе на 2 Мбит/с). Первая высокоскоростная беспроводная ЛВС, 802.11а, использовала метод OFDM (Orthogonal Frequency Division Multiplexing — ортогональное частотное уплотнение) для передачи сигнала со скоростью до 54 Мбит/с в расширенном нелицензируемом диапазоне 5 ГГц. Как и полагается при частотном уплотнении, здесь используются разные частоты. Всего их 52, из них 48 частот предназначены для данных, 4 — для синхронизации (почти как в ADSL). Одновременная передача сигналов на разных частотах позволяет говорить о расширенном спектре, хотя этот метод существенно отличается от CDMA и FHSS. Разделение сигнала на много узких диапазонов имеет преимущества перед передачей в одном широком диапазоне — в частности, более низкую чувствительность к узкополосной интерференции и возможность использования независимых диапазонов. Система кодирования довольно сложна. Она основана на модуляции с фазовым сдвигом для скоростей до 18 Мбит/с и на QAM при более высоких скоростях. При 54 Мбит/с 216 бит данных кодируются 288битными кодовыми словами. Одним из преимуществ OFDM является совместимость с европейской системой HiperLAN/2 (Doufexi и др., 2002). HR-DSSS (High Rate Direct Sequence Spread Spectrum — высокоскоростная передача широкополосного сигнала по методу прямой последовательности). Это еще один широкополосный способ, который для достижения скорости 11 Мбит/с кодирует биты со скоростью 11 миллионов элементарных сигналов в секунду. Скорости передачи данных, поддерживаемые этим стандартом, равны 1, 2, 5,5 и 11 Мбит/с. Две низкие скорости требуют 1 Мбод при 1 и 2 битах на бод соответственно. Используется модуляция с фазовым сдвигом (для совместимости с DSSS). Две высокие скорости требуют кодирования соскоростью 1,375 Мбод при 4 и 8 битах на бод соответственно. Применяется код Уолша — Адамара. Скорость передачи может быть динамически изменена во время работы для достижения оптимальных результатов в зависимости от условий нагрузки и зашумленности линии. На практике скорость работы стандарта 802.11b почти всегда равна 11 Мбит/с. Хотя 802.11b медленнее, чем 802.11а, диапазон первого почти в 7 раз шире, что бывает очень важно во многих ситуациях. Улучшенная версия 802.11b называется 802.llg. В 802.1lg применяется метод модуляции OFDM, взятый из 802.11а, однако рабочий диапазон совпадает с 802.11b (узкий нелицензированный диапазон 2,4 ГГц). Теоретически максимальная скорость 802.1 lg равна 54 Мбит/с. До сих пор не очень понятно, может ли быть достигнута такая скорость на практике. Зато, пока суть да дело, комитет 802.11 может гордо заявить, что он разработал три высокоскоростных стандарта беспроводных ЛВС: 802.11а, 802.11b и 802.11g (не говоря уж о трех низкоскоростных беспроводных ЛВС. 131. Алгоритм прозрачного моста Мостом называется устройство, которое служит для связи между локальными сетями. Мост передает кадры из одной сети в другую. Мосты по своим функциональным возможностям являются более “продвинутыми” устройствами, чем концентраторы. Мосты достаточно интеллектуальны, так что не повторяют шумы сети, ошибки или испорченные кадры. Мост принимает кадр, запоминает его в своей буферной памяти, анализирует адрес назначения кадра. Если кадр принадлежит сети, из которой он получен, мост не должен на этот кадр реагировать. Если кадр нужно переслать в другую сеть, он туда и отправляется. Доступ к среде осуществляется в соответствии с теми правилами, что и для обычного узла. В идеале мосты должны быть полностью прозрачны. Это означает, что любые передвижения машины из одного сегмента сети в другой должны происходить без каких-либо изменений аппаратуры, программного обеспечения или конфигурационных таблиц. Кроме того, машины любого сегмента должны иметь возможность общаться с машинами других сегментов независимо от используемых в сегментах и между ними типов ЛВС. Этой цели удается достичь, но лишь изредка. Прозрачные мосты незаметны для сетевых адаптеров конечных узлов, так как они самостоятельно строят специальную адресную таблицу, на основании которой можно решить, нужно передавать пришедший кадр в какой-либо другой сегмент или нет. Прозрачный мост строит свою адресную таблицу на основании пассивного наблюдения за трафиком, циркулирующим в подключенных к его портам сегментах. При этом мост учитывает адреса источников кадров данных, поступающих на порты моста. По адресу источника кадра мост делает вывод о принадлежности этого узла тому или иному сегменту сети. Рассмотрим процесс автоматического создания адресной таблицы моста и ее использования на примере простой сети, представленной на рис. 4.18. Рис. 4.18. Принцип работы прозрачного моста Мост соединяет два логических сегмента. Сегмент 1 составляют компьютеры, подключенные с помощью одного отрезка коаксиального кабеля к порту 1 моста, а сегмент 2 - компьютеры, подключенные с помощью другого отрезка коаксиального кабеля к порту 2 моста. Каждый порт моста работает как конечный узел своего сегмента за одним исключением - порт моста не имеет собственного МАС - адреса. Порт моста работает в так называемом неразборчивом (promisquous) режиме захвата пакетов, когда все поступающие на порт пакеты запоминаются в буферной памяти. С помощью такого режима мост следит за всем трафиком, передаваемым в присоединенных к нему сегментах, и использует проходящие через него пакеты для изучения состава сети. Так как в буфер записываются все пакеты, то адрес порта мосту не нужен. В исходном состоянии мост ничего не знает о том, компьютеры с какими МАС адресами подключены к каждому из его портов. Поэтому в этом случае мост просто передает любой захваченный и буферизованный кадр на все свои порты за исключением того, от которого этот кадр получен. В нашем примере у моста только два порта, поэтому он передает кадры с порта 1 на порт 2, и наоборот. Отличие работы моста в этом режиме от повторителя в том, что он передает кадр не побитно, а с буферизацией. Буферизация разрывает логику работы всех сегментов как единой разделяемой среды. Когда мост собирается передать кадр с сегмента на сегмент, например с сегмента 1 на сегмент 2, он заново пытается получить доступ к сегменту 2 как конечный узел по правилам алгоритма доступа, в данном примере - по правилам алгоритма CSMA/CD. Одновременно с передачей кадра на все порты мост изучает адрес источника кадра и делает новую запись о его принадлежности в своей адресной таблице, которую также называют таблицей фильтрации или маршрутизации. Например, получив на свой порт 1 кадр от компьютера 1, мост делает первую запись в своей адресной таблице: МАС - адрес 1 - порт 1. Если все четыре компьютера данной сети проявляют активность и посылают друг другу кадры, то скоро мост построит полную адресную таблицу сети, состоящую из 4 записей - по одной записи на узел. После того как мост прошел этап обучения, он может работать более рационально. При получении кадра, направленного, например, от компьютера 1 компьютеру 3, он просматривает адресную таблицу на предмет совпадения ее адресов с адресом назначения 3. Поскольку такая запись есть, то мост выполняет второй этап анализа таблицы - проверяет, находятся ли компьютеры с адресами источника (в нашем случае - это адрес 1) и адресом назначения (адрес 3) в одном сегменте. Так как в нашем примере они находятся в разных сегментах, то мост выполняет операцию продвижения (forwarding) кадра - передает кадр на другой порт, предварительно получив доступ к другому сегменту. Если бы оказалось, что компьютеры принадлежат одному сегменту, то кадр просто был бы удален из буфера и работа с ним на этом бы закончилась. Такая операция называется фильтрацией (filtering). Если же адрес назначения неизвестен, то мост передает кадр на все свои порты, кроме порта - источника кадра, как и на начальной стадии процесса обучения. 132. Алгоритм покрывающего дерева. Для нормальной работы коммутатора требуется отсутствие замкнутых маршрутов в сети. Алгоритм покрывающего дерева позволяет коммутатору автоматически определять древовидную конфигурацию связей сети при произвольном соединении портов между собой. Используя алгоритм, коммутаторы создают активную древовидную конфигурацию сети на множестве всех связей сети. Делается это с помощью обмена служебными пакетами. После обнаружения потери связности, протокол строит новое покрывающее дерево, если это возможно и сеть автоматически становится работоспособной. 3 этапа: 1. Определяется корневой коммутатор 2. Для каждого коммутатора определяется корневой порт – тот порт, по которому до корневого коммутатора ближе 3. Для каждого сегмента сети выбирается т.н. назначенный порт – порт, который имеет кратчайшее расстояние от текущего сегмента до корневого коммутатора После определения корневых и назначенных портов, каждый коммутатор блокирует остальные порты. При таком выборе активных портов исключаются петли и оставшиеся связи образуют покрывающее дерево. 133.Понятие информационной безопасности (ИБ). Основные составляющие (конфиденциальность, целостность, доступность). Статистика нарушений ИБ. Под информационной безопасностью (ИБ) следует понимать защиту интересов субъектов информационных отношений. Под информационной безопасностью мы будем понимать защищенность информации и поддерживающей инфраструктуры от случайных или преднамеренных воздействий естественного или искусственного характера, которые могут нанести неприемлемый ущерб субъектам информационных отношений, в том числе владельцам и пользователям информации и поддерживающей инфраструктуры. Защита информации – это комплекс мероприятий, направленных на обеспечение информационной безопасности. Основные составляющие информационной безопасности Доступность – это возможность за приемлемое время получить требуемую информационную услугу. Под целостностью подразумевается актуальность и непротиворечивость информации, ее защищенность от разрушения и несанкционированного изменения. Конфиденциальность – это защита от несанкционированного доступа к информации. Информационные системы создаются (приобретаются) для получения определенных информационных услуг. Если по тем или иным причинам предоставить эти услуги пользователям становится невозможно, это, очевидно, наносит ущерб всем субъектам информационных отношений. Поэтому, не противопоставляя доступность остальным аспектам, мы выделяем ее как важнейший элемент информационной безопасности. Особенно ярко ведущая роль доступности проявляется в разного рода системах управления – производством, транспортом и т.п. Внешне менее драматичные, но также весьма неприятные последствия – и материальные, и моральные – может иметь длительная недоступность информационных услуг, которыми пользуется большое количество людей (продажа железнодорожных и авиабилетов, банковские услуги и т.п.). Целостность можно подразделить на статическую (понимаемую как неизменность информационных объектов) и динамическую (относящуюся к корректному выполнению сложных действий (транзакций)). Средства контроля динамической целостности применяются, в частности, при анализе потока финансовых сообщений с целью выявления кражи, переупорядочения или дублирования отдельных сообщений. Целостность оказывается важнейшим аспектом ИБ в тех случаях, когда информация служит "руководством к действию". Рецептура лекарств, предписанные медицинские процедуры, набор и характеристики комплектующих изделий, ход технологического процесса – все это примеры информации, нарушение целостности которой может оказаться в буквальном смысле смертельным. Неприятно и искажение официальной информации, будь то текст закона или страница Webсервера какой-либо правительственной организации. Конфиденциальность – самый проработанный у нас в стране аспект информационной безопасности. К сожалению, практическая реализация мер по обеспечению конфиденциальности современных информационных систем наталкивается в России на серьезные трудности. Вопервых, сведения о технических каналах утечки информации являются закрытыми, так что большинство пользователей лишено возможности составить представление о потенциальных рисках. Во-вторых, на пути пользовательской криптографии как основного средства обеспечения конфиденциальности стоят многочисленные законодательные препоны и технические проблемы. Статистика нарушений В марте 1999 года был опубликован очередной, четвертый по счету, годовой отчет "Компьютерная преступность и безопасность-1999: проблемы и тенденции" (Issues and Trends: 1999 CSI/FBI Computer Crime and Security Survey). В отчете отмечается резкий рост числа обращений в правоохранительные органы по поводу компьютерных преступлений (32% из числа опрошенных); 30% респондентов сообщили о том, что их информационные системы были взломаны внешними злоумышленниками; атакам через Internet подвергались 57% опрошенных; в 55% случаях отмечались нарушения со стороны собственных сотрудников. Примечательно, что 33% респондентов на вопрос "были ли взломаны ваши Webсерверы и системы электронной коммерции за последние 12 месяцев?" ответили "не знаю". В аналогичном отчете, опубликованном в апреле 2002 года, цифры изменились, но тенденция осталась прежней: 90% респондентов (преимущественно из крупных компаний и правительственных структур) сообщили, что за последние 12 месяцев в их организациях имели место нарушения информационной безопасности; 80% констатировали финансовые потери от этих нарушений; 44% (223 респондента) смогли и/или захотели оценить потери количественно, общая сумма составила более 455 млн. долларов. Наибольший ущерб нанесли кражи и подлоги (более 170 и 115 млн. долларов соответственно). Столь же тревожные результаты содержатся в обзоре InformationWeek, опубликованном 12 июля 1999 года. Лишь 22% респондентов заявили об отсутствии нарушений информационной безопасности. Наряду с распространением вирусов отмечается резкий рост числа внешних атак. Увеличение числа атак – еще не самая большая неприятность. Хуже то, что постоянно обнаруживаются новые уязвимые места в программном обеспечении и, как следствие, появляются новые виды атак. Так, в информационном письме Национального центра защиты инфраструктуры США (National Infrastructure Protection Center, NIPC) от 21 июля 1999 года сообщается, что за период с 3 по 16 июля 1999 года выявлено девять проблем с ПО, риск использования которых оценивается как средний или высокий (общее число обнаруженных уязвимых мест равно 17). Среди "пострадавших" операционных платформ – почти все разновидности ОС Unix, Windows, MacOS, так что никто не может чувствовать себя спокойно, поскольку новые ошибки тут же начинают активно использоваться злоумышленниками. 134.Наиболее распространенные угрозы, уязвимые места защиты, средства обеспечения безопасности. Угроза - это потенциальная возможность определенным образом нарушить информационную безопасность. Попытка реализации угрозы называется атакой, а тот, кто предпринимает такую попытку, - злоумышленником. Потенциальные злоумышленники называются источниками угрозы. Чаще всего угроза является следствием наличия уязвимых мест в защите информационных систем (таких, например, как возможность доступа посторонних лиц к критически важному оборудованию или ошибки в программном обеспечении). Самыми частыми и самыми опасными (с точки зрения размера ущерба) являются непреднамеренные ошибки штатных пользователей, операторов, системных администраторов и других лиц, обслуживающих информационные системы. Иногда такие ошибки и являются собственно угрозами (неправильно введенные данные или ошибка в программе, вызвавшая крах системы), иногда они создают уязвимые места, которыми могут воспользоваться злоумышленники (таковы обычно ошибки администрирования). По некоторым данным, до 65% потерь - следствие непреднамеренных ошибок. Пожары и наводнения не приносят столько бед, сколько безграмотность и небрежность в работе. Очевидно, самый радикальный способ борьбы с непреднамеренными ошибками - максимальная автоматизация и строгий контроль. Другие угрозы доступности классифицируем по компонентам ИС, на которые нацелены угрозы: отказ пользователей; внутренний отказ информационной системы; отказ поддерживающей инфраструктуры. Обычно применительно к пользователям рассматриваются следующие угрозы: нежелание работать с информационной системой (чаще всего проявляется при необходимости осваивать новые возможности и при расхождении между запросами пользователей и фактическими возможностями и техническими характеристиками); невозможность работать с системой в силу отсутствия соответствующей подготовки (недостаток общей компьютерной грамотности, неумение интерпретировать диагностические сообщения, неумение работать с документацией и т.п.); невозможность работать с системой в силу отсутствия технической поддержки (неполнота документации, недостаток справочной информации и т.п.). По отношению к поддерживающей инфраструктуре рекомендуется рассматривать следующие угрозы: нарушение работы (случайное или умышленное) систем связи, электропитания, водо- и/или теплоснабжения, кондиционирования; разрушение или повреждение помещений; невозможность или нежелание обслуживающего персонала и/или пользователей выполнять свои обязанности (гражданские беспорядки, аварии на транспорте, террористический акт или его угроза, забастовка и т.п.). Весьма опасны так называемые "обиженные" сотрудники - нынешние и бывшие. Как правило, они стремятся нанести вред организации-"обидчику", например: испортить оборудование; встроить логическую бомбу, которая со временем разрушит программы и/или данные; удалить данные. Основные угрозы целостности На втором месте по размерам ущерба (после непреднамеренных ошибок и упущений) стоят кражи и подлоги. По данным газеты USA Today, еще в 1992 году в результате подобных противоправных действий с использованием персональных компьютеров американским организациям был нанесен общий ущерб в размере 882 миллионов долларов. Можно предположить, что реальный ущерб был намного больше, поскольку многие организации по понятным причинам скрывают такие инциденты; не вызывает сомнений, что в наши дни ущерб от такого рода действий вырос многократно. В большинстве случаев виновниками оказывались штатные сотрудники организаций, отлично знакомые с режимом работы и мерами защиты. Это еще раз подтверждает опасность внутренних угроз, хотя говорят и пишут о них значительно меньше, чем о внешних. Основные угрозы конфиденциальности Конфиденциальную информацию можно разделить на предметную и служебную. Служебная информация (например, пароли пользователей) не относится к определенной предметной области, в информационной системе она играет техническую роль, но ее раскрытие особенно опасно, поскольку оно чревато получением несанкционированного доступа ко всей информации, в том числе предметной. Даже если информация хранится в компьютере или предназначена для компьютерного использования, угрозы ее конфиденциальности могут носить некомпьютерный и вообще нетехнический характер. Многим людям приходится выступать в качестве пользователей не одной, а целого ряда систем (информационных сервисов). Если для доступа к таким системам используются многоразовые пароли или иная конфиденциальная информация, то наверняка эти данные будут храниться не только в голове, но и в записной книжке или на листках бумаги, которые пользователь часто оставляет на рабочем столе, а то и попросту теряет. И дело здесь не в неорганизованности людей, а в изначальной непригодности парольной схемы. Невозможно помнить много разных паролей; рекомендации по их регулярной (по возможности - частой) смене только усугубляют положение, заставляя применять несложные схемы чередования или вообще стараться свести дело к двум-трем легко запоминаемым (и столь же легко угадываемым) паролям. 135.Административный уровень информационной безопасности: политика безопасности и программа безопасности. Структура соответствующих документов, меры по их разработке и сопровождению. К административному уровню информационной безопасности относятся действия общего характера, предпринимаемые руководством организации. Главная цель мер административного уровня - сформировать программу работ в области информационной безопасности и обеспечить ее выполнение, выделяя необходимые ресурсы и контролируя состояние дел. Основой программы является политика безопасности, отражающая подход организации к защите своих информационных активов. Руководство каждой организации должно осознать необходимость поддержания режима безопасности и выделения на эти цели значительных ресурсов. Политика безопасности строится на основе анализа рисков, которые признаются реальными для информационной системы организации. Когда риски проанализированы и стратегия защиты определена, составляется программа обеспечения информационной безопасности. Под эту программу выделяются ресурсы, назначаются ответственные, определяется порядок контроля выполнения программы и т.п. Программа безопасности После того, как сформулирована политика безопасности, можно приступать к составлению программы ее реализации и собственно к реализации. Чтобы понять и реализовать какую-либо программу, ее нужно структурировать по уровням, обычно в соответствии со структурой организации. В простейшем и самом распространенном случае достаточно двух уровней - верхнего, или центрального, который охватывает всю организацию, и нижнего, или служебного, который относится к отдельным услугам или группам однородных сервисов. Программу верхнего уровня возглавляет лицо, отвечающее за информационную безопасность организации. У этой программы следующие главные цели: управление рисками (оценка рисков, выбор эффективных средств защиты); координация деятельности в области информационной безопасности, пополнение и распределение ресурсов; стратегическое планирование; контроль деятельности в области информационной безопасности. В рамках программы верхнего уровня принимаются стратегические решения по обеспечению безопасности, оцениваются технологические новинки. Информационные технологии развиваются очень быстро, и необходимо иметь четкую политику отслеживания и внедрения новых средств. Контроль деятельности в области безопасности имеет двустороннюю направленность. Во-первых, необходимо гарантировать, что действия организации не противоречат законам. При этом следует поддерживать контакты с внешними контролирующими организациями. Во-вторых, нужно постоянно отслеживать состояние безопасности внутри организации, реагировать на случаи нарушений и дорабатывать защитные меры с учетом изменения обстановки. Следует подчеркнуть, что программа верхнего уровня должна занимать строго определенное место в деятельности организации, она должна официально приниматься и поддерживаться руководством, а также иметь определенный штат и бюджет. Цель программы нижнего уровня - обеспечить надежную и экономичную защиту конкретного сервиса или группы однородных сервисов. На этом уровне решается, какие следует использовать механизмы защиты; закупаются и устанавливаются технические средства; выполняется повседневное администрирование; отслеживается состояние слабых мест и т.п. Обычно за программу нижнего уровня отвечают администраторы сервисов. Британский стандарт BS 7799:1995 рекомендует включать в документ, характеризующий политику безопасности организации, следующие разделы: вводный, подтверждающий озабоченность высшего руководства проблемами информационной безопасности; организационный, содержащий описание подразделений, комиссий, групп и т.д., отвечающих за работы в области информационной безопасности; классификационный, описывающий имеющиеся в организации материальные и информационные ресурсы и необходимый уровень их защиты; штатный, характеризующий меры безопасности, применяемые к персоналу (описание должностей с точки зрения информационной безопасности, организация обучения и переподготовки персонала, порядок реагирования на нарушения режима безопасности и т.п.); раздел, освещающий вопросы физической защиты; управляющий раздел, описывающий подход к управлению компьютерами и компьютерными сетями; раздел, описывающий правила разграничения доступа к производственной информации; раздел, характеризующий порядок разработки и сопровождения систем; раздел, описывающий меры, направленные на обеспечение непрерывной работы организации; юридический раздел, подтверждающий соответствие политики безопасности действующему законодательству. 136.Управление рисками. Методика сопоставления возможных потерь от нарушений ИБ со стоимостью защитных средств. Управление рисками рассматривается нами на административном уровне ИБ, поскольку только руководство организации способно выделить необходимые ресурсы, инициировать и контролировать выполнение соответствующих программ. Использование информационных систем связано с определенной совокупностью рисков. Когда возможный ущерб неприемлемо велик, необходимо принять экономически оправданные меры защиты. Периодическая (пере)оценка рисков необходима для контроля эффективности деятельности в области безопасности и для учета изменений обстановки. С количественной точки зрения уровень риска является функцией вероятности реализации определенной угрозы (использующей некоторые уязвимые места), а также величины возможного ущерба. Таким образом, суть мероприятий по управлению рисками состоит в том, чтобы оценить их размер, выработать эффективные и экономичные меры снижения рисков, а затем убедиться, что риски заключены в приемлемые рамки (и остаются таковыми). Следовательно, управление рисками включает в себя два вида деятельности, которые чередуются циклически: (пере)оценка (измерение) рисков; выбор эффективных и экономичных защитных средств (нейтрализация рисков). По отношению к выявленным рискам возможны следующие действия: ликвидация риска (например, за счет устранения причины); уменьшение риска (например, за счет использования дополнительных защитных средств); принятие риска (и выработка плана действия в соответствующих условиях); переадресация риска (например, путем заключения страхового соглашения). Процесс управления рисками можно разделить на следующие этапы: Выбор анализируемых объектов и уровня детализации их рассмотрения. Выбор методологии оценки рисков. Идентификация активов. Анализ угроз и их последствий, выявление уязвимых мест в защите. Оценка рисков. Выбор защитных мер. Реализация и проверка выбранных мер. Оценка остаточного риска. Этапы 6 и 7 относятся к выбору защитных средств (нейтрализации рисков), остальные - к оценке рисков. Уже перечисление этапов показывает, что управление рисками - процесс циклический. По существу, последний этап - это оператор конца цикла, предписывающий вернуться к началу. Риски нужно контролировать постоянно, периодически проводя их переоценку. Отметим, что добросовестно выполненная и тщательно документированная первая оценка может существенно упростить последующую деятельность. Управление рисками, как и любую другую деятельность в области информационной безопасности, необходимо интегрировать в жизненный цикл ИС. Тогда эффект оказывается наибольшим, а затраты - минимальными. Ранее мы определили пять этапов жизненного цикла. Кратко опишем, что может дать управление рисками на каждом из них. После идентификации угрозы необходимо оценить вероятность ее осуществления. Допустимо использовать при этом трехбалльную шкалу (низкая (1), средняя (2) и высокая (3) вероятность). Кроме вероятности осуществления, важен размер потенциального ущерба. Например, пожары бывают нечасто, но ущерб от каждого из них, как правило, велик. Тяжесть ущерба также можно оценить по трехбалльной шкале. Оценивая размер ущерба, необходимо иметь в виду не только непосредственные расходы на замену оборудования или восстановление информации, но и более отдаленные, такие как подрыв репутации, ослабление позиций на рынке и т.п. Пусть, например, в результате дефектов в управлении доступом к бухгалтерской информации сотрудники получили возможность корректировать данные о собственной заработной плате. Следствием такого состояния дел может стать не только перерасход бюджетных или корпоративных средств, но и полное разложение коллектива, грозящее развалом организации. После того, как накоплены исходные данные и оценена степень неопределенности, можно переходить к обработке информации, то есть собственно к оценке рисков. Вполне допустимо применить такой простой метод, как умножение вероятности осуществления угрозы на предполагаемый ущерб. Если для вероятности и ущерба использовать трехбалльную шкалу, то возможных произведений будет шесть: 1, 2, 3, 4, 6 и 9. Первые два результата можно отнести к низкому риску, третий и четвертый - к среднему, два последних - к высокому, после чего появляется возможность снова привести их к трехбалльной шкале. По этой шкале и следует оценивать приемлемость рисков. Правда, граничные случаи, когда вычисленная величина совпала с приемлемой, целесообразно рассматривать более тщательно из-за приближенного характера результата 137. Основные понятия в области технической защиты информации. В общем случае защита информации представляет собой противостояние специалистов по информационной безопасности и злоумышленников. Злоумышленник – это субъект, который незаконным путем пытается добыть, изменить или уничтожить информацию законных пользователей. Защита информации является слабоформализуемой задачей, то есть не имеет формальных методов решения, и характеризуется следующим: большое количество факторов, влияющих на построение эффективной защиты; отсутствие точных исходных входных данных; отсутствие математических методов получения оптимальных результатов по совокупности исходных данных. В основе решения слабоформализуемых задач лежит системный подход. То есть для решения задачи защиты информации необходимо построить систему защиты информации, представляющую собой совокупность элементов, функционирование которых направлено на обеспечение безопасности информации. Угроза безопасности информации - совокупность условий и факторов, создающих потенциальную или реально существующую опасность нарушения безопасности информации. Атакой называется попытка реализации угрозы, а тот, кто предпринимает такую попытку, - злоумышленником. Источник угрозы безопасности информации - субъект (физическое лицо, материальный объект или физическое явление), являющийся непосредственной причиной возникновения угрозы безопасности информации. Конфиденциальность, доступность и целостность представляют собой три наиболее важных свойства информации в рамках обеспечения ее безопасности: Конфиденциальность информации - состояние информации, при котором доступ к ней осуществляют только субъекты, имеющие на него право; целостность информации - состояние информации, при котором отсутствует любое ее изменение либо изменение осуществляется только преднамеренно субъектами, имеющими на него право; доступность информации - состояние информации, при котором субъекты, имеющие права доступа, могут реализовать их беспрепятственно. Все меры защиты информации по способам осуществления подразделяются на: правовые (законодательные); морально-этические; технологические; организационные (административные и процедурные); физические; технические (аппаратурные и программные). Техническая защита информации - защита информации, заключающаяся в обеспечении некриптографическими методами безопасности информации (данных), подлежащей (подлежащих) защите в соответствии с действующим законодательством, с применением технических, программных и программнотехнических средств. Важно обратить внимание, что техническая защита – это не только защита от утечки информации по техническим каналам утечки, но и защита от НСД, от математического воздействия, от вредоносных программ и т.п. Объектами технической защиты информации могут быть: объект информатизации; информационная система; ресурсы информационной системы; информационные технологии; программные средства; сети связи. 138.Основные объекты защиты информации и их классификация. Принципы классификации автоматизированных систем и средств вычислительной техники по классам защищенности от несанкционированного доступа. Объект защиты информации - информация или носитель информации, или информационный процесс, которые необходимо защищать в соответствии с поставленной целью защиты информации. Существуют различные признаки, по которым классифицируется информация. С точки зрения защиты информации наиболее интересной является классификация по категории доступа. В соответствии с документом, классификация автоматизированных систем (АС) включает следующие этапы: Разработка и анализ исходных данных. Выявление основных признаков АС, необходимых для классификации. Сравнение выявленных признаков АС с классифицируемыми. Присвоение АС соответствующего класса защиты информации от НСД. Исходными данными для классификации АС являются: Перечень защищаемых информационных ресурсов АС и их уровень конфиденциальности. Перечень лиц, имеющих доступ к штатным средствам АС, с указанием их уровня полномочий. Матрица доступа или полномочий субъектов доступа по отношению к защищаемым информационным ресурсам АС. Режим обработки данных в АС. Выбор класса АС производится заказчиком и разработчиком с привлечением специалистов по защите информации. Устанавливаются 9 классов защищённости АС от НСД к информации, каждый класс характеризуется определённой минимальной совокупностью требований по защите. Классы подразделяются на 3 группы: III группа – классы 3Б и 3А. Классы соответствуют автоматизированным системам, в которых работает один пользователь, допущенный ко всей информации в АС, размещённой на носителях одного уровня конфиденциальности. II группа – классы 2Б и 2А. Классы данной группы соответствуют автоматизированным системам, в которых пользователи имеют одинаковые права доступа ко всей информации в АС, обрабатываемой или хранимой на носителях различного уровня конфиденциальности. I группа – классы 1Д, 1Г, 1В, 1Б и 1А. В этих автоматизированных системах одновременно обрабатывается или хранится информация разных уровней конфиденциальности. Не все пользователи имеют доступ ко всей информации в АС. Интересно, что документ выделяет 4 подсистемы для обеспечения защиты от НСД: управления доступом; регистрации и учета; криптографическая; обеспечения целостности. 139. Основные уязвимости стека протоколов TCP/IP. Основные классы атак в сетях на базе TCP/IP и способы борьбы с ними. Если АС имеет подключение к сетям общего пользования, то могут быть реализованы сетевые атаки на нее. К сетям общего пользования на основе стека протоколов TCP/IP относится и Интернет, на примере которого мы будем рассматривать наиболее распространенные в настоящее время атаки. Сеть Интернет создавалась для связи между государственными учреждениями и университетом с целью оказания помощи учебному процессу. На начальном этапе никто не мог предположить дальнейший масштаб его развития и интеграции в жизнь современного общества, в связи с чем вопросам безопасности не уделялось должного внимания. Как следствие, на данный момент стек обладает множеством уязвимостей, которыми с успехом пользуются злоумышленники для реализации атак. Уязвимости протоколов, входящих в стек TCP/IP обусловлены, как правило, слабой аутентификацией, ограничением размера буфера, отсутствием проверки корректности служебной информации и т.п. Угрозы, реализуемые по сети, классифицируются по следующим основным признакам: характер угрозы Пассивная – угроза, которая не оказывает влияния на работу информационной системы, но может нарушить правила доступа к защищаемой информации. Пример: использование sniffer для "прослушивания" сети. Активная – угроза, которая воздействуют на компоненты информационной системы, при реализации которой оказывается непосредственное влияние на работу системы. Пример: DDOS-атака в виде шторма TCP-запросами. условие начала атаки: по запросу от атакуемого. То есть злоумышленник ожидает передачи запроса определенного типа, который и будет условием начала НСД. по наступлению ожидаемого события на атакуемом объекте. безусловное воздействие – злоумышленник ничего не ждет, то есть угроза реализуется сразу и безотносительно к состоянию атакуемого объекта. наличие обратной связи с атакуемым объектом: с обратной связью, то есть на некоторые запросы злоумышленнику необходимо получить ответ. Таким образом, между атакуемым и атакующим есть обратная связь, позволяющая злоумышленнику следить за состоянием атакуемого объекта и адекватно реагировать на его изменения. без обратной связи – соответственно, нет обратной связи и необходимости злоумышленнику реагировать на изменения атакуемого объекта. расположение нарушителя относительно атакуемой информационной системы: внутрисегментно и межсегментно. Сегмент сети – физическое объединение хостов, технических средств и других компонентов сети, имеющих сетевой адрес. Например, один сегмент образуют компьютеры, подключенные к общей шине на основе Token Ring. уровень эталонной модели ISO/OSI, на котором реализуется угроза: физический, канальный, сетевой, транспортный, сеансовый, представительный, прикладной. Рассмотрим наиболее распространенные на настоящее время атаки в сетях на основе стека протоколов TCP/IP. Анализ сетевого трафика. Данная атака реализуется с помощью специальной программы, называемой sniffer. Sniffer представляет собой прикладную программу, которая использует сетевую карту, работающую в режиме promiscuous mode, так называемый "неразборчивый" режим в котором сетевая плата позволяет принимать все пакеты независимо от того кому они адресованы. В нормальном состоянии на Ethernetинтерфейсе используется фильтрация пакетов канального уровня и если MAC-адрес в заголовке назначения принятого пакета не совпадает с MAC-адресом текущего сетевого интерфейса и не является широковещательным, то пакет отбрасывается. В "неразборчивом" режиме фильтрация на сетевом интерфейсе отключается и все пакеты, включая не предназначенные текущему узлу, пропускаются в систему. Надо заметить, что многие подобные программы используются в легальных целях, например, для диагностики неисправностей или анализа трафика. Таким образом, с помощью sniffer можно перехватить имя и пароль и осуществить несанкционированный доступ к конфиденциальной информации. Более того, многие пользователи используют одни и те же пароли для доступа ко многим сетевым сервисам. То есть, если в одном месте сети есть слабость в виде слабой аутентификации, пострадать может вся сеть. Злоумышленники хорошо знают людские слабости и широко применяют методы социальной инженерии. Защита от данного вида атаки может заключаться в следующем: Сильная аутентификация, например, использование одноразовых паролей (one-time password). Суть состоит в том, что пароль можно использовать однократно, и даже если злоумышленник перехватил его с помощью sniffer, он не представляет никакой ценности. Конечно, данный механизм защиты спасает только от перехвата паролей, и является бесполезным в случае перехвата другой информации, например, электронной почты. Анти-снифферы – аппаратные или программные средства, способные выявить работу сниффера в сегменте сети. Как правило, они проверяют нагрузку на узлах сети с целью определения "лишней" нагрузки. Коммутируемая инфраструктура. Понятно, что анализ сетевого трафика возможен только внутри одного сегмента сети. Если сеть построена на устройствах, разбивающих ее на множество сегментов (коммутаторы и маршрутизаторы), то атака возможна только в тех участках сети, которые относятся к одному из портов данных устройств. Это не решает проблемы сниффинга, но уменьшает границы, которые может "прослушивать" злоумышленник. Криптографические методы. Самый надежный способ борьбы с работой sniffer. Информация, которая может быть получена с помощью перехвата, является зашифрованной и, соответственно, не имеет никакой пользы. Чаще всего используются IPSec, SSL и SSH. Сканирование сети. Целью сканирования сети является выявление работающих в сети служб, открытых портов, активных сетевых сервисов, используемых протоколов и т.п., то есть сбор информации о сети. Для сканирования сети чаще всего используются: запросы DNS помогают выяснить злоумышленнику владельца домена, адресную область, эхо-тестирование – выявляет работающие хосты на основе DNS-адресов, полученных ранее; сканирование портов – составляется полный перечень услуг, поддерживаемых этими хостами, открытые порты, приложения и т.п. Хорошей и наиболее распространенной контрмерой является использование IDS, которая успешно находит признаки ведения сканирования сети и уведомляет об этом администратора. Полностью избавиться от данной угрозы невозможно, так как если, например, отключить эхо ICMP и эхо-ответ на маршрутизаторе, то можно избавиться от угрозы эхо-тестирования, но при этом потерять данные, необходимые для диагностики сетевых сбоев. Выявление пароля. Основной целью данной атаки является получение несанкционированного доступа к защищаемым ресурсам путем преодоления парольной защиты. Чтобы получить пароль, злоумышленник может использовать множество способов – простой перебор, перебор по словарю, сниффинг и др. Самым распространенным является простой перебор всех возможных значений пароля. Для защиты от простого перебора необходимо применять сильные пароли, которые не просто подобрать: длина 6-8 символов, использование букв верхнего и нижнего регистра, использование специальных знаков (@,#,$ и т.д.). Еще одной проблемой информационной безопасности является то, что большинство людей используют одинаковые пароли ко всем службам, приложениям, сайтам и пр. При этом уязвимость пароля зависит от самого слабого участка его использования. Подобного рода атак можно избежать, если использовать одноразовые пароли, о которых мы говорили ранее, или криптографическую аутентификацию. IP-spoofing или подмена доверенного объекта сети. Под доверенным в данном случае понимается объект сети ( компьютер, маршрутизатор, межсетевой экран и т.п.), легально подключенный к серверу. Угрозы заключается в том, что злоумышленник выдает себя за доверенный объект сети. Это можно сделать двумя способами. Во-первых, воспользоваться IP-адресом, находящимся в пределах диапазона санкционированных IP-адресов, или авторизованным внешним адресом, которому разрешается доступ к определенным сетевым ресурсам. Атаки данного типа часто являются отправной точкой для прочих атак. Обычно подмена доверенного объекта сети ограничивается вставкой ложной информации или вредоносных команд в обычный поток данных, передаваемых между объектами сети. Для двусторонней связи злоумышленник должен изменить все таблицы маршрутизации, чтобы направить трафик на ложный IP-адрес, что тоже является возможным. Для ослабления угрозы (но не ее ликвидации) можно использовать следующее: Контроль доступа. Можно настроить контроль доступа на отсечение любого трафика, поступающего из внешней сети с исходным адресом внутри сети. Этот метод является действенным, если санкционированы только внутренние адреса и не работает, если есть санкционированные внешние адреса. Фильтрация RFC 2827 – данный тип фильтрации позволяет пресечь попытки спуфинга чужих сетей пользователями вашей сети. Для этого необходимо отбраковывать любой исходящий трафик, исходный адрес которого не является одним из IP-адресов вашей организации. Часто этот тип фильтрации выполняется провайдером. В результате отбраковывается весь трафик, который не имеет исходного адреса, ожидаемого на определенном интерфейсе. К примеру, если ISP предоставляет соединение с IP-адресом 15.1.1.0/24, он может настроить фильтр таким образом, чтобы с данного интерфейса на маршрутизатор ISP допускался только трафик, поступающий с адреса 15.1.1.0/24. Заметим, что до тех пор, пока все провайдеры не внедрят этот тип фильтрации, его эффективность будет намного ниже возможной. Внедрение дополнительных методов аутентификации. IP-spoofing возможен только в случае аутентификации на основе IP. Если ввести какие–то дополнительные меры по аутентификации, например, криптографические, атака становится бесполезной. Отказ в обслуживании или Denial of Service (DoS) - атака на вычислительную систему с целью довести её до отказа, то есть создание таких условий, при которых легитимные пользователи системы не могут получить доступ к предоставляемым системой ресурсам, либо этот доступ затруднён. DoS-атака является наиболее распространенной и известной атакой в последнее время, что обусловлено в первую очередь простотой реализации. Организация DOS-атаки требует минимум знаний и умений и строится на недостатках сетевого программного обеспечения и сетевых протоколов. Если атака проводится для множества сетевых устройств, говорят о распределенной атаке DoS (DDoS - distributed DoS). Для ослабления угрозы можно воспользоваться следующим: Функции анти-спуфинга - правильная конфигурация функций анти-спуфинга на ваших маршрутизаторах и межсетевых экранах поможет снизить риск DoS. Эти функции, как минимум, должны включать фильтрацию RFC 2827. Если хакер не сможет замаскировать свою истинную личность, он вряд ли решится провести атаку. Функции анти-DoS - правильная конфигурация функций анти-DoS на маршрутизаторах и межсетевых экранах может ограничить эффективность атак. Эти функции часто ограничивают число полуоткрытых каналов в любой момент времени. Ограничение объема трафика (traffic rate limiting) - организация может попросить провайдера (ISP) ограничить объем трафика. Этот тип фильтрации позволяет ограничить объем некритического трафика, проходящего по вашей сети. Обычным примером является ограничение объемов трафика ICMP, который используется только для диагностических целей. Атаки DoS часто используют ICMP[9.9]. Полностью исключить атаки на уровне приложений невозможно, так как прикладные программы с новыми уязвимостями возникают регулярно. Самое главное здесь - хорошее системное администрирование. Вот некоторые меры, которые можно предпринять, чтобы снизить уязвимость для атак этого типа: чтение логов (системных и сетевых); отслеживание уязвимостей в новом программном обеспечении с помощью специализированных сайтов, например, http://www.cert.com. использование IDS. 140.Классификация технических каналов утечки информации. Информационный сигнал и его характеристики. Физическая суть возникновения различных каналов утечки и их классификация. Утечка (информации) по техническому каналу - неконтролируемое распространение информации от носителя защищаемой информации через физическую среду до технического средства, осуществляющего перехват информации [12.1]. Технический канал утечки информации (ТКУИ), так же как и канал передачи информации, состоит из источника сигнала, физической среды его распространения и приемной аппаратуры злоумышленника. На рисунке 12.1 приведена структура технического канала утечки информации. Классификация технических каналов утечки информации приведена на рисунке Основным признакам для классификации технических каналов утечки информации является физическая природа носителя. По этому признаку ТКУИ делятся на: оптические; радиоэлектронные; акустические; материально-вещественные. Материальными носителями информации являются сигналы различной физической природы. В узком смысле сигналами называют колебания электрического тока, напряжения, электромагнитные волны, механические колебания некоторой упругой среды. Информационные сигналы формируются путем изменения тех или иных параметров носителя по определенному закону. Таким образом, информационным сигналом может быть любой физический процесс, параметры которого способны изменяться в зависимости от передаваемой информации. Этот процесс изменения параметров носителя принято называть модуляцией, а сами параметры информационными. В отличие от сообщения, прием сигнала после его генерации не является обязательным. При прохождении сигнала по физической среде на него воздействуют различные дестабилизирующие факторы, в результате чего возникают шумы и помехи самой различной природы. При регистрации сигнала основной задачей является выделение из общего сигнала полезной составляющей и максимальное подавление шумов и помех. Чтобы анализировать, исследовать и обрабатывать сигналы необходимо использовать математическую модель сигнала, которая представляет собой математическое описание сигнала. Слово "модель" произошло от латинского modelium, что означает: мера, способ, образ. Назначение модели состоит в том, что она отображает лишь наиболее важные черты сигнала и позволяет абстрагироваться от его физической природы и материальной формы носителя. Как правило, описание сигнала задается функциональной зависимостью его значений от независимой переменной, например, s(t). По форме представления сигналы бывают двух типов – аналоговые и цифровые (дискретные). Аналоговый сигнал определен для любого значения независимого параметра, то есть является непрерывной функцией непрерывного аргумента. Источниками аналоговых сигналов, как правило, являются физические процессы и явления, непрерывные в своем развитии (динамике изменения значений определенных свойств) во времени, в пространстве или по любой другой независимой переменной, при этом регистрируемый сигнал подобен (аналогичен) порождающему его процессу. Каждый технический канал утечки информации (ТКУИ) характеризуется показателями, которые позволяют оценить риск утечки информации.К таким показателям относятся: пропускная способность ТКУИ; длина ТКУИ; относительная информативность ТКУИ. Пропускная способность канала определяется как - ширина полосы пропускания канала, Гц , - мощность сигнала и помехи в Дб или Вт Многообразие технических каналов утечки информации представляют определённый выбор путей, способов и средств несанкционированного добывания информации. Анализируя ТКУИ можно сделать выводы: Утечка информации с возможностью ее дальнейшего анализа возможна по всем техническим каналам. Наиболее уязвимым по видовым демаскирующим признакам является оптический канал, т.к. на расстоянии с помощью соответствующих технических средств возможен перехват информации, например, с помощью специальной фотосъёмки. Основным каналом получения сигнальных демаскирующих признаков является радиоэлектронный канал, весьма существенным является и вещественный. Чем большую пропускную способность и длину имеет ТКУИ, тем он опаснее для владельца информации. Пропускная способность, длина и относительная информативность ТКУИ зависит от характеристик его элементов: источника, среды и приемника. 141.Средства и методы обнаружения технических каналов утечки информации. Мероприятия по выявлению технических каналов утечки информации. Оценка защищенности информации от утечки по техническим каналам утечки информации. Рассмотрим основные группы изделий, предназначенных для обнаружения закладных устройств съема информации с радиоканалом. Индикаторы электромагнитных излучений Прибор регистрирует ЭМИ в определенной точке пространства. Если уровень превышает пороговый, соответствующий естественному фону, срабатывает звуковое или световое предупреждение. Работающая радиозакладка будет обнаружена в том случае, если уровень ЭМИ, образующихся при ее работе, превышает уровень фоновых излучений. Наличие в схеме усилителя низких частот (УНЧ) и громкоговорителя позволяет выделить на фоне внешних сигналов тестовый акустический сигнал. Модулирование тестовым звуковым сигналом излучение принимается антенной индикатора, и, после усиления, поступает на вход динамика. Между микрофоном радиозакладки и динамиком индикатора устанавливается положительная обратная связь, проявляющаяся в виде звукового сигнала, напоминающего свист. Это называется режимом акустической обратной связи или "акустическая завязка". Радиочастотометры В отличие от индикаторов ЭМИ эти приборы регистрируют превышение порога по частоте. Поиск устройств съема осуществляется путем планомерного обхода помещения с радиочастотометром. При обходе помещения антенну необходимо ориентировать в разных плоскостях, при этом расстояние от антенны до обследуемых объектов должно быть 5-20 см. Возможное месторасположение закладки определяется по максимальному уровню сигнала в определенной точке пространства обследуемого помещения. При обнаружении излучения на дисплее высвечивается частота принимаемого сигнала, происходит звуковое или световое оповещение. Мероприятиями по выявлению технических каналов утечки информации являются: специальные проверки; специальные обследования; специальные исследования, включающие в себя: выявление внедренных закладок в защищаемом помещении; выявление самотехнических и других доработок технических средств и систем (ТСС), приводящих к усилению естественных свойств ТСС; выявление программных закладок, имеющих процессорное управление. Оценка защищенности помещений от утечки речевой информации по акустическому и виброакустическому каналам и по каналу электроакустических преобразований Одним из нормированных показателей оценки качества трактов (аппаратуры) телефонной проводной и радиосвязи, в которых используется аналоговый речевой сигнал, является разборчивость речи W, под которой понимается относительное количество (в процентах) правильно принятых, переданных по тракту элементов (слогов, слов, фраз) артикуляционных таблиц. Показатель словесной разборчивости речи используется для оценки эффективности защищенности помещений от утечки речевой информации по акустическому и виброакустическому каналам. Наиболее целесообразно для оценки разборчивости речи использовать инструментально-расчетный метод, основанный на результатах экспериментальных исследований, проведенных Н.Б. Покровским, описанным в книге "Расчет и измерение разборчивости речи". Здесь мы не будем приводить детальный расчет, а постараемся максимально просто рассмотреть предложенную методику. Для оценки разборчивости речи необходимо измерить уровни скрываемого речевого сигнала и шума (помехи) в месте возможного размещения приемных датчиков аппаратуры акустической разведки или в месте возможного прослушивания речи без применения технических средств. При этом считается, что перехват речевой информации возможен, если рассчитанное по результатам измерения значение словесной разборчивости речи W превышает установленные нормы. Полученные в контрольных точках отношения "сигнал/шум" сравниваются с нормированными или пересчитываются в числовую величину показателя противодействия для сравнения с нормированным значением. Различным видам речи соответствуют типовые интегральные (в полосе частот 170…5600 Гц) уровни речевых сигналов, измеренные на расстоянии 1 м от источника речи (говорящий человек, звуковоспроизводящее устройство): = 60 дБ тихая речь; = 64 дБ - речь средней громкости; = 70 дБ - громкая речь; = 84 дБ речь, усиленная техническими средствами. 142. Спецификация Internet-сообщества TLS. Протокол Secure Socket Layer (SSL). Основная функция протокола TLS состоит в обеспечении защиты и целостности данных между двумя взаимодействующими приложениями, одно из которых является клиентом, а другое – сервером. Протокол TLS (Transport Layer Security) разрабатывался на основе спецификации протокола SSL 3.0 (Secure Socket Layer), опубликованного корпорацией Netscape. Различия между данным протоколом и SSL 3.0 несущественны, но важно заметить, что TLS 1.0 и SSL 3.0 несовместимы, хотя в TLS 1.0 предусмотрен механизм, который позволяет реализациям TLS иметь обратную совместимость с SSL 3.0. Перечислим задачи протокола TLS в порядке их приоритета: Криптографическая безопасность: TLS должен использоваться для установления безопасного соединения между двумя участниками. Интероперабельность: независимые разработчики могут создавать приложения, которые будут взаимодействовать по протоколу TLS, что позволит устанавливать безопасные соединения. Расширяемость: TLS формирует общий каркас, в который могут быть встроены новые алгоритмы открытого ключа и симметричного шифрования. Это также избавляет от необходимости создавать новый протокол, что сопряжено с опасностью появления новых слабых мест, и предотвращает необходимость полностью реализовывать новую библиотеку безопасности. Относительная эффективность: криптографические операции интенсивно используют ЦП, особенно операции с открытым ключом. Для этого вводится понятие сессии, для которой определяются алгоритмы и их параметры. В рамках одной сессии может быть создано несколько соединений (например, ТСР). TLS позволяет кэшировать сессии для уменьшения количества выполняемых действий при установлении соединения. Это снижает нагрузку как на ЦП, так и на трафик. Протокол состоит из двух уровней. Нижним уровнем, расположенным выше некоторого надежного протокола (а именно, протокола ТСР) является протокол Записи. Протокол Записи обеспечивает безопасность соединения, которая основана на следующих двух свойствах: Конфиденциальность соединения. Для защиты данных используется один из алгоритмов симметричного шифрования. Ключ для этого алгоритма создается для каждой сессии и основан на секрете, о котором договариваются в протоколе Рукопожатия. Протокол Записи также может использоваться без шифрования. Целостность соединения. Обеспечивается проверка целостности сообщения с помощью МАС с ключом. Для вычисления МАС используются безопасные хэшфункции SHA-1 и MD5. Протокол Записи может выполняться без вычисления МАС, но обычно функционирует в этом режиме. Протокол Записи используется для инкапсуляции различных протоколов более высокого уровня. Одним из протоколов более высокого уровня является протокол Рукопожатия, который использует протокол Записи в качестве транспорта для ведения переговоров о параметрах безопасности. Протокол Рукопожатия позволяет серверу и клиенту аутентифицировать друг друга и договориться об алгоритмах шифрования и криптографических ключах до того, как прикладной протокол, выполняющийся на том же уровне, начнет передавать или принимать первые байты данных. Протокол Рукопожатия обеспечивает безопасность соединения, которая основана на следующих свойствах: Участники аутентифицированы с использованием криптографии с открытым ключом (т.е. с использованием алгоритмов RSA, DSS и т.д.). Эта аутентификация может быть необязательной, но обычно требуется по крайней мере для сервера. Переговоры о разделяемом секрете безопасны, т.е. этот общий секрет невозможно подсмотреть. Переговоры о разделяемом секрете надежны, если выполнена аутентификация хотя бы одной из сторон. В таком случае атакующий, расположенный в середине соединения, не может модифицировать передаваемый секрет незаметно для участников соединения. Одно из преимуществ TLS состоит в том, что он независим от прикладного протокола. Протоколы более высокого уровня могут прозрачно располагаться выше протокола TLS. SSL (англ. Secure Sockets Layer) — уровень защищённых сокетов) — криптографический протокол, который обеспечивает установление безопасного соединения между клиентом и сервером. SSL изначально разработан компанией Netscape Communications. Впоследствии на основании протокола SSL 3.0 был разработан и принят стандарт RFC, получивший имя TLS. Протокол обеспечивает конфиденциальность обмена данными между клиентом и сервером, использующими TCP/IP, причём для шифрования используется асимметричный алгоритм с открытым ключом. При шифровании с открытым ключом используются два ключа, причем любой из них может использоваться для шифрования сообщения. Тем самым, если используется один ключ для шифрования, то соответственно для расшифровки нужно использовать другой ключ. В такой ситуации можно получать защищённые сообщения, публикуя открытый ключ, и храня в тайне секретный ключ. Протокол SSL состоит из двух подпротоколов: протокол SSL записи и рукопожатия. Протокол SSL записи определяет формат, используемый для передачи данных. Протокол SSL включает рукопожатие с использованием протокола SSL записи для обмена сериями сообщений между сервером и клиентом во время установления первого соединения. Для работы SSL требуется, чтобы на сервере имелся SSL-сертификат. SSL предоставляет канал, имеющий 3 основных свойства: Аутентификация. Сервер всегда аутентифицируется, в то время как клиент аутентифицируется в зависимости от алгоритма. Целостность. Обмен сообщениями включает в себя проверку целостности. Частность канала. Шифрование используется после установления соединения и используется для всех последующих сообщений. В протоколе SSL все данные передаются в виде записей-объектов, состоящих из заголовка и передаваемых данных. Передача начинается с заголовка. Заголовок содержит либо два, либо три байта кода длины. Причём, если старший бит в первом байте кода равен единице, то запись не имеет заполнителя и полная длина заголовка равна двум байтам, иначе запись содержит заполнитель и полная длина заголовка равна трём байтам. Код длины записи не включает в себя число байт заголовка 143.Нетехнические меры защиты конфиденциальной информации от несанкционированного доступа: психологические меры и организационные меры. Уровни контроля информационных потоков Психологические меры Не вдаваясь подробно в психологические аспекты защиты, выделим два способа внедрения систем — открытый и закрытый. Как внедрять такую систему — решает сам заказчик, причем на самом высоком уровне. Безусловно, полностью реорганизовать документооборот незаметно для пользователей невозможно, тем более, что часть процесса внедрения — ознакомление пользователей с процедурами доступа. Однако если основная цель внедрения системы — выявление уже действующего канала утечки, определение всех его звеньев, причем не только исполнителей внутри компании, но и заказчиков информации вне ее, имеет смысл повременить с объявлением процедур и ставить, в первую очередь, мониторы активности пользователей и контентную фильтрацию почты. В случае оперативной разработки в отношении сотрудников компании по договоренности с производителем имеет смысл замаскировать программные агенты на рабочих станциях под программы, которые не вызовут подозрений, — антивирус или мониторы аудита программного обеспечения. Если же внедрять систему защиты от внутренних угроз открыто, то за счет психологического фактора можно даже сэкономить. Известно, что при внедрении систем видеонаблюдения для защиты периметра на некоторых направлениях можно ставить неподключенные камеры, так как сам факт наличия видеокамеры наблюдения уже останавливает большую часть нарушителей. Для этого камеры должны стоять на виду. По аналогии, организация новой системы хранения, ознакомление сотрудников с новыми регламентами, появление и предание гласности инцидентов с попыткой вынести запрещенную информацию за пределы компании наверняка предотвратят хищения информации саботажниками и нелояльными сотрудниками. Организационные меры Права локальных пользователей Было бы неправильным считать, что любое, даже самое совершенное программное обеспечение может решить все проблемы с утечками. Если такое программное обеспечение установлено, время от времени оно будет проверяться сотрудниками на возможность преодоления защиты. Кроме постоянного тестирования системы безопасности, необходимо ограничить возможности потенциальных взломщиков. В первую очередь это достигается за счет лишения пользователей прав локального администратора на их рабочих местах. Эта, казалось бы, простая мера до сих пор не применена в большинстве компаний. Иногда оправданием этого служит наличие в компании унаследованного программного обеспечения, неспособного работать с операционными системами, поддерживающими удаленное управление. Выходом из этого может быть локализация рабочих мест с правами локального администратора для работы с унаследованным приложением в отдельном сегменте сети, физическое или программное лишение рабочих мест устройств вывода и концентрация их в одном месте под контролем сотрудника, персонально ответственного за отсутствие утечек информации. Однако нужно понимать, что это решение является временным, и стратегически необходимо стремиться как можно скорее портировать унаследованные приложения в более современные операционные системы. Стандартизация ПО Мало в каких компаниях автору встречался такой документ, как список программного обеспечения, допущенного к установке на рабочих станциях, а там, где он есть, на его составление ответственные лица подвигло не беспокойство за утечки конфиденциальной информации, а, скорее, понимание того, что сотрудники могут использовать предоставленный им для работы компьютер для развлечений. Иначе невозможно объяснить наличие в этом списке файлового менеджера FAR. Возможно, встроенный в операционную систему Windows Explorer действительно неудобен, но зато он не позволяет копировать временные файлы Windows. Что выгоднее компании — заставить сотрудников пользоваться штатными средствами операционной системы или оставить мощный инструмент похищения данных? Ответ напрашивается сам собой, но большинство компаний, видимо, не ставит даже этот вопрос. После составления списка программного обеспечения необходимо гарантировать его установку на все рабочие станции и ограничить запуск других программ без участия администратора. Принцип "все, что не разрешено — запрещено" в этом случае должен выполняться неукоснительно. Это избавит компанию от будущих проблем с утечками через злонамеренных нарушителей — они не смогут использовать программное обеспечение, которое может использоваться для обмана, например, механизмов контентной фильтрации — шифрования и стеганографии. Специфические решения Небольшими организационными мерами можно решить очень большие проблемы. Когда-нибудь решение следующей задачи будут изучать в университетах. Одно федеральное ведомство серьезно страдало от регулярных утечек своей базы данных, которая имела устойчивый спрос на пиратских рынках. Контролировать все точки доступа к базе было технически очень сложно, и отдел информационной безопасности придумал следующий ход. Рассудив, что хищением информации занимается не больше десятка человек, причем вряд ли управляемых из одного центра, они попросили администраторов базы ограничить объем ежедневных запросов 20 Мбайт. Все, что больше, — по дополнительной заявке с обоснованием служебной необходимости. Вряд ли нарушители захотят проявить себя регулярными просьбами об увеличении лимита. Поскольку вся база занимала несколько гигабайт, выкачать ее за месяц одному человеку не представлялось возможным. Поскольку база меняется ежедневно, сшитые куски, скопированные в разные дни, нарушали актуальность базы. Через некоторое время базу перестали покупать, а потом, ввиду отсутствия спроса, — и похищать. Как видно, предотвратить утечки в данном случае удалось без дополнительных материальных затрат. Работа с кадрами И, конечно, необходимо постоянно работать с пользователями. Обучение пользователей, воспитание бдительности сотрудников, инструктаж новичков и временных сотрудников во многом сможет предотвратить утечки через незлонамеренных пользователей. Любое копирование информации на сменный носитель должно вызывать вопросы коллег — ведь лояльные сотрудники пострадают вместе с компанией, а значит, они на одной стороне баррикад. Высокая компьютерная квалификация пользователей не всегда является плюсом. В западной литературе встречается термин overqualified — приблизительно его можно перевести как "слишком квалифицированный" или "переквалифицированный". Причем излишняя квалификация в компьютерных навыках является более серьезным недостатком, чем квалификация недостаточная. Ведь научить недостающим навыкам можно всегда, а как заставить человека забыть уже имеющиеся навыки? Задайте себе вопрос, правильно ли, если сотрудник бухгалтерии обладает навыками системного администратора, а оператор на атомной станции заочно учится на эксперта по компьютерной безопасности? Выявление "специалистов-любителей" возможно во время традиционной аттестации. Стоит добавить в опросник вопрос "Как снять зависший процесс в Windows?" и провести разъяснительную работу с теми, кто начнет ответ со слов: "Нажать одновременно клавиши Ctrl, Alt и Del". Ведь правильный ответ на этот вопрос для большинства пользователей — "Вызвать системного администратора". Хранение физических носителей Еще один канал утечки информации — физический вынос носителей с резервными копиями. Понятно, что после абсолютно легального резервного копирования никакое программное обеспечение не в силах остановить физический вынос злоумышленником носителя, его копирование и занос обратно. Поэтому сейчас используется несколько способов защиты этого канала утечки. Первый — анонимизация носителей, то есть сотрудники, имеющие доступ к носителям, не знают, какая информация записана на каком носителе, они управляют только анонимными номерами носителей. Те сотрудники, которые знают, на каком носителе находится какая информация, в свою очередь, не должны иметь доступ к хранилищу носителей. Второй способ — шифрование информации при резервном копировании, поскольку расшифровка вынесенной информации потребует некоторого времени и дорогостоящей вычислительной мощности. Безусловно, здесь работают все технологии хранения ценных вещей — замки, открывающиеся только двумя ключами, находящимися у разных сотрудников, несколько уровней доступа и т. д. С развитием технологий радиоидентификации (RFID), возможно, появятся системы автоматического оповещения о попытках вынести за пределы хранилища носители, в которые для этой цели будут внедрены радиометки. Уровни контроля информационных потоков Традиционно системы контроля информационных контролировать информационные потоки в трех режимах: потоков позволяют Режим архива Режим сигнализации Режим активной защиты Режим архива Этот режим предполагает минимум вмешательства в деятельность информационной системы. В этом режиме система контроля лишь протоколирует действия пользователей, архивируя журналы операций с конфиденциальной информацией и содержимое информационных потоков. Архивы анализируются на предмет наличия в них фактов о нарушении политики информационной безопасности либо по регламенту (каждый вечер, каждую пятницу и т.д.), либо по запросу о расследовании инцидента. Преимуществом этого режима контроля является нетребовательность к вычислительным ресурсам и гибким управлением временем офицера информационной безопасности. Офицер безопасности сам определяет время для анализа архива. Его рабочее время, занятое анализом архива, не превышает нескольких часов в месяц. Недостатком этого режима является невозможность предотвращения утечки. Режим сигнализации Этот режим представляет собой расширенный режим архива, однако перед укладыванием информации в архив, действие или сообщение проверяется на предмет соответствия политике информационной безопасности. В случае выявления запрещенного действия/сообщения, офицер безопасности получает на свое рабочее место сообщение. В зависимости от уровня нарушения политики ИБ, офицер безопасности принимает решение реагировать немедленно, либо отложить реакцию. Преимуществом этого способа является возможность немедленно реагировать на события. Недостатком этого режима является также невозможность предотвращения утечек, а для офицера ИБ недостатком является необходимость постоянно находиться в режиме on-line. Режим активной защиты Этот режим позволяет активно вмешиваться в информационные процессы, блокировать опасные операции безвозвратно или до их разрешения офицером безопасности. Преимуществом этого режима является возможность блокирования попыток нарушить политику информационной безопасности, предотвращение утечек. Недостатком этого режима является необходимость постоянного присутствия офицера информационной безопасности для разбора спорных случаев и ложных срабатываний. На сегодняшний день максимальная достоверность использующихся технологий не превышает 90%, поэтому в режиме активной защиты на офицера ИБ ложится ответственность за оперативное решение спорных вопросов. Также недостатком такого режима является высокая требовательность к ресурсам, особенно при обработке on-line потоков. 144.Защита от сетевых атак на основе межсетевого экранирования. Механизм работы сетевого экрана, история и основные аспекты использования сетевых экранов Межсетевые экраны ( МЭ ) реализуют методы контроля за информацией, поступающей в АС и/или выходящей из АС, и обеспечения защиты АС посредством фильтрации информации на основе критериев, заданных администратором. Процедура фильтрации включает в себя анализ заголовков каждого пакета, проходящего через МЭ, и передачу его дальше по маршруту следования только в случае, если он удовлетворяет заданным правилам фильтрации. При помощи фильтрования МЭ позволяют обеспечить защиту от сетевых атак путем удаления из информационного потока тех пакетов данных, которые представляют потенциальную опасность для АС. Фильтрация пакетов данных может осуществляться по параметрам протоколов, относящихся к различным уровням модели ВОС. Важно отметить, что правила фильтрования пакетов данных, проходящих через МЭ, могут определяться на основе двух базовых методов. "Все, что не запрещено - разрешено". Правила фильтрации, построенные на основе этого метода, по существу определяют те типы пакетов, которые должны быть заблокированы МЭ. При этом все остальные пакеты данных, проходящие через МЭ, считаются разрешенными. "Все, что не разрешено - запрещено". Правила фильтрации, сформированные на основе данного метода определяют только разрешенные пакеты данных, которые могут поступать или отправляться из АС. При этом МЭ блокирует все остальные проходящие через него пакеты данных. Данный метод позволяет сформировать более строгие правила фильтрации за счет минимизации разрешенных типов пакетов. МЭ также позволяет скрыть реальные IP -адреса защищаемой АС при помощи функции трансляции сетевых адресов NAT ( Network Address Translation ), которая выполняется следующим образом. При поступлении пакета данных в МЭ он заменяет реальный IP -адрес отправителя пакета цанных на виртуальный и пересылает измененный пакет получателю (рис. 25.1). При получении ответных пакетов МЭ выполняет обратные действия по замене IP -адресов. Рис. 25.1. Схема трансляции IP-адресов в МЭ Пример межсетевого экрана: ISA Server 2006 ISA Server 2006 представляет собой межсетевой экран с интегрированными сервисами, который позволяет защитить ИТ-среду от угроз, поступающих через Интернет, одновременно обеспечивая пользователям быстрый и безопасный удаленный доступ к приложениям и данным. ISA Server 2006 обеспечивает три типа функциональности межсетевого экрана - фильтрация уровня: пакетов (или потоков) трафика приложений. Политика НТТР ISA Server 2006 позволяет межсетевому экрану выполнять глубокую переменную проверку содержимого НТТР (фильтрацию на уровне приложений). Глубина такой проверки настраивается отдельно для каждого правила, что позволяет устанавливать отдельные ограничения для входящего и исходящего содержимого HTTP. Можно настроить политику так, чтобы блокировать все попытки подключения к исполняемым файлам Microsoft Windows, независимо от используемых на ресурсе расширений имен. ISA Server 2006 позволяет определить политику загрузки файлов по протоколу HTTP на основе их расширений, например разрешить все расширения за исключением указанных или, наоборот, заблокировать все, кроме указанных. Важно отметить, что политика HTTP ISA Server 2006 позволяет управлять доступом по протоколу HTTP для всех подключений клиентов ISA Server 2006. 145. Противодействие методам социальной инженерии. Злоумышленник прекрасно знает, что одними техническими методами не обойтись, если необходимо добыть персональные данные пользователя. Он понимает, что необходимы психологические навыки для овладения пользователем. Иногда бывает так, что одних психологических уловок (которые носят название социальная инженерия) бывает вполне достаточно, чтобы добыть персональные данные пользователя. При этом добычу персональных данных в этом случае можно сравнить с мошенничеством или обычным вымоганием чего-либо, используя психические особенности человека. Есть некоторые психологические аспекты, которым подвержены в некоторой мере все люди, есть и те, которые влияют только на определенные категории лиц в определенных обстоятельствах. Но как бы то ни было, различные психологические аспекты, которыми пользуется злоумышленник в своем деле, существуют, и о них необходимо знать. Как подбираются пароли Как было сказано ранее, пароль можно подобрать методом брутфорса (полного перебора), но иногда этот метод непригоден, так как неизвестно, сколько именно он будет длиться. В этом случае альтернативой являются психологические методы подбора пароля пользователя. При этом злоумышленник надеется на шаблонность действий пользователя при установке пароля, а также на его психологическую и техническую безграмотность. Если обратиться к статистике, можно выяснить, что многие пользователи относятся к созданию своего пароля несерьезно и могут поставить достаточно шаблонные комбинации букв и цифр. Это объясняется тем, что сложный пароль необходимо держать в голове постоянно, чтобы не забыть его, простой же пароль запоминается гораздо легче и его сложнее забыть. Одними из самых распространенных паролей являются следующие пароли: 123456, 0000000, qwerty, йцукен. Такой пароль может быть легко подобран. Также пользователь может подумать, что он обезопасит себя, если в качестве пароля будет использовать комбинацию в виде своего дня рождения или номера телефона. Но и в этом случае пользователь ошибается. Доверчивость пользователя Многие люди доверчивы сами по себе, но особенно эта черта проявляется ярко, если речь заходит об информационных технологиях. Многие пользователи не удосуживаются проверять информацию на предмет ее подлинности, и, если человек представляется кем- либо в сети Интернет, этому безоговорочно верят, так как считают, что обмана в этом случае быть не может. Злоумышленники часто пользуются доверчивостью пользователей, а также тем, что иногда, для ответа на свой вопрос, они могут требовать моментального ответа, чтобы пользователь не мог правильно оценить ситуацию. Одной из таких уловок считается уловка с рассылкой на электронную почту пользователя сообщения о том, что администрация какоголибо сервиса потеряла доступ к аккаунту пользователя, и необходимо сообщить данные аккаунта пользователя, чтобы решить подобное недоразумение. Пользователь должен помнить, что администрация любого сервиса не будет запрашивать пароль пользователя ни при каких обстоятельствах. Желание к выгоде у пользователя Современная реальность вырабатывает у многих людей желание к какой-либо выгоде. В этом желании виноваты и сами люди по их сущности, а также рамки, которые ставит современная жизнь. Злоумышленник может это использовать в своих целях и попытаться предоставить пользователю какие-либо выгодные условия, от которых пользователь не сможет отказаться. Раньше таким примером были различные финансовые пирамиды, из которых мошенники извлеки большое количество денежных средств для своего содержания. Обычные же люди, которые вкладывали свои денежные средства, в результате остались ни с чем. И вроде бы понятна фраза о том, что бесплатный сыр бывает только в мышеловке, но люди постоянно забывают об этом, что дает злоумышленникам новые пути воздействия на психику человека. Одним из таких примеров является уже упомянутая финансовая пирамида. Современные же мошенники в охоте на персональные данные пользователя могут предложить ему обмен своих персональных данных на какие- либо материальные ценности (чаще всего деньги). Естественно, подобный обмен является лишь ловушкой, в которую пытаются заманить пользователя. Боязнь пользователей Каждый человек боится чего-либо. Страх к определенным вещам заложен в каждом человеке, независимо от его статуса, семейного положения или каких-либо других факторов. Особенно страх активно развивается, когда не понимаешь до конца то, чего боишься. В этом плане компьютерная безграмотность пользователей играет на руку различным злоумышленникам. Ведь если злоумышленник создаст видимую проблему, решение которой непонятно пользователю, то пользователь захочет побыстрее от нее избавиться. Этому очень хорошо способствует быстрое развитие информационных технологий, их постоянное прогрессирование. Чтобы такого не случилось, пользователь всегда должен задавать себе вопрос о том, являются ли его страхи обоснованными, не лучше ли разузнать про "темные" моменты самому, нежели довериться незнакомому человеку, который выставляет себя в очень хорошем свете. Желание помочь у пользователя Чувство сострадания или желание помочь заложено во многих людях. Еще родители прививают своим детям черту, которая заставляет их делать добро и помогать другим людям. К сожалению, злоумышленники активно пользуются подобной чертой и не брезгуют этим ради своей цели. Злоумышленник знает, что если он предстанет перед пользователем несчастным, разбитым и унылым, то пользователь обязательно попытается ему помочь, иначе он будет чувствовать угрызения совести. Метод от противного Злоумышленники иногда могут воспользоваться методом якорения или методом от противного, чтобы заставить пользователя сделать то, что необходимо злоумышленнику. При этом злоумышленник предлагает пользователю вначале вариант действий, который является абсолютно неприемлемым для пользователя, а затем предлагает более мягкий вариант, который пользователь интуитивно сравнит с предыдущим вариантом и решит, что второй вариант является наиболее подходящим. Хотя на самом деле злоумышленник создает лишь мнимую иллюзию выбора у пользователя, на самом деле злоумышленник точно знает, что захочет выбрать пользователь. Смешанные методы социальной инженерии Описанные выше методы были основными методами, которые используются злоумышленниками в охоте за персональными данными пользователя. Чаще всего ни один из этих методов не используется в чистом виде (это видно даже по приведенным примерам), многие из этих методов комбинируются друг с другом, образуя достаточную мощную систему по выуживанию персональных данных у пользователя. Также есть некоторые методы, которые не вошли в рамки отдельных абзацев, а будут приведены тут. Одним из таких методов является умение слушать собеседника. При этом подразумевается, что злоумышленник будет внимательно слушать свою жертву, а потом путем надавливания на нее, заставит ее сделать все, что необходимо злоумышленнику. Например, злоумышленник может подослать вирус на компьютер пользователя, который действительно принесет пользователю какие-либо опасные последствия, а затем злоумышленник притворится работником антивирусной компании, внимательно выслушает своего собеседника. Далее злоумышленник предложит пользователю лекарство от опасного вируса, и пользователь установит это лекарство себе на компьютер. Только это будет еще более опасная зловредная программа, которая будет нацелена уже на кражу персональных данных пользователя. Также вежливость является одним из главных дополняющих методов. Именно благодаря вежливости злоумышленник может входить в доверие к пользователю. Именно благодаря вежливости злоумышленник может заставлять пользователя делать то, что на самом деле необходимо злоумышленнику. Другим важным методом, которым пользуется злоумышленник, называется метод податливости к пользователю. Злоумышленник может показаться несколько наивным для пользователя, чтобы достичь своих целей. Он может дать пользователю выиграть в каком-либо быстро начавшемся споре, чтобы затем сманить пользователя в ту сторону, которая необходима злоумышленнику. 146. Обеспечение безопасности в сети Интернет С развитием сети Интернет появилось множество возможностей у обычных людей в плане обмена и получения информации. На данном этапе своего развития сеть Интернет позволяет делать практически все: совершать покупки, общаться с друзьями, обмениваться различной информацией. Но вместе с тем Интернет представляет собой опасное место для пользователя, так как он может лишиться своих персональных данных очень быстро и не заметить, как произошла кража. Киберпреступность в современном криминальном мире занимает значительную его часть. Каждый день крадутся множество персональных данных пользователей с помощью сети Интернет. Сбор данных Для того, чтобы спланировать свои действия насчет определенного пользователя, злоумышленник должен обладать определенной информацией об этом пользователе. Обычно имя и фамилию своей жертвы злоумышленник знает заранее, а более подробные детали он добывает через сеть, различные социальные сети очень способствуют этому. Другим местом, где злоумышленники могут почерпнуть данные о пользователе, являются многочисленные форумы, на которых может зарегистрироваться пользователь, интересующий злоумышленников. Но не только социальные сети, чаты и форумы могут стать местом, где злоумышленник сможет раздобыть персональные данные пользователя. Профили в различных онлайнсервисах, аукционных сайтах и других подобных местах могут стать отличным местом, через которое злоумышленник сможет получить интересующие его данные о пользователе. Использование баннеров Баннер представляет собой вид Интернет-рекламы, который существует уже давно. Баннеры бывают различного вида и характера, а также механизма появления. Баннеры могут быть как обычными, так и с кодом, который внедрил туда злоумышленник. Такой зловредный баннер может передавать различную информацию о пользователе, который сделал щелчок по баннеру. Также бывают различные баннеры, которые собирают информацию о пользователях, независимо от того, выполняли ли они какие-либо действия с баннером или нет. Одним из примеров являлось распространение в сети Интернет специальной кнопки-баннера, которая собирала информацию о местонахождении пользователя, а также некоторые данные его операционной системы и браузера. Противостоять таким баннером можно, если использовать специальные надстройки над браузером, которые не позволяют баннерам вообще появляться на страничке у пользователя. Также есть особый вид баннеров, который не содержит в себе зловредного кода как такового, но заставляет пользователя сделать действия, которые пользователь не собирался делать. Примером такого баннера может являться баннер, который сообщает о том, что якобы на компьютере пользователя обнаружен опасный вирус и его необходимо вылечить Фишинг Фишинг нацелен на получение логина и пароля к определенным сайтам или онлайнсервисам. Это достигается путем проведения массовых рассылок электронных писем от имени популярных брендов, а также личных сообщений внутри различных сервисов, например, от имени банков, сервисов или внутри социальных сетей. В письме часто содержится прямая ссылка на сайт, внешне неотличимый от настоящего. После того, как пользователь попадает на поддельную страницу, мошенники пытаются различными психологическими приемами побудить пользователя ввести на поддельной странице свои логин и пароль. Фишинг по сути является одной из разновидностей социальной инженерии, но уже с использованием не только психологических средств воздействия на пользователя, но также и технических. Для борьбы с фишингом многие браузеры ввели в свои алгоритмы перехода на другие сайты своеобразные фильтры, которые сообщают пользователю о том, что сайт может быть фишинговым. Рассылка через системы мгновенных сообщений Злоумышленник знает, что пользователь не загрузит исполняемый файл от незнакомого человека, но он может его загрузить, если этот файл передаст ему пользователь из его контакт листа. Злоумышленнику остается лишь взломать один аккаунт пользователя в системе мгновенных сообщений и далее начать рассылку исполняемого файла, в котором содержится зловредная программа. При этом пользователи будут верить в то, что исполняемый файл безобиден, так как его пересылает знакомый человек. Подставная работа Есть множество сайтов, которые якобы предлагают различную легкую работу пользователю за неплохие деньги. Один из примеров такой работы: пользователь регистрируется на различных сервисах под своими данными и потом передает эти аккаунты работодателю. На первый взгляд такая работа выглядит честной и порядочной, на самом деле работодатель может использовать такие аккаунты для того, чтобы распространять вредоносные программы. А в чем же заключается опасность для персональных данных? Прежде всего, в том, что пользователь может указывать на таких сайтах свои персональные данные, для того, чтобы совершить регистрацию. Для того, чтобы понять добросовестность человека, который предлагает работу, необходимо проверить его в различных источниках на наличие положительных или отрицательных отзывов на этого человека. Зомбирование компьютера Одной из опасностей для пользователя является не только потеря его персональных данных в результате действий злоумышленника, но также полный захват компьютера злоумышленником. В этом случае, компьютер считается зомбированным, и он может не только предоставить все персональные данные пользователя, которые хранятся на компьютере, но также быть использован в различных DDOS атаках (атаки на различные серверы с помощью зомбированных компьютеров). Зомбирование компьютера пользователя может произойти с помощью различных зловредных программ, которые распространяет злоумышленник. Пользователь должен помнить, что для защиты своего компьютера от зомбирования, он должен своевременно обновлять антивирусную защиту (а сама антивирусная защита должна быть проверенной и надежной), а также проявлять бдительность во всех ситуациях, которые были перечислены выше. Сервисы коротких ссылок Сами по себе сервисы коротких ссылок являются очень полезным инструментом, который позволяет сделать различные короткие ссылки из длинных ссылок. Это было создано для удобства пользователей, чтобы они могли обмениваться короткими ссылками на сайты вместо длинных и неудобных ссылок. Но злоумышленники заметили популярность и полезность сервисов коротких ссылок. Все дело в том, что различные узлы злоумышленников рано или поздно попадают в специальные базы, в которых говорится о том, что тот или иной узел опасен для обычного пользователя, так как он является разносчиком зловредных программ. Но попадания в такую базу можно избежать, если вместо своей подлинной ссылки использовать ссылку, которую сгенерирует сервис коротких ссылок. Схема получается примерно следующей - злоумышленник загружает на сайт сервиса свою ссылку, переходя по которой пользователь попадет на опасный сайт злоумышленника. Сервис коротких ссылок преобразует ссылку злоумышленника в короткую ссылку, являющуюся к тому же, на первый взгляд, еще и безопасной ссылкой, переход по которой абсолютно безопасен для пользователя. Но на самом деле ссылка все равно является опасной, так как она ведет на сайт злоумышленника. В итоге получается, что с помощью сервиса коротких ссылок злоумышленник маскирует свои вредоносные ссылки, чтобы потом иметь возможность рассылать их пользователям. Впрочем, в настоящее время появились различные программы и сервисы, которые определяют самостоятельно, что же именно находится за короткой ссылкой. 147. Общая схема симметричного симметричного шифрования. шифрования, классификация методов Общая схема симметричного шифрования Классическая, или одноключевая криптография опирается на использование симметричных алгоритмов шифрования, в которых шифрование и расшифрование отличаются только порядком выполнения и направлением некоторых шагов. Эти алгоритмы используют один и тот же секретный элемент (ключ), и второе действие (расшифрование) является простым обращением первого (шифрования). Поэтому обычно каждый из участников обмена может как зашифровать, так и расшифровать сообщение. Схематичная структура такой системы представлена на рис. 2.1. Рис. 2.1. Общая структура секретной системы, использующей симметричное шифрование На передающей стороне имеются источник сообщений и источник ключей. Источник ключей выбирает конкретный ключ К среди всех возможных ключей данной системы. Этот ключ К передается некоторым способом принимающей стороне, причем предполагается, что его нельзя перехватить, например, ключ передается специальным курьером (поэтому симметричное шифрование называется также шифрованием с закрытым ключом). Источник сообщений формирует некоторое сообщение М, которое затем шифруется с использованием выбранного ключа. В результате процедуры шифрования получается зашифрованное сообщение Е (называемое также криптограммой). Далее криптограмма Е передается по каналу связи. Так как канал связи является открытым, незащищенным, например, радиоканал или компьютерная сеть, то передаваемое сообщение может быть перехвачено противником. На принимающей стороне криптограмму Е с помощью ключа расшифровывают и получают исходное сообщение М. Известны разные методы шифрования с закрытым ключом рис. 2.2. На практике часто используются алгоритмы перестановки, подстановки, а также комбинированные методы. Рис. 2.2. Методы шифрования с закрытым ключом В методах перестановки символы исходного текста меняются местами друг с другом по определенному правилу. В методах замены (или подстановки) символы открытого текста заменяются некоторыми эквивалентами шифрованного текста. С целью повышения надежности шифрования текст, зашифрованный с помощью одного метода, может быть еще раз зашифрован с помощью другого метода. В этом случае получается комбинированный или композиционный шифр. Применяемые на практике в настоящее время блочные или поточные симметричные шифры также относятся к комбинированным, так как в них используется несколько операций для зашифрования сообщения. 148. Криптографические хеш-функции. Криптографической хеш-функцией называется всякая хеш-функция, являющаяся криптостойкой, то есть, удовлетворяющая ряду требований специфичных для криптографических приложений. Требования Для того, чтобы хеш-функция H считалась криптографически стойкой, она должна удовлетворять трем основным требованиям, на которых основано большинство применений хеш-функций в криптографии: Необратимость или стойкость к восстановлению прообраза: для заданного значения хеш-функции m должно быть вычислительно невозможно найти блок данных , для которого . Стойкость к коллизиям первого рода или восстановлению вторых прообразов: для заданного сообщения M должно быть вычислительно невозможно подобрать другое сообщение N, для которого . Стойкость к коллизиям второго рода: должно быть вычислительно невозможно подобрать пару сообщений , имеющих одинаковый хеш. Данные требования не являются независимыми: Обратимая функция нестойка к коллизиям первого и второго рода. Функция, нестойкая к коллизиям первого рода, нестойка к коллизиям второго рода; обратное неверно. Следует отметить, что не доказано существование необратимых хеш-функций, для которых вычисление какого-либо прообраза заданного значения хеш-функции теоретически невозможно. Обычно нахождение обратного значения является лишь вычислительно сложной задачей. Атака «дней рождения» позволяет находить коллизии для хеш-функции с длиной значений n битов в среднем за примерно вычислений хеш-функции. Поэтому nбитная хеш-функция считается криптостойкой, если вычислительная сложность нахождения коллизий для неё близка к . Для криптографических хеш-функций также важно, чтобы при малейшем изменении аргумента значение функции сильно изменялось (лавинный эффект). В частности, значение хеша не должно давать утечки информации даже об отдельных битах аргумента. Это требование является залогом криптостойкости алгоритмов хеширования пользовательских паролей для получения ключей. Итеративная последовательная схема В общем случае, в основе построения хеш-функции лежит итеративная последовательная схема. Ядром алгоритма являетсясжимающая функция — преобразование k входных в n выходных бит, где n — разрядность хеш-функции, а k — произвольное число большее n. При этом сжимающая функция должна удовлетворять всем условиям криптостойкости. Входной поток разбивается на блоки по (k-n)бит. Алгоритм использует временную переменную размером в n бит, в качестве начального значения которой берется некое, общеизвестное число. Каждый следующий блок данных объединяется с выходным значением сжимающей функции на предыдущей итерации. Значением хеш-функции являются выходные n бит последней итерации. Каждый бит выходного значения хеш-функции зависит от всего входного потока данных и начального значения. Таким образом достигается лавинный эффект. При проектировании хеш-функций на основе итеративной схемы возникает проблема с размером входного потока данных. Размер входного потока данных должен быть кратен (k-n). Как правило, перед началом алгоритма данные расширяются неким, заранее известным, способом. Сжимающая функция на основе симметричного блочного алгоритма В качестве сжимающей функции можно использовать симметричный блочный алгоритм шифрования. Для обеспечения большей безопасности можно использовать в качестве ключа блок данных предназначенный к хешированию на данной итерации, а результат предыдущей сжимающей функции в качестве входа. Тогда результатом последней итерации будет выход алгоритма. В таком случае безопасность хеш-функции базируется на безопасности используемого алгоритма. Основным недостатком хеш-функций, спроектированных на основе блочных алгоритмов, является низкая скорость работы. Необходимую криптостойкость можно обеспечить и за меньшее количество операций над входными данными. Существуют более быстрые алгоритмы хеширования, спроектированных самостоятельно, с нуля, исходя из требований криптостойкости (наиболее распространенные из них — MD5, SHA-1, SHA-2и ГОСТ Р 34.11-94). 149. Поточные шифры и генераторы псевдослучайных чисел. Поточные шифры Поточный шифр (stream cipher) выполняет преобразование входного сообщения по одному биту (или байту) за операцию. Поточный алгоритм шифрования устраняет необходимость разбивать сообщение на целое число блоков достаточно большой длины, следовательно, он может работать в реальном времени. Таким образом, если передается поток символов, каждый символ может шифроваться и передаваться сразу. Генератор ключей выдает поток битов ki, которые будут использоваться в качестве гаммы. Источник сообщений генерирует биты открытого текста хi, которые складываются по модулю 2 с гаммой, в результате чего получаются биты зашифрованного сообщения уi: Чтобы из шифротекста y1, y2,..., yn восстановить сообщение x1, x2,..., xn, необходимо сгенерировать точно такую же ключевую последовательность k1, yk,..., kn, что и при шифровании, и использовать для расшифрования формулу Обычно исходное сообщение и ключевая последовательность представляют собой независимые потоки бит. Таким образом, так как шифрующее (и расшифрующее) преобразование для всех поточных шифров одно и то же, они должны различаться только способом построения генераторов ключей. Получается, что безопасность системы полностью зависит от свойств генератора потока ключей. Если генератор потока ключей выдает последовательность, состоящую только из одних нулей (или из одних единиц), то зашифрованное сообщение будет в точности таким же, как и исходный поток битов (в случае единичных ключей зашифрованное сообщение будет инверсией исходного). Если в качестве гаммы используется один символ, представленный, например, восемью битами, то хотя зашифрованное сообщение и будет внешне отличаться от исходного, безопасность системы будет очень низкой. В этом случае при многократном повторении кода ключа по всей длине текста существует опасность его раскрытия статистическим методом. Линейный конгруэнтный генератор псевдослучайных чисел Генераторы псевдослучайных чисел могут работать по разным алгоритмам. Одним из простейших генераторов является так называемый линейный конгруэнтный генератор, который для вычисления очередного числа ki использует формулу ki=(a*ki-1+b)mod c, где а, b, с — некоторые константы, a ki-1 — предыдущее псевдослучайное число. Для получения k1 задается начальное значение k0. Метод Фибоначчи с запаздываниями (Lagged Fibonacci Generator) — один из методов генерации псевдослучайных чисел. Он позволяет получить более высокое "качество" псевдослучайных чисел. Известны разные схемы использования метода Фибоначчи с запаздыванием. Один из широко распространённых фибоначчиевых датчиков основан на следующей рекуррентной формуле: где ki — вещественные числа из диапазона [0,1], a, b — целые положительные числа, параметры генератора. Для работы фибоначчиеву датчику требуется знать max{a,b} предыдущих сгенерированных случайных чисел. При программной реализации для хранения сгенерированных случайных чисел необходим некоторый объем памяти, зависящих от параметров a и b. Генератор псевдослучайных чисел на основе алгоритма BBS Широкое распространение получил алгоритм генерации псевдослучайных чисел, называемый алгоритмом BBS (от фамилий авторов — L. Blum, M. Blum, M. Shub) или генератором с квадратичным остатком. Для целей криптографии этот метод предложен в 1986 году. Он заключается в следующем. Вначале выбираются два больших простых числа p и q. Числа p и q должны быть оба сравнимы с 3 по модулю 4, то есть при делении p и q на 4 должен получаться одинаковый остаток 3. Далее вычисляется число M = p* q, называемое целым числом Блюма. Затем выбирается другое случайное целое число х, взаимно простое (то есть не имеющее общих делителей, кроме единицы) с М. Вычисляем х0= х2mod M. х0 называется стартовым числом генератора. На каждом n-м шаге работы генератора вычисляется хn+1= хn2 mod M. Результатом nго шага является один (обычно младший) бит числа хn+1. Иногда в качестве результата принимают бит чётности, то есть количество единиц в двоичном представлении элемента. Если количество единиц в записи числа четное – бит четности принимается равным 0, нечетное – бит четности принимается равным 1. Генераторы псевдослучайных чисел на основе сдвиговых регистров с обратной связью Сдвиговые регистры с обратной связью могут применяться для получения потока псевдослучайных бит. Сдвиговый регистр с обратной связью состоит из двух частей: собственно n-битного сдвигового регистра и устройства обратной связи Извлекать биты из сдвигового регистра можно только по одному. Если необходимо извлечь следующий бит, все биты регистра сдвигаются вправо на 1 разряд. При этом на вход регистра слева поступает новый бит, который формируется устройством обратной связи и зависит от всех остальных битов сдвигового регистра. За счет этого биты регистра изменяются по определенному закону, который и определяет схему получения ПСЧ. Понятно, что через некоторое количество тактов работы регистра последовательность битов начнет повторяться. Длина получаемой последовательности до начала ее повторения называется периодомсдвигового регистра. Поточные шифры с использованием сдвиговых регистров достаточно долго использовались на практике. Это связано с тем, что они очень хорошо реализуются с помощью цифровой аппаратуры. Использование режимов OFB и CTR блочных шифров для получения псевдослучайных чисел Можно использовать любой блочный алгоритм, например AES или ГОСТ 28147-89, для поточного шифрования информации, используя режимы OFB и CTR блочных шифров. Название режима OFB (Output FeedBack) переводится как "обратная связь по выходу". Пусть минимальный блок данных, используемый для передачи, состоит из j бит; обычным значением является j=8 (то есть минимальной порцией передаваемых данных является 1 байт). В режиме OFB блочный шифр f на основе секретного ключа К и некоторого инициализирующего значения Y0 формирует псевдослучайную последовательность j-битовых чисел z1,z2,...,zk, которая затем может использоваться в качестве гаммы для шифрования сообщения. Результат зашифрования является входом процедуры шифрования следующего блока исходного сообщения. На каждом этапе шифрования из зашифрованного блока Yi выбирается j младших битов. Таким образом, для получения псевдослучайной последовательности используется схема: Yi=f(Yi-1,K), zi=j младших бит Yi, 1<=i<=k Если размер блока шифра равен N бит, то параметр j может принимать значения от 1 до N. Значение Y0 называют также инициализирующим вектором. Генераторы настоящих случайных чисел в криптографии Генераторы ПСЧ находят широкое применение в криптографии, например, при потоковом шифровании. Однако иногда бывает необходимо генерировать совершенно непредсказуемые или попросту абсолютно случайные числа. Такие генераторы называются генераторами случайных чисел (random number generator) или сокращённо ГСЧ (RNG). Генератор настоящих случайных чисел в зависимости от некоторого инициализирующего значения выдает последовательность, которая не может быть впоследствии повторена. Наилучшие характеристики будут иметь генераторы случайных чисел, основанные на естественных случайностях реального мира. Например, можно создать ГСЧ, основанные на следующих данных: количество импульсов счетчика Гейгера за единицу времени, например, за одну секунду; числа, оказывающиеся на верхней грани игрального кубика при произвольном броске; количество самолетов, пролетающих над определенным районом в единицу времени, например, месяц. 150. Криптографические алгоритмы с открытым ключом и их использование (асимметричная криптография): RSA, алгоритм Диффи-Хеллмана, алгоритм ЭльГамаля. Криптосистема с открытым ключом применяет определенные неинвертируемые математические функции. Сложность вычислений таких функций не является линейной от количества битов ключа, а возрастает быстрее, чем ключ. Таким образом, размер ключа должен быть достаточно большим, чтобы сделать лобовую атаку непрактичной, и достаточно маленьким для возможности практического шифрования. Основные способы использования алгоритмов с открытым ключом Основными способами использования алгоритмов с открытым ключом являются шифрование/дешифрование, создание и проверка подписи и обмен ключа. Шифрование с открытым ключом состоит из следующих шагов: Рис. 7.1. Шифрование с открытым ключом 1. Пользователь В создает пару ключей KUb и KRb, используемых для шифрования и дешифрования передаваемых сообщений. 2. Пользователь В делает доступным некоторым надежным способом свой ключ шифрования, т.е. открытый ключ KUb. Составляющий пару закрытый ключ KRb держится в секрете. 3. Если А хочет послать сообщение В, он шифрует сообщение, используя открытый ключ В KUb. 4. Когда В получает сообщение, он дешифрует его, используя свой закрытый ключ KRb. Никто другой не сможет дешифровать сообщение, так как этот закрытый ключ знает только В. Если пользователь (конечная система) надежно хранит свой закрытый ключ, никто не сможет подсмотреть передаваемые сообщения. Создание и проверка подписи состоит из следующих шагов: Рис. 7.2. Создание и проверка подписи 1. Пользователь А создает пару ключей KRA и KUA, используемых для создания и проверки подписи передаваемых сообщений. 2. Пользователь А делает доступным некоторым надежным способом свой ключ проверки, т.е. открытый ключ KUA. Составляющий пару закрытый ключ KRA держится в секрете. 3. Если А хочет послать подписанное сообщение В, он создает подпись EKRa[M] для этого сообщения, используя свойзакрытый ключ KRA. 4. Когда В получает подписанное сообщение, он проверяет подпись DKUa[M], используя открытый ключ А KUA. Никто другой не может подписать сообщение, так как этот закрытый ключ знает только А. До тех пор, пока пользователь или прикладная система надежно хранит свой закрытый ключ, их подписи достоверны. Кроме того, невозможно изменить сообщение, не имея доступа к закрытому ключу А ; тем самым обеспечивается аутентификация и целостность данных. Алгоритм RSA Алгоритм RSA является, наверно, наиболее популярным и широко применяемым асимметричным алгоритмом в криптографических системах. Алгоритм основан на использовании того факта, что задача разложения большого числа на простые сомножители является трудной. Криптографическая система RSA базируется на следующих двух фактах из теории чисел: 1. задача проверки числа на простоту является сравнительно легкой; 2. задача разложения чисел вида n = pq ( р и q — простые числа); на множители является очень трудной, если мы знаем только n, а р и q — большие числа (это так называемая задача факторизации, подробнее о ней см. "Основные положения теории чисел, используемые в криптографии с открытым ключом"). Алгоритм RSA представляет собой блочный алгоритм шифрования, где зашифрованные и незашифрованные данные должны быть представлены в виде целых чисел между 0 и n -1 для некоторого n. Алгоритм Диффи-Хеллмана Алгоритм основан на трудности вычислений дискретных логарифмов. Попробуем разобраться, что это такое. В этом алгоритме, как и во многих других алгоритмах с открытым ключом, вычисления производятся по модулю некоторого большого простого числа Р. Вначале специальным образом подбирается некоторое натуральное число А, меньшее Р. Если мы хотим зашифровать значение X, то вычисляем Y = AX mod P. Причем, имея Х, вычислить Y легко. Обратная задача вычисления X из Y является достаточно сложной. Экспонента X как раз и называется дискретным логарифмом Y. Таким образом, зная о сложности вычисления дискретного логарифма, число Y можно открыто передавать по любому каналу связи, так как при большом модуле P исходное значение Х подобрать будет практически невозможно. На этом математическом факте основан алгоритм Диффи-Хеллмана для формирования ключа. Алгоритм Эль-Гамаля И в случае шифрования, и в случае формирования цифровой подписи каждому пользователю необходимо сгенерировать пару ключей. Для этого, так же как и в схеме Диффи-Хеллмана, выбираются некоторое большое простое число Р и число А, такие, что различные степени А представляют собой различные числа по модулю Р. Числа Р и А могут передаваться в открытом виде и быть общими для всех абонентов сети. Затем каждый абонент группы выбирает свое секретное число Хi, 1 < Х i < Р-1, и вычисляет соответствующее ему открытое число . Таким образом, каждый пользователь может сгенерировать закрытый ключ Хi и открытый ключ Yi. Информация о необходимых параметрах системы сведена в следующую таблицу. Общие параметры Открытый ключ Закрытый ключ Пользователь 1 Р, А Y1 Х1 … … … Пользователь i Yi Хi 151. Основные подходы к формированию электронной подписи на основе различных алгоритмов с открытым ключом. Отечественные и зарубежные стандарты на алгоритмы цифровой подписи. Электронная подпись на основе алгоритма RSA Cхема использования алгоритма RSA при большом модуле Nпрактически не позволяет злоумышленнику получить закрытый ключ и прочитать зашифрованное сообщение. Однако она дает возможность злоумышленнику подменить сообщение от абонента А к абоненту Б, так как абонент А шифрует свое сообщение открытым ключом, полученным от Б по открытому каналу связи. А раз открытый ключ передается по открытому каналу, любой может получить его и использовать для подмены сообщения. Избежать этого можно, используя более сложные протоколы, например, следующий. Пусть, как и раньше, пользователь А хочет передать пользователю В сообщение, состоящее из нескольких блоков mi. Перед началом сеанса связи абоненты генерируют открытые и закрытые ключи, обозначаемые, как указано в следующей таблице: Открытый ключ Закрытый ключ Пользователь А NA, dA eA Пользователь Б NБ, dБ eБ В результате каждый пользователь имеет свои собственные открытый (состоящий из двух частей) и закрытый ключи. Затем пользователи обмениваются открытыми ключами. Это подготовительный этап протокола. Основная часть протокола состоит из следующих шагов. 1. Сначала пользователь А вычисляет числа , то есть шифрует сообщение своим закрытым ключом. В результате этих действий пользователь А подписывает сообщение. 2. Затем пользователь А вычисляет числа , то есть шифрует то, что получилось на шаге 1 открытым ключом пользователя Б. На этом этапе сообщение шифруется, чтобы никто посторонний не мог его прочитать. 3. Последовательность чисел gi передается к пользователю Б. 4. Пользователь Б получает gi и вначале вычисляет последовательно числа , используя свой закрытый ключ. При этом сообщение расшифровывается. 5. Затем Б определяет числа , используя открытый ключ пользователя А. За счет выполнения этого этапа производится проверка подписи пользователя А. В результате абонент Б получает исходное сообщение и убеждается в том, что его отправил именно абонент А. Данная схема позволяет защититься от нескольких видов возможных нарушений, а именно: пользователь А не может отказаться от своего сообщения, если он признает, что секретный ключ известен только ему; нарушитель без знания секретного ключа не может ни сформировать, ни сделать осмысленное изменение сообщения, передаваемого по линии связи.. Цифровая подпись на основе алгоритма Эль-Гамаля Принцип создания и проверки подписи Алгоритм Эль-Гамаля также можно использовать для формирования цифровой подписи. Группа пользователей выбирает общие параметры Р и А. Затем каждый абонент группы выбирает свое секретное число Хi, 1 < Хi< Р-1, и вычисляет соответствующее ему открытое число . Таким образом, каждый пользователь получает пару (закрытый ключ; открытый ключ) = (Хi, Yi). Открытые ключи пользователей могут храниться в общей базе системы распределения ключей и при необходимости предоставляться всем абонентам системы. Сообщение, предназначенное для подписи, должно быть представлено в виде числа, меньшего модуля Р. При большом размере сообщение разбивается на блоки необходимого размера. В некоторых случаях подписывается не само сообщение, а значение хеш-функции от него. В любом варианте цифровая подпись вычисляется в зависимости от некоторого числа m (m < P). Пусть пользователь 1 хочет подписать свое сообщение цифровой подписью и передать его пользователю 2. В этом случае алгоритм действий следующий. 1. Первый пользователь выбирает случайное секретное число k, взаимно простое с Р-1, и вычисляет число 2. Затем с помощью расширенного алгоритма Евклида необходимо найти значение b в следующем уравнении: m = (X1 * a +k * b) mod (P-1) Пара чисел (a, b) будет цифровой подписью сообщения m. 3. Сообщение m вместе с подписью (a, b) отправляется пользователю 2. 4. Пользователь 2 получает сообщение m и с использованием открытого ключа первого абонента Y1 вычисляет два числа по следующим формулам: Если с1 = с2, то цифровая подпись первого пользователя верная. Для подписывания каждого нового сообщения должно каждый раз выбираться новое значение k. Подписи, созданные с использованием алгоритма Эль-Гамаля, называются рандомизированными, так как для одного и того же сообщения с использованием одного и того же закрытого ключа каждый раз будут создаваться разные подписи(a,b), поскольку каждый раз будет использоваться новое значение k. Подписи, созданные с применением алгоритма RSA, называются детерминированными, так как для одного и того же сообщения с использованием одного и того же закрытого ключа каждый раз будет создаваться одна и та же подпись. Стандарты на алгоритмы цифровой подписи Стандарт цифровой подписи DSS Во многих странах сегодня существуют стандарты на электронную (цифровую) подпись. Стандарт цифровой подписи DSS (Digital Signature Standard – DSS) был принят в США в 1991 году и пересмотрен в 1994 году. В основе стандарта лежит алгоритм, называемый DSA (Digital Signature Algorithm) и являющийся вариацией подписи Эль-Гамаля. В алгоритме используется однонаправленная хешфункцияH(m). В качестве хэш-алгоритма стандарт DSS предусматривает использование алгоритма SHA-1. Стандарт цифровой подписи ГОСТ Р34.10-94 В России принят стандарт ГОСТ Р34.10-94 "Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма". В этом стандарте используется алгоритм, аналогичный алгоритму, реализованному в стандарте DSS. Пример создания и проверки подписи по стандарту ГОСТ Р34.10-94 Пусть p = 23, q = 11, a =6 (проверяем: 611 mod 23 = 1 ) Создание подписи. Предположим, пользователь А выбрал в качестве закрытого ключа число х=8. После этого он вычисляет открытый ключ по формуле y = аx mod p. То есть y = 68 mod 23 = 18. Для создания подписи пользователь А выбирает случайное число k = 5. Пусть результат вычисления хеш-функции для сообщения H(m) = 9. Подпись сообщения состоит из двух чисел (r, s): r = (аkmod p) mod q = (65 mod 23) mod 11 = 2, s = (k* H(m) + x * r) mod q = (5 * 9 + 8 * 2) mod 11 = 6, Таким образом, подпись сообщения состоит из пары чисел (2, 6). Новый отечественный стандарт ЭЦП В 2001 г. был принят новый отечественный стандарт на алгоритм формирования и проверки ЭЦП. Его полное название следующее: "ГОСТ Р34.10-2001. Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи". Данный алгоритм был разработан главным управлением безопасности связи Федерального агентства правительственной связи и информации при Президенте Российской Федерации при участии Всероссийского научно-исследовательского института стандартизации. Новый стандарт разрабатывался с целью обеспечения большей стойкости алгоритма генерации ЭЦП. В основе ГОСТ Р34.10-2001 лежат алгоритмы с использованием операций на эллиптических кривых. Стойкость ГОСТ Р34.10-2001 основывается на сложности взятия дискретного логарифма в группе точек эллиптической кривой, а также на стойкости хэш-функции по ГОСТ Р34.11-94. Размер формируемой цифровой подписи – 512 бит. 152. Шифрование, помехоустойчивое кодирование и сжатие информации В процессе передачи информации от источника к потребителю на информацию воздействуют различные неблагоприятные факторы. Криптографические методы защищают информацию только от одного вида разрушающих воздействий – от предумышленного разрушения или искажения информации. Однако на практике при передаче информации от абонента к абоненту возможны случайные помехи на линиях связи, ошибки и сбои аппаратуры, частичное разрушение носителей данных и т.д. Таким образом, в реальных системах связи существует проблема защиты информации от случайных воздействий. В связи с появлением сетей передачи данных высокой пропускной способности и развитием мультимедиа-технологий возникает проблема шифрования больших объемов информации В принципе в теории информации выделяют три вида преобразования информации: криптографическое шифрование, помехоустойчивое кодирование и сжатие (или компрессия). В некоторых научных работах ХХ века все три вида преобразования информации называли кодированием: криптографическое кодирование, помехоустойчивое кодирование и эффективное кодирование (сжатие данных). Общим для всех трех видов преобразования является то, что информация какимлибо образом меняет форму представления, но не смысл. Отличия разных видов кодирования связаны с целью проводимых преобразований. На практике эти три вида преобразования информации обычно используются совместно. Так, например, некоторые программные пакеты перед шифрованием архивируют обрабатываемые данные. С другой стороны, реальные системы передачи информации, будь то локальные и глобальные сети передачи данных, или компьютерные носители информации (CD или DVD-диски) всегда имеют в составе системы защиты информации средства контроля и коррекции случайных ошибок. Таким образом, криптографическое шифрование, помехоустойчивое кодирование и сжатие отчасти дополняют друг друга и их комплексное использование помогает эффективно использовать каналы связи для надежной защиты передаваемой информации. Помехоустойчивое кодирование Как уже отмечалось, вопросы криптографического преобразования информации тесно связаны с вопросами помехоустойчивого кодирования сообщений. Это обусловлено, с одной стороны (теоретической), тем, что и при криптографическом шифровании, и при помехоустойчивом кодировании используются одни и те же законы теории информации. С другой стороны (практической) процессы накопления, хранения и передачи информации протекают в условиях воздействия помех, способных исказить хранимые и обрабатываемые данные. Это обуславливает актуальность разработки и использования методов, позволяющих обнаруживать и корректировать подобные ошибки. С математической точки зрения задача сводится к синтезу так называемых помехоустойчивых кодов. Аналогично понятию шифра в криптографии при обсуждении помехоустойчивого кодирования и вопросов сжатия сообщений вводят понятие кода. Вообще кодом называется совокупность знаков, а также система правил, позволяющая представлять информацию в виде набора таких знаков. Кодовым словом называют любой ряд допустимых знаков. Например, двоичное число 1100 можно считать двоичным 4-разрядным кодовым словом. Общая идея помехоустойчивого кодирования состоит в том, что из всех возможных кодовых слов считаются допустимыми не все, а лишь некоторые из них. Например, в коде с контролем по четности считаются допустимыми лишь слова с четным числом единиц. Ошибка превращает допустимое слово в недопустимое и поэтому обнаруживается. Помехоустойчивые коды делятся на блоковые, делящие информацию на фрагменты постоянной длины и обрабатывающие каждый из них в отдельности, и свёрточные, работающие с данными как с непрерывным потоком. Блоковые коды характеризуются так называемым минимальным кодовым расстоянием. Вообще, расстоянием по Хэммингу (по имени американского математика Р.У. Хэмминга) между двумя кодовыми словами называется число разрядов, в которых они различны. При этом в качестве минимального кодового расстояния выбирается наименьшее из всех расстояний по Хэммингу для любых пар различных кодовых слов, образующих код. Платой за помехоустойчивость является необходимость увеличения длины слов по сравнению с обычным кодом. В данном примере только два разряда являются информационными. Это они образуют четыре разных слова. Третий разряд является контрольным и служит только для увеличения расстояния между допустимыми словами. В передаче информации контрольный разряд не участвует, так как является линейно зависимым от информационных. Код с контролем по четности, рассмотренный в качестве примера, позволяет обнаружить одиночные ошибки в блоках данных при передаче данных. Однако он не сможет обнаружить двукратные ошибки потому, что двукратная ошибка переводит кодовое слово через промежуток между допустимыми словами и превращает его в другое допустимое слово. Принципы сжатия данных Сжатие информации представляет собой процесс преобразования исходного сообщения из одной кодовой системы в другую, в результате которого уменьшается размер сообщения. Алгоритмы, предназначенные для сжатия информации, можно разделить на две большие группы: реализующие сжатие без потерь (обратимое сжатие) и реализующие сжатие с потерями (необратимое сжатие). Обратимое сжатие подразумевает абсолютно точное восстановление данных после декодирования и может применяться для сжатия любой информации. Оно всегда приводит к снижению объема выходного потока информации без изменения его информативности, то есть без потери информационной структуры. Более того, из выходного потока, при помощи восстанавливающего или декомпрессирующего алгоритма, можно получить входной, а процесс восстановления называется декомпрессией или распаковкой и только после процесса распаковки данные пригодны для обработки в соответствии с их внутренним форматом. Сжатие без потерь применяется для текстов, исполняемых файлов, высококачественного звука и графики. Необратимое сжатие имеет обычно гораздо более высокую степень сжатия, чем кодирование без потерь, но допускает некоторые отклонения декодированных данных от исходных. На практике существует широкий круг практических задач, в которых соблюдение требования точного восстановления исходной информации после декомпрессии не является обязательным. Это, в частности, относится к сжатию мультимедийной информации: звука, фото- или видеоизображений. Так, например, широко применяются форматы мультимедийной информации JPEG и MPEG, в которых используется необратимое сжатие. Необратимое сжатие обычно не используется совместно с криптографическим шифрованием, так как основным требованием к криптосистеме является идентичность расшифрованных данных исходным. Однако при использовании мультимедиа-технологий данные, представленные в цифровом виде, часто подвергаются необратимой компрессии перед подачей в криптографическую систему для шифрования. После передачи информации потребителю и расшифрования мультимедиа-файлы используются в сжатом виде (то есть не восстанавливаются). 153. Анализ рисков как основа управления информационной безопасностью предприятия. Методики управления и анализа рисков. Определение целей управления информационной безопасностью Можно попытаться — при помощи руководства и работников организации — понять, что же на самом деле нужно защищать и от кого. С этого момента начинается специфическая деятельность на стыке технологий и основного бизнеса, которая состоит в определении того направления деятельности и (если возможно) целевого состояния обеспечения ИБ, которое будет сформулировано одновременно и в бизнес-терминах, и в терминах ИБ. Процесс анализа рисков — это и есть инструмент, с помощью которого можно определить цели управления ИБ, оценить основные критичные факторы, негативно влияющие на ключевые бизнес-процессы компании, и выработать осознанные, эффективные и обоснованные решения для их контроля или минимизации. Идентификация и оценка активов Цель управления ИБ состоит в сохранении конфиденциальности, целостности и доступности информации. Вопрос только в том, какую именно информацию необходимо охранять и какие усилия прилагать для обеспечения ее сохранности Любое управление основано на осознании ситуации, в которой оно происходит. В терминах анализа рисков осознание ситуации выражается в инвентаризации и оценке активов организации и их окружения, т. е. всего того, что обеспечивает ведение бизнес-деятельности. С точки зрения анализа рисков ИБ к основным активам относятся непосредственно информация, инфраструктура, персонал, имидж и репутация компании. Без инвентаризации активов на уровне бизнес-деятельности невозможно ответить на вопрос, что именно нужно защищать. Очень важно понять, какая информация обрабатывается в организации и где выполняется ее обработка. Работа по определению ценности информационных активов в разрезе всей организации одновременно наиболее значима и сложна. Именно оценка информационных активов позволит начальнику отдела ИБ выбрать основные направления деятельности по обеспечению информационной безопасности. Ценность актива выражается величиной потерь, которые понесет организация в случае нарушения безопасности актива. Определение ценности проблематично, потому что в большинстве случаев менеджеры организации не могут сразу же дать ответ на вопрос, что произойдет, если, к примеру, информация о закупочных ценах, хранящаяся на файловом сервере, уйдет к конкуренту. Вернее сказать, в большинстве случаев менеджеры организации никогда не задумывались о таких ситуациях. Анализ источников проблем После определения целей управления ИБ следует проанализировать проблемы, которые мешают приблизиться к целевому состоянию. На этом уровне процесс анализа рисков спускается до информационной инфраструктуры и традиционных понятий ИБ — нарушителей, угроз и уязвимостей Модель нарушителя В процессе анализа рисков необходимо оценить мотивированность нарушителей при реализации угроз. При этом под нарушителем подразумевается не абстрактный внешний хакер или инсайдер, а сторона, заинтересованная в получении выгоды путем нарушения безопасности актива. Модель угроз Разработка модели угроз — работа для профессионалов в области ИБ, которые хорошо представляют себе, каким образом нарушитель может получить неавторизованный доступ к информации, нарушая периметр защиты или действуя методами социальной инженерии. При разработке модели угроз можно также говорить о сценариях как о последовательных шагах, в соответствии с которыми могут быть реализованы угрозы. Очень редко случается, что угрозы реализуются в один шаг путем эксплуатации единственного уязвимого места системы. В модель угроз следует включить все угрозы, выявленные по результатам смежных процессов управления ИБ, таких как управление уязвимостями и инцидентами. Нужно помнить, что угрозы необходимо будет ранжировать друг относительно друга по уровню вероятности их реализации. Для этого в процессе разработки модели угроз для каждой угрозы необходимо указать наиболее значимые факторы, существование которых оказывает влияние на ее реализацию. Идентификация уязвимостей Соответственно после разработки модели угроз необходимо идентифицировать уязвимости в окружении активов. Идентификация и оценка уязвимостей может выполняться в рамках еще одного процесса управления ИБ — аудита. Тут не стоит забывать, что для проведения аудита ИБ необходимо разработать критерии проверки. А критерии проверки могут быть разработаны как раз на основании модели угроз и модели нарушителя. Оценка рисков Полученные результаты необходимо оценить, агрегировать, классифицировать и отобразить. Так как ущерб определяется на этапе идентификации и оценки активов, необходимо оценить вероятность событий риска. Как и в случае с оценкой активов, оценку вероятности можно получить на основании статистики по инцидентам, причины которых совпадают с рассматриваемыми угрозами ИБ, либо методом прогнозирования — на основании взвешивания факторов, соответствующих разработанной модели угроз. В качестве примера системы классификации уязвимостей можно привести стандарт CVSS — common vulnerability scoring system. Следует отметить, что в процессе идентификации и оценки уязвимостей очень важен экспертный опыт специалистов по ИБ, выполняющих оценку рисков, и используемые статистические материалы и отчеты по уязвимостям и угрозам в области информационной безопасности. Величину (уровень) риска следует определить для всех идентифицированных и соответствующих друг другу наборов «актив — угроза». При этом величина ущерба и вероятности не обязательно должны быть выражены в абсолютных денежных показателях и процентах; более того, как правило, представить результаты в такой форме не удается. Причина этого — используемые методы анализа и оценки рисков информационной безопасности: сценарный анализ и прогнозирование. Политика обработки рисков Очень важный вопрос — политика управления рисками организации. Политика задает правила обработки рисков. Например, в политике может быть сказано, что риски потери репутации следует снижать в первую очередь, а снижение рисков средней значимости, не подтвержденных инцидентами ИБ, откладывается на конец очереди. Политику управления рисками может определять подразделение, занимающееся корпоративным управлением рисками. Политика обработки рисков может пояснять вопросы страхования рисков и реструктуризации деятельности в том случае, если потенциальные риски превышают приемлемый уровень. Если политика не определена, то последовательность работ по снижению рисков должна базироваться на принципе максимальной эффективности, но определять ее все равно должно высшее руководство. Подведем итоги Анализ рисков — достаточно трудоемкая процедура. В процессе анализа рисков должны применяться методические материалы и инструментальные средства. Однако для успешного внедрения повторяемого процесса этого недостаточно; еще одна важная его составляющая — регламент управления рисками. Он может быть самодостаточным и затрагивать только риски ИБ, а может быть интегрирован с общим процессом управления рисками в организации. 154. Криптографические алгоритмы. Обзор самых распространенных алгоритмов шифрования и тенденций развития современной криптографии. Классификация криптографических алгоритмов В настоящее время общепризнанным является подразделение криптографических алгоритмов на следующие основные категории: o o алгоритмы шифрования с секретным ключом (симметричные) блочные шифры поточные шифры алгоритмы шифрования с открытым ключом (асимметричные) Криптоалгоритмы с секретным ключом Идея, лежащая в основе большинства итерационных блочных шифров, состоит в построении криптографически стойкой системы путем последовательного применения относительно простых криптографических преобразований. Принцип многоразового шифрования с помощью простых криптографических преобразований был впервые предложен Шенноном в работе [5.1]: он использовал с этой целью преобразования перестановки и подстановки. Первое из этих преобразований переставляет отдельные символы преобразуемого информационного блока, а второе - заменяет каждый символ (или группу символов) из преобразуемого информационного блока другим символом из того же алфавита (соответственно группой символов того же размера и из того же алфавита). Узлы, реализующие эти преобразования, называются, соответственно, P-блоками ( P-box, permutation box ) и S-блоками ( S-box, substitution box ). Data Encryption Standard или сокращенно DES В самом схематичном виде DES представляет собой 16-цикловой итерационный блочный шифр. DES работает с блоками данных разрядностью 64 бита с ипользованием 56-разрядного ключа. Применяемые преобразования поразрядное сложение по модулю два, подстановки и перестановки. Алгоритм выработки 48-битовых цикловых ключей из 56-битового ключа системы и ряд преобразований служат для обеспечения необходимого перемешивания и рассеивания перерабатываемой информации, однако при анализе DES чаще всего играют не самую существенную роль. В 1999 г. на конференции, организованной RSA, компания Electronic Frontier Foundation взломала ключ DES менее чем за 24 часа. Одной из замен DES, получившей широкое распространение, стал алгоритм Triple DES Тем не менее, криптоаналитики обнаружили способ, позволяющий сделать атаку прямого перебора эквивалентной атаке на 108-битовый ключ. Второй проблемой является значительное снижение скорости зашифрования и расшифрования данных. В ответ на проблемы с длиной ключа и производительностью, проявившиеся в Triple DES, многие криптографы и компании разработали новые блочные шифры. Наиболее популярными предложениями стали алгоритмы RC2 и RC5 [5.3] корпорации RSA Data Security, IDEA [5.5] компании Ascom, Cast [5.4] компании Entrust, Safer [5.6] компании Cylink и Blowfish [5.7] компании Counterpane Systems. Коммерческие альтернативы DES получили определенное распространение, но ни одна из них не стала стандартом. Отечественный стандарт шифрования носит официальное название "Алгоритм криптографического преобразования ГОСТ 28147-89" [5.10]. Как явствует из его номера, стандарт был принят в СССР в 1989 г. Если охарактеризовать алгоритм ГОСТ в самом общем виде, то он является блочным шифром, построенным по схеме Фейстеля с 32 циклами шифрования. Длина информационного блока - 64 бита, длина ключа - 256 бит. Основная идея поточного шифрования состоит в том, что каждый из последовательных знаков открытого текста подвергается своему преобразованию. В идеале разные знаки открытого текста подвергаются разным преобразованиям, т.е. преобразование, которому подвергаются знаки открытого текста, должно изменяться с каждым следующим моментом времени. Реализуется эта идея следующим образом. Некоторым способом получается последовательность знаков называемая ключевым потоком ( keystream ) или бегущим ключом ( running key, RK ). Затем каждый знак открытого текста подвергается обратимому преобразованию, зависящему от - соответствующего знака ключевого потока. Поточные шифры почти всегда работают быстрее и обычно требуют для своей реализации гораздо меньше программного кода, чем блочные шифры. Наиболее известный поточный шифр был разработан Р. Ривестом; это шифр RC4, который характеризуется переменным размером ключа и байт-ориентированными операциями. В число шифров, которые Microsoft по тем или иным причинам не рекомендует использовать для симметричного шифрования, входят следующие: DES (Причины: малая длина ключей - 56 бит; если в 1993 г. атака на алгоритм заняла 3,5 часа на машине стоимостью $1 млн., то сегодня взлом можно осуществить в реальном времени; 3DES является более защищенным, но наличие лучших вариантов делает его использование неоправданным); IDEA ( International Data Encryption Standard )- хотя длина ключа (128 бит) является приемлемой, Microsoft проводит аналогии с алгоритмом DES: как известно, NSA подозревалось в сознательном ослаблении алгоритма DES, чтобы легко просматривать зашифрованные сообщения; RC2 и RC5 - причины недоверия Microsoft к этим шифрам те же, что к DES и IDEA. Поскольку для шифрования используются "одноразовые блокноты", слабым местом может стать генератор псевдослучайных последовательностей. Современной тенденцией является использование блочных шифров в режиме поточного шифрования (например, поточное шифрование обеспечивают режимы CBF и OFB для алгоритма DES или режим гаммирования для алгоритма ГОСТ 28147-89); Blowfish и Twofish - криптоалгоритмы, разработанные Брюсом Шнайером (B.Schneier), удовлетворяют требованиям стойкости, но не являются стандартами: Twofish, являющийся более поздней версией Blowfish, вышел в финал конкурса на замену DES, но уступил шифру Rijndael ; CAST: несмотря на то, что алгоритм показал себя устойчивым к линейному и дифференциальному криптоанализу, он имеет слишком малую длину ключа - 64 бита; ГОСТ 28147-89: Microsoft подозревает стойкий шифр в наличии "лазеек" - "backdoors". Криптоалгоритмы с открытым ключом В асимметричной криптографии для зашифрования и расшифрования используются различные функции. Стойкость асимметричных криптоалгоритмов базируется на разрешимости лежащих в их основе математических проблем. Пока не найден полиномиальный алгоритм решения этих проблем, данные алгоритмы будут стойки. В этом заключается отличие симметричного и асимметричного шифрования: стойкость первого является непосредственной и научно доказуемой, стойкость второго - предположительной. Кроме того, асимметричные криптоалгоритмы требуют гораздо более интенсивных вычислений и потому являются более медленными. Наиболее известные криптосистемы с открытым ключом: Рюкзачная криптосистема ( Knapsack Cryptosystem ) [5.13]; Криптосистема RSA ; Криптосистема Эль-Гамаля - EGCS ( El Gamal Cryptosystem ); Криптосистема, основанная на свойствах эллиптических кривых ECCS ( Elliptic Curve Cryptosystems ). Шифрование на платформе Windows Шифрование - это форма криптографии, предназначенная для преобразования открытого текста с помощью некоторого алгоритма таким образом, чтобы результат был бессмыслицей для лица, не обладающего некоторым секретом для раскрытия исходных данных. Шифрование лежит в основе таких мер безопасности, как цифровая подпись, цифровой сертификат, инфраструктура открытых ключей и др. Перечисленные технологии позволяют повысить безопасность операций, выполняемых с использованием вычислительной техники. Для зашифрования и расшифрования информации используются ключи. Ключ - это переменная, длина которой измеряется в битах. Чем больше двоичных разрядов в используемом ключе, тем сложнее в общем случае будет взломать шифр. На платформах Windows XP и Windows Server 2003 компания Microsoft рекомендует использовать следующие криптографические алгоритмы [5.11]: AES-128 (или AES-192, или AES-256 ); RSA 2048 (или с еще более длинным ключом); SHA-2 (т.е. SHA-256 или SHA-512 ); DSA (или SHA-2 / RSA ). Криптография Windows Vista (и Longhorn Server ) соответствует рекомендациям Агентства Национальной Безопасности США и Национального института стандартов и технологии ( NIST ) по реализации протоколов "Suite B" [5.12] и предусматривает использование асимметричных криптоалгоритмов на основе эллиптических кривых. Алгоритмы "Suite B" включают: AES (шифрование); EC-DSA (электронно-цифровая подпись); EC-DH или EC-MQV (обмен секретными ключами ); SHA-2 (хеширование). 155. Обзор современных методов криптоанализа. Криптоанализом (от греческого krypts - "скрытый" и analein - "ослаблять" или избавлять") называют науку восстановления (дешифрования) открытого текста без доступа к ключу. Задача криптоанализа состоит в том, чтобы определить вероятность взлома шифра и, таким образом, оценить его применимость в той или иной области. Попытка криптоанализа называется атакой. Криптоанализ ставит своей задачей в разных условиях получить дополнительные сведения о ключе шифрования, чтобы значительно уменьшить диапазон вероятных ключей. Результаты криптоанализа могут варьироваться по степени практической применимости. Так, криптограф Ларс Кнудсен [6.7] предлагает следующую классификацию успешных исходов криптоанализа блочных шифров в зависимости от объема и качества секретной информации, которую удалось получить: Полный взлом - криптоаналитик извлекает секретный ключ. Глобальная дедукция - криптоаналитик разрабатывает функциональный эквивалент исследуемого алгоритма, позволяющий зашифровывать и расшифровывать информацию без знания ключа. Частичная дедукция - криптоаналитику удается расшифровать или зашифровать некоторые сообщения. Информационная дедукция - криптоаналитик получает некоторую информацию об открытом тексте или ключе. Частотный анализ На протяжении веков дешифрованию криптограмм помогает частотный анализ появления отдельных символов и их сочетаний. Идея этого метода хорошо известна любителям детективов по рассказу А. Конан Дойля "Пляшущие человечки". Вероятности появления отдельных букв, а также их порядок в словах и фразах естественного языка подчиняются задокументированным статистическим закономерностям: например, пара стоящих рядом букв "ся" в русском языке более вероятна, чем "цы", а "оь" не встречается никогда. Анализируя достаточно длинный текст, зашифрованный методом замены, можно по частотам появления символов произвести обратную замену и восстановить исходный текст. Метод полного перебора С появлением высокопроизводительной вычислительной техники у криптоаналитиков появилась возможность вскрывать шифры методом перебора ключей. Атака по ключам Одной из причин ненадежности криптосистем является использование слабых ключей. Фундаментальное допущение криптоанализа, впервые сформулированное О. Кирхгоффом, состоит в том, что секретность сообщения всецело зависит от ключа, т.е. весь механизм шифрования, кроме значения ключа, известен противнику (секретность алгоритма не является большим препятствием: для определения типа программно реализованного криптографического алгоритма требуется лишь несколько дней инженерного анализа исполняемого кода). Слабый ключ - это ключ, не обеспечивающий достаточного уровня защиты или использующий в шифровании закономерности, которые могут быть взломаны. Алгоритм шифрования не должен иметь слабых ключей. Если это невозможно, то количество слабых ключей должно быть минимальным, чтобы уменьшить вероятность случайного выбора одного из них; все слабые ключи должны быть известны заранее, чтобы их можно было отбраковать в процессе создания ключа. Криптоанализ симметричных шифров Наибольший прогресс в разработке методов раскрытия блочных шифров был достигнут в самом конце ХХ века и связан с появлением двух методов -разностного (дифференциального) криптоанализа и линейного криптоанализа. Подобно разностному анализу, линейный криптоанализ является комбинированным методом, сочетающим в себе поиск линейных статаналогов для уравнений шифрования, статистический анализ имеющихся открытых и шифрованных текстов, использующий также методы согласования и перебора. Этот метод исследует статистические линейные соотношения между отдельными координатами векторов открытого текста, соответствующего шифртекста и ключа, и использует эти соотношения для определения статистическими методами отдельных координат ключевого вектора. Криптоанализ асимметричных шифров Практически все используемые алгоритмы асимметричной криптографии основаны на задачах факторизации (например, известная криптосистема RSA ) и дискретного логарифмирования в различных алгебраических структурах (схема электронноцифровой подписи Эль-Гамаля). Несмотря на то, что принадлежность этих задач к классу NP -полных задач не доказана, на сегодняшний день не найден полиномиальный алгоритм их решения. Задача дискретного логарифмирования считается более сложной, чем задача факторизации. Если будет найден полиномиальный алгоритм ее решения, станет возможным и разложение на множители (обратное не доказано). Последние достижения теории вычислительной сложности показали, что общая проблема логарифмирования в конечных полях уже не является достаточно прочным фундаментом. Наиболее эффективные на сегодняшний день алгоритмы дискретного логарифмирования имеют уже не экспоненциальную, а субэкспоненциальную временную сложность. Ряд успешных атак на системы, основанные на сложности дискретного логарифмирования в конечных полях, привел к тому, что стандарты ЭЦП России и США, которые были приняты в 1994 г. и базировались на схеме Эль-Гамаля, в 2001 году были обновлены: переведены на эллиптические кривые Криптоанализ хеш-функций Основная атака на хеш - это метод коллизий [6.2] . Пусть и сообщения, - хеш-функция, а ЭЦП представляет собой некоторую функцию хеша сообщения: . Законный обладатель пары "открытый ключ - от секретный ключ " готов подписать сообщение , но злоумышленник заинтересован в получении подписи под сообщением . Если выбрано так, что , то злоумышленник может предъявить пару : тогда атака удалась. Реализовать подбор такого сообщения можно методом, который основан на упомянутом выше "парадоксе дней рождения". Варьируя интервалы, шрифты, формат и т.п., злоумышленник получает пар вариантов и без изменения их смысла. Сообщения отличаются слабо, а их хеш-функции - значительно, т.е. можно считать, что значения хешфункций выбираются случайно, равновероятно и независимо друг от друга. Тогда при ( - некоторая константа, - мощность множества всевозможных хеш-функций) вероятность того, что имеется пара сообщений и , для которых , вычисляется по формуле . Криптоанализ по побочным каналам Атаки по сторонним, или побочным, каналам используют информацию, которая может быть получена с устройства шифрования и не является при этом ни открытым текстом, ни шифртекстом. Такие атаки основаны на корреляции между значениями физических параметров, измеряемых в разные моменты во время вычислений, и внутренним состоянием вычислительного устройства, имеющим отношение к секретному ключу. Этот подход менее обобщённый, но зачастую более мощный, чем классический криптоанализ. Нанотехнологии в криптоанализе С помощью квантового компьютера можно проводить вычисления, не реализуемые на сегодняшних (классических) компьютерах. В 1994 году П. Шор открыл так называемый "ограниченно-вероятностный" алгоритм факторизации, который позволяет разложить на множители число за полиномиальное от размерности задачи время . Алгоритм Шора разложения чисел на множители явился главным достижением в области квантовых вычислительных алгоритмов. Это был не только крупный успех математики. Именно с этого момента началось усиленное финансирование работ по созданию квантовых компьютеров. 156. Проблема аутентификации. Инфраструктура открытых ключей. Протоколы аутентификации в Windows. В одноключевых системах существуют две принципиальные проблемы: Распределение секретных ключей по информационному каналу; Аутентификация секретного ключа (процедура, позволяющая получателю удостовериться, что секретный ключ принадлежит законному отправителю). На этапе собственной идентификации пользователь предоставляет свой идентификатор, в качестве которого, как правило, используется регистрационное имя учетной записи пользователя АС. После представления идентификатора, проводится проверка истинной принадлежности этого идентификатора пользователю, претендующему на получение доступа к информации АС. Для этого выполняется процедура аутентификации, в процессе которой пользователь должен предоставить аутентификационный параметр, при помощи которого подтверждается эта принадлежность. В качестве параметров аутентификации могут использоваться сетевые адреса, пароли, симметричные секретные ключи, цифровыесертификаты, биометрические данные (отпечатки пальцев, голосовая информация) и т. д. Необходимо отметить, что процедура идентификации и аутентификации пользователей в большинстве случаев проводится одновременно, т. е. пользователь сразу предъявляет идентификационные и аутентификационные параметры доступа. В случае успешного завершения процедур идентификации и аутентификации проводится авторизация пользователя, в процессе которой определяется множество информационных ресурсов, с которыми может работать пользователь, а также множество операций которые могут быть выполнены с этими информационными ресурсами АС. Присвоение пользователям идентификационных и аутентификационных параметров, а также определение их прав доступа осуществляется на этапе регистрации пользователей вАС (рис. 13.1). Сертификаты В Microsoft .NET Framework широко используются сертификаты. Сертификат [13.8] - это закодированный файл формата ASN.1 ( Abstract Syntax Notation One ), содержащий открытый ключ и дополнительную информацию о ключе и его владельце. Сертифика т имеет ограниченный срок действия и подписывается с помощью другого ключа (так называемого издателя), который используется для обеспечения гарантии подлинности как атрибутов, так и самого открытого ключа.ASN.1 можно рассматривать как двоичный аналог XML [13.8]: у него также имеются правила кодировки, строгий контроль типов и теги, однако все эти компоненты имеют двоичные значения, которым, как правило, не соответствуют никакие печатные символы. Получение сертификатов Существует несколько способов получения сертификата [13.8]. При обмене файлами сертификаты обычно размещаются в файле формата CER или PFX. Файлы с расширением CER являются подписанными файлами ASN.1 в формате X.509v3. Они содержат открытый ключ и дополнительную информацию. Могут также встретиться файлы с расширением PFX ( Personal Information Exchange ). В соответствии со стандартом PKCS #12 [13.20], файл с расширением PFX ( Personal Information Exchange ) содержит сертификат и соответствующий закрытый ключ. Файлы в формате PFX обычно применяются для импорта пар ключей на сервер или с целью резервного копирования. Существует возможность создавать собственные сертификаты. Метод их создания обычно зависит от способа их применения. Для обычных ситуаций в Интернете, когда пользователь не знает, с кем он связывается, запрашивается, как правило, сертификат от коммерческого центра сертификации ( CA ). Преимуществом такого подхода является то, что эти известные центры сертификации уже признаны доверенными операционной системой Windows и всеми другими операционными системами (и обозревателями), поддерживающими сертификаты и протокол SSL Хранилища сертификатов Сертификаты и соответствующие им закрытые ключи можно хранить на различных устройствах, например жестких дисках, смарт-картах и в ключах для порта USB. В Windows предусмотрен уровень абстракции, называемый хранилищем сертификатов, который служит для обеспечения единого способа доступа к сертификатам независимо от места их хранения. Windows поддерживает несколько типов хранилищ сертификатов. Хранилище локальной машины, например, доступно всем приложениям, запущенным с определенными привилегиями на этой локальной машине. Можно создать отдельное хранилище для каждой службы Windows на машине, и каждый пользователь может иметь отдельное хранилище сертификатов. Сертификаты в этих хранилищах защищены. Если у аппаратного устройства имеется поддерживаемый Windows криптопровайдер, можно получать доступ к данным, хранящимся на этом устройстве, используя интерфейс API хранилища сертификатов. Рассмотрим наиболее распространенные протоколы безопасности, используемые в процессе аутентификации в Windows. SPNEGO (сокр. от Simple and Protected GSS-API Negotiation Mechanism - простой и защищенный механизм переговоров по GSS-API ) - механизм, который используется для аутентификации клиентского приложения на удаленном сервере в том случае, когда ни одна из сторон не знает, какой протокол аутентификации поддерживает другая сторона. GSS-API ( Generic Security Service Application Program Interface - Обобщенный прикладной программный интерфейс службы безопасности) [14.1] предназначен для защиты коммуникаций между компонентами программных систем, построенных в архитектуре клиент/сервер. Он предоставляет услуги по взаимной аутентификацииосуществляющих контакт партнеров и по контролю целостности и обеспечению конфиденциальности пересылаемых сообщений. SPNEGO - стандартный псевдо-механизм GSS-API. Псевдо-механизм определяет, какие механизмы GSS-API являются доступными, выбирает один из них и передает ему "право" осуществлять в дальнейшем необходимые операции по обеспечению безопасного взаимодействия приложений. NTLM Протокол NTLM относится к семейству challenge-response (запросответ)протоколов. Это означает, что ни пароль, ни его хеш никогда не передаются "как есть": они используются для генерации ответа ( response ) на случайный запрос ( challenge ). Аутентифицирующая сторона сравнивает полученный ответ с вычисленным локально. Генерация и проверка запроса и ответа осуществляется не приложениями, а провайдером NTLMSSP. Протокол NTLM имеет много брешей в безопасности. Часть проблем вызвана тем, что Microsoft необходимо было сохранить совместимость с существующими сетями LanManager для MS-DOS и Windows for Workgroups. Другие являются ошибками проектирования, третьи - исключительно криптографические. Kerberos Kerberos - протокол аутентификации, разработанный в 1980-х гг. в Массачусетском технологическом институте ( MIT -Massachusetts Institute of Technology ). Первой операционной системой семейства Windows, реализующей протоколKerberos [14.2], стала Windows 2000. Сетевая служба Kerberos действует как доверенный посредник, обеспечивая безопасную сетевую проверку подлинности, которая дает пользователю возможность работать на нескольких машинах сети. 157. Анализ безопасности протокола обмена информацией. Описание работы протокола в виде графического представления схемы и текстового описания. Тупой вопрос, по сути просто вырванная из контекста лекция интуита. Привожу её здесь. Вот ссылка если чо: http://www.intuit.ru/department/security/mssec/15/ Описание схемы Смарт-карты как на программном, так и на аппаратном уровне поддерживают множество алгоритмов симметричного шифрования и шифрования с открытым ключом. Смарт-карта оснащена собственнымкриптопроцессором и может выполнять операции шифрования и дешифрации без участия хост-компьютера, что и позволяет осуществлять безопасный обмен данными через Internet. Информация, которую необходимо предоставить пользователям, накапливается в базе данных сервера, а на компьютере пользователя установлено специальное клиентское ПО для доступа к этой информации. Пользователь должен ввести PIN -код для взаимной аутентификации Internet сервера и карты. Так как карта была эмитирована учебным заведением, в ней хранится открытый ключ сервера, а серверу известен открытый ключ карты. Сам процесс аналогичен взаимной аутентификации карты и хост-компьютера: карта передает серверу случайное число, зашифрованное его открытым ключом. Сервер должен его расшифровать и передать назад. Если число расшифровано правильно, карта может доверять серверу (см. рисунок). Схема доступа смарт-карты к Internet Аналогично происходит аутентификация карты сервером. Такая процедура позволяет обеспечить доступ к данным легитимным пользователям. После того как подлинность карты и сервера по отношению друг к другу установлена, происходит обмен сессионными ключами. Например, ключи генерируются на сервере, шифруются открытым ключом карты и передаются карте, которая их расшифровывает и сохраняет. Далее смарт-карта шифрует запрос пользователя сессионным ключом и передает серверу. Сервер расшифровывает запрос, формирует ответ, шифрует их другим сессионным ключом и передает назад. Карта расшифровывает полученный ответ, который затем отображается на компьютере клиента. При передаче следующей порции данных будет использован новый сессионный ключ. Пояснение Протокол подвержен атаке типа "человек посередине". На этапе "Обмен сеансовыми ключами " сервер не предоставляет никакого подтверждения того, что именно он сгенерировал зашифрованные на открытом ключе смарткарты. Сообщение от сервера может быть изъято злоумышленником и заменено на другие ключи симметричные K3, K4, зашифрованные на открытом ключе карты (согласно принципу асимметричной криптографии, открытый ключ известен всем, в т.ч. и потенциальному злоумышленнику). После этого смарт-карта передаст запрос серверу, зашифровав его на ключе K3. Злоумышленник сможет перехватить и расшифровать его, чтобы сформировать ответ и зашифровать на ключе K4. Таким образом, смарт-карта будет взаимодействовать не с сервером, а со злоумышленником. Избежать этого можно, если на этапе "Обмен сеансовыми ключами " в дополнение к передаваемому сообщению XXX сервер передаст результат шифрования XXX на своем закрытом ключе XXXX (по сути, это будет служить цифровой подписью ключей). Тогда эквивалентность XXX и результата расшифрования XXXX на открытом ключе сервера будет для смарткарты гарантией того, что ключ был получен от сервера, а не от злоумышленника. Краткие итоги В результате выполнения лабораторной работы студенты научились смотреть на протокол обмена информацией с позиции взломщика и систематизировали знания основ криптографии: Закрепили знания фундаментальных принципов асимметричной и симметричной криптографии Научились оценивать возможность криптографических механизмов обеспечить не только шифрование данных, но и аутентификацию участников переговоров 158.Защита от вирусных угроз. Сценарии построения комплексной системы защиты от вирусных угроз. На сегодняшний день компьютерные вирусы остаются одним из наиболее обсуждаемых видов угроз. Более того именно с защиты от компьютерных вирусов обычно начинают создавать систему информационной безопасности компании. Рекомендуется использовать комплексный подход, предусматривающий возможность одновременного применения организационных и технических мер защиты от вирусных угроз. Типы нарушителей: Модель защиты компаний от вредоносного кода Для защиты от нарушителей класса "Н-1" и "Н-2" достаточно использовать стандартное антивирусное программное обеспечение одного производителя, установив его на все рабочие станции и серверы в компании. Для защиты от нарушителя класса "Н-3" необходимо использовать многовендорный вариант антивирусной защиты, который предусматривает применение антивирусных ядер различных производителей. Это позволит существенно повысить вероятность обнаружения вируса за счёт того, что каждый файл или почтовое сообщение будет проверяться различными ядрами. В случае, если в одном из сканирующих ядер системы произойдёт сбой, то оно всегда может быть заменено другим активным антивирусным ядром. Как правило, выделяют три уровня антивирусной защиты: уровень шлюза, на котором средства антивирусной защиты устанавливаются на межсетевом экране или прокси-сервере; уровень серверов, в рамках которого антивирусные агенты устанавливаются на файловые, почтовые и другие серверы АС; уровень рабочих станций пользователей, на котором антивирусы устанавливаются на все рабочие места пользователей с возможностью централизованного управления с единой консоли. Для защиты от нарушителей класса "Н-4" применение одних лишь антивирусных продуктов недостаточно, так как злоумышленники данной категории обладают возможностями создавать вредоносный код, который не обнаруживается антивирусами. Поэтому в дополнение к многовендорной антивирусной защите вАС компании необходимо использовать подсистему сетевого экранирования, выявления и предотвращения атак, а также обнаружения уязвимостей. Подсистема выявления и предотвращения атак предназначена для обнаружения несанкционированной вирусной активности посредством анализа пакетов данных, циркулирующих в АС. Подсистема выявления уязвимостей должна обеспечивать возможность обнаружения технологических и эксплуатационных уязвимостей АС посредством проведения сетевого сканирования. Подсистема управления антивирусной безопасностью, предназначенная для выполнения следующих функций: удалённой установки и деинсталляции антивирусных средств на серверах и рабочих станциях пользователей; удалённого управления параметрами работы подсистем защиты, входящих в состав комплексной системы антивирусной защиты; централизованного сбора и анализа информации, поступающей от других подсистем. Описанный выше подход к защите от нарушителей класса "Н-4" целесообразно применять в крупных и территориально-распределённых компаниях, ресурсы которых потенциально могут быть подвержены целевым атакам злоумышленников, реализуемых при помощи вредоносного кода. Технологическое обеспечение должно быть направлено на создание комплексной системы антивирусной защиты (КСАЗ). Рассмотрим подсистемы защиты, которые должны входить в состав КСАЗ для обеспечения защиты на уровне сети, рабочих станций и серверов АС. Защита на уровне сети Основным компонентом КСАЗ на уровне сети является система разграничения доступа, которая может реализовываться на трёх уровнях модели ВОС(взаимодействия открытых систем) - канальном, сетевом и прикладном. На канальном уровне разграничение доступа осуществляется на основе виртуальных локальных сетей VLAN ( VirtualLocalAreaNetwork ), на которые разделяется АС. На сетевом и транспортном уровнях модели ВОС для разграничения доступа могут применяться межсетевые экраны, предназначенные для блокирования потенциально опасных пакетов данных, на основе которых распространяются компьютерные вирусы. Разграничение доступа на прикладном уровне может реализовываться на основе технологий, обеспечивающих возможность проверки уровня безопасности рабочих станций перед предоставлением им доступа к ресурсам АС. Так, например, если на рабочей станции будет отсутствовать антивирусное ПО, или не будут обновлены сигнатурные базы данных, то в этом случае доступ станции к АС будет заблокирован. Примером такой технологии является CiscoNetworkAdmissionControl. На прикладном уровне модели ВОС рекомендуется использоваться сетевые средства обнаружения и предотвращения атак, предназначенные для обнаружения несанкционированной вирусной активности посредством анализа пакетов данных, циркулирующих в АС. На прикладном уровне также могут использоваться шлюзовые средства антивирусной защиты, позволяющие сканировать файлы, передаваемые по сетевым протоколам SMTP, POP3, HTTP, FTP и др. Данный тип антивирусов подключается к межсетевому экрану, прокси-серверу или устанавливается в разрыв канала связи на выделенном узле. На уровне шлюза также может обеспечиваться защита от почтовых сообщений, содержащих спам. Средства защиты от вирусных угроз на уровне сети перечислены в таблице 21.4. Таблица 21.4. Средства защиты от вирусов на уровне сети № Уровень ВОС модели 1 Прикладной уровень 2 Транспортный уровень Наименование средств защиты Шлюзовые средства антивирусной защиты Шлюзовые средства защиты от спама Сетевые системы обнаружения атак Средства контроля доступа к ресурсам АС Средства анализа защищённости Межсетевые экраны 3 Сетевой уровень 4 Канальный уровень Средства разграничение доступа средствами VLAN 5 Физический уровень Физическое изолирование определённых сегментов АС друг от друга Защита на уровне рабочих станций пользователей Базовым элементом защиты рабочих станций являются средства антивирусной защиты (см. табл. 21.5). Основная задача данных средств заключается в антивирусной проверке всех файлов, которые поступают на рабочую станцию по сети или через внешние носители информации. Рекомендуется устанавливать персональные сетевые экраны. В случае, если на станциях пользователей обрабатывается конфиденциальная информация, то она должна подлежать резервному копированию. Таблица 21.5. Средства защиты от вирусов на уровне рабочих станций пользователей № Уровень модели узла АС 1 Уровень ресурсов Наименование средств защиты информационных Средства информации 2 Уровень прикладного ПО резервного копирования Средства антивирусной защиты Персональные сетевые экраны 3 Уровень общесистемного ПО Хостовые средства обнаружения предотвращения атак 4 Уровень аппаратного -обеспечения Защита на уровне серверов и На серверы, также как и на рабочие станции должны устанавливаться средства антивирусной защиты, обеспечивающие выявление и блокирование вредоносного кода. В отличие от рабочих станций, для обеспечения более высокого уровня защиты на серверы могут устанавливаться многовендорные антивирусы, в состав которых одновременно входит несколько сканирующих ядер различных производителей. Для защиты почтовых серверов от спама на них может быть установлено специализированное ПО, позволяющее выявлять сообщения рекламного характера (см.таблицу 21.6). Таблица 21.6. Средства защиты от вирусов на уровне серверов № Уровень модели узла АС Наименование средств защиты 1 Уровень ресурсов информационных Средства контроля целостности информации Средства резервного копирования информации 2 Уровень прикладного ПО Средства антивирусной защиты Средства защиты от спама 3 Уровень общесистемного ПО Персональные сетевые экраны Хостовые средства обнаружения и предотвращения атак 4 Уровень аппаратного -обеспечения Помимо рассмотренных выше средств защиты АС, функционирующих на уровне сети, рабочих станций и серверов, в состав КСАЗ также должна входить подсистема управления антивирусной безопасностью, предназначенная для выполнения следующих функций: удалённой установки и деинсталляции антивирусных средств на серверах и рабочих станциях пользователей; удалённого управления параметрами работы подсистем защиты, входящих в состав КСАЗ; централизованного сбора и анализа информации, поступающей от других подсистем. Данная функция позволяет автоматизировать процесс обработки поступающих данных, а также повысить оперативность принятия решений по реагированию на выявленные инциденты, связанные с нарушением антивирусной безопасности. Комплексный подход к внедрению системы антивирусной защиты Комплексный подход к защите от вредоносного кода предусматривает согласованное применение правовых, организационных и программно-технических мер, перекрывающих в совокупности все основные каналы реализации вирусных угроз. Процесс внедрения может включать в себя следующие этапы (рис. 21.4): аудит информационной безопасности АС, который направлен на сбор исходной информации, необходимой для разработки плана внедрения КСАЗ. В рамках аудита проводится проверка эффективности используемых механизмов безопасности, определяются основные уязвимости в системе мер антивирусной защиты и вырабатываются рекомендации по их устранению. формирование требований к КСАЗ, предназначенной для защиты АС. На данном этапе формируется техническое задание на внедрение КСАЗ; разработка технорабочего проекта по внедрению КСАЗ, содержащего описание проектных решений, схем установки, параметров настройки КСАЗ и других служебных данных; обучение сотрудников по вопросам противодействия вирусным угрозам, а также персонала организации, ответственного за администрирование КСАЗ. Программа обучения должна быть направлена на минимизацию рисков, связанных с ошибочными действиями пользователей, приводящих к реализации вирусных атак. Примерами таких действий являются: запуск приложений с непроверенных внешних носителей, использование нестойких к угадыванию паролей доступа, закачкаActiveX -объектов с недоверенных Web -сайтов и др. В процессе обучения должны рассматриваться как теоретические, так и практические аспекты антивирусной защиты. При этом программа обучения может составляться в зависимости от должностных обязанностей сотрудника, а также от того к каким информационным ресурсам он имеет доступ. пусконаладочные работы, связанные с развёртыванием КСАЗ. В рамках данного этапа работ сначала создаётся пилотная зона, в которой проводится предварительное тестирование внедряемой КСАЗ, после которого реализуется полномасштабное внедрение комплекса защиты в АС; техническое сопровождение КСАЗ, в рамках которого решаются вопросы, связанные с обслуживанием системы в процессе её эксплуатации. Состав этапов, а также их длительность зависит от размерности защищаемой АС, а также от масштабов внедрения КСАЗ. Работы, связанные с внедрением и эксплуатацией СОА могут проводиться как собственными силами предприятия, так и с привлечением внешних организаций, специализирующихся на предоставлении услуг в области информационной безопасности. 159. Методология анализа защищенности системы на основе выявления уязвимостей информационной системы и обнаружения вторжений. Ни для кого не секрет, что современные информационные системы (ИС) являются одним из краеугольных камней, на основе которых строят бизнеспроцессы компании и предприятия различных форм и назначений. Однако присущая для всех ИС "Ахиллесова пята" - уязвимость заставляет уделять особое внимание их защите от несанкционированных воздействий, способных привести к нарушению конфиденциальности, целостности или доступности всей системы. В последнее время всё чаще и чаще можно слышать о вторжениях в информационные системы (ИС) предприятий и организаций и о том, к какому ущербу они приводят Любые атаки нарушителей реализуются путём активизации той или иной уязвимости, которая присутствует в системе. Это в свою очередь создаёт условия для успешной реализации информационных атак на ИС. Примерами уязвимостей могут являться некорректным образом составленная политика безопасности, отсутствие определённых средств защиты или ошибки в используемом программном обеспечении (ПО). Методы выявления и устранения уязвимостей Для обнаружения уязвимостей в ИС проводится процедура аудита информационной безопасности, которая состоит из двух этапов - анализа текущего уровня защищённости ИС и разработки предложений по устранению выявленных уязвимостей. Аудит состоит из комплекса проверок, часть из которых направлена на обнаружение и устранение уязвимостей, который были описаны выше. Рассмотрим различные методы, при помощи которых можно обнаружить слабые места в ПО ИС. Выявление уязвимостей типа " bufferoverflow ", " SQL Injection " и " formatstring " возможно либо путём анализа исходных текстов потенциально уязвимой программы, либо при помощи поведения анализа безопасности уже работающей программы. Первый способ предполагает экспертный анализ исходных текстов программы с целью поиска и исправления ошибок, которые были допущены на этапе её разработки. В большинстве случае для устранения выявленных уязвимостей необходимо добавление новых функций, обеспечивающих проверку корректности входных данных, поступающих в программу. Как правило, метод анализа исходных текстов отличается высокой трудоёмкостью и используется только в компаниях, которые занимаются разработкой ПО. Второй метод выявления уязвимостей используется для анализа защищённости ПО, которое уже установлено и функционирует в ИС. Метод предполагает использование специализированных программных средств - так называемых сканеров безопасности или систем анализа защищённости. Эти средства позволяют обнаруживать уязвимости на основе активного и пассивного методов. При помощи пассивного метода осуществляется сбор информации о настройках ПО, присутствующего в ИС и на основе этих данных делается вывод о наличии или отсутствии в системе уязвимостей. Активные методы анализа защищённости приложений имитируют информационные атаки и затем на основе анализа результатов делается вывод о наличии уязвимостей в системе. Что такое информационная атака? Прежде чем начать разговор о способах выявления информационных атак, определим, что же собой представляет вторжение нарушителя. Итак, атака представляет собой совокупность действий нарушителя, приводящих к нарушению информационной безопасности ИС перейдем к рассмотрению основных подходов к выявлению информационных вторжений. Обнаружение информационных атак В качестве одного из базовых средств защиты информационных ресурсов в настоящее время выступают системы обнаружения атак (СОА), позволяющие своевременно как выявлять, так и блокировать атаки нарушителей, желающих заполучить секреты компании. Процесс обнаружения информационных атак начинается со сбора исходных данных, необходимых для того, чтобы сделать вывод о проведении атаки в ИС. Примерами таких данных являются: сведения о пакетах данных, передаваемых в ИС; информация о производительности программно-аппаратного обеспечения ИС (вычислительная нагрузка на процессор хостов ИС, загруженность оперативной памяти, скорость работы прикладного ПО и др.); сведения о доступе к файлам ИС; информация о регистрации новых пользователей в ИС и др. Сбор исходных данных осуществляется при помощи специализированных датчиков СОА, размещаемых в ИС. СОА может включать в себя два типа датчиков сетевые и хостовые. Сетевые датчики предназначены для сбора информации о пакетах данных, передаваемых в том сегменте ИС, где установлен датчик. Хостовые же датчики устанавливаются на определённые компьютеры в ИС и предназначаются для сбора информации о событиях, возникающих на этих компьютерах. Информация, собранная сетевыми и хостовыми датчиками, анализируется СОА с целью выявления возможных атак нарушителей. Анализ данных может проводиться при помощи двух основных групп методов - сигнатурных и поведенческих. Сигнатурные методы описывают каждую атаку в виде специальной модели или сигнатуры. В качестве сигнатуры атаки могут выступать: строка символов, семантическое выражение на специальном языке, формальная математическая модель др. Алгоритм работы сигнатурного метода заключается в поиске сигнатур атак в исходных данных, собранных сетевыми и хостовыми датчиками СОА. В случае обнаружения искомой сигнатуры, СОА фиксирует факт информационной атаки, которая соответствует найденной сигнатуре. Преимуществом сигнатурных методов является их высокая точность работы, а очевидным недостатком невозможность обнаружения тех атак, сигнатуры которых не определены при помощи методов. Поведенческие методы, в отличие от сигнатурных, базируются не на моделях информационных атак, а на моделях штатного процесса функционирования ИС. Принцип работы поведенческих методов заключается в обнаружении несоответствия между текущим режимом функционирования ИС и моделью штатного режима работы, заложенной в параметрах метода. Любое такое несоответствие рассматривается как информационная атака. Преимуществом методов данного типа является возможность обнаружения новых атак без необходимости постоянного изменения параметров функционирования модуля. Недостатком же этой группы методов является сложность создания точной модели штатного режима функционирования ИС. В обобщённом виде характеристики применимости сигнатурного и поведенческого методов для выявления атак на разных стадиях рассмотрены в таблице. Таблица 23.1. Характеристики применимости сигнатурного и поведенческого методов для обнаружения различных стадий атак Стадия атаки\Метод Сигнатурный метод обнаружения Поведенческий метод Стадия рекогносцировки +(сетевые и хостовые датчики) Стадия вторжения в ИС +(сетевые и хостовые +(сетевые и хостовые датчики) датчики) Стадии воздействия атакующего - Стадия развития атаки - +(хостовые датчики) +(хостовые датчики) Краткие итоги Можно ли выявить вторжение в информационную систему? Ответ однозначен - можно. Однако это "можно" подразумевает то, что обнаружениеинформационных атак на ресурсы ИС является весьма сложным технологическим процессом, который связан со сбором необходимых данных о процессе функционирования ИС, их анализом и, наконец, выявлением факта атаки. Поэтому для эффективного обнаружения атаки на всех стадиях её жизненного цикла необходимо комбинированное использование как поведенческих, так и сигнатурных методов. И только реализация описанного выше комплексного подхода к проблеме выявления атак позволит значительно снизить риск успешного вторжения в информационные системы компании и исключит потерю производственных и иных секретов, а также не позволит потерять достигнутый уровень конкурентоспособности на рынке 21 века - века информации. 160. Методы и инструменты защиты от сетевых атак на основе технологии межсетевого экранирования. Основные понятия и определения Межсетевые экраны ( МЭ ) реализуют методы контроля за информацией, поступающей в АС и/или выходящей из АС (автоматизированной системы), и обеспечения защиты АС посредством фильтрации информации на основе критериев, заданных администратором. Процедура фильтрации включает в себя анализ заголовков каждого пакета, проходящего через МЭ, и передачу его дальше по маршруту следования только в случае, если он удовлетворяет заданным правилам фильтрации. При помощи фильтрования МЭ позволяют обеспечить защиту от сетевых атак путем удаления из информационного потока тех пакетов данных, которые представляют потенциальную опасность для АС. Фильтрация пакетов данных может осуществляться по параметрам протоколов, относящихся к различным уровням модели Важно отметить, что правила фильтрования пакетов данных, проходящих через МЭ, могут определяться на основе двух базовых методов. "Все, что не запрещено - разрешено". Правила фильтрации, построенные на основе этого метода, по существу определяют те типы пакетов, которые должны быть заблокированы МЭ. При этом все остальные пакеты данных, проходящие через МЭ, считаются разрешенными. "Все, что не разрешено - запрещено". Правила фильтрации, сформированные на основе данного метода определяют только разрешенные пакеты данных, которые могут поступать или отправляться из АС. При этом МЭ блокирует все остальные проходящие через него пакеты данных. Данный метод позволяет сформировать более строгие правила фильтрации за счет минимизации разрешенных типов пакетов. МЭ также позволяет скрыть реальные IP -адреса защищаемой АС при помощи функции трансляции сетевых адресов NAT ( NetworkAddressTranslation ), которая выполняется следующим образом. При поступлении пакета данных в МЭ он заменяет реальный IP -адрес отправителя пакета цанных на виртуальный и пересылает измененный пакет получателю. При получении ответных пакетов МЭ выполняет обратные действия по замене IP -адресов. Трансляция IP -адресов может осуществляться МЭ в одном из четырех режимов: динамическом, статическом, статическом с динамической выборкой IP адресов и комбинированном. При динамической трансляции все пакеты данных пересылаются внешним узлам с одного виртуального IP -адреса. Для того, чтобы различать пакеты данных, предназначенные для разных адресатов, МЭ присваивают каждому соединению уникальное числовое значение номера TCP - или UDP -порта. В режиме статической трансляции МЭ выделяют каждому узлу защищаемой АС отдельный виртуальный IP -адрес, с которого и осуществляется отправка пакетов данных. Статический режим трансляции с динамической выборкой полностью аналогичен статическому режиму за исключением того, что узлам АС соответствуют не статические, а динамические виртуальные IP -адреса, то есть они выбираются МЭ случайным образом из заданного множества. Комбинированный режим трансляции IP -адресов подразумевает одновременное использование нескольких режимов трансляции, рассмотренных выше. МЭ могут реализовываться как на основе аппаратного, так и программноаппаратного обеспечения. При этом МЭ, выполненные в виде автономных программно-аппаратных блоков, могут устанавливаться в разрыв каналов связи АС между двумя сегментами АС, для которых необходимо реализовать разграничение доступа. Как правило, такие МЭ устанавливаются в точке подключения АС к сети Интернет. Программные реализации МЭ могут быть установлены на серверы, рабочие станции или на некоторые типы маршрутизаторов и коммутаторов. Учитывая, что МЭ могут фильтровать пакеты данных на основе критериев разных уровней модели ВОС, то они могут быть отнесены к средствам защиты канального, сетевого, транспортного и прикладного уровней. Кроме того, МЭ относятся к активным средствам защиты, поскольку позволяют отфильтровывать опасные пакеты данных, обеспечивая тем самым блокирование потенциальных информационных атак, направленных на нарушение конфиденциальности, целостности или доступности информации АС. 161. Организационно-правовые аспекты обеспечения информационной безопасности. Разработка политики информационной безопасности с использованием общепринятых шаблонов и учетом специфики деятельности организации. С нормативно-правовой точки зрения использование СОА (системы обнаружения атак) для защиты от атак должно подкрепляться соответствующими документами, определяющими необходимость и возможность применения данного средства защиты в АС. Данный вопрос особенно актуален для предприятий государственного сектора экономики. На сегодняшний день существует большое количество различных документов, регламентирующих вопросы информационной безопасности. В общем случае они могут быть сгруппированы в следующие категории (рис. 29.1): 1. федеральные правовые документы, которые включают в себя кодексы и законы, указы и распоряжения Президента РФ, а также постановления Правительства РФ; 2. отраслевые нормативные документы, включающие в себя российские и международные стандарты, а также специальные требования Федеральной службы по техническому и экспортному контролю (ФСТЭК) и ФСБ, касающиеся вопросов защиты информации; 3. локальные организационно-распорядительные документы, которые действуют в рамках отдельно взятой организации, например, должностные инструкции, приказы, распоряжения и другие документы, касающиеся вопросов информационной безопасности. Обзор российского законодательства в области информационной безопасности Требования российского законодательства, определяющие обязательность защиты информации ограниченного доступа, изложены в Федеральных иконах и уточнены в документах Федеральной службы по техническому и экспортному контролю Российской Федерации (Гостехкомиссии России), ФСБ (ФАПСИ) и других государственных учреждений, имеющих отношение к обеспечению безопасности информации. Правовую основу информационной безопасности обеспечивают: Конституция Российской Федерации, Гражданский и Уголовный Кодекс, Федеральные законы "О безопасности" (№ 15-ФЗ от 07.03.2005), "О Государственной тайне" (№ 122-ФЗ от 22.08.2004), "Об информации, информатизации и защите информации" (№ 149-ФЗ от 27.07.2006), "Об участии в международном информационном обмене" (№ 85-ФЗ от 04.07.1996), "О коммерческой тайне" (№98-ФЗ от 29.07.2004), "О персональных данных" (№ 152-ФЗ от 27.07.2006), "О техническом регулировании" (№ 45-ФЗ от 09.05.2005), Доктрина информационной безопасности, Указы Президента и другие нормативные правовые акты Российской Федерации. Общие правовые основы обеспечения безопасности личности, общества и государства определены в Федеральном законе "О безопасности".Этим же законом определено понятие системы безопасности и ее функций, установлен порядок организации и финансирования органов обеспечения безопасности и правила контроля и надзора за законностью их деятельности. Основные положения государственной политики в сфере обеспечения безопасности изложены в Доктрине информационной безопасности Российской Федерации.В Доктрине определены следующие основные задачи, которые необходимо учитывать при реализации комплекса мер по информационной безопасности: обеспечение конституционных прав и свобод человека и гражданина на личную и семейную тайны, тайну переписки, телефонных переговоров, почтовых, телеграфных и иных сообщений, на защиту своей чести и своего доброго имени; укрепление механизмов правового регулирования отношений в области охраны интеллектуальной собственности, создание условий для соблюдения установленных федеральным законодательством ограничений на доступ к конфиденциальной информации; запрещение сбора, хранения, использования и распространения информации о частной жизни лица без его согласия и другой информации, доступ к которой ограничен федеральным законодательством; защита информационных ресурсов от несанкционированного доступа, обеспечение безопасности информационных и телекоммуникационных систем, как уже развернутых, так и создаваемых на территории России; обеспечение защиты сведений, составляющих государственную тайну. В соответствии с Конституцией Российской Федерации (ст. 23, 24) мероприятия по защите данных от возможных информационных атак не должны нарушать тайну переписки, осуществлять сбор сведений о частной жизни сотрудников, а также ознакомление с их перепиской. В Гражданском кодексе Российской Федерации (ст. 139) определены характерные признаки информации, которая может составлять служебную или коммерческую тайну. Кроме этого в гражданском кодексе установлена ответственность, которую несут лица, за незаконные методы получения такой информации. Уголовным Кодексом Российской Федерации предусматривается ответственность в случае преднамеренного использования вредоносного программного Уголовная ответственность распространяется также на лиц, совершивших действия по созданию, использованию и распространению вредоносных программ для ЭВМ (ст. 273). Регулирование отношений, связанных с созданием, правовой охраной, а также использованием программ для ЭВМ и баз данных, осуществляется при помощи законов "О правовой охране программ для электронных вычислительных машин и баз данных" и "Об авторском праве и смежных правах". Федеральный закон "Об участии в международном информационном обмене" также определяет понятие информационной безопасности и направлен на создание условий для эффективного участия России в международном информационном обмене в рамках единого мирового информационного пространства. на основе создания, сбора, обработки, накопления и предоставления потребителю документированной информации, регулируются Федеральным законом "Об информации, информатизации и защите информации".Данный закон определяет понятие конфиденциальной информации, цели и задачи по ее защите, а также права и обязанности субъектов в области защиты информации. В 2006 г. эти два закона были заменены Федеральным законом "Об информации, информационных технологиях и о защите информации",в соответствии с которым защита информации представляет собой принятие правовых, организационных и технических мер, направленных на: обеспечение защиты информации от неправомерного доступа, уничтожения, модифицирования, блокирования, копирования, предоставления, распространения, а также от иных неправомерных действий в отношении такой информации; соблюдение конфиденциальности информации ограниченного доступа; реализацию права на доступ к информации. Более подробно информация конфиденциального характера определена в Указе Президента Российской Федерации № 188 от 06.03.1997 г."Об утверждении перечня сведений конфиденциального характера".В соответствии с данным Указом к подобным сведениям отнесены: сведения о фактах, событиях и обстоятельствах частной жизни гражданина, позволяющие идентифицировать его личность (персональные данные); служебные сведения, доступ к которым ограничен органами государственной власти в соответствии с Гражданским кодексом Российской Федерации и федеральными законами (служебная тайна); сведения, связанные с коммерческой деятельностью, доступ к которым ограничен в соответствии с Гражданским кодексом Российской Федерации и федеральными законами (коммерческая тайна); сведения о сущности изобретения, полезной модели или промышленного образца до официальной публикации информации о них. Более подробные сведения об информации, составляющей коммерческую тайну, изложены в Федеральном законе "О коммерческой тайне". Вопросы защиты персональных данных подробно описаны в Федеральном законе "О персональных данных". Вопросы отнесения информации к государственной тайне, а также порядок работы и защиты таких данных определены в Федеральном законе "О государственной тайне". Федеральный закон № 184-ФЗ "О техническом регулировании" регулирует отношения, возникающие при разработке, принятии, применении и исполнении требований к процессам производства, эксплуатации, хранения, перевозки, реализации и утилизации продукции, в том числе средств обнаружения атак. Нормативно-методическую базу, определяющую требования и рекомендации к программно-техническим методам защиты информации в автоматизированных системах, составляют руководящие документы Федеральной службы по техническому и экспортному контролю Российской Федерации (ФСТЭК) и государственные стандарты. Так, например, оценка защищенности автоматизированных систем, обрабатывающих информацию ограниченного доступа, осуществляется на основании руководящего документа (РД) ФСТЭК "Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации".При разработке и модернизации средств вычислительной техники необходимо принимать во внимание требования РД ФСТЭК "Средства вычислительной техники. Защита от несанкционированного доступа к информации. Показатели защищенности от несанкционированного доступа к информации" и ГОСТ Р 50739-95 "Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования". Еще одним нормативным документом ФСТЭК, который может применяться по отношению к средствам защиты от информационных атак, является РД "Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей (НДВ)". При использовании персональных и корпоративных межсетевых экранов для защиты от информационных атак необходимо учитывать требования РД ФСТЭК "Средства вычислительной техники. Межсетевые экраны. Защита от несанкционированного доступа. Показатели защищенности от несанкционированного доступа к информации",а также "требования ФСБ к устройствам типа межсетевые экраны".Данные нормативные документы классифицируют межсетевые экраны на пять различных классов в зависимости от категории информации, для защиты которой они предназначены. При этом каждый класс экранов характеризуется своим набором функциональных требований по защите информации. Порядок организации работ с государственной конфиденциальной информацией определяется в нормативно-методическом документе ФСТЭК"Специальные требования и рекомендации по технической защите конфиденциальной информации (СТР-К)". Обеспечение информационной безопасности при подключении к глобальным сетям общего пользования регламентируется решением ФСТЭК "О защите информации при вхождении России в международную информационную систему "Интернет"" от 21 октября 1997 г. №61 и указом Президента Российской Федерации "О мерах по обеспечению информационной безопасности Российской Федерации в сфере международного информационного обмена" от 12 мая 2004 г. № 611. Согласно этим документам субъектам международного информационного обмена в Российской Федерации запрещается подключение к сети Интернет автоматизированных систем, сетей связи и автономных персональных компьютеров, в которых обрабатывается конфиденциальная информация, а также данные, содержащие сведения, составляющие государственную тайну. При этом владельцам открытых и общедоступных государственных информационных ресурсов разрешается осуществлять их включение в состав сетей связи общего пользования только при использовании сертифицированных средств защиты информации, обеспечивающих ее целостность и доступность. К таким сертифицированным средствам относятся, в том числе и системы обнаружения атак. В России также было принято несколько государственных стандартов (ГОСТ), включающих термины и определения к ним, а также общие положения в области информационной безопасности. К таким стандартам относятся ГОСТ Р 5092296 "Защита информации. Основные термины и определения" и ГОСТ Р ИСО 74982-99 "Информационная технология. Взаимосвязь открытых систем. Базовая эталонная модель. Часть 1. Архитектура защиты информации". Обзор международных стандартов в области информационной безопасности Международные стандарты позволяют дополнить отечественное законодательство в тех областях, которые не затрагиваются российскими нормативно-правовыми документами. Примерами таких областей является аудит информационной безопасности, интеграция различных средств обеспечения безопасности, управление системами защиты и др. В отличие от положений российского законодательства, требования международных стандартов носят рекомендательный характер. В настоящее время на территории России наибольшее распространение получили следующие международные стандарты: стандарт ISO / IEC 17799 "Информационная технология. Система менеджмента информационной безопасности. Требования"; стандарт ISO / IEC 27001 "Информационная технология. Методы обеспечения безопасности. Руководство по управлению информационной безопасностью". стандарт CobiT ( ControlObjectivesforInformationandrelatedTechnology, "Контрольные Объекты для Информационной и смежных Технологий"); стандарт ITIL ( InformationTechnologiesInfrastructureLibrary, "Библиотека инфраструктуры информационных технологий"); методика проведения аудита информационной безопасности OCTAVE (OperationallyCriticalThreat, Asset, andVulnerabilityEvaluation, "Методика оценки критических угроз, информационных активов и уязвимостей"). Международный стандарт ISO / IEC 17799 представляет собой набор рекомендаций по применению организационно-технических мер безопасности для эффективной защиты автоматизированных систем. В 2007 г. планируется принятие ISO / IEC 17799 в качестве ГОСТа. Стандарт CobiT разработан международной ассоциацией ISACA и предназначен для обеспечения эффективного управления информационными технологиями (ИТ) с точки зрения целей и задач бизнес-процессов компании. Согласно CobiT повышение эффективности управления ИТ позволяет увеличить отдачу от инвестиций в инфокоммуникационные системы, а также повысить конкурентоспособность предприятия. В соответствии с этим стандартом все ИТресурсы компании должны эффективно управляться определенными ИТпроцессами, что позволит обеспечить своевременное предоставление информации, необходимой организации для достижения ее бизнес-целей. В стандарте CobiTопределено тридцать четыре ИТ-процесса, сгруппированных в четыре домена: "планирование и организация", "проектирование и внедрение", "эксплуатация и сопровождение", и "мониторинг". Каждый из этих процессов описывается совокупностью показателей, на основе которых осуществляется оценка эффективности существующих механизмов управления ИТ-ресурсами. Стандарт ITIL представляет собой набор рекомендаций по управлению ИТ, разработанных Отделом Правительственной Торговли Великобритании ( UnitedKingdom'sOfficeOfGovernmentCommerce, OGC ). Стандарт рассматривает информационные технологии в виде сервисов, которые предоставляются внутри организации. Стандарт состоит из следующих семи основных частей, каждая из которых описывает один из аспектов управления ИТ-сервисами: "Предоставление и поддержка ИТ-сервисов" ( Servicesupportanddelivery ), "Планирование внедрения процесса управления ИТ-услугами" ( Planningtoimplementservicemanagement ), "Управление приложениями" ( Applicationmanagement ), "Управление инфраструктурой" ( Infrastructuremanagement ), "Управление безопасностью" ( Securitymanagement ) и "Бизнес-перспектива" ( Thebusinessperspective ). Методика проведения аудита информационной безопасности OCTAVE разработана координационным центром немедленного реагирования CERT (ComputerEmergencyResponseTeam ) и предназначена для анализа уровня защищенности автоматизированных систем посредством оценки рисков. Разработка политики информационной безопасности Политика безопасности определяется как совокупность документированных управленческих решений, направленных на защиту информации и ассоциированных с ней ресурсов. При разработке и проведении ее в жизнь целесообразно руководствоваться следующими принципами: 1. Невозможность миновать защитные средства. Все информационные потоки в защищаемую сеть и из нее должны проходить через средства защиты. Не должно быть тайных модемных входов или тестовых линий, идущих в обход защиты. 2. Усиление самого слабого звена. Надежность любой защиты определяется самым слабым звеном, так как злоумышленники взламывать именно его. Часто самым слабым звеном оказывается не компьютер или программа, а человек, и тогда проблема обеспечения информационной безопасности приобретает нетехнический характер. 3. Невозможность перехода в небезопасное состояние. Принцип невозможности перехода в небезопасное состояние означает, что при любых обстоятельствах, в том числе нештатных, защитное средство либо полностью выполняет свои функции, либо полностью блокирует доступ. 4. Минимизация привилегий. Принцип минимизации привилегий предписывает выделять пользователям и администраторам только те права доступа, которые необходимы им для выполнения служебных обязанностей. 5. Разделение обязанностей. Принцип разделения обязанностей предполагает такое распределение ролей и ответственности, при котором один человек не может нарушить критически важный для организации процесс. 6. Эшелонированность обороны. Принцип эшелонированности обороны предписывает не полагаться на один защитный рубеж. Эшелонированная оборона способна по крайней мере задержать злоумышленника и существенно затруднить незаметное выполнение вредоносных действий. 7. Разнообразие защитных средств. Принцип разнообразия защитных средств рекомендует организовывать различные по своему характеру оборонительные рубежи, чтобы от потенциального злоумышленника требовалось овладение разнообразными, по возможности, несовместимыми между собой навыками. 8. Простота и управляемость информационной системы. Принцип простоты и управляемости гласит, что только в простой и управляемой системе можно проверить согласованность конфигурации разных компонентов и осуществить централизованное администрирование. 9. Обеспечение всеобщей поддержки мер безопасности. Принцип всеобщей поддержки мер безопасности носит нетехнический характер. Если пользователи и/или системные администраторы считают информационную безопасность чем-то излишним или враждебным, то режим безопасности сформировать заведомо не удастся. Следует с самого начала предусмотреть комплекс мер, направленный на обеспечение лояльности персонала, на постоянное теоретическое и практическое обучение. 162. Основы работы антивирусных программ, существующие методы обнаружения вирусов, дополнительные средства обеспечения антивирусной безопасности, основные элементы антивирусной защиты. Общие сведения Антивирусные программы - это программы, основной задачей которых является защита именно от вирусов, или точнее, от вредоносных программ. Методы и принципы защиты теоретически не имеют особого значения, главное чтобы они были направлены на борьбу с вредоносными программами. Но на практике дело обстоит несколько иначе: практически любая антивирусная программа объединяет в разных пропорциях все технологии и методы защиты от вирусов, созданные к сегодняшнему дню. Из всех методов антивирусной защиты можно выделить две основные группы: Сигнатурные методы - точные методы обнаружения вирусов, основанные на сравнении файла с известными образцами вирусов Эвристические методы - приблизительные методы обнаружения, которые позволяют с определенной вероятностью предположить, что файл заражен Сигнатурный анализ Слово сигнатура в данном случае является калькой на английское signature, означающее "подпись" или же в переносном смысле "характерная черта, нечто идентифицирующее". Собственно, этим все сказано. Сигнатурный анализ заключается в выявлении характерных идентифицирующих черт каждого вируса и поиска вирусов путем сравнения файлов с выявленными чертами. Сигнатурой вируса будет считаться совокупность черт, позволяющих однозначно идентифицировать наличие вируса в файле (включая случаи, когда файл целиком является вирусом). Все вместе сигнатуры известных вирусов составляют антивирусную базу. Эвристический анализ Поиск вирусов, похожих на известные Если сигнатурный метод основан на выделении характерных признаков вируса и поиске этих признаков в проверяемых файлах, то эвристический анализ основывается на (весьма правдоподобном) предположении, что новые вирусы часто оказываются похожи на какие-либо из уже известных. Постфактум такое предположение оправдывается наличием в антивирусных базах сигнатур для определения не одного, а сразу нескольких вирусов. Основанный на таком предположении эвристический метод заключается в поиске файлов, которые не полностью, но очень близко соответствуют сигнатурам известных вирусов. Положительным эффектом от использования этого метода является возможность обнаружить новые вирусы еще до того, как для них будут выделены сигнатуры. Отрицательные стороны: Вероятность ошибочно определить наличие в файле вируса, когда на самом деле файл чист - такие события называются ложными срабатываниями Невозможность лечения - и в силу возможных ложных срабатываний, и в силу возможного неточного определения типа вируса, попытка лечения может привести к большим потерям информации, чем сам вирус, а это недопустимо Низкая эффективность - против действительно новаторских вирусов, вызывающих наиболее масштабные эпидемии, этот вид эвристического анализа малопригоден Поиск вирусов, выполняющих подозрительные действия Другой метод, основанный на эвристике, исходит из предположения, что вредоносные программы так или иначе стремятся нанести вред компьютеру. Метод основан на выделении основных вредоносных действий, таких как, например: Удаление файла Запись в файл Запись в определенные области системного реестра Открытие порта на прослушивание Перехват данных вводимых с клавиатуры Рассылка писем И др. Преимуществом описанного метода является возможность обнаруживать неизвестные ранее вредоносные программы, даже если они не очень похожи на уже известные. Например, новая вредоносная программа может использовать для проникновения на компьютер новую уязвимость, но после этого начинает выполнять уже привычные вредоносные действия. Такую программу может пропустить эвристический анализатор первого типа, но вполне может обнаружить анализатор второго типа. Отрицательные черты те же, что и раньше: Ложные срабатывания Невозможность лечения Невысокая эффективность Дополнительные средства Практически любой антивирус сегодня использует все известные методы обнаружения вирусов. Но одних средств обнаружения мало для успешной работы антивируса, для того, чтобы чисто антивирусные средства были эффективными, нужны дополнительные модули, выполняющие вспомогательные функции. Модуль обновления В первую очередь, каждый антивирус должен содержать модуль обновления. Это связано с тем, что основным методом обнаружения вирусов сегодня является сигнатурный анализ, который полагается на использование антивирусной базы Модуль планирования Второй важный вспомогательный модуль - это модуль планирования. Существует ряд действий, которые антивирус должен выполнять регулярно: в частности, проверять весь компьютер на наличие вирусов и обновлять антивирусную базу. Модуль планирования как раз и позволяет настроить периодичность выполнения этих действий. Модуль управления По мере увеличения количества модулей в антивирусе возникает необходимость в дополнительном модуле для управления и настройки. В простейшем случае - это общий интерфейсный модуль, при помощи которого можно в удобной форме получить доступ к наиболее важным функциям: Настройке параметров антивирусных модулей Настройке обновлений Настройке периодического запуска обновления и проверки Запуску модулей вручную, по требованию пользователя Отчетам о проверке Другим функциям, в зависимости от конкретного антивируса Карантин Среди прочих вспомогательных средств во многих антивирусах есть специальные технологии, которые защищают от возможной потери данных в результате действий антивируса. Разумеется, от плохих случаев желательно застраховаться. Проще всего это сделать, если перед лечением или удалением файлов сохранить их резервные копии, тогда если окажется, что файл был удален ошибочно или была потеряна важная информация, всегда можно будет выполнить восстановление из резервной копии. Основные элементы любой антивирусной защиты рабочей станции или сетевого сервера - это постоянная проверка в режиме реального времени, проверка по требованию и механизм обновления антивирусных баз. Они также обязательны и для защиты домашнего компьютера. 163.Антивирусная защита мобильных пользователей: угрозы заражения, принципы действия вирусов для мобильных телефонов и средства защиты от вирусов. В последнее время получило широкое распространение использование компьютерной техники с возможностью программирования С увеличением числа такого оборудования и с совершенствованием используемых в них средств связи с окружающим миром, появляются все новые технологии вредоносного воздействия. Уже не секрет, что существуют вирусы, передающиеся по каналам MMS1, Bluetooth2, Wi-Fi3. какую опасность современные вирусы представляют для смартфона? Вирусы могут: незаметно для пользователя провести массовую рассылку SMS и MMS, за которые абоненту придется платить; несанкционированно звонить на платные номера; уничтожить данные пользователя (телефонная книга, файлы и т.д.) или похитить конфиденциальную информацию; заблокировать функции телефона (SMS, игры, камеру и т.д.) или аппарат в целом; разряжать аккумулятор телефона в несколько раз быстрее обычного; рассылать от вашего имени всеми возможными способами (e-mail, Wi-Fi, Bluetooth и т.д.) зараженные файлы; при синхронизации смартфона с компьютером переслать на ПК деструктивный код. Способы проникновения вируса на смартфон: через Bluetooth-соединение; вместе с MMS-сообщением; при загрузке в смартфон ПО из ненадежного источника. Каким мобильным телефонам могут вредить вирусы? Главным условием для начала вирусной эпидемии на мобильных устройствах является открытость платформы операционной системы и разнообразие предлагаемых ею функциональных возможностей. Стоит учесть, что в данном плане между основными популярными платформами смартфонов нет серьезных различий. Крупномасштабная вспышка вируса на открытой платформе возможна при наличии следующих условий: достаточное количество терминалов данной платформы, чтобы стать интересной целью для авторов вирусов; множество функциональных возможностей для действий вируса; возможность соединения для распространения вируса. Заражению вирусом подвержены не только смартфоны. «Лаборатория Касперского» обнаружила вредоносные программы, способные заражать мобильные телефоны с поддержкой технологии Java (J2ME). В последние годы эта платформа устанавливается на все аппараты, поскольку с ее помощью запускаются приложения и игры. Оказавшись в мобильнике, троянец начинает рассылать сообщения на некоторые платные мобильные сервисы. При этом со счета пользователя снимается 5-6 долл. (вирус Redbrowser). Пример.ЧервьCaribe можно считать первой широко известной вредоносной программой для мобильных телефонов. Она передается через протокол Bluetooth и заражает устройства, работающие под управлением OS Symbian. Иных вредоносных действий Caribe не производит, однако постоянное наличие его в памяти и непрерывное сканирование наличия по соседству активных Bluetoothустройств несколько уменьшают стабильность работы инфицированного телефона. Антивирусные программы Естественно, эволюция антивирусных средств в области защиты мобильных пользователей также не может стоять на месте. Антивирусные программы для мобильных устройств обычно во многом похожи на домашние антивирусы: такая же простота в интерфейсе, несколько ограниченный набор функций, невозможность удаленного управления. Однако есть отличия - ряд ограничений, которые накладывают операционные системы, используемые в таких устройствах, а также технические особенности самих устройств. Это и небольшой по сравнению со стационарными компьютерами объем оперативной памяти, и существенно уменьшенная функциональность, предоставляемая используемыми в мобильных устройствах операционными системами для прикладных программ, и небольшое количество установленных приложений (часто их вообще нет). Поэтому большинство антивирусных программ для мобильных пользователей исключительно просты в управлении, однако имеют все те же базовые составные части, что и антивирусы для домашних компьютеров: проверку в режиме реального времени, проверку по требованию и средство для обновления антивирусных баз. 164.Обнаружение вторжений. Основные типы систем обнаружения вторжений и датчиков вторжений. Обнаружение вторжений - это еще одна задача, выполняемая сотрудниками, ответственными за безопасность информации в организации, при обеспечении защиты от атак. Обнаружение вторжений - это активный процесс, при котором происходит обнаружение хакера при его попытках проникнуть в систему. В идеальном случае такая система лишь выдаст сигнал тревоги при попытке проникновения. Системы обнаружения вторжений (IDS) появились очень давно. Сигнализация в зданиях и в автомобилях также является разновидностью системы обнаружения вторжений. Если перенести концепцию системы сигнализации в компьютерный мир, то получится базовая концепция системы обнаружения вторжений. Необходимо определить, чем в действительности является периметр защиты компьютерной системы или сети. Этот периметр может определяться межсетевыми экранами, точками разделения соединений или настольными компьютерами с модемами. Данный периметр может быть расширен для содержания домашних компьютеров сотрудников, которым разрешено соединяться друг с другом, или партнеров по бизнесу, которым разрешено подключаться к сети. Система обнаружения вторжений IDS предназначена для разграничения авторизованного входа и несанкционированного проникновения, что реализуется гораздо сложнее. Здесь можно в качестве примера привести ювелирный магазин с сигнализацией против грабителей. Если кто-либо, даже владелец магазина, откроет дверь, то сработает сигнализация. Владелец должен после этого уведомить компанию, обслуживающую сигнализацию, о том, что это он открыл магазин, и что все в порядке. Систему IDS, напротив, можно сравнить с охранником, следящим за всем, что происходит в магазине, и выявляющим несанкционированные действия (как, например, пронос огнестрельного оружия). Определение типов систем обнаружения вторжений Существуют два основных типа IDS: узловые (HIDS) и сетевые (NIDS). Система HIDS располагается на отдельном узле и отслеживает признаки атак на данный узел. Система NIDS находится на отдельной системе, отслеживающей сетевой трафик на наличие признаков атак, проводимых в подконтрольном сегменте сети. На рисунке 13.1 показаны два типа IDS, которые могут присутствовать в сетевой среде. Узловые IDS Узловые IDS (HIDS) представляют собой систему датчиков, загружаемых на различные сервера организации и управляемых центральным диспетчером. Датчики отслеживают различные типы событий (более детальное рассмотрение этих событий приводится в следующем разделе) и предпринимают определенные действия на сервере либо передают уведомления. Датчики HIDS отслеживают события, связанные с сервером, на котором они загружены. Сенсор HIDS позволяет определить, была ли атака успешной, если атака имела место на той же платформе, на которой установлен датчик. Существует пять основных типов датчиков HIDS. Анализаторы журналов. Датчики признаков. Анализаторы системных вызовов. Анализаторы поведения приложений. Контролеры целостности файлов. Следует заметить, что количество датчиков HIDS увеличивается, и некоторые продукты предлагают функциональные возможности, предусматривающие использование датчиков более чем пяти основных видов. Анализаторы журналов Анализатор журнала представляет собой именно то, что отражает само название датчика. Процесс выполняется на сервере и отслеживает соответствующие файлы журналов в системе. Если встречается запись журнала, соответствующая некоторому критерию в процессе датчика HIDS, предпринимается установленное действие. Датчики признаков Датчики этого типа представляют собой наборы определенных признаков событий безопасности, сопоставляемых с входящим трафиком или записями журнала. Различие между датчиками признаков и анализаторами журналов заключается в возможности анализа входящего трафика. Анализаторы системных вызовов Анализаторы системных вызовов осуществляют анализ вызовов между приложениями и операционной системой для идентификации событий, связанных с безопасностью. Датчики HIDS данного типа размещают программную спайку между операционной системой и приложениями. Когда приложению требуется выполнить действие, его вызов операционной системы анализируется и сопоставляется с базой данных признаков. Эти признаки являются примерами различных типов поведения, которые являют собой атакующие действия, или объектом интереса для администратора IDS. Анализаторы поведения приложений Анализаторы поведения приложений аналогичны анализаторам системных вызовов в том, что они применяются в виде программной спайки между приложениями и операционной системой. В анализаторах поведения датчик проверяет вызов на предмет того, разрешено ли приложению выполнять данное действие, вместо определения соответствие вызова признакам атак. Контролеры целостности файлов Контролеры целостности файлов отслеживают изменения в файлах. Это осуществляется посредством использования криптографической контрольной суммы или цифровой подписи файла. Конечная цифровая подпись файла будет изменена, если произойдет изменение хотя бы малой части исходного файла (это могут быть атрибуты файла, такие как время и дата создания). Алгоритмы, используемые для выполнения этого процесса, разрабатывались с целью максимального снижения возможности для внесения изменений в файл с сохранением прежней подписи. Сетевые IDS NIDS представляет собой программный процесс, работающий на специально выделенной системе. NIDS переключает сетевую карту в системе в неразборчивый режим работы, при котором сетевой адаптер пропускает весь сетевой трафик (а не только трафик, направленный на данную систему) в программное обеспечение NIDS. После этого происходит анализ трафика с использованием набора правил и признаков атак для определения того, представляет ли этот трафик какой-либо интерес. Если это так, то генерируется соответствующее событие. Чаще всего при применении NIDS используются две сетевые карты Одна карта используется для мониторинга сети. Эта карта работает в "скрытом" режиме, поэтому она не имеет IP-адреса и, следовательно, не отвечает на входящие соединения. Вторая сетевая карта используется для соединения с системой управления IDS и для отправки сигналов тревоги. Эта карта присоединяется ко внутренней сети, невидимой для той сети, в отношении которой производится мониторинг. Среди преимуществ использования NIDS можно выделить следующие моменты. NIDS можно полностью скрыть в сети таким образом, что злоумышленник не будет знать о том, что за ним ведется наблюдение. Одна система NIDS может использоваться для мониторинга трафика с большим числом потенциальных систем-целей. NIDS может осуществлять перехват содержимого всех пакетов, направляющихся на систему-цель. Среди недостатков данной системы необходимо отметить следующие аспекты. Система NIDS может только выдавать сигнал тревоги, если трафик соответствует предустановленным правилам или признакам. NIDS может упустить нужный интересуемый трафик из-за использования широкой полосы пропускания или альтернативных маршрутов. Система NIDS не может определить, была ли атака успешной. Система NIDS не может просматривать зашифрованный трафик. В коммутируемых сетях (в отличие от сетей с общими носителями) требуются специальные конфигурации, без которых NIDS будет проверять не весь трафик. Какой тип IDS лучше? Является ли один из двух типов IDS более предпочтительным по сравнению с другим? Все зависит от обстоятельств. У устройств обоих типов есть свои преимущества и недостатки В то время как NIDS более эффективен с точки зрения стоимости (одна система NIDS осуществляет мониторинг трафика большого количества систем), HIDS больше подходит для организаций, в которых уделяется повышенное внимание отслеживанию работы штатных сотрудников. Иными словами, выбор типа устройства IDS зависит от первоочередных целей, которых необходимо достичь в сети организации. 165.Безопасность в ОС Windows 7, настройка ОС, управление пользователями и системой, поиск вторжений в ОС. Операционная система Windows 7 содержит массу принципиальных изменений не только в пользовательском интерфейсе, но и в компонентах, отвечающих за безопасность продукта и хранящихся на компьютере данных. Для корпорации Microsoft информационная безопасность пользователей Windows всегда стояла во главе угла и по сей день остается приоритетом номер один. Компания упорно и практически непрерывно (разработка-то идёт чуть ли не во всех часовых поясах!) совершенствует механизмы защиты своих операционных систем и с каждым новым поколением внедряет решения, повышающие уровень безопасности. Ярким примером работы в этом направлении может служить Windows 7 - система, построенная на прочном фундаменте безопасности WindowsVista и вобравшая в себя последние наработки в данной области. Центр поддержки Windows 7 Владельцы компьютеров с Vista наверняка успели оценить удобство центра обеспечения безопасности Windows. В новой версии операционной системы специалисты компании Microsoft существенно расширили возможности этого инструмента и присвоили ему новое говорящее название - центр поддержки. В отличие от "Висты", обновленный компонент информирует пользователя не только о проблемах безопасности Windows 7, но и обо всех других событиях, степень значимости которых можно оценивать по цветовой окраске сообщений. С помощью центра поддержки не составит труда убедиться, что система функционирует без ошибок, брандмауэр включен, антивирусные приложения обновлены и компьютер настроен для автоматической установки обновлений и резервного копирования важных данных. В случае выявления неполадок центр обновления Windows 7 выполнит поиск доступных решений в Интернете и приведёт ссылки на программные средства для устранения возникших ошибок. Контроль учётных записей пользователей В Windows 7 эволюционировал вызывавший много споров среди продвинутых пользователей механизм контроля учётных записей, известный также как UserAccountControl. В "семёрке" UAC стал гораздо менее навязчивым и обзавелся дополнительными параметрами, руководствуясь которыми можно гибко настраивать функцию контроля учётных записей и значительно сокращать количество запросов на подтверждение тех или иных действий, требующих администраторских полномочий в системе. UserAccountControl помогает предотвратить незаметное проникновение вредоносного кода на компьютер и поэтому отключать рекомендуется. систему защиты (а такая опция предусмотрена) не Шифрование дисков при помощи BitLocker Механизм шифрования содержимого жёстких дисков, дебютировавший в "Висте", также мигрировал с некоторыми улучшениями в состав корпоративной (Enterprise) и максимальной (Ultimate) редакций Windows 7. Если в предыдущей версии системы приходилось для включения функции криптографической защиты данных вручную разбивать диск на два раздела, то теперь "семёрка" автоматически резервирует место на носителе на этапе установки операционки. Помимо этого в Windows 7 появился агент восстановления данных и была реализована возможность шифрования средствами BitLocker не только системного, но и всех других разделов диска с файловой системой NTFS1. BitLocker выполняет криптографическую защиту всех файлов на выбранном носителе или разделе диска. Подобный подход существенно улучшает защиту данных от несанкционированного доступа при физическом доступе к компьютеру и дискам. BitLockerToGo на страже мобильных носителей Дальнейшим развитием технологии BitLocker стала появившаяся в Windows 7 функция BitLockerToGo, обеспечивающая надёжную защиту данных на съёмных носителях (флэшках и внешних жёстких дисках) даже в том случае, если устройство оказывается потерянным или украденным. При этом важной особенностью является то, что новый механизм шифрования взаимодействует не только с портативными носителями, отформатированными в NTFS, но и с FAT, FAT32 и ExFAT-разделами. Технология AppLocker для контроля используемого на компьютере ПО Администраторам предприятий различного масштаба часто приходится анализировать используемые сотрудниками приложения и ограничивать доступ к определенным программным продуктам, запуск которых может создать угрозу безопасности корпоративной сети. Для решения данной задачи в Windows 7 включён усовершенствованный вариант инструмента SoftwareRestrictionPolicies, получивший название AppLocker. Он проще в использовании, а его новые возможности и расширяемость снижают затраты на управление и позволяют вести аудит запускаемых программ, а также гибко манипулировать правилами доступа к определённым приложениям и файлам, используя различные правила и условия вплоть до цифровых подписей продуктов. AppLocker настраивается в рамках домена с помощью групповой политики или на локальном компьютере в оснастке локальных политик безопасности. Блокирование сетевых угроз От сетевых атак компьютеры под управлением Windows защищает брандмауэр. В "семёрке" он также обеспечивает крепкую линию обороны от многих типов вредоносных программ. Как и межсетевой экран WindowsVista SP2, брандмауэр "семёрки" автоматически включается после инсталляции и тщательно фильтрует как входящий, так и исходящий трафик, своевременно информируя пользователя о подозрительной сетевой активности в операционной системе. В "Висте" в каждый момент времени мог функционировать только один сетевой профиль. В Windows 7 это ограничение было снято, и в системе появилась возможность использовать одновременно несколько активных профилей, по одному на сетевой адаптер. Преимущества такого нововведения очевидны. Можно, к примеру, сидя в кафе, где есть беспроводная точка доступа, подключаться через VPN (VirtualPrivateNetwork) к корпоративной сети и при этом быть уверенным в том, что брандмауэр Windows 7 применит общий профиль к WiFi-адаптеру, а профиль домена активирует для VPNтуннеля. Защищённый доступ к ресурсам корпоративной сети Раз уж речь зашла о VPN-подключениях, то нелишне будет обратить внимание читателей на DirectAccess - новую технологию корпорации Microsoft, обеспечивающую защищенное соединение с корпоративной сетью для удаленных пользователей, работающих через публичные сети. Основное отличие DirectAccess от VPN состоит в том, что безопасное соединение устанавливается в фоновом режиме без участия пользователя. Такой подход позволяет сделать максимально простой и удобной работу мобильных сотрудников без снижения обеспечиваемого уровня безопасности. Технологии биометрической безопасности Устройства, предназначенные для идентификации пользователей по отпечаткам пальцев, можно было использовать и в прежних версиях операционных систем компании Microsoft. Для этого приходилось довольствоваться программными решениями сторонних разработчиков. В Windows 7 имеются собственные биометрические драйверы и программные компоненты, которые могут использовать не только владельцы компьютеров, оснащённых устройствами чтения отпечатков пальцев, но и разработчики сторонних софтверных организаций. Для настройки биометрических устройств предусмотрено одноимённое меню в панели управления операционной системы. Безопасный Интернет с InternetExplorer 8 В состав Windows 7 входит браузер InternetExplorer 8, который характеризуется развитыми средствами обеспечения безопасности. Достаточно упомянуть функцию подсвечивания домена второго уровня, которая позволяет вовремя заметить неладное и избежать уловки сетевых мошенников, заманивающих пользователей на поддельный сайт с похожим на известное доменным именем, отказ от административных привилегий при запуске ActiveX, а также технологию DataExecutionPrevention. Суть последней заключается в том, что когда браузер попытается выполнить какой-либо код, находящейся в памяти, система попросту не даст ему это сделать. В браузере имеются модель предупреждения XSS-атак (CrossSiteScripting), а также система SmartScreen, генерирующая уведомления при попытке посещения потенциально опасных сайтов и защищающая от вредоносного ПО. Средства AutomaticCrashRecovery позволяют восстановить все ранее открытые вкладки после аварийного завершения работы приложения, а режим просмотра вебстраниц InPrivate позволяет не оставлять следов при работе на компьютерах общего доступа. Защитник Windows Для защиты от шпионского программного обеспечения в состав Windows 7 включён специальный модуль, автоматически запускаемый при каждой загрузке операционной системы и выполняющий сканирование файлов как в режиме реального времени, так и по заданному пользователем расписанию. В целях регулярного обновления сигнатур вредоносных приложений защитник Windows использует центр обновления для автоматической загрузки и установки новых определений по мере их выпуска. Кроме того, защитник Windows может быть настроен на поиск обновлённых определений в Интернете перед началом проверки хранящихся на диске компьютера данных. Любопытной особенностью антишпионского модуля является умение работать в тандеме с сетевым сообществом MicrosoftSpyNet, призванным научить пользователей адекватно реагировать на угрозы, исходящие от шпионских программ. Например, если защитник Windows обнаруживает подозрительное приложение или внесенное им изменение, которые ещё не получили оценки степени опасности, можно просмотреть, как другие участники сообщества отреагировали на такое же предупреждение, и принять верное решение. Антивирус MicrosoftSecurityEssentials - теперь и для российских пользователей! В дополнение к перечисленным выше технологиям безопасности, Microsoft также предлагает MicrosoftSecurityEssentials - бесплатное антивирусное решение, которое обеспечивает надежную защиту компьютера от всех возможных угроз, в том числе от вирусов, шпионских программ, руткитов и троянов. MicrosoftSecurityEssentials работает тихо и незаметно в фоновом режиме, не ограничивая действия пользователей и не замедляя работу любых, даже низкопроизводительных компьютеров. Предлагаемый компанией Microsoft антивирус прост в использовании, оснащён интуитивно понятным интерфейсом, содержит самые современные технологии для защиты от вирусов и соответствует всем нормам в области компьютерной безопасности. 166.Безопасность беспроводных соединений. Беспроводные сети становятся все более и более распространенными. К сожалению, несмотря на то что беспроводная технология способствует экономии средств, она ведет к возникновению серьезных вопросов безопасности в организациях, использующих данный тип соединений. Для предотвращения прослушивания сетей и обеспечения корректной аутентификации было разработано множество механизмов безопасности Безопасность передачи данных Так как беспроводные сети используют воздух и пространство для передачи и приема информации (сигналы являются открытыми для любого лица, находящегося в зоне действия), безопасность передачи данных является очень важным аспектом безопасности всей системы в целом. Без обеспечения должной защиты конфиденциальности и целостности информации при ее передаче между рабочими станциями и точками доступа нельзя быть уверенным в том, что информация не будет перехвачена злоумышленником, и что рабочие станции и точки доступа не будут подменены посторонним лицом. Стандарт 802.11x определяет протокол WiredEquivalentPrivacy (WEP) для защиты информации при ее передаче через WLAN. WEP предусматривает обеспечение трех основных аспектов: Аутентификация; Конфиденциальность; Целостность. Аутентификация Служба аутентификации WEP используется для аутентификации рабочих станций на точках доступа. В аутентификации открытых систем рабочая станция рассматривается как аутентифицированная, если она отправляет ответный пакет с MAC-адресом в процессе начального обмена данными с точкой доступа. Конфиденциальность Механизм обеспечения конфиденциальности базируется на RC4. RC4 - это стандартный мощный алгоритм шифрования, поэтому атаковать его достаточно сложно. WEP определяет систему на базе RC4, обеспечивающую управление ключами, и другие дополнительные службы, необходимые для функционирования алгоритма. RC4 используется для генерирования псевдослучайной последовательности ключей, комбинируемой с информацией для формирования шифрованного текста. Этот механизм защищает всю информацию заголовка протокола и данные протокола 802.11x (т. е. выше уровня 2). Целостность Спецификация протокола WEP включает контроль целостности для каждого пакета. Используемая проверка целостности представляет собой циклическую 32битную проверку избыточности (CRC). CRC вычисляется для каждого пакета перед его шифрованием, после чего данные в комбинации с CRC шифруются и отправляются в пункт назначения. Аутентификация Аутентификация является ключевым компонентом системы безопасности WLAN. Ни одна из опций, доступных пользователям WLAN, сама по себе не предусматривает защиту от рисков, связанных с использованием WLAN. В следующих разделах рассматривается каждая из доступных опций. Идентификатор набора служб Идентификатор набора служб (SSID) - это 32-битная строка, используемая в качестве сетевого имени. Чтобы связать рабочую станцию с точкой доступа, обе системы должны иметь один и тот же SSID. На первый взгляд это может показаться рудиментарной формой аутентификации. Если рабочая станция не имеет нужного SSID, то она не сможет связаться с точкой доступа и соединиться с сетью. К сожалению, SSID распространяется многими точками доступа. Это означает, что любая рабочая станция, находящаяся в режиме ожидания, может получить SSID и добавить саму себя в соответствующую сеть. Примечание Некоторые точки доступа можно настроить на запрет распространения SSID. Однако, если данная конфигурация не будет сопровождаться соответствующими мерами безопасности передачи данных, SSID по-прежнему можно будет определить посредством прослушивания трафика. MAC-адрес Некоторые точки доступа позволяют использовать MAC-адреса авторизованных рабочих станций для аутентификации (это возможность, предусмотренная поставщиком, поэтому она не включена в спецификацию). В данной конфигурации AP настроена на разрешение соединения только по тем MACадресам, о которых известно этой точке доступа. MAC-адрес сообщается точке доступа администратором, который добавляет MAC-адрес в список разрешенных устройств. К сожалению, MAC-адреса должны передаваться в открытом виде; в противном случае сеть функционировать не будет. Если злоумышленник прослушивает трафик, он может определять авторизованные MAC-адреса и настраивать свою собственную систему на использование одного из этих MACадресов для установки соединения с AP. WEP Как уже было упомянуто, WEP предусматривает использование службы аутентификации. К сожалению, эта служба осуществляет только аутентификацию рабочей станции относительно AP. Она не обеспечивает взаимную аутентификацию, поэтому рабочая станция не получает доказательства того, что AP действительно является авторизованной точкой доступа в данной сети. Таким образом, использование WEP не предотвращает перехват данных или атаки через посредника (cм. рис. 18.3). Вопросы безопасности беспроводных соединений С расширением применения WLAN в организациях возникла необходимость в осознании рисков, связанных с использованием этих сетей. Риски варьируются от прослушивания до направленных внутренних атак и даже атак, нацеленных на внешние сайты. Обнаружение WLAN Обнаружить WLAN очень легко. Действительно, именно для этой цели был разработан ряд средств. Использование внешней антенны на портативном компьютере делает возможным обнаружение сетей WLAN во время обхода нужного района или поездки по городу. Надежным методом обнаружения WLAN является обследование офисного здания с переносным компьютером в руках. Внешняя антенна не является необходимой, однако помогает расширить диапазон обнаружения, которым обладают утилиты. Прослушивание Возможно, наиболее очевидным риском, представляемым для организации, использующей беспроводную сеть, является возможность проникновения злоумышленника во внутреннюю сеть компании. Беспроводные сети по своей природе позволяют соединять с физической сетью компьютеры, находящиеся на некотором расстоянии от нее, как если бы эти компьютеры находились непосредственно в сети. Такой подход позволит подключиться к беспроводной сети организации, располагающейся в здании, человеку, сидящему в машине на стоянке рядом с ним Даже если в организации реализована надежная аутентификация, которую должны проходить все пользователи для доступа к секретным файлам и системам, злоумышленник может без труда добыть секретные сведения посредством пассивного прослушивания сети. Атаку посредством пассивного прослушивания практически невозможно обнаружить. Реализация безопасности беспроводных сетей Реализация WLAN должна предваряться полной оценкой рисков, связанных с проектом. Необходимо провести изучение потенциальных угроз, представляемых для компании. Следует выявить любые имеющиеся контрмеры. Если руководство организации примет решение продолжить реализацию, необходимо принять дополнительные меры для снижения рисков, представляемых для организации. В следующих разделах рассказывается о некоторых мерах безопасности, которые могут помочь в управлении рисками. Безопасность точки доступа В самом начале реализации проекта необходимо настроить безопасность точки беспроводного доступа. В идеальном случае точка доступа позволяет указать ключ WEP. Убедитесь, что этот ключ нельзя легко угадать. Хотя такой шаг и не предотвратит взлом ключа, он сделает процесс несанкционированного определения ключа несколько сложнее. Если возможно, используйте MAC-адреса для ограничения набора рабочих станций, которым разрешено подключение. Это усложнит задачу управления проектом, однако данный подход помогает ограничить обнаружение рабочих станций точкой доступа. Убедитесь, если возможно, что точка доступа не осуществляет распространение SSID. Большая часть точек доступа, доступных на рынке, снабжены некоторым интерфейсом управления. Это может быть веб-интерфейс или интерфейс SNMP. По возможности используйте HTTPS для управления точкой доступа и предотвращайте доступ злоумышленника посредством использования высоконадежных паролей. Попытайтесь разместить точки доступа так, чтобы их диапазон действия как можно меньше выходил за пределы помещения или здания, занимаемого компанией. Безопасность передачи данных Даже несмотря на серьезные уязвимости, присутствующие в WEP, необходимо использовать этот протокол. Причина в том, что у лица, непреднамеренно осуществившего попытку доступа (например, клиент интернеткафе), не будет возможности получить доступ к сети из-за допущенной случайности. Защита WEP может быть преодолена, однако для этого потребуется много усилий, и нет никаких причин для того, чтобы позволять злоумышленнику действовать совершенно свободно. Безопасность рабочей станции Защита рабочих станций в сети WLAN не отличается от защиты переносных компьютеров, расположенных в другом месте. Необходимо установить соответствующее антивирусное ПО. Если риск велик, на рабочих станциях следует применить персональные межсетевые экраны. Безопасность сайта Наряду с сегментацией сети следует установить в WLAN систему обнаружения вторжений для выявления несанкционированных посетителей. Вероятно, что у вас не получиться обнаружить, где злоумышленник располагается физически, однако вы, по крайней мере, будете знать, что он проник в систему, если им будут осуществляться попытки выполнения какой-либо активной атаки. В любом случае при использовании рабочей станции в сети WLAN необходимо использовать надежный механизм аутентификации. Стандарт 802.1X предусматривает более надежную аутентификацию, нежели SSID или MAC-адрес, однако он не защищен от перехвата сеанса соединения. Использование надежной аутентификации совместно с VPN значительно снизит возможность злоумышленника получить доступ к внутренним системам. 167.Основные понятия, относящиеся к криптографии с открытым ключом. Способы их использования: шифрование, создание и проверка электронной подписи, обмен ключами. Алгоритмы RSA и ДиффиХеллмана. Алгоритмы шифрования с открытым ключом разрабатывались для того, чтобы решить две наиболее трудные задачи, возникшие при использовании симметричного шифрования. Первой задачей является распределение ключа. При симметричном шифровании требуется, чтобы обе стороны уже имели общий ключ, который каким-то образом должен быть им заранее передан. Диффи, один из основоположников шифрования с открытым ключом, заметил, что это требование отрицает всю суть криптографии, а именно возможность поддерживать всеобщую секретность при коммуникациях. Второй задачей является необходимость создания таких механизмов, при использовании которых невозможно было бы подменить кого-либо из участников, т.е. нужна электронная подпись. При описании симметричного шифрования и шифрования с открытым ключом будем использовать следующую терминологию. Ключ, используемый в симметричном шифровании, будем называть секретным ключом. Два ключа, используемые при шифровании с открытым ключом, будем называть открытым ключом и закрытым ключом . Закрытый ключ держится в секрете, но называть его будем закрытым ключом, а не секретным, чтобы избежать путаницы с ключом, используемым в симметричном шифровании. Закрытый ключ будем обозначать KR, открытый ключ - KU. Будем предполагать, что все участники имеют доступ к открытым ключам друг друга, а закрытые ключи создаются локально каждым участником и, следовательно, распределяться не должны. В любое время участник может изменить свой закрытый ключ и опубликовать составляющий пару открытый ключ, заменив им старый открытый ключ. Односторонней функцией называется такая функция, у которой каждый аргумент имеет единственное обратное значение, при этом вычислить саму функцию легко, а вычислить обратную функцию трудно. Вернемся к определению односторонней функции с люком, которую, подобно односторонней функции, легко вычислить в одном направлении и трудно вычислить в обратном направлении до тех пор, пока недоступна некоторая дополнительная информация. При наличии этой дополнительной информации инверсию можно вычислить за полиномиальное время. Основные способы использования алгоритмов с открытым ключом Основными способами использования алгоритмов с открытым ключом являются шифрование/дешифрование, создание и проверка подписи и обмен ключа. Шифрование с открытым ключом состоит из следующих шагов: Рис. 7.1. Шифрование с открытым ключом 1. Пользователь В создает пару ключей KUb и KRb, используемых для шифрования и дешифрования передаваемых сообщений. 2. Пользователь В делает доступным некоторым надежным способом свой ключ шифрования, т.е. открытый ключ KUb. Составляющий пару закрытый ключ KRbдержится в секрете. 3. Если А хочет послать сообщение В, он шифрует сообщение, используя открытый ключ В KUb. 4. Когда В получает сообщение, он дешифрует его, используя свой закрытый ключ KRb. Никто другой не сможет дешифровать сообщение, так как этот закрытый ключ знает только В. Если пользователь (конечная система) надежно хранит свой закрытый ключ, никто не сможет подсмотреть передаваемые сообщения. Создание и проверка подписи состоит из следующих шагов: Рис. 7.2. Создание и проверка подписи 1. Пользователь А создает пару ключей KRA и KUA, используемых для создания и проверки подписи передаваемых сообщений. 2. Пользователь А делает доступным некоторым надежным способом свой ключ проверки, т.е. открытый ключ KUA. Составляющий пару закрытый ключ KRA держится в секрете. 3. Если А хочет послать подписанное сообщение В, он создает подпись EKRa[M] для этого сообщения, используя свой закрытый ключ KRA. 4. Когда В получает подписанное сообщение, он проверяет подпись DKUa[M], используя открытый ключ А KUA. Никто другой не может подписать сообщение, так как этот закрытый ключ знает только А. До тех пор, пока пользователь или прикладная система надежно хранит свой закрытый ключ, их подписи достоверны. Кроме того, невозможно изменить сообщение, не имея доступа к закрытому ключу А ; тем самым обеспечивается аутентификация и целостность данных. В этой схеме все сообщение подписывается, причем для подтверждения целостности сообщения требуется много памяти. Каждое сообщение должно храниться в незашифрованном виде для использования в практических целях. Кроме того, копия сообщения также должна храниться в зашифрованном виде, чтобы можно было проверить в случае необходимости подпись. Более эффективным способом является шифрование небольшого блока битов, который является функцией от сообщения. Такой блок, называемый аутентификатором, должен обладать свойством невозможности изменения сообщения без изменения аутентификатора. Если аутентификатор зашифрован закрытым ключом отправителя, он является цифровой(электронной наверно правильней) подписью, с помощью которой можно проверить исходное сообщение. Далее эта технология будет рассматриваться в деталях. Важно подчеркнуть, что описанный процесс создания подписи не обеспечивает конфиденциальность. Это означает, что сообщение, посланное таким способом, невозможно изменить, но можно подсмотреть. Это очевидно в том случае, если подпись основана на аутентификаторе, так как само сообщение передается в явном виде. Но даже если осуществляется шифрование всего сообщения, конфиденциальность не обеспечивается, так как любой может расшифровать сообщение, используя открытый ключ отправителя. Обмен ключей: две стороны взаимодействуют для обмена ключом сессии, который в дальнейшем можно использовать в алгоритме симметричного шифрования. Алгоритм RSA Алгоритм RSA представляет собой блочный алгоритм шифрования, где зашифрованные и незашифрованные данные являются целыми между 0 и n 1 для некоторогоn . Описание алгоритма Алгоритм, разработанный Ривестом, Шамиром и Адлеманом, использует выражения с экспонентами. Данные шифруются блоками, каждый блок рассматривается как число, меньшее некоторого числа n. Шифрование и дешифрование имеют следующий вид для некоторого незашифрованного блока М и зашифрованного блока С. С = Ме (mod n) M = Cd (mod n) = (Me)d (mod n) = Med (mod n) Как отправитель, так и получатель должны знать значение n. Отправитель знает значение е, получатель знает значение d. Таким образом, открытый ключ есть KU = {e, n} и закрытый ключ есть KR = {d, n}. При этом должны выполняться следующие условия: 1. Возможность найти значения е, d и n такие, что Med = M mod n для всех М < n. 2. Относительная легкость вычисления Ме и Сd для всех значений М < n. 3. Невозможность определить d, зная е и n. Алгоритм обмена ключа Диффи-Хеллмана Цель алгоритма состоит в том, чтобы два участника могли безопасно обменяться ключом, который в дальнейшем может использоваться в какомлибо алгоритме симметричного шифрования. Сам алгоритм ДиффиХеллмана может применяться только для обмена ключами. Алгоритм основан на трудности вычислений дискретных логарифмов . Теперь опишем алгоритм обмена ключей Диффи-Хеллмана. Предполагается, что существуют два известных всем числа: простое число Q и целое A, которое является примитивным корнем Q. Теперь предположим, что пользователи I и J хотят обменяться ключом для алгоритма симметричного шифрования. Пользователь I выбирает случайное число Хi < Qи вычисляет Yi = AXi mod Q. Аналогично пользователь J независимо выбирает случайное целое число Хj < Q и вычисляет Yj = AXj mod Q. Каждая сторона держит значение Х в секрете и делает значение Y доступным для другой стороны. Теперь Xi пользователь I вычисляет ключ как К = (Yj) mod Q, и Xj пользователь J вычисляет ключ как K = (Yi) mod Q. В результате оба получат одно и то же значение: K = (Yj)Xi mod Q = (AXj mod Q)Xi mod Q = (AXj )Ximod Q по правилам модульной арифметики = AXj Xi mod Q = (AXi )Xj mod Q = (AXi mod Q)Xj mod Q = (Yi)Xjmod Q Таким образом, две стороны обменялись секретным ключом. Так как Хi и Хj являются закрытыми, противник может получить только следующие значения: Q, A, Yi и Yj. Для вычисления ключа атакующий должен взломать дискретный логарифм, т.е. вычислить Xj = inda, q (Yj) Безопасность обмена ключа в алгоритме Диффи-Хеллмана вытекает из того факта, что, хотя относительно легко вычислить экспоненты по модулю простого числа, очень трудно вычислить дискретные логарифмы. Для больших простых чисел задача считается неразрешимой.