Otvety k gosam (1)

Вопросы к государственному междисциплинарному экзамену
по специальности
230201.65 «Информационные системы в технике и технологиях»
Информатика
1. Представления информации в вычислительных системах. Позиционные и непозиционные системы исчисления.
Информация представлена виде двоичного кода.
Все системы счисления делятся на позиционные и непозиционные. В позиционных системах счисления значение цифры зависит от ее положения в записи числа, а в непозиционных не зависит. Позиция цифры в числе называется разрядом. Разряд числа возрастает справа налево, от младших разрядов к старшим. Каждая позиционная система использует определенный алфавит цифр и основание. В позиционных системах счисления основание системы равно количеству цифр (знаков в ее алфавите) и определяет, во сколько раз различаются значения цифр соседних разрядов числа.
Наиболее распространенными в настоящее время позиционными системами счисления являются десятичная и двоичная.

2. Представление чисел с фиксированной и плавающей запятой. Операции над числами с плавающей запятой.
Дробные числа могут быть беззнаковые и знаковые. Для записи знаковых чисел могут быть использованы прямые, обратные и дополнительные коды.
Запятая находится слева от самого старшего разряда, и тогда в такой переменной можно будет записывать только дробные числа:
[ Cкачайте файл, чтобы посмотреть картинку ]
Или договоримся, что она находится точно посередине переменной, и тогда мы сможем записывать смешанные числа:
[ Cкачайте файл, чтобы посмотреть картинку ]
Представление чисел в двоичном коде с плавающей запятой.
Число записывается в виде мантиссы, умноженной на 10 в степени, отображающей порядок числа, Например: 0,2*105; 0,16*10-38
Для записи двоичных чисел тоже используется такая форма записи. Эта форма записи называется запись числа с плавающей точкой. Мантисса не может быть больше единицы и после запятой в мантиссе не может записываться ноль.
А теперь рассмотрим промышленные стандарты, используемые для представления чисел в компьютерах. Существует стандарт IEEE 754 для представления чисел с одинарной точностью (float) и с двойной точностью (double). Для записи числа в формате с плавающей запятой одинарной точности требуется тридцатидвухбитовое слово. Для записи чисел с двойной точностью требуется шестидесятичетырёхбитовое слово. Чаще всего числа хранятся в нескольких соседних ячейках памяти процессора. Форматы числа в формате с плавающей запятой одинарной точности и числа в формате с плавающей запятой удвоенной точности приведены на рисунке
[ Cкачайте файл, чтобы посмотреть картинку ]
На рисунке буквой S обозначен знак числа, 0 - это положительное число, 1 - отрицательное число. e обозначает смещённый порядок числа. Смещение требуется, чтобы не вводить в число еще один знак. Смещённый порядок всегда положительное число. Для одинарной точности для порядка выделено восемь бит. Для смещённого порядка двойной точности отводится 11 бит. Для одинарной точности смещение принято 127, а для двойной точности - 1023. В десятичной мантиссе после запятой могут присутствовать цифры 1:9, а в двоичной - только 1. Поэтому для хранения единицы после двоичной запятой не выделяется отдельный бит в числе с плавающей запятой. Единица подразумевается, как и двоичная запятая. Кроме того, в формате чисел с плавающей запятой принято, что мантисса всегда больше 1. То есть диапазон значений мантиссы лежит в диапазоне от 1 до 2.

3. Алгебраическое представление двоичных чисел. Прямой, дополнительный и обратный коды.
В развернутой форме двоичные числа записываются в виде суммы степеней основания 2 с коэффициентами, в качестве которых выступают цифры 0 или 1. Например, развернутая запись двоичного числа 101 а будет иметь вид: 1*22 +0*21 +1*20
Прямой n-разрядный двоичный код целого числа состоит из одноразрядного кода знака (двоичной цифры 0, если число положительное, или 1, если число отрицательное), за которым следует n
·1-разрядное двоичное представление модуля числа.
Пример. Двоичное представление числа 5 есть 101. Прямой 10-разрядный двоичный код числа +5 есть 0000000101, а числа
·5 1000000101.
Имеются два прямых кода числа 0: «положительный нуль» 0000000000 и «отрицательный нуль» 1000000000 (приведены 10-разрядные прямые коды).
n-разрядный прямой код позволяет представить числа от
·2n
· 1
· 1 до +2n
· 1
· 1.
При записи числа в дополнительном коде, старший разряд является знаковым. Если его значение равно 0, то в остальных разрядах записано положительное [ Cкачайте файл, чтобы посмотреть ссылку ], совпадающее с [ Cкачайте файл, чтобы посмотреть ссылку ]. Если же знаковый разряд равен 1, то в остальных разрядах записано отрицательное двоичное число, преобразованное в дополнительный код. Для получения значения отрицательного числа все разряды, кроме знакового, инвертируются, а к результату добавляется единица. Обратное преобразование, то есть перевод из прямого в дополнительный код, осуществляется аналогично.
Двоичное 8-ми разрядное число может представлять любое целое в диапазоне от
·128 до +127. Если старший разряд равен нулю, то наибольшее целое число, которое может быть записано в оставшихся 7 разрядах равно 27 1
Примеры:
десятичный 8-битный двоичный
прямой дополнительный
-------------------------------------
0 00000000 00000000
1 00000001 00000001
-1 -00000001 11111111
-10 -00001010 11110110
Обратный n-разрядный двоичный код положительного целого числа состоит из одноразрядного кода знака (двоичной цифры 0), за которым следует n
·1-разрядное двоичное представление модуля числа (обратный код совпадает с прямым кодом).
Пример. Двоичное представление числа 5 есть 101. Обратный 10-разрядный двоичный код числа +5 есть 0000000101.
Обратный n-разрядный двоичный код отрицательного целого числа состоит из одноразрядного кода знака (двоичной цифры 1), за которым следует n
·1-разрядное двоичное число, представляющее собой инвертированное n
·1-разрядное представление модуля числа.
Пример. Двоичное представление числа 5 есть 101, его 9-разрядное двоичное представление 000000101. Обратный 10-разрядный двоичный код числа
·5 есть 1111111010.
Имеются два обратных кода числа 0: «положительный нуль» 0000000000 и «отрицательный нуль» 1111111111 (приведены 10-разрядные обратные коды).
n-разрядный обратный код позволяет представить числа от
·2n
· 1
· 1 до +2n
· 1
· 1.

4. Арифметические операции в двоичной системе счисления.
 Сложение. В основе сложения чисел в двоичной системе счисления лежит таблица сложения одноразрядных двоичных чисел (табл. 6).         [ Cкачайте файл, чтобы посмотреть картинку ]         Важно обратить внимание на то, что при сложении двух единиц производится перенос в старший разряд. Это происходит тогда, когда величина числа становится равной или большей основания системы счисления.
Сложение многоразрядных двоичных чисел выполняется в соответствии с вышеприведенной таблицей сложения с учетом возможных переносов из младших разрядов в старшие. В качестве примера сложим в столбик двоичные числа [ Cкачайте файл, чтобы посмотреть картинку ]:     [ Cкачайте файл, чтобы посмотреть картинку ] Проверим правильность вычислений сложением в десятичной системе счисления. Переведем двоичные числа в десятичную систему счисления и сложим их:     [ Cкачайте файл, чтобы посмотреть картинку ]  
Вычитание. В основе вычитания двоичных чисел лежит таблица вычитания одноразрядных двоичных чисел (табл. 7).
  [ Cкачайте файл, чтобы посмотреть картинку ]
При вычитании из меньшего числа (0) большего (1) производится заем из старшего разряда. В таблице заем обозначен 1 с чертой.
Вычитание многоразрядных двоичных чисел реализуется в соответствии с этой таблицей с учетом возможных заемов в старших разрядах.
Для примера произведем вычитание двоичных чисел [ Cкачайте файл, чтобы посмотреть картинку ]: [ Cкачайте файл, чтобы посмотреть картинку ]
Умножение. В основе умножения лежит таблица умножения одноразрядных двоичных чисел (табл. 8).
 [ Cкачайте файл, чтобы посмотреть картинку ]  
Умножение многоразрядных двоичных чисел осуществляется в соответствии с этой таблицей умножения по обычной схеме, применяемой в десятичной системе счисления, с последовательным умножением множимого на очередную цифру множителя. Рассмотрим пример умножения двоичных чисел
[ Cкачайте файл, чтобы посмотреть картинку ]

5. Восьмеричная, шестнадцатеричная и двоично–десятичные системы счисления.
Восьмери
·чная систе
·ма счисле
·ния позиционная [ Cкачайте файл, чтобы посмотреть ссылку ] с основанием [ Cкачайте файл, чтобы посмотреть ссылку ]. Для представления чисел в ней используются цифры [ Cкачайте файл, чтобы посмотреть ссылку ] до [ Cкачайте файл, чтобы посмотреть ссылку ].
Восьмеричная система часто используется в областях, связанных с цифровыми устройствами. Характеризуется лёгким переводом восьмеричных чисел в [ Cкачайте файл, чтобы посмотреть ссылку ] и обратно, путём замены восьмеричных чисел на триады двоичных. Ранее широко использовалась в программировании и вообще компьютерной документации, однако в настоящее время почти полностью вытеснена [ Cкачайте файл, чтобы посмотреть ссылку ].
Таблица перевода восьмеричных чисел в двоичные
08 = 0002
18 = 0012
28 = 0102
38 = 0112
48 = 1002
58 = 1012
68 = 1102
78 = 1112
Шестнадцатеричная система счисления (шестнадцатеричные числа) позиционная [ Cкачайте файл, чтобы посмотреть ссылку ] по основанию 16. Обычно в качестве шестнадцатеричных цифр используются десятичные цифры от 0 до 9 и латинские буквы от A до F для обозначения цифр от 10 до 15.
Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например, требуется перевести шестнадцатеричное число 5A3 в десятичное. В этом числе 3 цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
A316=5·162+10·161+3·160=5·256+10·16+3·1=1280+160+3=144310
Перевод чисел из двоичной системы в шестнадцатеричную
Для перевода многозначного двоичного числа в шестнадцатеричную систему нужно разбить его на тетрады справа налево и заменить каждую [ Cкачайте файл, чтобы посмотреть ссылку ] соответствующей шестнадцатеричной цифрой.
Например:
101101000112=0101 1010 0011=5A316
Таблица перевода чисел



·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·6oct

1
1
1
0



Fhex
=
15dec
=
17oct

1
1
1
1















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

Пример:

12510 = 0001 0010 01012-10 (3 тетрады)
0000 = 0 0100 = 4 1000 = 8
0001 = 1 0101 = 5 1001 = 9
0010 = 2 0110 = 6
0011 = 3 0111 = 7

6. Логические основы построения компьютера.
Архитектура компьютера - логическая организация, структура и ресурсы компьютера, которые может использовать программист. Архитектура определяет принципы действия, информационные связи и взаимное соединение основных логических узлов компьютера. Самой распространенной сегодня архитектурой является Архитектура фон Неймана, в которой программы и данные хранятся совместно в памяти компьютера.
[ Cкачайте файл, чтобы посмотреть картинку ]

7. Элементы алгебры логики. Выполнение логических операций на компьютере.
Арифмети
·ческо-логи
·ческое устро
·йство (АЛУ) блок [ Cкачайте файл, чтобы посмотреть ссылку ], который служит для выполнения арифметических и логических преобразований над словами, называемыми в этом случае [ Cкачайте файл, чтобы посмотреть ссылку ].
X
Y
X Y

0
0
0

0
1
0

1
0
0

1
1
1


1. Логическое умножение - конъюнкция - операция И -AND. Обозначается: &,
· , или совсем опускается:
х у, или х & у, или х
· у или ху.
Постулаты операции И представлены в виде таблицы истинности функции F(x,y)=x у:
Функция F(x,y) принимает значение 1 только в том случае, когда оба аргумента - и первый, и второй - равны 1.


X
Y
X v Y

0
0
0

0
1
1

1
0
1

1
1
1

2. Логическое сложение - дизъюнкция - операция ИЛИ - OR.
Обозначается: v или +:
X v Y или х+у
 
Функция F принимает единичное значение, когда хотя бы один из аргументов, или первый, или второй, или п-й, равен 1.



X
not X

0
1

1
0

3. Отрицание - инверсия - операция НЕ - NOT. Обозначение: not X :
Постулаты операции НЕ представлены в виде таблицы истинности функции F(x)=x:





8.Логический синтез вычислительных схем.
Синтез вычислительных схем по заданным условиям работы сводится к следующим трем этапам:
1. Образование СДНФ (СКНФ) функции по заданной таблице истинности.
Таблица истинности - табличное представление вычислительной (логической) схемы (операции), в котором перечислены все возможные сочетания значений истинности входных сигналов (операндов) вместе со значением истинности выходного сигнала (результата операции) для каждого из этих сочетаний.
2. Упрощение этой функции (преобразованию СДНФ (СКНФ) в формулу с наименьшим числом вхождений переменных);
3. Построение соответствующей схемы.
Образование СДНФ функции по заданной таблице истинности.
Этот этап включает в себя следующие шаги:
1. в заданной таблице истинности выделяют наборы значений аргументов, при которых функция принимает единичное значение;
2. для каждого выделенного набора образуется конституэнта единицы (минтерм), принимающая единичное значение при данном наборе значений аргументов;
3. составляется логическая сумма образованных конституэнт единицы.
Для образования конституэнты единицы С1i , принимающей единичное значение в i-ом наборе значений аргументов необходимо составить логическое произведение аргументов, в которое аргументы, принимающие в i- м наборе единичное значение, входят без знака отрицания, а аргументы, принимающие в i –м наборе новое значение, входят со знаком отрицания.
При образовании совершенной конъюнктивной нормальной формы (СКНФ) функции:
1) в таблице выделяются наборы значений аргументов, при которых функции принимает нулевое значение;
2) для каждого выделенного набора образуется конституэнта поля, принимавшая нулевое значение при данном наборе значений аргументов;
3) составляется логическое произведение образованных конституэнт ноля.
Упрощение функции. При преобразовании СДНФ (СКНФ) в формулу с наименьшим числом вхождений переменных (минимизация формулы) используют аксиомы и законы булевой алгебры
вынос за скобки XY v XZ= X(Y v Z);
полное склеивание ХY v Х Y = X;
поглощение Х v XY= X;
минимизация по методу Квайна;
минимизация с использованием карт Карно или диаграмм Вейча.
При минимизации по методу Квайна предполагается, что исходная функция задана в СДНФ. Введем несколько определений. Конъюнкция, получаемая в результате склеивания двух конституэнт единицы, называется импликантой.
Импликанта поглощает конституэнты единицы, при склеивании которых она образовалась. Таким образом, функция, представленная таб 4.4., определяется уравнением: Y = x1 x2 + x2 x3

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

10. Структурная схема и основные компоненты персонального компьютера.
Большинство компонентов компьютера расположены в системном блоке и они в наибольшей степени задействованы во внутренней обработке данных компьютера. Эти компоненты включают:
Материнская плата(Motherboard): Главная плата персонального компьютера.
Центральный процессор(Central processing unit - CPU): "Мозг" компьютера, в котором происходят большинство операций и вычислений.
Шина(Bus): Набор проводов по которым данные передаются из одной части компьютера в другую, они же соединяют процессор со всеми внешними устройствами.
Оперативное записывающее устройство – ОЗУ (Random-access memory - RAM): Память компьютера, хранящая информацию, с которой в данный момент работает процессор. Энергозависимая.
Постоянное записывающее устройство - ПЗУ(Read-only memory - ROM): Память, в которую информация была записана при изготовлении компьютера. Энергонезависимая.
Блок питания(Power supply): Компонент, питающий компьютер электрическим током.
Жёсткий диск: Устройство, которое записывает и считывает данные на внешний носитель.
Операционная система: Программное обеспечение, управляющее работой компьютера (Windows, Macintosh, UNIX, и т.д.) Часть компонентов, расположенных внутри системного блока требуют соединения с внешним миром. Гнёзда для этих компонентов обычно расположены на задней или боковой панели системного блока.
Внешние порты: Порты, к которым подключаются внешние устройства:
Последовательный порт: асинхронные последовательные устройства, такие как внешний модем.
Видео порт: Соединение с монитором
Порт Ethernet: Кабель данных для подключения к сети Ethernet.
Универсальная последовательная шина (Universal Serial Bus (USB) port): Порт для подключения USB-устройств
PS/2 порт: Внешнее подключение мыши и клавиатуры.
Устройство чтения комакт-дисков(CD-ROM): Устройство, в который вставляются компакт-диски и происходит считывание данных с них.
Устройство чтения и записи компакт дисков (CD-RW): Позволяет не только считывать информацию с дисков, но и записывать данные на определённые виды компакт-дисков.
Floppy-дисковод: Позволяет использовать переносимые дисковые устройства(дискеты), обычно объёмом 1,44 Мб.

11. Функциональная и структурная организация компьютера
Общие принципы функциональной и структурной организации ЭВМ
Электронные вычислительные машины включают, кроме аппаратурной части и программного обеспечения (ПО), большое количество функциональных средств. К ним относятся коды, с помощью которых обрабатываемая информация представляется в цифровом виде: арифметические коды - для выполнения арифметических преобразований числовой информации; помехозащищенные коды, используемые для защиты информации от искажений; коды формы, определяющие, как должна выглядеть обрабатываемая в ЭВМ информация при отображении; цифровые коды аналоговых величин (звука, “живого видео”) и др. Кроме кодов на функционирование ЭВМ оказывают влияние алгоритмы их формирования и обработки, технология выполнения различных процедур (например, начальной загрузки операционной системы, принятой в системе технологии обработки заданий пользователей и др.); способы использования различных устройств и организация их работы (например, организация системы прерываний или организация прямого доступа к памяти), устранение негативных явлений (например, таких, как фрагментация памяти) и др. Реализована идеология функционирования ЭВМ может быть по-разному: аппаратурными, программно-аппаратурными или программными средствами. При аппаратурной и программно-аппаратурной реализации могут быть применены регистры, дешифраторы, сумматоры; блоки жесткого аппаратурного управления или микропрограммного с управлением подпрограммами (комплексами микроопераций); устройства или комплексы устройств, реализованные в виде автономных систем (программируемых или с жестким управлением) и др. При программной реализации могут быть применены различные виды программ - обработчики прерываний, резидентные или загружаемые драйверы, соm-, ехе- или tsr - программы, bat- файлы и др. При серьезных конструктивных различиях ЭВМ могут быть совместимыми, т.е. приспособленными к работе с одними и теми же программами (программная совместимость) и получению одних и тех же результатов при обработке одной и той же, однотипно представленной информации (информационная совместимость). Если аппаратурная часть электронных вычислительных машин допускает их электрическое соединение для совместной работы и предусматривает обмен одинаковыми последовательностями сигналов, то имеет место и техническая совместимость ЭВМ. Совместимые ЭВМ должны иметь одинаковую функциональную организацию: информационные элементы (символы) должны одинаково представляться при вводе и выводе из ЭВМ, система команд должна обеспечивать в этих ЭВМ получение одинаковых результатов при одинаковых преобразованиях информации. Работой таких машин должны управлять одинаковые или функционально совместимые операционные системы (а для этого должны быть совместимы методы и алгоритмы планирования и управления работой аппаратурно-программного вычислительного комплекса). Аппаратурные средства должны иметь согласованные питающие напряжения, частотные параметры сигналов, а главное - состав, структуру и последовательность выработки управляющих сигналов. При неполной совместимости ЭВМ (при наличии различий в их функциональной организации) применяют эмуляторы, т.е. программные преобразователи функциональных элементов. Состав функциональных блоков и структурных средств неоднороден. Поэтому в большинстве случаев функциональная и структурная организация будут рассматриваться в тех разделах, которые посвящены соответствующим аппаратурной части (hardware) или программному обеспечению (Software). В состав центральных устройств ЭВМ входят: центральный процессор, основная память и ряд дополнительных узлов, выполняющих служебные функции: контроллер прерываний, таймер и контроллер прямого доступа к памяти (ПДП). Периферийные устройства делятся на два вида: внешние ЗУ (НМД, НГМД, НМЛ) и устройства ввода-вывода (УВВ): клавиатура, дисплей, принтер, мышь, адаптер каналов связи (КС) и др. Управляющая работой ЭВМ программа перед началом выполнения загружается в основную память. Адрес первой выполняемой команды передается микропроцессору и запоминается в счетчике команд.
В каждом цикле, получив команду в регистр команд и выделив код операции, процессор определяет, к какому устройству она относится. Если команда должна выполняться процессором, организуется ее выполнение по описанному циклу. Если же команда предназначена для выполнения в другом устройстве ЭВМ, центральный процессор (ЦП) передает ее соответствующему устройству. Процесс передачи команды другому устройству предусматривает следующие действия: ЦП выставляет на шину адреса СМ адрес интересующего его устройства. По шинам управления передается сигнал поиск устройства. Все устройства, подключенные к системной магистрали, получив этот сигнал, читают номер устройства с шины адреса и сравнивают его со своим номером. Устройства, для которых эти номера не совпадают, на эту команду не реагируют. Устройство с совпавшим номером вырабатывает сигнал отклика по шине управления. ЦП, получив сигнал отклика, в простейшем случае выставляет имеющуюся у него команду на шину данных и сопровождает ее по шине управления сигналом передаю команду. Получив сигнал о приеме команды, ЦП переходит к выполнению очередной своей команды, выставляя на шину адреса содержимое счетчика команд. В более сложных случаях, получив сигнал, что устройство откликнулось, прежде чем передавать команду, ЦП запрашивает устройство о его состоянии. Текущее состояние устройства закодировано в байте состояния, который откликнувшееся устройство передает процессору через ШД системной магистрали. Если устройство включено и готово к работе, то байт состояния -нулевой. Наличие в нем единиц свидетельствует о нештатной ситуации, которую ЦП пытается проанализировать и в необходимых случаях извещает оператора о сложившейся ситуации.
12. Основные типы вычислительных процессов.
Решение задач на компьютере основано на понятии алгоритма. Алгоритм – это точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к исходному результату. Алгоритм означает точное описание некоторого процесса, инструкцию по его выполнению. Разработка алгоритма является сложным и трудоемким процессом. Алгоритмизация – это техника разработки (составления) алгоритма для решения задач на ЭВМ. Для записи алгоритма решения задачи применяются следующие изобразительные способы их представления:

· Словесно- формульное описание

· Блок-схема (схема графических символов)

· Алгоритмические языки

· Операторные схемы

· Псевдокод
Формульно-словесный способ записи алгоритма характеризуется тем, что описание осуществляется с помощью слов и формул. Содержание последовательности этапов выполнения алгоритмов записывается на естественном профессиональном языке предметной области в произвольной форме. Графический способ описания алгоритма (блок - схема) получил самое широкое распространение. Для графического описания алгоритмов используются схемы алгоритмов или блочные символы (блоки), которые соединяются между собой линиями связи. Каждый этап вычислительного процесса  представляется геометрическими фигурами (блоками). Они делятся на арифметические или вычислительные (прямоугольник), логические (ромб) и блоки ввода-вывода данных (параллелограмм). Алгоритмические языки  - это специальное средство, предназначенное для записи алгоритмов в аналитическом виде. Алгоритмические языки близки к математическим выражениям и к естественным языкам. Каждый алгоритмический язык имеет свой словарь. Алгоритм, записанный на алгоритмическом языке, выполняется по строгим правилам этого конкретного языка.
Операторные схемы алгоритмов. Суть этого способа описания алгоритма заключается в том, что каждый оператор обозначается буквой (например, А – арифметический оператор, Р – логический оператор и т.д.). Операторы записываются слева направо в последовательности их выполнения, причем, каждый оператор имеет индекс, указывающий порядковый номер оператора. Алгоритм записывается в одну строку в виде последовательности операторов.
По структуре выполнения алгоритмы и программы делятся на три вида:

· Линейные

· Ветвящиеся

·Циклические
13. Основные принципы и приемы процедурного программирования.
В настоящее время сложные системы компьютерных программ, разрешающих самые разные прикладные проблемы, создаются с учетом их многократного использования самыми разными пользователями. В этих условиях разработка и эксплуатация программ осуществляется, как правило, разными людьми. Поэтому наряду с эффективностью на первый план выдвигаются и другие важные характеристики программ такие, как понятность, хорошая документированность, надежность, гибкость, удобство сопровождения и т.п.
Проблема разработки программ, обладающих такими качествами, весьма актуальна, что объясняется, прежде всего, трудоемкостью процесса программирования и связанным с этим быстрым ростом стоимости программного обеспечения. Кроме того, создание программного обеспечения, удовлетворяющего требуемым параметрам и характеристикам возможно только при наличии достаточной квалификации персонала разработчиков.
Процедурная парадигма программирования нацелена на снижение трудоемкости процесса создания программного обеспечения от создания технического задания до завершения эксплуатации. Как следствие, подобный подход к созданию программ позволяет значительно усложнить класс прикладных задач, решение которых возможно с помощью современной информационной и телекоммуникационной техники.
Процедурная парадигма подразумевает необходимость единой дисциплины на всех стадиях разработки программы (подготовка технического задания, проектирование, кодирование, отладка, сопровождение). В понятие процедурного подхода к программированию обычно включают нисходящие методы разработки программ (принцип «сверху вниз»), собственно процедурное программирование и так называемый сквозной структурный контроль (средство анализа всего проекта и обнаружения ошибок на возможно более ранней стадии проектирования программы).
О качестве программы можно судить с самых разных точек зрения. Однако можно выделить некоторые наиболее важные характеристики, позволяющие оценить насколько «хороша» данная программа. Следует отметить, что программы, созданные в рамках процедурной парадигмы при достаточном профессионализме разработчика, вполне могут удовлетворять всем этим критериям.
Программа работает и решает поставленную задачу. Ясно, что эта характеристика программы является самой важной. Требование, чтобы программа решала поставленную задачу является настолько очевидным, что вряд ли необходимо на нем останавливаться подробно. Отметим лишь, что аналитическое доказательство правильности программы - задача достаточно сложная, и для ее успешного разрешения необходимо, чтобы программа легко анализировалась, что и достигается за счет перехода к методам процедурного программирования.
Минимальное время, затрачиваемое на тестирование и отладку программы.Характеристика программы с точки зрения ее отладки поддается количественному измерению, т.к. можно непосредственно измерить время, затраченное при работе за компьютером и общее время, затраченное программистом на отладку программы. Тестирование и отладка программы облегчаются, если программа просто анализируется и снабжена необходимыми комментариями, облегчающими ее понимание. Кроме того, понимание программы облегчается, если она имеет простую ясную структуру, в частности, если при использовании процедурного подхода ограничено использование операторов передачи управления (GOTO). Перегруженность программы этими операторами приводит к хаотической структуре и усложняет отладку. Общий принцип состоит в том, что если программа настолько сложна и изощренна, что понятна только разработчику, то она бесполезна, поскольку ею не могут воспользоваться другие пользователи.
Уменьшение затрат на сопровождение. Разработанная и отлаженная программа предназначена для многократного использования. В частности, она может быть частью целого комплекса программ, предназначенных для решения более сложной задачи. При сопровождении программы программистам приходится сталкиваться с целым рядом проблем, зависящих от качества сопровождаемой программы - чем лучше программа, тем проще ее сопровождение. Все это, в целом, значительно усложняет работу программистов, занимающихся сопровождением. При этом нужно учесть еще и то, что большинство программистов с трудом понимают чужие программы, особенно, написанные хаотично, без четкой структуры.

Гибкость программы. За время эксплуатации программы могут измениться требования к решаемой задаче, техническое задание, требование к программе в связи с включением ее в новый комплекс программ и т.д. Появляется необходимость внести некоторые изменения в программу, что в некоторых случаях бывает очень трудно сделать, т.к. разработчиками не предусмотрена такая возможность. Если программа написана так, что ее невозможно изменить, то она рано или поздно окажется бесполезной.
Уменьшение затрат на разработку. Проектирование и разработка программы должны вестись так, чтобы было возможно, при необходимости, передать ее для завершения другому программисту.
Простота и эффективность. Программа должна быть просто организована.Это может проявляться и в структуре программы, характерной для программ, созданных в рамках процедурной парадигмы программирования, и в использовании простых
и наиболее естественных средств процедурного языка программирования, и в предпочтении простых структур данных.
Эффективность программы считается многими программистами одной из главных ее характеристик. Поэтому часто в ущерб другим качествам программы разработчики прибегают к различным приемам, чтобы уменьшить объем используемой памяти или сократить время работы программы. Следует отметить, что в большинстве случаев эти усилия не оправдывают себя. Разумный подход к повышению эффективности программы состоит в том, чтобы после ее разработки выявить в ней наиболее «узкие» места и постараться их улучшить. Как правило, это приводит к достаточному повышению эффективности программ и не ухудшает других ее важных характеристик.
Все перечисленные характеристики и требования показывают, что для создания «хорошей» процедурной программы необходимо придерживаться определенных принципов или определенной дисциплины программирования в рамках процедурной парадигмы, что должно быть доведено до студентов в процессе обучения информатике в вузе.
Таким образом, процедурное программирование является методом составления хорошо структурированных программ с выделенными замкнутыми по смыслу алгоритмами-процедурами, удобных для чтения и понимания человеком, прослеживания логики их работы, внесения в них исправлений и других изменений.
Основной целью процедурного программирования является уменьшение трудностей тестирования и доказательства правильности программы. В результате процедурного программирования в программах встречаются только ошибки кодирования, которые легко исправляются. Уменьшение трудностей, связанных с тестированием, безусловно, приводит к повышению производительности труда программистов и делает процедурную парадигму достаточно привлекательной с точки зрения обучения основам составления алгоритмов и программирования.
Процедурное программирование улучшает ясность и читаемость программ. Программы, написанные с помощью традиционных методов, особенно те, которые содержат большое количество операторов GOTO, имеют хаотическую структуру. Чтение и понимание таких программ из-за частых «прыжков» и отсутствия четко выраженных алгоритмов, решающих более мелкие подзадачи, существенно затруднено. Структурированные программы, построенные в рамках процедурной парадигмы, имеют последовательную организацию, поэтому такую программу можно прочитать без остановки от начала до конца.
Обратимся к основным правилам разработки программы на основе процедурной методологии.
Программа - это запись алгоритма решения той или иной задачи на выбранном языке программирования, например, на Паскале. Однако прежде чем записывать алгоритм, его необходимо разработать и овладеть языком, используемым в качестве рабочего инструмента для создания программы.
Написание программ. Этот этап часто называют «кодированием», подчеркивая тем самым, что эта работа носит в основном технический характер, хотя качественная запись алгоритма на языке программирования имеет немаловажное значение.
К началу написания текста должны быть четко определены назначение программы, ее исходные данные и требуемые результаты ее выполнения, разработана структура программы, т.е. четко выделены составные части (блоки, подпрограммы) будущей программы, точно определено назначение каждого из них и их взаимодействие. Разработка алгоритма и детальное проектирование будущей программы являются сутью процесса процедурного программирования.
Практика развития систем процедурного программирования позволила выработать некоторую общую методику разработки программ - метод пошаговой детализации (методом «нисходящего проектирования или проектирования сверху вниз»). Главная идея данного подхода состоит в том, чтобы решение какой-либо сложной задачи свести к решению некоторого числа более простых задач.
Большинство программ, разработанных на процедурных языках программирования, наглядно демонстрирует преимущества процедурного программирования методами пошаговой нисходящей детализации, а также подтверждает выводы о рациональности использования процедурного подхода в методологии разработки алгоритмов решения задач, используемых при обучении основам алгоритмизации. Серьезный шаг, который очевидно делается в этом случае к улучшению ясности и читаемости создаваемых программ, безусловно, является одним из основополагающих факторов целесообразности построения учебных курсов информатики для обучения методологии процедурного программирования студентов-информатиков в вузах.

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

Объектно-ориентированное программирование в настоящее время является абсолютным лидером в области прикладного программирования (языки Java, C#, C++, JavaScript, ActionScript и др.). В то же время в области системного программирования до сих пор лидирует парадигма процедурного программирования, и основным языком программирования является язык C.
Основные понятия
Абстракция данных
Объекты представляют собою упрощенное, идеализированное описание реальных сущностей предметной области. Если соответствующие модели адекватны решаемой задаче, то работать с ними оказывается намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта.
Инкапсуляция
Инкапсуляция это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых свойств и методов класса) и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Наследование
Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя, иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Полиморфизм
Полиморфизмом называют явление, при котором один и тот же программный код (полиморфный код) выполняется по-разному в зависимости от того, объект какого класса используется при вызове данного кода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции программы.
Основные концепции
* Система состоит из объектов
* Объекты некоторым образом взаимодействуют между собой
* Каждый объект характеризуется своим состоянием и поведением
* Состояние объекта задаётся значением полей данных
* Поведение объекта задаётся методами
* Управление объектами (вызов методов) производится не напрямую, как это принято в современных языках объектного программирования, а через посылку объектов-сообщений.
Каждый объект в ООП имеет свой тип (класс). Класс представляет собой тип данных, имеющий в составе:
Поля данных
Параметры объекта (конечно, не все, а только необходимые в программе), задающие его состояние (свойства объекта предметной области). Иногда возникает терминологическая путаница, когда поля данных объекта называют свойствами объекта.
Методы
Действия, которые можно выполнять над объектом такого типа, или которые сам объект может выполнять.
Свойства объекта
Значения, доступные по чтению и/или записи через методы, называемые аксессорами (от англ. access доступ). Эти методы часто называют геттерами (чтение) и сеттерами (запись). Они обеспечивают чтение и установку значений полей данных, связанных со свойствами. Свойства можно рассматривать как «умные» поля данных, которые сопровождают доступ к полю данных какими-либо дополнительными действиями (например, когда изменение координаты объекта сопровождается его перерисовкой на новом месте).
Концептуальный подход
Каждый объект является экземпляром некоторого класса объектов. Один класс отличается от других именем и, обычно, набором полей данных, методов и свойств.

15. Структурное программирование. Принцип локализации имен. Модульное построение программ.
Структу
·рное программи
·рование методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.
В соответствии с данной методологией
1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
* последовательное исполнение однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
* ветвление однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
* цикл многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
2. Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.
3. Разработка программы ведётся пошагово, методом «сверху вниз».
Сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы. Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.
Перечислим некоторые достоинства структурного программирования:

1. Структурное программирование позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, что ещё важнее, облегчает понимание её другими разработчиками.
2. В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
3. Сильно упрощается процесс тестирования и отладки структурированных программ.
Принципы локализации имен (локальные и глобальные переменные). Вложенными являются подпрограммы, вызываемые из других подпрограмм. Если какая либо программа использует некоторые переменные подпрограммы, То данные переменные должны быть описаны не в подпрограмме, а в самой программе. Данные переменные называются глобальными, а переменные, объявленные в модуле или подпрограмме являются локальными, и значения этих временных нельзя использовать в главной программе. При разработке сложных по структуре переносимых ПП желательно придерживаться принципа модульности. В этом случае программа собирается из функционально замкнутых частей (модулей). Ввиду того, что каждый из модулей является функционально самодостаточной сущностью, его разработку и тестирование можно проводить независимо от других модулей и программы в целом. Это существенным образом снижает время и стоимость создания системы в целом. По функциональному признаку модули можно разделить на две группы (рис.2):
модули ядра прикладной программы, которые непосредственно реализуют алгоритм обработки информации;
модули взаимодействия с внешней средой. Через эти модули идет обмен информации между ядром прикладной программы и другими ПП, а также взаимодействие с периферийными устройствами и системными ресурсами;
С точки зрения переносимости важным является способ реализации именно модулей второй группы. Исходя из концепции открытых систем, состав второй группы можно классифицировать следующим образом (рис.3):
модули, осуществляющие взаимодействие с ядром операционной системы;
модули, использующие коммуникационные сервисы операционной системы;
модули, выполняющие информационные функции (через соответствующие процедуры API);
модули, организующие диалоговый режим с пользователем на основе интерфейса "человек/компьютер".
16. Понятие рекурсии. Прямая и косвенная рекурсии.
Понятие рекурсии
Рекурсивным называется объект, частично состоящий или определяемый с помощью самого себя. Факториал это классический пример рекурсивного объекта. Факториал числа п это произведение целых чисел от 1 до п. Обозначается факториал числа п так: n!.
Одним из самых известных и популярных методов разработки алгоритмов является рекурсия (в западной литературе рекурсию часто называют методом «разделяй и властвуй»). Она представляет собой мощный, эффективный и в тоже время изящный и элегантный способ решения задач.
В информатике рекурсия используется как практически ориентированное знание - некий мощный и изящный инструмент для реальных вычислений.
Понятие рекурсии не является сложным для начального понимания и не связано со знанием какого-либо определенного формализма или специальной нотации. Под рекурсией понимают прием последовательного сведения решения некоторой задачи к решению совокупности “более простых” задач такого же класса и получению на этой основе решения исходной задачи. Иногда на рекурсию смотрят как на наличие в определении объекта ссылки на сам объект. Или, в более общем случае, как на наличии в определениях упорядоченного множества объектов последовательности ссылок друг на друга, замыкающихся на начальный объект. В программировании это выражается в построении программ (процедур или функций), которые при выполнении обращаются сами к себе непосредственно или через цепочку других программ. Кажущаяся при этих самовызовах или последовательных циклических вызовах видимость порочного круга не более чем иллюзия. Во многих конкретных случаях простыми рассуждениями путем отслеживания значений одной или нескольких управляющих величин удается провести доказательство завершимости вычислений за конечное число шагов.
Алгоритм называется рекурсивным, если в его определении содержится прямой или косвенный вызов этого же алгоритма. Вычисления, проводимые с помощью рекурсивных алгоритмов (процедур, функций) называют рекурсивными. Различают два основных вида рекурсии: прямая и косвенная. Под прямой рекурсией понимается непосредственный вызов алгоритма (функции, процедуры) F из текста самого алгоритма F. При косвенной рекурсии мы имеем циклическую последовательность вызовов нескольких алгоритмов F1, F2, , Fk  (функций, процедур) друг друга: F1 вызывает F2, F2 вызывает F3, , Fk вызывает F1 (k>1).
 17. Структура типов данных языков программирования.
Тип данных (встречается также термин вид данных) понятие из теории программирования. Тип данных определяет множество значений и операций, которые могут быть применены к этим значениям. Например, если переменная имеет числовой тип данных, то таким образом определён диапазон значений, которые могут быть сохранены в этой переменной (чи
·сла) и определены операции, которые могут быть применены к этой переменной (арифметические). Каждый язык программирования поддерживает один или несколько встроенных типов данных (см. классификацию типов данных). Объектно-ориентированный язык программирования предоставляет возможность создавать на их основе пользовательские типы данных, называемые обычно классами. Типизация жесткая связка операций и типов объектов, над которыми их можно выполнять. Таким образом для выполнения некоторой операции объект должен явно или неявно преобразован к необходимому типу. Это увеличивает уверенность программиста в том, что операция даст ожидаемый результат, в противном случае она попросту не выполнится. В общем говоря, в памяти компьютера хранятся только последовательности битов. Если имя переменной указывает адрес в памяти, по которому хранится информация, то тип данных (тип переменной) указывает, каким образом следует обращаться с этой информацией, то есть с битами, находящимися по данному адресу. Преимущества от использования типов данных:
* Надёжность. Типы данных защищают от трёх видов ошибок:
1. Некорректное присваивание. Пусть переменная объявлена как имеющая числовой тип. Тогда попытка присвоить ей символьное или какое-либо другое значение приведет к ошибке еще на этапе компиляции и позволит избежать многих трудностей, поскольку такого рода ошибки трудно отследить обычными средствами.
2. Некорректная операция. Позволяет избежать попыток применения выражений вида «Hello world» + 1. Поскольку как уже говорилось все переменные в памяти хранятся как наборы битов, то при отсутствии типов подобная операция была выполнима (и могла дать результат вроде «Hello worle»!). С использованием типов (см. далее «Контроль типов») такие ошибки отсекаются опять же на этапе компиляции.
3. Некорректная передача параметров. Если функция «синус» ожидает, что ей будет передан числовой аргумент, то передача ей в качестве параметра строки «Hello world» может иметь непредсказуемые последствия. При помощи контроля типов такие ошибки также отсекаются на этапе компиляции.
* Стандартизация. Благодаря соглашениям, касающихся типов, встроенных в системы программирования, сложилась ситуация, когда программисты могут быстро менять свои рабочие инструменты, а программы не требуют больших переделок при переносе исходных текстов в другую среду. К сожалению, стандартизации по универсальным типам данных ещё есть куда развиваться.
Классификация типов данных
Типы данных бывают следующие:
* Простые.
o Перечислимый тип. Может хранить только те значения, которые прямо указаны в его описании.
o Числовые. Хранятся числа. Могут применяться обычные арифметические операции.
+ Целочисленные: со знаком, то есть могут принимать как положительные, так и отрицательные значения; и без знака, то есть могут принимать только неотрицательные значения.
+ Вещественные: с фиксированной запятой, то есть хранятся знак и цифры целой и дробной частей и с плавающей запятой, то есть число приводится к виду m*2e, где m мантисса, e экспонента причем 1/2<=m<=1, а e целое число и хранятся знак, и числа m и e.
o Символьный тип. Хранит один символ. Могут использоваться различные кодировки.
o Логический тип. Имеет два значения: истина и ложь. Могут применяться логические операции. Используется в операторах ветвления и циклах. В некоторых языках является подтипом числового типа, при этом ложь=0, истина=1.
o Множество. В основном совпадает с обычным математическим понятием множества. Допустимы стандартные операции с множествами и проверка на принадлежность элемента множеству. В некоторых языках рассматривается как составной тип.
* Составные (сложные).
o Массив. Является индексированным набором элементов одного типа. Одномерный массив вектор, двумерный массив матрица.
+ Строковый тип. Хранит строку символов. Может применяться операция конкатенация (сложение строк). Чаще всего рассматривается как массив символов, но иногда выделяется в качестве простого.
o Запись. Набор различных элементов (полей записи), хранимый как единое целое. Возможен доступ к отдельным полям записи.
o Файловый тип. Хранит только однотипные значения, доступ к которым осуществляется только последовательно (файл с произвольным доступом, включённый в некоторые системы программирования, фактически является неявным массивом).
* Другие типы данных. Если описанные выше типы данных представляли какие-либо объекты реального мира, то рассматриваемые здесь типы данных представляют объекты компьютерного мира, то есть являются исключительно компьютерными терминами.
o Указатель (тип данных). Хранит адрес в памяти компьютера, указывающий на какую-либо информацию, как правило указатель на переменную.
o Ссылки (тип данных).

18. Распределение памяти под объекты программы. Статическая и динамическая память.
Статические и динамические объекты программ
Некоторые свойства объекта и связи с другими объектами остаются неизменными при любом исполнении его области действия (участка программы, где этот объект считается существующим). Такие свойства и связи называются статическими. Их можно определить по тексту программы, без ее исполнения.
Другие свойства и связи изменяются в процессе исполнения области действия. Их называют динамическими. Например, конкретное значение переменной - динамическое свойство. Связь формального параметра с конкретным фактическим в результате вызова процедуры -динамическая связь. Размер конкретного массива с переменными границами - динамическое свойство.
Часто статические и динамические характеристики называют соответственно характеристиками периода компиляции (трансляции) и периода выполнения (runtime), подчеркивая то обстоятельство, что в период компиляции исходные данные программы недоступны и. следовательно, динамические характеристики известны быть не могут. Известны лишь характеристики, извлекаемые непосредственно из текста программы и тем самым относящиеся к любому ее исполнению (т.е. статические характеристики).
Уровень изменчивости характеристик объектов языка - одно из важнейших свойств языка. Одна крайняя позиция представлена концепцией неограниченного динамизма, когда по существу любая характеристика обрабатываемого объекта может быть изменена при выполнении программы. Такая концепция не исключает прогнозирования и контроля, но и не связывает их жестко со структурой текста программы.
Если память выделяется (распределяется) в процессе трансляции и ее объем не меняется от начала, до конца выполнения программы, то такой объект является статическим. Если же память выделяется во время выполнения программы и ее объем может меняться, то такой объект является динамическим.

19. Списковые динамические структуры. Стеки. Деки. Очереди. Бинарные деревья.
Динамическая структура данных характеризуется следующими свойствами:
Непостоянством и непредсказуемостью размера (от 0 и далее);
Отсутствием физической смежности элементов структуры в памяти (отсю-да вытекает сложность доступа к элементам структуры).
Динамические структуры представляются списковыми структурами. Спи-ском называется линейно-упорядоченная последовательность элементов данных Е(1), Е(2), ..., Е(п), где п>>0, причем каждый элемент характеризует¬ся одним и тем же набором полей. Определенный таким образом список называют также линейным спи-ском вследствие линейной упорядоченности его элементов. Упорядоченность элемен-тов спи¬ска может задаваться неявно путем последовательного располо¬жения его эле-ментов как в логической структуре, так и в па¬мяти машины. Такой список будем на-зывать последовательным. С другой стороны, упорядоченность элементов может за-даваться с помощью специальных указателей, располагаемых в элементах и дающих возможность для каждого элемента определить его предшественника или последова-теля. Такая структура называется динамически связанным списком и широко исполь-зуется в информатике.
Разновидностью таких структур данных являются полустатические структуры, имеющие обычно переменный размер, не превышающий заранее определенного верхнего предела.
Примеры полустатических структур - очередь, стек.
Стеки.
СТЕК ( синонимы - магазин, очередь LIFO-Last In First Out ) - последователь-ный список переменной длины, включение и исключение элементов из которого про-изводится только с одной стороны.
Дескриптор стека, реализованного на основе односвязного линейного спи-ска, содержит: имя стека S, указатель стека PS (наиболее удобен адрес нижнего эле-мента), адрес верхней границы AUB, текущее количество элементов в стеке K, описа-ние отдельного элемента.
Главные операции при работе со стеком - включение и исключение элемента - осуществляются с вершины стека, причем в каждый момент доступен элемент, нахо-дящийся на вершине стека.
Операция включения элемента с адресом N в стек.
IF K= 0 THEN AUB:= N;
F(N):= PS;
PS:= N;
K:= K+1;
Операция исключения элемента из стека (с пополнением списка свободных элементов).
IF K<>0
THEN
BEGIN
P:= F(PS);
F(PS):= E; { пополнение списка свободных
E:= PS; элементов }
PS:= P;
K:= K-1
END
ELSE; { стек пуст }
Операция очистки стека.
F(PS):= E;
E:= PS;
PS:= nil;
K:= 0;
Дескриптор стека, реализованного на основе вектора, содержит: имя стека, границы физической структуры в памяти, описание отдельного элемента. Указание верхней границы существенно, т.к. вектор имеет предельный размер.
Включение и исключение элемента осуществляются с вершины стека и досту-пен для работы лишь верхний элемент.
Операция очистки стека реализуется установкой адреса вершины стека
вне стека ( ниже нижней границы ):
PS := ALB - l
Операция определения количества элементов в стеке ( проверки его
объема ):
n := ( PS - ALB )/ l + 1
ОЧЕРЕДЬ - последовательный список переменной длины, в котором включе-ние элементов производится с одного конца списка ( с хвоста ), а исключение элемен-тов - с другого ( из головы ). Очередь работает по принципу FIFO - First In First Out. Для хвоста и головы очереди используются два указателя PIN и POUT.
При моделировании простейшей ЛИНЕЙНОЙ ОЧЕРЕДИ на основе вектора выделяется последовательность m мест длиной l каждое под элементы очереди.
При включении элемента в очередь он располагается в соответствии с указате-лем PIN, после чего этот указатель перемещается на следующее "пустое" место (в простейшем случае увеличиваясь на 1 или l). В процессе исключения из очереди из-влекается элемент, адресуемый посредством указателя POUT (если POUT<>PIN, что характеризует непустую очередь), а указатель также увеличивается на 1 или l. Теку-щая длина очереди K равна (PIN-POUT)/l, а при очистке очереди (в ее исходном со-стоянии) устанавливается PIN = Q1, POUT = Q1. Независимо от состояния POUT в момент попытки включения элемента при PIN = Qm+l наступает переполнение ли-нейной очереди. Чтобы устранить этот недостаток, после каждого чтения из очереди или, эффективнее, в момент PIN = Qm+l производят "сдвиг" всех наличных элементов очереди к ее голове с соответствующей коррекцией указателей. В этой ситуации пере-полнение возникает только при попытке включения элемента в очередь, где все m мест уже заполнены. Такое решение проблемы, однако, невыгодно из-за временных затрат на последовательные сдвиги элементов.
Более эффективна организация КОЛЬЦЕВОЙ ОЧЕРЕДИ, в которой при попыт-ке включения элемента в очередь, когда PIN = Qm+l, производится коррекция
PIN := Q1, если POUT > Q1.
В кольцевой структуре нет нужды в сдвигах элементов, но значительно сложнее алгоритмы операций включения и исключения элементов из очереди, а радикально проблема переполнения очереди, тем не менее, не решается.
Большинство перечисленных проблем устраняется в случае реализации очереди на основе односвязных линейных списков.
Исходное состояние дескриптора очереди: POUT=nil, PIN=nil, K=0. Описание операции занесения элемента с адресом N в очередь:
IF K=0 THEN POUT:=N ELSE F(PIN):=N;
PIN:=N;
F(PIN):=nil;
K:=K+1;
Описание операции исключения элемента из очереди
IF K<>0 { если очередь не пуста }
THEN
BEGIN
P:=F(POUT);
F(POUT):=E; { пополнение списка свободных элементов }
E:=POUT; { на один элемент }
POUT:=P;
K:=K-1;
IF K=0 THEN PIN:=nil;
END
ELSE ; { отказ по исключению - очередь пуста }

Описание операции очистки очереди

F(PIN):=E; { пополнение списка свободных элементов }
E:=POUT; { на текущее количество элементов }
PIN:=nil;
POUT:=nil;
K:=0;
Особым типом списка является дек.
ДЕК - (от англ. deque - double-ended queue, т.е. очередь с двумя концами) - это такой последовательный список, в котором как включение, так и исключение элементов может осуществляться с любого из двух кон-цов списка. Логическая и физическая структуры дека аналогичны логической и физи-ческой структурам обычной очереди. Однако применительно к деку целесообразно вместо хвоста и головы говорить о левом конце и правом конце. Операции включения и исключения элементов из дека представляют собой обобщение аналогичных опера-ций, применяемых к очереди.
Бинарные деревья
Бинарное (двоичное) дерево (binary tree) - это упорядоченное дерево, каждая вершина которого имеет не более двух поддеревьев, причем для каждого узла выполняется правило: в левом поддереве содержатся только ключи, имеющие значения, меньшие, чем значение данного узла, а в правом поддереве содержатся только ключи, имеющие значения, большие, чем значение данного узла. Бинарное дерево является рекурсивной структурой, поскольку каждое его поддерево само является бинарным деревом и, следовательно, каждый его узел в свою очередь является корнем дерева. Узел дерева, не имеющий потомков, называется листом. Схематичное изображение бинарного дерева:
[ Cкачайте файл, чтобы посмотреть картинку ]
Бинарные деревья классифицируются по нескольким признакам. Введем понятия степени узла и степени дерева. Степенью узла в дереве называется количество дуг, которое из него выходит.
Другим важным признаком структурной классификации бинарных деревьев является строгость бинарного дерева. Строго бинарное дерево состоит только из узлов, имеющих степень два или степень ноль. Нестрого бинарное дерево содержит узлы со степенью равной одному. Бинарные деревья достаточно просто могут быть представлены в виде списков или массивов. Списочное представление бинарных деревьев основано на элементах, соответствующих узлам дерева. Каждый элемент имеет поле данных и два поля указателей. Один указатель используется для связывания элемента с правым потомком, а другой
· с левым. Листья имеют пустые указатели потомков. При таком способе представления дерева обязательно следует сохранять указатель на узел, являющийся корнем дерева. Главным недостатком рассмотренного способа представления бинарного дерева является то, что структура данных является статической. Размер массива выбирается исходя из максимально возможного количества уровней бинарного дерева. Причем чем менее полным является дерево, тем менее рационально используется память.


Архитектура ЭВМ и систем
Организация функционирования машины Тьюринга.
Организация функционирования машины фон Неймана.
Обобщенная архитектура первых отечественных компьютеров.
Конструкция персонального компьютера.
Микропроцессор и его структурное представление. Основные характеристики.
Система команд микропроцессора. Прерывания.
Основная память. Состав, принципы организации ОЗУ и ПЗУ.
Системный и периферийный интерфейсы. Способы обмена данными в интерфейсах. Прямой доступ к памяти.
Системные и локальные шины.
Внешние запоминающие устройства.
Системы отображения информации. Мониторы. Принтеры.
Системы мультимедиа.
Мейнфреймы и суперкомпьютеры.
Организация функционирования компьютеров с магистральной архитектурой.
Прикладное программирование
1С: Предприятие как проблемно-ориентированная прикладная система. Подсистемы и компоненты среды 1С: Предприятие.
1С это фирма, которая разработала систему 1С:Предприятие. Фирма 1С основана в 1991 году Борисом Нуралиевым и его братом Сергеем. На сегодняшний день в фирме 1С работает около 500 человек. Лидерством в российском софтверном бизнесе фирма 1С обязана своей разветвленной сети партнеров и своему суперпродукту "1С:Предприятие".
1С:Предприятие это специализированная объектно-ориентированная система управления базами данных (СУБД), предназначенная для автоматизации деятельности предприятия. Особенно хорошо у нее получается автоматизировать учетные задачи: кадровый учет, расчет зарплаты, бухгалтерский учет, складской учет...
Система программ «1С:Предприятие 8.0» включает в себя платформу и прикладные решения, разработанные на ее основе, для автоматизации деятельности организаций и частных лиц. Сама платформа не является программным продуктом для использования конечными пользователями, которые обычно работают с одним из многих прикладных решений (конфигураций), разработанных на данной платформе. Такой подход позволяет автоматизировать различные виды деятельности, используя единую технологическую платформу.



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


Понятие конфигурации 1С: Предприятия. Типы данных. Иерархия объектов. Агрегатные и подчиненные объекты. Типы значений объектов конфигурации.
В информационной базе системы 1С:Предприятие 8.0 хранятся две конфигурации - основная конфигурация (редактируемая) и конфигурация базы данных. Конфигурация базы данных определяет структуру таблиц базы данных и всю функциональность, с которой работают пользователи. Основная конфигурация используется только для изменения. Это позволяет вносить и сохранять изменения в конфигурации в процессе работы пользователей. Произвести изменение в конфигурации базы данных в процессе работы пользователей нельзя.
Для просмотра структуры конфигурации базы данных, свойств, форм, макетов и другой информации об объектах, можно открыть окно конфигурации базы данных. Для этого необходимо выбрать пункт "Конфигурация - Конфигурация базы данных - Открыть конфигурацию БД". По виду оно ничем не отличается от окна "Конфигурация". Приемы работы с объектами конфигурации базы данных совпадают с приемами работы в окне "Конфигурация" с тем лишь отличием, что все объекты доступны только для чтения (просмотра).
Одним из основных свойств некоторых объектов конфигурации является «тип данных». Это свойство определяет, какого рода информацию может содержать объект конфигурации.
Различают три основных группы типов данных:
Примитивные типы (в их состав входят базовые типы данных).
Типы данных, появившиеся после определения в конфигурации объектов конфигурации.
«Другие» типы, не относящиеся к примитивным и «добавляемым», но поддержка которых во встроенном языке есть изначально.
К примитивным типам данных относятся:
Число (десятичное число).
Строка (строка фиксированной, переменной или неограниченной длины).
Дата (дата, время, дата+время).
Булево (истина или ложь).
Тип.
Null.
Неопределенно.
К «другим» типам относятся:
Массив – совокупность значений любого типа, в т.ч. и массива.
Структура – динамический набор данных, каждый элемент которой состоит из пары «ключ» и «значение». «Ключ» должен быть строковым и отвечать требованиям к именам переменных.
Соответствие – динамический набор данных, каждый элемент которой состоит из пары «ключ» и «значение». «Ключ» может быть произвольного типа.
Список значений – объект, позволяющий строить динамические наборы значений и манипулировать ими.
Таблица значений - объект, позволяющий строить динамические наборы значений и манипулировать ими.
Дерево значений – Объект похожий на таблицу значений, но отличается тем, что строки дерева могут образовывать иерархические структуры.

13 EMBED Photoshop.Image.9 \s 1415
Агрегатные объекты метаданных
Объекты метаданных в системе 1С:предприятие могут быть как независимыми, так и подчиняться друг другу.
Например, независимым объектом метаданных является константа. Константа самодостаточна: она может содержать какое-либо значение, и этим полностью исчерпывается ее назначение в системе 1С:Предприятие. Более того: константа может присутствовать в системе и даже может содержать какое-либо значение, но при этом не использоваться другими объектами метаданных. Правда, на практике такое встречается редко.
Теперь прямо противоположный пример.
Объект метаданных «Реквизит справочника», который содержит какую-либо дополнительную информацию об элементе справочника, может существовать только в составе объекта метаданных «Справочник». Сам по себе, отдельно от справочника, реквизит справочника никогда не используется. Объект метаданных «Справочник» может вообще не содержать объектов типа «Реквизит справочника», но если такие объекты существуют, то они «живут» только внутри справочника.

Объекты метаданных, которые могут иметь в своем составе подчиненные объекты, называются агрегатными объектами метаданных.

Виды программных модулей 1С: Предприятия. Понятие контекста. Глобальный контекст задачи и локальный контекст модуля.
Модули приложения и внешнего соединения.
Открываются через контекстное меню корневого элемента дерева конфигурации.
Модуль приложения автоматически выполняется при старте Предприятия в момент загрузки конфигурации. Модуль приложения предназначен для отработки действий, связанных с сеансом пользователя (прежде всего, начала и окончания работы), и может содержать экспортируемые процедуры, функции и переменные (объявленные с ключевым словом "Экспорт").
Модуль внешнего соединения автоматически выполняется при старте Предприятия в режиме внешнего соединения и предназначен для отработки действий, связанных с сеансом пользователя (прежде всего, начала и окончания работы), и может содержать экспортируемые прцедуры, функции и переменные (объявленные с ключевым словом "Экспорт").
Общие модули.
Предназначены для размещения общих процедур и функций (но не глобальных переменных). В общих модулях нет раздела объявления переменных и раздела основной программы, таким образом, общий модуль может содержать только процедуры и функции.
Если при выполнении процедур и функций общего модуля необходимы полные права для действий с базой данных, следует установить свойство «Привилегированный».
Если используется клиент-серверный вариант программы, можно организовывать исполнение различных процедур и функций общих модулей на сервере приложения или на клиенте:
Если установлено свойство Клиент, все процедуры и функции могут исполняться на клиенте.
Если установлено свойство Сервер, все процедуры и функции могут исполняться на сервере приложения.
Если установлено свойство Внешнее соединение, все процедуры и функции могут исполняться в сессии COM-соединения.
Возможность исполнения конкретных процедур и функций (и/или их фрагментов) на клиенте, сервере приложения или в сессии COM-соединения задаётся с помощью инструкций препроцессора.
Модули объектов.
Модули располагаются в ветках конфигурации, в которых содержатся сами объекты.
Модули набора записей.
Модули присутствуют у регистров любого вида. В них могут быть определены предопределенные процедуры «ПриЗаписи», «ПередЗаписью».
Модули форм.
Эти модули содержатся в формах конфигурации. Модуль формы может содержать определения переменных, процедур, функций, реализующих алгоритм «поведения» формы.
Понятие контекста.
Программный код всегда выполняется в определенном контексте. Существуют следующие виды контекстов:
Глобальный контекст
Контекст объекта конфигурации
Контекст формы
Локальный контекст процедуры или функции
В версии 8.0 будут добавлены так называемые общие модули, которые также имеют свой собственный контекст.
Всегда нужно понимать, в каком контексте вы работаете в данный момент. От этого зависит, какие вы можете вызвать процедуры и функции, к каким переменным вы имеете доступ, можете ли вы обратиться к реквизитам справочников, документов и т.д.
Любой программный модуль конфигурации (кроме общих модулей) имеет доступ к глобальному контексту, который включает в себя все ключевые слова языка, системные переменные, системные перечисления, а также переменные, процедуры и функции, объявленные в глобальном модуле с ключевым словом Экспорт.
Обратите внимание, что в 8.0 общие модули не могут иметь объявлений переменных на уровне модуля. Кроме того общий модуль не имеет доступа к переменным, процедурам и функциям глобального модуля, даже если они объявлены с ключевым словом Экспорт. Таким образом общий модуль является "вещью в себе" и предоставляет внешнему миру свои процедуры и функции.

Справочники, документы и журналы документов среды 1С: Предприятие.
Справочники.
Справочник является списком возможных значений того или иного реквизита. Справочники используются в тех случаях, когда необходимо исключить неоднозначный ввод информации. Например, для того, чтобы покупатель, продавец, кладовщик, директор понимали, о каком товаре идет речь, каждый должен называть его одинаково. И в этом случае необходим справочник. Обычно в торговом предприятии он имеет вид прайс-листа, а если такой справочник хранится в компьютере, то в него заносят всю возможную номенклатуру товаров, с которыми работает торговая фирма.
Система 1С:Предприятие позволяет вести практически неограниченное количество необходимых справочников. Каждый справочник представляет собой список однородных объектов: сотрудников, организаций, товаров и т. д. Каждый такой объект называется элементом справочника.
С точки зрения пользователя, следует иметь в виду, что в Конфигураторе создается не сам справочник, как список значений, а разрабатывается заготовка справочника, его шаблон. В процессе конфигурирования описывается структура информации, которая будет храниться в справочнике, разрабатывается экранное и, если необходимо, печатное представление справочника, задаются различные особенности его «поведения».
В качестве обязательных реквизитов каждый справочник имеет Код и Наименование. Код элемента справочника может быть как числовым, так и текстовым. Система 1С:Предприятие предоставляет широкие возможности по работе с кодами элементов справочника: автоматическое присвоение кодов, автоматический контроль уникальности кода и другие.
Помимо кода и наименования, в справочниках системы 1С:Предприятие может храниться любая дополнительная информация об элементе справочника. Для хранения такой информации в справочнике может быть создан список реквизитов. Используя механизм реквизитов справочника, легко организовать, например, картотеку сотрудников. Например, справочник Сотрудники почти наверняка будет иметь атрибуты Должность, Оклад и другие. Фирма 1С предвосхитила программистов и ввела во все справочники два уже заданных атрибута: Код и Наименование. Действительно, практически любой объект из реальной жизни содержит эти атрибуты. Например, для сотрудников кодом выступает табельный номер, а наименованием - фамилия, имя, отчество (ФИО).
Для каждого атрибута справочника нужно указать его тип данных, например, "число", "строка", "дата" (в версии 8.0 есть еще тип Булево - Истина или Ложь). Это базовые типы, но можно указать и сложные типы данных. Например атрибут Должность имеет тип данных Должности. В этом случае, значения этого атрибута будут выбираться из справочника Должности. Так реализуется простейшая связь между справочниками, когда значения атрибутов одного справочника выбираются из другого справочника.
Список элементов справочника в системе 1С:Предприятие может быть многоуровневым. В этом случае все строки справочника будут разделяться на 2 вида: «просто» элементы справочника и группы справочника. Группы позволяют переходить на нижележащие уровни многоуровневого справочника. Использование многоуровневых справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в многоуровневом справочнике можно переносить из одной группы в другую.
Между справочниками может быть установлено отношение подчиненности. В терминах реляционных баз данных, между таблицами устанавливается связь "один-ко-многим". В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.Иногда можно сказать, что элементы одного справочника принадлежат элементам другого. Например, в системе может быть справочник НалоговыеЛьготы. Тогда его можно сделать подчиненным справочнику Сотрудники. Это означает, что "Сотрудник владеет налоговыми льготами".
В версии 8.0 появилась возможность для элемента справочника иметь несколько табличных частей. Эту возможность рекомендуется использовать для отражения информации, связанной с данным элементом, но не имеющей собственной объектной сущности (для которых рекомендуется завести подчиненный справочник). Например, для спр. Товары может быть заведена табличная часть ЕдиницыИзмерения, для справочника Сотрудники могут быть заведены табличные части Образование и СоставСемьи. Работа с табличными частями похожа на работу с подчиненными справочниками за исключением того, что табличные части не могут быть типами, а значит уже будет нельзя создать реквизит типа Образование.
Документы.
Документы предназначены для хранения основной информации о всех событиях, происходящих на предприятии, и, разумеется, имеющих смысл с точки зрения экономики. При помощи документов отражаются и платежи с расчетного счета, и операции но кассе, и кадровые перемещения, и движения по складу, и прочие подобные события.
В процессе конфигурирования настраивается произвольное количество видов документов. Типичными примерами видов документов являются такие документы, как "Платежное поручение", "Счет", "Приходная накладная", "Расходная накладная", "Накладная на внутреннее перемещение", "Приходный кассовый ордер" и так далее. Каждый вид документа предназначен для отражения своего типа событий. Это определяет его структуру и свойства, которые описываются в конфигурации.
Документы играют центральную роль для основных механизмов, реализуемых компонентами системы. В системе 1С:Предприятие документ является основной учетной единицей. Каждый документ содержит информацию о конкретной хозяйственной операции и характеризуется своим номером, датой и временем. Дата и время - наиболее важные характеристики документов, так как позволяют устанавливать строгую временную последовательность совершения операций. Все документы (вне зависимости от вида) образуют единую последовательность. Фактически, эта последовательность отражает последовательность событий - так, как они происходили реально. Внутри даты последовательность документов определяется их временем, при этом время документа является не столько средством отражения реального (астрономического) времени ввода документа, сколько средством, позволяющим четко упорядочить документы внутри одной даты.
Данные, вводимые в документ (реквизиты документа), обычно содержат информацию о происшедшем событии: например, в накладной - информацию о том, с какого склада, каких товаров и сколько отгружено; в приказе о приеме на работу - информацию о сотруднике, оклад, другие сведения. Кроме собственно записи, для документа весьма важным свойством является его проведение. При проведении документ может отразить зафиксированное им событие в механизмах, реализуемых компонентами. Например, если установлена компонента "Бухгалтерский учет", документ может записать бухгалтерскую операцию, отразив в виде проводок в бухгалтерском учете информацию, содержащуюся в документе.
С точки зрения программиста, у документа есть экранная форма -- Диалог. Именно его видит пользователь на экране. Также у документа обычно есть одна или несколько бумажных форм -- Таблиц. С помощью Таблиц документ печатается на бумаге. Поведение документа определяется с помощью встроенного языка 1С. На языке записывается, что документ делает в системе, как он формирует бумажный бланк и как он себя ведет на экране.
Документ обычно имеет печатную форму. Печатная форма полностью формируется средствами встроенного языка 1С, что придает большую гибкость программе. Это одна из причин ошеломляющего успеха системы 1С:Предприятие. Печатная форма документа - это фактически отчет, формируемый обычно из формы открытого документа и содержащий сведения из этого документа. Чтобы научиться формировать печатные формы, вам нужно изучить главу Отчеты (объект "Таблица").
У документа может быть несколько шаблонов печатных форм. Средствами встроенного языка (метод ИсходнаяТаблица) задается тот шаблон печатной формы, который будет использоваться.
Шаблоны печатных форм (таблицы) могут быть общие. Это дает возможность использовать один шаблон для печати нескольких видов документов. Т.е. общая таблица является глобальной для конфигурации и может быть использована в любом модуле. Примером из типовой конфигурации может являться шаблон печатной формы "Отчет о движении документа", который используется разными модулями конфигурации.
Некоторые документы могут проводиться. С точки зрения пользователя, "провести" документ означает "пустить его в дело". С точки зрения программиста, при проведении документа сработает модуль проведения документа (процедура ОбработкаПроведения). Именно там определяются все действия, выполняемые при проведении документа. Например, при проведении документа "Приказ о приеме на работу" сработает модуль этого документа, который в справочник Сотрудники добавит нового сотрудника.
Каждый вид документа может иметь неограниченное количество реквизитов в шапке и в многострочной части. Для документа создается форма ввода экранный диалог. При настройке для документа задаются также общие характеристики: длина номера документа, условия поддержки уникальности номеров и другие. Все документы характеризуются номером, датой и временем.
Термин "шапка" достаточно условный и может относиться не только к реквизитам документа, которые физически находятся в верхней части бумажного бланка документа. Поэтому, в наиболее общем случае, реквизитом заголовочной части будет считаться любой реквизит, который встречается в документе только один раз. Табличная часть документа представляет собой список однотипных строк с информацией. Например, в уже упоминавшемся счете на оплату табличная часть это перечень товаров или услуг, подлежащих оплате. Помимо наименований, табличная часть документа может содержать также разнообразную дополнительную информацию стоимость товаров или услуг, количество, объем, вес и многое другое. В большинстве случаев табличная часть используется для формирования общей суммы документа. Структура документа в системе 1С:Предприятие 7.7 может содержать только одну табличную часть.
При разработке документов в Конфигураторе может быть создано необходимое количество общих реквизитов документов. Такие реквизиты, будучи созданными один раз, становятся доступными для всех документов: общие реквизиты можно размещать в формах документов, к значениям общих реквизитов можно обращаться из встроенного языка системы 1С:Предприятие. Работая с системой 1С:Предприятие, пользователь может выполнять отбор документов в журналах по значениям общих реквизитов документов.
Журналы документов.
Все документы хранятся в журналах. Журнал документов -- это электронный аналог обычной бумажной папки. На экране журнал выглядит как таблица, строки которой являются документами. Например, вы можете создать журнал Приказы кадровые, который будет включать документы "Приказ о приеме на работу", "Приказ об увольнении", "Кадровое перемещение". С этим журналом будет работать пользователь-кадровик. Или можно создать отдельный журнал для банковских документов, куда войдут документы "Платежное поручение" и др.
Журналы документов предназначены для просмотра документов. Каждый вид документа может быть отнесен к определенному журналу. Сам журнал документов не добавляет новых данных в систему, а служит только как средство просмотра списка документов одного или нескольких видов. Для документов разных видов можно указывать один журнал, что позволяет произвольным образом группировать документы в журналах. Назначенный документам журнал можно менять. Например, может быть создан журнал «Складские документы», который будет содержать все приходные накладные и накладные на внутреннее перемещение. Назначенный документам журнал можно менять.
Для журнала могут быть определены графы журнала, для удобства просмотра реквизитов различных видов документов, отнесенных к данному журналу. Для журнала может быть описано несколько форм его визуального представления.
Для работы с документами могут использоваться специально созданные общие журналы. От «обычных» журналов документов их отличает возможность отбора документов по значению, указанному пользователем.
Журналы в системе 1С могут быть трех видов: Обычный, Общий и Дополнительный. Обычный журнал предназначен для хранения документов определенных видов. Документ также может быть включен в дополнительный журнал, при этом документ будет зарегистрирован сразу в двух журналах. Дополнительных журналов может быть несколько. Общий журнал показывает документы всех видов.
У журнала документов есть экранная форма, где можно настраивать отображаемые колонки. Можно создавать дополнительные колонки, которые будут отображать информацию из документов. Например, в журнале ПриказыКадровые удобно сразу видеть, к какому сотруднику относится каждый документ, для этого создается Графа журнала Сотрудник
Подсистема «Оперативный учет» среды 1С: Предприятие. Понятие регистра. Виды регистров.
Регистры - это таблицы для накопления оперативных данных и получения сводной информации.
Данные в регистры добавляются только при проведении документов. Сведения из регистров используются для формирования отчетов. Классическая схема использования регистров в 1С:Предприятие выглядит следующим образом:
Документы => Регистры => Отчеты
Основная проблема при проектировании регистров - это определение его структуры. Структура регистра должна быть такова, чтобы извлекать из него нужную информацию без утомительной обработки.
Измерения регистра - это то, в каких разрезах требуется хранение информации.
Ресурсы регистра - это количественные или суммовые данные, которые хранятся в регистре.
Предположим, что регистр «Остатки товаров» должен содержать сведения о количестве и стоимости каждого товара на каждом складе. В идеологии системы 1С:Предприятие регистр такого вида представляет собой прямоугольную систему координат на одной оси которой находятся склады, на другой товары, а на пересечении конкретного склада и конкретного товара находятся цифры количества товара и стоимости товара.

Регистр: Остатки товаров
Измерения: Товар, Склад
Ресурсы: Кол-во, Стоимость
С помощью методов встроенного языка мы можем легко получить ответы на вопросы:
остаток конкретного товара на конкретном складе;
остаток конкретного товара на всех складах;
стоимость всех товаров на конкретном складе.

В табличном виде регистр ОстаткиТоваров представляется следующим образом:
Товар Склад Кол-во Стоимость
приход Товар4 Склад1 15 200
расход Товар4 Склад1 10 100
приход Товар4 Склад1 5 50
... ... ... ... ...
Одна строка из этой таблицы называется "движение". Движения в регистрах создаются только при проведении документов. В регистре, кроме измерений и ресурсов, можно задать реквизиты. Реквизиты - это дополнительные сведения, сопровождающие движение. Методами встроенного языка можно отбирать движения с заданным значением реквизита.
В системе 1С:Предприятие возможно использование регистров двух типов: регистры остатков и регистры оборотов. Разница между ними понятна из их названия и заключается в характере хранимой информации: в регистрах остатков всегда хранится информация о конечном состоянии средств, а в регистрах оборотов, образно выражаясь, как это состояние было достигнуто.
Если из регистра нужно быстро получать остаток чего-либо на текущий момент, тогда нужно сделать регистр остатков. Если из регистра нужно быстро получать приход или расход чего-либо за период, тогда нужно сделать оборотный регистр.
Регистры остатков
Рассмотрим в качестве примера отслеживание взаиморасчетов с покупателями товаров, которые производит или продает предприятие.
Для того чтобы оперативно получать информацию о взаимной задолженности предприятия и покупателя, потребуется регистр «Взаиморасчеты», в котором для каждого покупателя будет храниться сумма задолженности. При совершении хозяйственной операции состояние регистра будет соответствующим образом изменяться, каждый раз отражая текущее состояние взаиморасчетов. Регистр «Взаиморасчеты» это регистр остатков.
Регистры оборотов
Однако, легко получить информацию об объеме закупок, совершенных данным покупателем за какой-либо период времени, из регистра «Взаиморасчеты» нельзя. Можно проанализировать все движения, имеющие отношение к данному покупателю, и вычислить общую сумму закупок. Но, когда необходимо получать эти сведения оперативно (например, по условиям договора при достижении определенного объема закупок покупателю должна предоставляться скидка), такой способ, конечно же, не подходит.
В этом случае решением проблемы может быть использование регистра оборотов. В таком регистре назовем его «Объем закупок» в разрезе покупателей будет храниться информация об объеме закупок (об обороте покупателя). При создании регистра оборотов можно указывать, с какой периодичностью будет накапливаться информация: день, неделя, месяц и так далее.
Теперь, при совершении хозяйственных операций, необходимо будет изменять не только состояние регистра «Взаиморасчеты», но и регистр «Объем закупок». В этот регистр при совершении клиентом каждой покупки будет заноситься информация о сумме покупки. В результате в регистре «Объем закупок» будет постоянно накапливаться информация об общем объеме закупок клиента.

Точка актуальности итогов в среде 1С: Предприятие и ее связь с последовательностями и движениями регистров.
ТА - это момент времени, на который программа 1С хранит итоги по регистрам, и эти итоги можно получить без применения временного расчета.
... или более развернуто ...
ТА - это момент времени (позиция на оси времени), на конец которого программа 1С хранит итоги по ресурсам регистров, и эти итоги можно получить без применения временного расчета.
На любой момент времени, находящийся до ТА, можно получить итоги по ресурсам регистров, предварительно сделав временный расчет.
На любой момент времени, находящийся после ТА, итоги не рассчитаны, к ним нельзя обратиться.
Точку актуальности можно установить:
на произвольный документ - из журнала через пункт контекстного меню "Установить ТА на документ";
на начало дня через "Управление оперативными итогами". В этом случае ТА может быть не привязана к документу;
на начало/конец даты, документа или позиции документа - средствами языка программирования.
Если ТА "находится" на документе, который выполняет движения по регистрам, то в итогах регистров будут учитываться движения этого документа. Вот почему в определении ТА было сказано "на конец которого". Если ТА не привязана к документу или документ не "двигает" регистры, тогда не важно - "на начало" или "на конец" этого момента времени поддерживаются итоги.
Чтобы все встало на свои места, давайте определимся с понятиями расчета остатков "на начало" и "на конец" применительно к проведению документов оперативного учета. Документ имеет некоторую "протяженность", представленную движениями регистров:

Если выполняется расчет остатков "на начало" документа, то движения, сделанные документом, не учитываются при расчете остатков.

При расчете остатков "на конец" документа, движения этого документа учитываются в остатках. Если документ не выполняет движения по регистрам, остатки "на начало" и "на конец" совпадают.

Запросы к данным в среде 1С: Предприятие.
Запрос - это обращение к системе 1С с просьбой выбрать определенные данные из базы данных. Например, с помощью запроса можно быстро организовать выбор всех сотрудников с определенной должностью. Для организации запроса необходимо выполнить следующие действия.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "<текст запроса на особом языке запросов>"
Запрос.Выполнить(ТекстЗапроса);
С помощью переменных запроса происходит обращение к требуемым данным. Переменные запроса чаще всего ссылаются на справочники и документы. Кроме того можно ссылаться на журналы расчетов, регистры, бухгалтерские счета.
|ФИО = Справочник.Сотрудники.Наименование;
|Долж = Справочник.Сотрудники.Должность;
|ДатаПриема = Справочник.Сотрудники.ДатаПриема;
|ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;
|";
Практически в любом запросе есть ключевое слово Группировка. Оно означает, что нужно выбрать из таблицы только те записи, у которых значение определенного поля различается. Этот запрос выберет из справочника Сотрудники список используемых должностей и отсортирует этот список по алфавиту.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Долж);
КонецЦикла;

Подсистема «Расчет» среды 1С: Предприятие. Понятие вида расчета. Журналы расчетов.
Компонента Расчет в системе 1С:Предприятие предназначена для реализации сложных периодических расчетов. Обычно она используется для расчета зарплаты.
Журналы расчетов
Журнал расчетов предназначен для хранения данных сложных периодических расчетов, поддерживаемых компонентой «Расчет», и их предыстории. Основным свойством журнала расчетов является его принадлежность тому или иному справочнику системы. Такой справочник называется справочником объектов расчета. Фактически, справочник определяет вид объектов, по которым ведется расчет. Например, это может быть: журнал расчетов зарплаты, причем списком объектов расчета будет выступать справочник сотрудников; журнал расчетов дивидендов, тогда списком объектов расчета будет выступать справочник акционеров; журнал расчетов амортизации списком объектов расчета будет выступать справочник основных средств. В процессе конфигурирования настраивается неограниченное число журналов расчета, каждый из которых будет решать ту или иную задачу предметной области.
Непременными атрибутами каждой записи журнала расчетов являются: объект, для которого данный расчет проведен (обычно сотрудник); вид расчета, по которому данный расчет проведен; дата начала и дата окончания действия данного расчета и результат расчета.
Для одного справочника могут быть созданы несколько журналов расчетов, каждый из которых будет содержать данные определенной предметной области. Например, в том случае, если предприятие акционерное общество закрытого типа, справочник сотрудников может выступать списком объектов расчета для журнала расчетов заработной платы и для журнала расчетов дивидендов акционеров. Виды расчета
Для описания алгоритмов, по которым выполняются те или иные вычисления, служит понятие виды расчетов. На этапе конфигурирования можно описать неограниченное количество видов расчетов. В отличие от справочников, журналов расчета и документов, за понятием «вид расчета» не лежит реальных данных это не более чем алгоритм вычисления, оперирующий данными журналов расчета, документов и справочников.
Алгоритм вида расчета описывается с помощью встроенного языка. Типичными примерами видов расчетов являются «начисление по окладу», «подоходный налог».
Приоритет
Часто очень важным бывает очередность, в которой выполняются те или иные расчеты. Например, в случае расчета заработной платы, как минимум, важно сначала рассчитать начисления, а затем удержания.
Для организации последовательности выполнения расчетов служит понятие их приоритета. Этот параметр может принимать значение от 0 до 999 и действует следующим образом: чем меньше приоритет расчета, тем раньше он выполняется. Это отражается в последовательности расположения записей журнала расчетов записи с видами расчетов меньшего приоритета располагаются перед записями с видами расчетов большего приоритета.
Вытесняющие расчеты
В некоторых случаях требуется автоматизировать предметные области, в которых расчет каких-либо величин может вестись взаимно исключающими способами. Возвращаясь вновь к задаче расчета заработной платы, рассмотрим пример расчета следующих начислений: оплата рабочих дней по окладу, оплата дней болезни по больничному листу и оплата дней отпуска.
Очевидно, что в этом случае выполняется условие взаимоисключения перечисленных видов расчета нельзя, например, одновременно и болеть и работать, т. е. получать и оклад, и деньги по больничному листу. Такие расчеты взаимно исключают друг друга во времени и система должна гарантировать, что ввод одного из них приведет к исключению другого.

Подсистема «Управление распределенной информационной базой» среды 1С: Предприятие.
Когда состав предприятия входят территориально удаленные подразделения, (например, центральный офис, магазин, торговая база, склад, представительства и т.д.). В силу географического положения и размеров нашей страны предприятия "обречены" на использование распределенных систем, которые бы обеспечивали ведение единой системы автоматизации бизнеса. Для решения данной задачи в системе "1С:Предприятие" есть компонента "1С:Управление Распределенными Информационными Базами", в которой можно настроить:
настройку состава синхронизируемых данных;
полную или выборочную синхронизацию данных;
ведение неограниченного количества автономно работающих информационных баз;
передачу изменений в произвольном порядке и различными способами.
Принцип работы распределенной информационной базы состоит в следующем: РИБ состоит из одной центральной и неограниченного числа периферийных информационных баз. Центральная и периферийные информационные базы существуют в определенной мере независимо. В каждой из них осуществляется независимый ввод новых данных и изменения существующих.
Для синхронизации данных между периферийными и центральной информационными базами периодически производится перенос измененных данных. Данный процесс осуществляется "пообъектно", то есть единицей переноса информации является "ведущий" объект: документ, элемент справочника, константа. Вместе с документом также переносятся все действия, которые он выполняет в процессе проведения: движения регистров, акты расчета, изменения в справочниках бухгалтерские операции.
Транспортировка файлов от одной информационной базы к другой может осуществляться любыми доступными способами (на дискете или другом носителе, посредством электронной почты и т. п.).
Для того, чтобы обеспечить взаимодействие с распределенными информационными базами, пользователю требуется иметь по одному комплекту системы "1С:Предприятие 7.7" на каждый из узлов распределенной информационной базы и один комплект "Управления распределенными данными", который доустанавливается к системе, работающей с центральной информационной базой. При этом на каждом из узлов может работать как сетевая, так и однопользовательская версии системы, в зависимости от потребностей данного узла.
В каждой из информационных баз 1С Предприятие независимо осуществляется ввод новых данных и модификация существующих. Конфигурация системы может модифицироваться исключительно в центральной информационной базе. Для синхронизации данных между центральной и периферийными информационными базами должен периодически производиться перенос измененных данных. Транспортировка файлов переноса может осуществляться любыми доступными способами (на дискете, посредством электронной почты и т. п.).


Администрирование в среде 1С: Предприятие. Пользовательские интерфейсы и права пользователя.
Назначение интерфейсных механизмов платформы 1С:Предприятие заключается в том, чтобы обеспечить взаимодействие пользователя с прикладным решением.
Оконная система
В 1С:Предприятии реализована собственная оконная система, учитывающая особенности автоматизации экономической и управленческой деятельности предприятий и ориентированная на обеспечение высокой эргономичности и эффективности работы с бизнес-приложениями.
В числе возможностей оконной системы - поддержка прикрепленных, плавающих и прячущихся окон, выборочного режима максимизации окон (не предусмотренного в классической Windows-модели), соединяемых MDI-окон и др. Важной особенностью является поддержка модальности, допускающей открытие немодальных форм.
Формы
Формы в 1С:Предприятии служат для отображения и редактирования информации, содержащейся в базе данных. Формы могут генерироваться системой автоматически или создаваться разработчиком. Для выполнения стандартных действий с данными могут быть назначены формы для всех объектов прикладного решения.
Элементы управления
Для отображения и редактирования данных в форме используются разнообразные элементы управления, размещенные в форме. Система содержит специализированный набор элементов управления, ориентированный на выполнение бизнес-задач, обладающий характерными особенностями:
поля ввода с функциональными кнопками (выбор, очистка, открытие значений);
редактирование в одном элементе любых типов данных;
эффективные и удобные динамические списки для просмотра информации из базы данных, с поддержкой различных вариантов фильтрации и т.д.
современный эргономичный дизайн элементов управления.
Командный интерфейс
Командный интерфейс форм, используемых в прикладном решении, может формироваться автоматически на основе того, какие данные отображаются в форме и ее элементах управления.
Наполнение командных панелей реализовано таким образом, чтобы пользователь мог легко найти любые действия, доступные в конкретном режиме без ознакомления с документацией.
Табличный документ
Табличный документ является мощным средством презентации любой информации и вывода ее на печать. Он обеспечивает не только эффективную подготовку печатных документов, но и просмотр их на экране в удобном для пользователя виде. Основные возможности табличного документа:
разнообразные возможности оформления отчета, включая тип и размер шрифта, цвет текста и фона, тип и цвет рамки, рисунки и многое другое;
в табличном документе могут быть группировки (как вертикальные, так и горизонтальные), с помощью которых можно отражать промежуточные итоги, например, объем продаж по каждому отделу. Пользователь может самостоятельно показывать и скрывать группы с помощью специальных маркеров. Есть возможность автоматически сдвигать текст в ячейке в соответствии с уровнем группировки;
поддерживается механизм расшифровок, когда при щелчке на строке или ячейке отчета формируется более детальный отчет или открывается объект базы данных;
у ячеек табличного документа могут быть примечания, содержащие дополнительную информацию. Ячейка с примечанием имеет маленький треугольник в правом верхнем углу. При наведении курсора мыши на ячейку примечание показывается во всплывающем окне;
в табличном документе может быть расположена сводная таблица, которая позволяет отобразить многомерные данные в виде плоской таблицы с вложенными заголовками;
в табличном документе могут быть расположены диаграммы различного вида для наглядного представления экономической информации в графическом виде;
табличный документ может быть легко сохранен в файл MXL, а также в другие форматы, например, лист Excel, MXL7 (для совместимости с версией 7.7) и др.
Система прав доступа
Система прав доступа позволяет описывать наборы прав, соответствующие должностям пользователей или виду деятельности. Структура прав определяется конкретным прикладным решением.
Кроме этого, для объектов, хранящихся в базе данных (справочники, документы, регистры и т.д.) могут быть определены права доступа к отдельным полям и записям. Например, пользователь может оперировать документами (накладными, счетами и т.д.) определенных контрагентов и не иметь доступа к аналогичным документам других контрагентов.
Роли
Для реализации ограничения прав доступа в прикладных решениях предназначены специальные объекты - Роли. Роль в конфигурации может соответствовать должностям или видам деятельности различных групп пользователей, для работы которых предназначена данная конфигурация:

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


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

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


Интерактивные и основные права
Все права, поддерживаемые системой 1С:Предприятие, можно разделить на две большие группы: основные и интерактивные. Основные права описывают действия, выполняемые над элементами данных системы или над всей системой в целом, и проверяются всегда, независимо от способа обращения к данным. Интерактивные права описывают действия, которые могут быть выполнены пользователем интерактивно. Соответственно проверяются они только при выполнении интерактивных операций стандартными способами, причем в клиент-серверном варианте все проверки прав (кроме интерактивных) выполняются на сервере.
Основные и интерактивные права взаимосвязаны. Например, существует основное право Удаление, которому соответствуют два интерактивных права: Интерактивное удаление и Интерактивное удаление помеченных. Если пользователю запрещено Удаление, то и все интерактивные "удаления" также будут запрещены для него. В то же время, если пользователю разрешено Интерактивное удаление помеченных, это значит, что Удаление ему также разрешается.
Кроме того, основные права могут зависеть друг от друга. В результате образуются довольно сложные цепочки взаимосвязей, которые отслеживаются системой автоматически: как только разработчик снимает разрешение на какое-либо право, система сама снимает разрешения на все права, которые зависят от этого права. И наоборот, при установке какого-либо права разработчиком, система сама устанавливает все права, от которых это право зависит.

Информационные основы обработки данных
Базы данных и системы управления базами данных. Роль и место банков данных в информационных системах.
Система управления базами данных (СУБД) Database management system (DBMS)
Система управления базами данных - комплекс программных и лингвистических средств общего или специального назначения, реализующий поддержку создания баз данных, централизованного управления и организации доступа к ним различных пользователей в условиях принятой технологии обработки данных.
СУБД характеризуется используемой моделью, средствами администрирования и разработки прикладных процессов.
СУБД обеспечивает: - описание и сжатие данных; - манипулирование данными; - физическое размещение и сортировку записей; - защиту от сбоев, поддержку целостности данных и их восстановление; - работу с транзакциями и файлами; - безопасность данных.
СУБД определяет модель представления данных.
База данных (БД) структурированный организованный набор данных, описывающих характеристики какой-либо физической или виртуальной системы.
«Базой данных» часто упрощённо или ошибочно называют Системы Управления Базами Данных ([ Cкачайте файл, чтобы посмотреть ссылку ]). Нужно различать набор данных (собственно БД) и [ Cкачайте файл, чтобы посмотреть ссылку ], предназначенное для организации и ведения баз данных ([ Cкачайте файл, чтобы посмотреть ссылку ]).
Организация структуры БД формируется исходя из следующих соображений:
Адекватность описываемому объекту/системе на уровне концептуальной и логической модели.
Удобство использования для ведения учёта и анализа данных - на уровне так называемой физической модели.
Виды концептуальных и логических моделей БД сетевая модель, иерархическая модель, реляционная модель (ER-модель), многомерная модель, объектная модель.
Таким образом, по виду модели БД разделяются на:
[ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ]
На уровне физической модели электронная БД представляет собой файл или их набор в формате 13
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
· либо в специализированном формате конкретной СУБД. Также в СУБД в понятие физической модели включают специализированные виртуальные понятия, существующие в её рамках таблица, табличное пространство, сегмент, куб, [ Cкачайте файл, чтобы посмотреть ссылку ] и т.д.
В настоящее время наибольшее распространение получили реляционные базы данных. Картотеками пользовались до появления электронных баз данных. Сетевые и иерархические базы данных считаются устаревшими, объектно-ориентированные пока никак не стандартизированы и не получили широкого распространения. Некоторое возрождение получили иерархические базы данных в связи с появлением и распространением формата XML.
БАНК ДАННЫХ. ОСНОВНЫЕ ПОНЯТИЯ.
Банк данных (БнД) - это АИС, включающая в свой состав комплекс специальных методов и средств (математических, информационных, программных, языковых, организационных, технических) для поддержания динамической информационной модели предметной области с целью обеспечения обработки информационных запросов пользователя.
Услугами БнД пользуется обычно большое число пользователей. Поэтому в БнД предусматривается специальное средство приведения всех запросов к единой терминологии - словарь данных. Кроме того, используются специальные методы эквивалентных грамматических преобразований запросов для построения оптимальных процедур их обработки, специальные методы доступа к одним и тем же данным различных пользователей при совпадении во времени поступивших запросов - механизм транзакций.
Обычно со стороны внешних пользователей к БнД формулируются следующие требования. БнД должен:
Удовлетворять актуальным информационным потребностям внешних пользователей, обеспечивать возможность хранения и модификации больших объемов многоаспектной информации.
Обеспечивать заданный уровень достоверности хранимой информации.
Обеспечивать доступ к данным только пользователям с соответствующими полномочиями.
Обеспечивать возможность поиска информации по произвольной группе признаков.
Удовлетворять заданным требованиям по производительности при обработке запросов.
Иметь возможность реорганизации и расширения при изменении границ ПО.
Обеспечивать выдачу информации пользователю в различной форме.
Обеспечивать простоту и удобство обращения внешних пользователей за информацией.
Обеспечивать возможность одновременного обслуживания большого числа внешних пользователей.
Преимущества централизации управления данными:
Сокращение избыточности хранимых данных (минимально необходимых - дублирование данных).
Устранение противоречивости хранимых д. (хранимых в различных файлах).
Многоаспектное использование д. (принцип однократного ввода д для разных пользователей и приложений).
Комплексная оптимизация. (Напр., выбор структуры хранения д., которая обеспечивает наилучшее обслуживание в целом). В максимальной степени удовлетворяются противоречивые требования.
Обеспечение возможности стандартизации (упрощение обмена д., контроля и восстановления д.).
Обеспечение возможности санкционированного доступа к данным. Интеграция данных приводит к тому, что данные, используемые различными пользователями, могут пересекаться различным образом. Следовательно, важно наличие в этих условиях механизма защиты д. от несанкционированного доступа к ним.
БнД через СУБД обеспечивает независимость прикладных программ от данных, чтобы не выполнять трудоемких ручных операций по внесению соответствующих изменений в прикладные программы.
Рассматривая д. как один из ресурсов АС, можно сказать, что БнД централизованно управляет этим ресурсом в интересах всей системы. Наличие централизованного управления данными - главная отличительная черта БнД.
БнД - информационная система, реализующая централизованное управление д. в интересах всех пользователей АС. (Средство интеграции д.).
В банках знаний (БнЗ) задачи интегрируются как по данным, так и по их обработке, возрастает интеллектуализация этих систем, цель которых - максимальное удовлетворение запросов пользователей. (Отличительная особенность - наличие “интелектуального интерфейса” поддерживающего терминологию предметной области).
БнД как автоматизированная система.
БнД в узком смысле включает в состав две основные компоненты:
БД;
СУБД - для реализации централизованного управления д., хранимыми в базе, доступа к ним, поддержание их в состоянии, соответствующем состоянию ПО.
В широком смыле БнД - это АС.
[ Cкачайте файл, чтобы посмотреть картинку ]
Управляет БнД администратор банка данных (АБД).
Словарь данных (СД) представляет собой специальную систему в составе БнД, предназначенную для хранения единообразной информации обо всех ресурсах данных конкретного банка.
В словаре содержатся сведения об объектах, их свойствах и отношениях для данной ПО, сведения о д., хранимых в базе (наименования д., их структуре, связи с другими д.), об их возможных значениях и форматах представления, об источниках их возникновения, о кодах защиты, разграничениях доступа к д. со стороны пользователей.
СД призван способствовать уменьшению избыточности и противоречивости д., хранить централизованное описание д, позволяющее централизованно вводить в систему новые типы данных или изменять описание существующих либо удалять устаревшие типы данных. Кроме того, СД позволяет пользователям системы и АБД пользоваться единообразной терминологией по данной предметной области при решении вопросов, связанных с обслуживанием запросов в БнД.
Преимущество использования СД - в централизованном накоплении и описании суммарного ресурса данных системы как на этапах проектирования БД, так и на этапах ее функционирования.
Если СУБД не имеет в своем составе программных средств введения словаря, то обычно разрабатывается, так называемый, независимый СД.
В системах с интегрированным словарем описания данные хранятся в единственном экземпляре в СД и используются при работе системы.
В системе с независимым словарем существует дублирование описаний д. - в СУБД и в СД, что повышает вероятность избыточности и противоречивости д., хранимых как в библиотеках СУБД, так и в словаре.
В зависимости от сложности ИС группа АБД может состоять как из одного, так из нескольких человек. В состав служебных функций АБД входит функция принятия решений об изменениях в состоянии БД.
Основной функцией АБД является обеспечение структур д. и взаимосвязь между ними, эффективных для обслуживания именно всего коллектива пользователей. Это функция администрирования БД.
БнД отличаются тем, что их внедрение и последущая эксплуатация занимает довольно продолжительное время. Поэтому функции АБД являются долгосрочными и направлены на координацию всех этапов проектирования, реализации и ведения БД.
На стадии проектирования АБД выступает основным идеологом, руководит всеми работами по разработке или приобретению ПО, обучение обслуживающего персонала и т.п.
На стадии эксплуатации отвечает за нормальную эксплуатацию и функционирвание БнД, управляет режимом работы, отвечает за сохранность данных.
Функции АБД:
решать вопросы организации д. об объектах ПО и установлении связей между этими данными с целью объединения информации о различных объектах; согласовывать представления пользователей;
координировать все действия по проектированию, реализации и ведению БД; учитывать текущие и перспективные требования пользователей; следить, чтобы БД удовлетворял актуальным информационным потребностям;
вопросы расширения БД в связи с изменением границ ПО;
защита д. от некомпетентного использования, от сбоев ТС, определения степени секретности части информации и разграничения доступа к ним (д.);
ведение СД, контроль избыточности и противоречивости, достоверность;
методы хранения д., пути доступа к ним, связей между д., форматов д., определять степень влияния изменений в д. на всю БД;
координация вопросов технического обеспечения системы;
координация работы системных программистов, разрабатывающих дополнительные ПО для улучшения эксплуатационых характеристик системы;
координация работы прикладных программистов, разрабатывающих новые прикладные программы в рамках состава ПО системы.

Уровни представления данных: концептуальный, логический, физический.
Описание систем с помощью информационных моделей
Важным методом исследования систем является метод моделирования. Его суть состоит в том, что исследуемый объект заменяется его моделью, то есть некоторым другим объектом, сохраняющим основные свойства реального объекта, но более удобным для исследования.
Различаю физические и абстрактные модели. Элементами физических моделей являются некоторые физические объекты, в которых протекают физические процессы, аналогичные процессам в изучаемой системе. Элементами абстрактных моделей являются слова и предложения некоторого языка. В автоматизированных информационных технологиях наибольшее распространение получили абстрактные информационные модели.
Информационная модель – это отражение предметной области в виде информационных структур. Отражение предметной области в информационных технологиях представляется информационными моделями нескольких уровней (рис. 4).
Концептуальная модель обеспечивает интегрированное представление о предметной области и имеет слабо формализованный характер (например, техническое задание, план производства и т.п.). Логическая модель формируется из концептуальной путем выделения конкретной части, её детализации и формализации. Математической моделью называется модель, формализующая выделенные в логической модели объекты и их взаимосвязи на языке математики. Математическая модель преобразуется в алгоритмическую модель, определяющую последовательность действий, необходимую для достижения заданной цели управления. На основе алгоритмической модели создается программа, являющаяся представлением алгоритмической модели на языке, понятном ЭВМ.
13EMBED Word.Picture.81415
Рис. 4. Уровни информационных моделей
3. Базовая структура информационной технологии
3.1. Основные информационные процессы и уровни их представления
Любая информационная технология слагается из взаимосвязанных информационных процессов, каждый из которых содержит определенный набор процедур, реализуемых с помощью информационных операций. Информационная технология выступает как система, функционирование каждого элемента которой подчинено общей цели – получению информационного продукта из исходного информационного ресурса.
Основными информационными процессами, образующими информационную технологию, являются процессы
обработки данных,
накопления данных;
обмена данными;
представления данных.
Информационная технология и отдельные информационные процессы имеют три уровня представления:
концептуальный;
логический;
физический.
Концептуальный уровень определяет содержательный аспект информационной технологии. На этом уровне дается содержательное описание отдельных этапов производства информации.
Логический уровень представляет собой комплекс взаимосвязанных моделей, формализующих информационные процессы.
Физический уровень отражает программно-аппаратную реализацию информационных процессов.
3.2. Концептуальный уровень
Любая информационная технология начинается с формирования информационного ресурса, то есть исходных данных, которые в результате ряда преобразований должны превратиться в информационный продукт. Процесс формирования информационного ресурса состоит из трех этапов:
сбор информации;
подготовка информации;
ввод информации.
Формирование информационного ресурса начинается с процесса сбора информации, которая должна описывать предметную область, то есть объект управления. Собранная информация должна быть оценена с точки зрения её полноты, непротиворечивости и достоверности. Подготовка информации заключается в её представлении в виде некоторых информационных структур (таблиц, списков, графов, массивов и пр.). После подготовки информации выполняется её ввод, то есть преобразование в цифровые коды, фиксируемые на физических носителях.
Процесс формирования информационного ресурса является в основном ручным. Следующие за вводом данных информационные процессы протекают в ЭВМ. Они выполняют преобразования данных по заданным алгоритмам.
Процесс обработки данных заключается в преобразовании структур данных и их значений, а так же представлении их в форме, удобной для восприятия человеком, то есть в отображении данных.
Процесс обмена данными заключается в обмене данными между различными процессами информационной технологии. Он включает в себя процедуры двух типов.
Процедуры передачи данных по каналам связи (кодирование, декодирование, модуляция, демодуляция, усиление, приём, передача).
Процедуры организации вычислительной сети (коммутация, маршрутизация потоков данных).
Процесс обмена позволяет передавать данные от источника к получателю и организовать объединение информации от многих источников.
Процесс накопления данных состоит в организации их хранения и актуализации. Хранение данных связано с созданием такой структуры расположения данных в памяти ЭВМ, которая позволяет быстро и неизбыточно накапливать данные и осуществлять их поиск. Актуализация данных заключается в поддержании хранения данных на уровне, соответствующем потребностям решаемых задач. Она достигается путем их обновления и пополнения, а также уничтожения устаревших данных.
Процесс представления знаний состоит из процедур формирования знаний, их накопления в формализованном виде и генерации новых знаний на основе накопленных в соответствии с поставленной задачей. Новое знание и является конечным продуктом, получаемым с помощью информационных технологий.
3.3. Логический уровень
На логическом уровне информационная технология представляется совокупностью формализованных моделей преобразования информации. Процессу формирования информационного ресурса на концептуальном уровне соответствует разработка модели предметной области на логическом уровне. Предметной областью называется часть объективной реальности, являющаяся объектом исследования. Разработка модели предметной области завершается разработкой формальной модели решаемой задачи.
На логическом уровне представления описываются те же основные информационные процессы, что и на концептуальном уровне:
обработки данных,
накопления данных;
обмена данными;
представления данных.
Их описание выполняется в форме формализованных моделей.
Модель обработки данных состоит из формализованного описания следующих процедур.
1. Процедур организации вычислительного процесса .
Под организацией вычислительного процесса понимается управление ресурсами компьютера (память, процессор, внешние устройства). Эти процедуры формализуются в виде алгоритмов и программ операционной системы компьютера.
2. Процедур преобразования данных.
Эти процедуры описываются в виде алгоритмов и программ обработки данных и их структур, таких как сортировка, поиск, создание и преобразование статистических и динамических структур данных (массивы, списки, деревья и пр.).
3. Процедур отображения данных.
Процедуры отображения данных представляются в виде алгоритмов и программ преобразования данных из внутреннего представления в ЭВМ в воспринимаемую человеком форму. Данные могут отображаться в виде текстов, графических изображений и звука.
Модель накопления данных представляет собой формализованное описание процедур создания, хранения и поддержания в актуальном состоянии информационных ресурсов, необходимых для решения конкретных задач управления. Эта модель реализуется на компьютере в виде базы данных. Описание процедур создания структур данных, хранения, актуализации, извлечения и удаления данных осуществляется в виде программ системы управления базами данных.
При создании базы данных в настоящее время используются реляционный, иерархический, сетевой и объектно-ориентированный подходы.
Модель обмена данными включает в себя формализованное описание процедур, с помощью которых осуществляется функционирование вычислительной сети. Работа сети основывается на формализованных соглашениях между её пользователями, которые называются протоколами сетевого обмена.
В настоящее время в качестве международного стандарта принята базовая эталонная модель взаимодействия открытых систем OSI – Open System Interconnection.
Модель представления знаний. Под моделью представления знаний понимается соглашение о том, как описываются понятия и отношения реальной предметной области. Модель представления знаний выбирается в зависимости от предметной области и вида решаемой задачи. В настоящее время в качестве моделей представления знаний используются логические схемы, продукционные модели, семантические сети и фреймы.
Логические схемы представляют знания в виде формул, которые состоят из констант, переменных, функций, предикатов, логических связок и кванторов. В основе логических схем лежит понятие формальной системы или формальной аксиоматической теории.
В продукционных моделях знания представляются в виде выражений вида
ЕСЛИ условие ТО действие,
которые называются продукционными правилами. Они фиксируют информацию о последовательности целенаправленных действий.
В семантических сетях знания представляются в виде графа, в вершинах которого находятся понятия данной предметной области, а ребрам графа соответствуют отношения между понятиями.
Фрейм является разновидностью семантической сети. Это некоторая структура данных для представления стереотипной ситуации. С фреймом связываются три типа информации:
как использовать фрейм;
чего следует ожидать в данной ситуации;
что следует сделать, если ожидания не оправдались.
3.4. Физический уровень
На физическом уровне автоматизированная информационная технология рассматривается как большая система, состоящая из подсистем:
обработки данных,
накопления данных;
обмена данными;
представления данных.
Подсистема обработки данных включает в себя вычислительные машины различных классов. В настоящее время при создании автоматизированных информационных технологий используются три класса ЭВМ:
большие универсальные ЭВМ, способные накапливать и обрабатывать огромные объёмы информации (суперЭВМ);
абонентские вычислительные машины (серверы);
персональные компьютеры и управляющие ЭВМ.
Обработка данных производится с помощью программ решения задач для конкретной предметной области.
Подсистема накопления данных реализуется с помощью внешних запоминающих устройств компьютеров – жестких дисков, видеодисков и магнитных лент и управляющих ими программ.
В подсистему обмена данными входят комплексы программ и устройств, позволяющие реализовать вычислительную сеть и осуществить по ней передачу и приём сообщений с необходимой скоростью и качеством. Аппаратными компонентами этой подсистемы служат модемы, усилители, коммутаторы, кабели и пр. Программными компонентами являются программы, реализующие сетевые протоколы.
Подсистема представления знаний на физическом уровне реализуется с помощью комплекса программ, образующих экспертную систему. Их реализация осуществляется на персональных компьютерах.

Понятие модели данных. Иерархическая, сетевая, реляционная модели данных, их типы структур, основные операции и ограничения.
Модели представления данных в электронные базах данных
Внедрение новых информационных технологий не обошлось без трудностей, так как поначалу поиск в электронных картотеках оказался хотя и очень быстрым, но зачастую гораздо менее эффективным, чем поиск в обычной картотеке или традиционное изучение архивных дел. Это во многом было связано с тем, что в то время доступ к обрабатываемым данным осуществлялся прикладными программами напрямую, а сами данные были организованы в виде плоских файлов.
Возрастающие потребности в обработке информационных массивов стали мощным стимулом развития теоретических основ информационных технологий и их практической реализации. Возникавшие проблемы с логической целостностью данных, а также невозможность представить логические связи между ними в указанных выше системах стали причиной возникновения первой модели данных - иерархической.
Сегодня существует четыре модели представления данных:
иерархическая,
сетевая,
реляционная (объектно-реляционная)
объектно-ориентированная.
Между собой они различаются в основном способами представления взаимосвязей между объектами.
Иерархическая модель данных стала применяться в системах управления базами данных в начале 60-х годов. Она представляет собой совокупность элементов, расположенных в порядке их подчинения от общего к частному и образующих перевернутое дерево.
Иерархическая модель данных строится по принципу иерархии типов объектов, то есть один тип объекта является главным, а остальные, находящиеся на низших уровнях иерархии, - подчиненными. Между главным и подчиненными объектами устанавливается взаимосвязь "один ко многим".
Иными словами, для данного главного типа объекта существует несколько подчиненных типов объекта. В то же время для каждого экземпляра главного объекта может быть несколько экземпляров подчиненных типов объектов. Таким образом, взаимосвязи между объектами напоминают взаимосвязи в генеалогическом дереве, за единственным исключением: для каждого порожденного (подчиненного) типа объекта может быть только один исходный (главный) тип объекта. Т.е. иерархическая модель данных допускает только два типа связей между объектами: "один к одному" и "один ко многим".
При моделировании событий, как правило, необходимы связи типа "многие ко многим". Как одно из возможных решений снятия этого ограничения можно предложить дублирование объектов. Однако дублирование объектов создает возможности рассогласования данных. Например, объект "Иванов" может проходить как подчиненная связь объекта "Петров", и одновременно имеется объект "Иванов" с подчиненной связью "Петров". Установить реально существующие связи ближайшего окружения "Иванова" и "Петрова" в этом случае достаточно проблематично.
Иерархические базы данных по существу являются навигационными, т.е. доступ возможен только с помощью заранее определенных связей.
Достоинство иерархической базы данных состоит в том, что ее навигационная природа обеспечивает очень быстрый доступ при следовании вдоль заранее определенных связей. Однако негибкость модели данных и, в частности, невозможность наличия у объекта нескольких родителей, а также отсутствие прямого доступа к данным делают ее непригодной в условиях частого выполнения запросов, не запланированных заранее. Еще одним недостатком иерархической модели данных является то, что информационный поиск из нижних уровней иерархии нельзя направить по вышележащим узлам.
Чтобы устранить ограничения, свойственные иерархической модели данных, в начале 60-х годов, задолго до появления компьютерных сетей, проектировщики баз данных создают сетевую модель данных, описывающую сети связей между данными.
В сетевой модели данных понятия главного и подчиненных объектов несколько расширены. Любой объект может быть и главным, и подчиненным (в сетевой модели главный объект обозначается термином "владелец набора", а подчиненный - термином "член набора"). Один и тот же объект может одновременно выступать и в роли владельца, и в роли члена набора. Это означает, что каждый объект может участвовать в любом числе взаимосвязей.
Сетевая модель базы данных похожа на иерархическую, однако характер отношений основных ее составляющих принципиально иной. В сетевой модели принято свободная связь между элементами разных уровней, т.е. она допускает связи "многие ко многим". В качестве примера СУБД, поддерживающей принципы сетевой модели данных, можно привести СУБД "Cronos Plus".
Понятие «реляционная модель» ввел в 1970 г. Э. Ф. Кодд. В реляционной модели данных объекты и взаимосвязи между ними представляются с помощью таблиц. Взаимосвязи также рассматриваются в качестве объектов. Каждая таблица представляет один объект и состоит из строк и столбцов. В реляционной базе данных каждая таблица должна иметь первичный ключ (ключевой элемент) - поле или комбинацию полей, которые единственным образом идентифицируют каждую строку в таблице. Благодаря своей простоте и естественности представления реляционная модель получила наибольшее распространение среди СУБД для персональных компьютеров.
Название "реляционная" (relational) связано с тем, что каждая запись в такой базе данных содержит информацию, относящуюся (related) только к конкретному объекту. Кроме того, с данными двух типов можно работать как с единым целым, основанным на значениях связанных между собой данных.
Преимуществом реляционной модели перед другими моделями является простая и удобная для пользователя схема данных, представляемая в виде таблиц.
Физическая независимость реляционной модели состоит в том, что модель данных не включает никаких физических описаний. В действительности физическое представление отношений и путей доступа описывается независимо от описания логической схемы отношений.
Недостатком реляционной модели данных является избыточность по полям (из-за создания связей).
В качестве примера можно привести реляционные СУБД Microsoft Access и Borland Paradox.
Объектно-ориентированная модель данных отличается от вышеописанных моделей, в которых информация и процедуры хранились раздельно, данные и связи между ними - в базе данных, а процедуры в прикладной программе. Объектно-ориентированная модель позволяет хранить процедуры обработки сущностей вместе с данными. Такое совместное хранение считается шагом вперед в методах управления данными. Но объектно-ориентированные базы данных являются навигационными, что является шагом назад.
Объектно-ориентированная модель непосредственно поддерживает связи типа "многие ко многим".
Общие принципы создания информационной системы службы безопасности предприятия
Как правило, при создании информационной системы службы безопасности предприятия имеются три основные составляющие решения этой проблемы: наличие вычислительной техники, программного обеспечения и квалифицированных специалистов, способных ее создать и эксплуатировать. Самое главное, с чего необходимо начинать - четкое определение задач, для решения которых, приобретается компьютерная техника и программное обеспечение.
Существует всего два пути создания информационной системы. Первое: поставить техническое задание и, продвигаясь путем проб и ошибок, попытаться создать "самое-самое крутое". Как правило, это дорога в никуда, вымощенная крупными купюрами...
Гораздо экономичнее купить готовое. Программное обеспечение, позволяющее организовать собственный интегрированный банк данных, широко представлено на российском рынке. Это "Cronos Plus", "Бинар", "Саиб", "Лагуна", "Галактика", "Ватсон". Вопрос только в том, насколько приемлемым окажется соотношение цена-качество.
В качестве базового программного продукта для создания информационной системы СБ предприятия мы будем рассматривать программный комплекс, состоящий из клиентской и серверной частей, реализованной на базе системы управления базами данных "Cronos Plus".
Относительно невысокая цена, возможность быстрого освоения системы пользователями-непрограммистами, а также гибкость пакета по отношению как к первоначальной настройке, так и к реорганизации наполненного банка данных, служит причиной его использования многими коммерческими структурами.
Как мы с вами уже отмечали ранее, деятельность любого российского предприятия сопряжена с рисками экономического, криминального, социально-политического, административно-правового и техногенного характера.
Источниками таких рисков могут выступать:
партнеры и контрагенты, экономическое состояние которых может создать угрозу нанесения ущерба предприятию;
криминальные структуры, стремящиеся приобрести акционерское и иное влияние на предприятие;
недобросовестные конкуренты;
лица, вынашивающие противоправные и иные деструктивные намерения в отношении нормально функционирующих негосударственных объектов экономики;
отдельные сотрудники предприятия, пытающиеся удовлетворить личные коммерческие интересы за его счет;
негосударственные организации и отдельные лица, специализирующиеся на проведении промышленного шпионажа;
спецслужбы иностранных государств, ставящие своей целью добывание экономической и научно-технической информации, а также осуществляющие подрывные акции в отношении российских хозяйствующих субъектов и т.д.
Как показывает практика, признаки угроз и кризисных ситуаций проявляются в разное время и со стороны различных объектов, фиксируются с различной степенью полноты и детализации различными источниками, для распознавания связи между ними требуются данные из многих источников. Установление причинно-следственной связи между происходящими событиями требует проведения многофакторного анализа всей поступающей на предприятие информации.
Опыт внедрения информационных систем в службах безопасности российских предприятий показывает, что создание обособленных банков данных по каждой из указанных проблем не решает проблему комплексного управления экономической разведкой и контрразведкой.
Для своевременного распознавания и правильного реагирования на возникающие угрозы необходима единая система накопления, обработки и выдачи информации, используемая как непосредственно для изучения источников риска или объектов интереса предприятия (лиц, организаций, сегментов рынка), так и для задач управления предприятием (кадры, переговоры, документооборот, реклама и др.), которая позволит свести в единое целое все разрозненные сведения поступающие от руководства и производственных звеньев, отдела маркетинга, отдела кадров, службы безопасности, информационного отдела, из средств массовой информации, [ Cкачайте файл, чтобы посмотреть ссылку ] и других источников.

Основные понятия реляционной модели данных: отношение, экземпляр, атрибут. Объектные и связные отношения. Операции над отношениями.
Декартово произведение:
Пусть D1 , D2 , , Dn – произвольные конечные множества и не обязательно различные. Декартовым произведением D этих множеств D = D1 ( D2 ( ( Dn называется множество n-к вида: , где d1 ( D1 , d2 ( D2 , ( , dn ( Dn .
Отношение. Домены. Кортежи и атрибуты
Отношением R, определенном на множествах D1 , D2 , , Dn называется подмножество декартова произведения: D = D1 ( D2 ( ( Dn . При этом множества D1 , D2 , , Dn называются доменами отношения, а элементы декартова произведения – кортежами отношения. Число n определяет степень (арность) отношения, а количество кортежей – его мощность.
В математике отношение – это не более чем множество и оно не имеет какой-либо семантической интерпретации.
В моделировании данных термин «отношение» применяется к определению типа. Отношение рассматривается как тип объекта, который соотносится с множеством знаков-кортежей.
Отношения удобно представлять в виде таблиц, при этом строки таблицы соответствуют кортежам, а столбцы - атрибутам. Каждый атрибут определен на некотором домене. Доменом называется множество атомарных значений. Несколько атрибутов отношения могут быть определены на одном и том же домене.
Атрибуты разных отношений также могут быть определены на одном и том же домене.
Ключ отношения
Атрибут, значения которого идентифицируют кортежи, называется ключом (ключевым атрибутом). В некоторых отношениях кортежи идентифицируются конкатенацией (соединением) значений нескольких атрибутов. Тогда говорят, что отношение имеет составной ключ. Отношение может содержать и несколько ключей. Один из ключей объявляется первичным. Значения первичного ключа не могут обновляться. Все прочие ключи отношения являются всевозможными ключами.
Отметим важную особенность реляционной модели данных. Если в сетевых и иерархических моделях данных для отражения ассоциаций между записями используются групповые отношения, то в реляционной модели данных для отражения ассоциаций между кортежами отношений используется дублирование их ключей.
Атрибуты представляющие собой копии ключей других отношений, называются внешними ключами.
Определение 1. Декартово произведение Пусть D1, D2, ..., Dn - произвольные конечные множества, не обязательно различные. Декартовым произведением этих множеств [ Cкачайте файл, чтобы посмотреть картинку ]называется множество вида [ Cкачайте файл, чтобы посмотреть картинку ]. Пример: [ Cкачайте файл, чтобы посмотреть картинку ]
Определение 2. Схема отношения
Пусть [ Cкачайте файл, чтобы посмотреть картинку ]- имена атрибутов. Схемой r отношения R называется конечное множество имен атрибутов [ Cкачайте файл, чтобы посмотреть картинку ].
Определение 3. Отношение
Отношением со схемой r на конeчных множествах D1, D2,, Dn называется подмножество R декартового произведения [ Cкачайте файл, чтобы посмотреть картинку ].
Элементы отношения (d1, d2, ..., dn), как уже упоминалось выше, называются кортежами. О каждом отношении, являющимся подмножеством декартового произведения [ Cкачайте файл, чтобы посмотреть картинку ], можно сказать, что оно имеет арность n. Кортеж (d1, d2, ..., dn) имеет n компонентов. Для обозначения кортежа применяется и сокращенная форма записи d1, d2, ..., dn. Использование понятия декартового произведения для определения отношения в реляционной модели данных делает модель конструктивной. На математическом языке это означает, что все остальные понятия модели определяются в рамках строго математического построения на базе декартового произведения.
Табличная форма представления отношения была введена в целях популяризации модели среди неподготовленных пользователей баз данных. Трактовка реляционной теории на уровне таблиц скрывает ряд определений, важных для понимания как теории реляционных баз данных, так и языка манипулирования данными, моментов.
Во-первых, атрибуты разных отношений могут быть определены на одном домене, так же как и атрибуты одного отношения. Это очень важное обстоятельство, позволяющее устанавливать связи по значению между отношениями. Во-вторых, множество математически по своему определению не может иметь совпадающих элементов, и, следовательно, кортежи в отношении можно различить лишь по значению их компонент. Это тоже очень важное для модели обстоятельство: никакие два кортежа не могут иметь полностью совпадающих компонент. Таким образом, в реляционной модели полностью исключается дублирование данных о сущностях реального мира! В-третьих, заметим, что схема отношения также есть множество, что позволяет работать с ними с помощью теоретико-множественных операций. Это является важным моментом для построения теории проектирования реляционных схем баз данных.
Существует определенное различие между математическим определением отношения и действительным хранением отношений в памяти компьютера. По определению, отношение не может иметь два идентичных кортежа. Однако СУБД, поддерживающие реляционную модель данных, хранят отношения в файлах операционной системы компьютера. Размещение отношений в файлах операционной системы допускает хранение идентичных кортежей. Если не используется специальная техника (контроль целостности по первичному ключу), то обычно большинство промышленных СУБД допускают хранение двух идентичных кортежей в базе данных.
С математической точки зрения однородность реляционной модели, о которой упоминалось выше, состоит в том, что схема отношения является постоянной, иначе говоря, каждая строка таблицы имеет один и тот же формат. С другой стороны, предполагается, что каждая строка таблицы представляет некую сущность реального мира или связь между ними. Обладают ли сущности реального мира такой однородной структурой, является вопросом, на который должен ответить аналитик или эксперт-пользователь. Решение о пригодности использования реляционной модели для моделирования данных конкретной предметной области решается руководителем ИТ-проекта и аналитиками.

Нормализация отношений в реляционной базе данных. Нормальные формы.
Нормализация отношений
Одна из важнейших проблем проектирования схемы БД заключается в выделении типов записей (отношений), определения состава их атрибутов. Группировка атрибутов должна быть рациональной, т.е. минимизирующей дублирование данных и упрощающей процедуры их обработки и обновления.
Сначала эти вопросы решались интуитивно. Однако интуиция может подвести даже опытного специалиста, поэтому Коддом был разработан в рамках реляционной модели данных аппарат, называемый нормализацией отношений. И хотя идеи нормализации сформулированы в терминологии реляционной модели данных, они в равной степени применимы и для других моделей данных.
Коддом выделено три нормальных формы отношений. Самая совершенная из них – третья. Предложен механизм, позволяющий любое отношение преобразовать к третьей нормальной форме. В процессе таких преобразований могут выделяться новые отношения.
Вначале приведем понятие простого и сложного атрибута. Простым назовем атрибут, если значения его атомарны, т.е. неделимы. В противовес ему сложный атрибут может иметь значение, представляющее собой конкатенацию нескольких значений одного или разных доменов.
Первая нормальная форма.
Отношение называется нормализованным или приведенным к первой нормальной форме (1НФ), если все его атрибуты простые.
Ненормализованное отношение легко сделать нормализованным.
Функциональная зависимость
Пусть X и Y – два атрибута некоторого отношения. Говорят, что Y функционально зависит от X, если в любой момент времени каждому значению X соответствует не более чем одно значение атрибута Y. Функциональную зависимость можно обозначить так: X(Y.
Ключ отношения называется составным, если содержит несколько атрибутов.
Полная функциональная зависимость
Говорят, что не ключевой атрибут функционально полно зависит от составного ключа, если он функционально зависит от ключа, но не находится в функциональной зависимости ни от какой части составного ключа.
Вторая нормальная форма
Отношение находится во второй нормальной форме, если оно находится в первой нормальной форме, и каждый не ключевой атрибут функционально полно зависит от составного ключа.
Чтобы отношение привести ко второй нормальной форме, необходимо:
а) построить его проекцию, исключив атрибуты, которые не находятся в полной функциональной зависимости от составного ключа;
б) построить дополнительную одну или несколько проекций на часть составного ключа и атрибуты, функционально зависящие от этой части ключа.
Транзитивная зависимость
Пусть X,Y,Z – три атрибута, некоторого отношения. При этом X(Y и Y(Z, но обратное соответствие отсутствует, т.е. неверно, что Z(Y или Y(X. Тогда говорят, что Z транзитивно зависит от X.
Третья нормальная форма
Отношение находится в третьей нормальной форме, если оно находится во второй нормальной форме, и каждый не ключевой атрибут не транзитивно (т.е. напрямую) зависит от первичного ключа.
Для преобразования отношения к третьей нормальной форме также необходимо построить несколько проекций.
В процессе приведения отношений ко второй и третьей нормальным формам число отношений в схеме БД увеличивается. однако всегда сохраняется возможность получить исходные отношения посредством выполнения операций соединения.

Инфологическое проектирование базы данных.
Задача инфологического этапа - получение семантических (смысловых) моделей, отражающих информационное содержание ПРОБЛ Определяются объекты, их свойства и связи, которые (будут существенны для будущих пользователей системы. Знания о ПРОБЛ представляются в какой-либо языковой системе, например, с использованием естественного языка, математических формул, диаграммы связей и т.д. Выполняется структуризация знаний о предметной области: выделяются и классифицируются множества составляющих ПРОБЛ, стандартизуется терминология. Затем описываются запросы пользователей к БД. Каждый запрос соотносится с определенным фрагментом ПРОБЛ. Формируются описания внешних инфологических моделей, их взаимная увязка с концептуальной инфологической моделью без привязки к конкретной СУБД.
Задача логического этапа проектирования - организация вы- деленных ранее данных в форму, принятую в выбранной СУБД. Здесь требуется разработать схему концептуальной модели и схемы внешних моделей данных о ПРОБЛ, пользуясь только теми типами моде- лей данных и их особенностями, которые поддерживаются выбранной СУБД.
Задача физического этапа проектирования - выбор рациональной структуры хранения данных и методов доступа к ним, исходя из арсенала методов и средств, который предоставляется разработчику системой.
2. ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ИНФОЛОГИЧЕСКОГО ПРОЕКТИРОВАНИЯ
Инструментальные средства, предназначенные для инфологического моделирования, должны удовлетворять следующим требованиям:
- инфологическая схема должна содержать все сведения о ПРОБЛ, необходимые для выполнения последующих этапов проектирования (включая количественные параметры, требования процессов обработки информации и пр.);
- инфологическая модель ПРОБЛ должна легко преобразовываться в модели баз данных для распространенных СУБД. Разрыв между возможностями этих моделей не должен быть настолько велик, чтобы возникли трудноразрешимые проблемы при их реализации;
- язык спецификаций (характеристик атрибутов) должен быть понятен заказчику и не содержать параметры реализации ИС.
Исходя из этих требований, целесообразно использовать в инфологическом проектировании модель типа "объекты - связи" (в другой терминологии "сущность - связи"). Такая модель определяется в терминах: атрибут, объект(сущность), связь (структурная или запросная),
Объект - собирательное понятие (сущности, процесса, явления о котором необходимо хранить информацию в системе. Тип объекта определяет поименованный набор однородных объектов, а экземпляр объекта - конкретный объект в наборе.
Атрибут - поименованная характеристика объекта, его свойство. Обычно атрибут - логически неделимый элемент структуры информации. Свойства объекта могут быть локальными (не зависят от связей с другими объектами) и реляционными (зависят от связей с другими объектами).
Связи выступают в модели в качестве средства, с помощью которого предоставляются отношения между объектами. Тип связи рассматривается между типами объектов, а конкретный экземпляр связи данного типа существует между конкретными экземплярами типов объектов.
Под структурной связью понимают иерархическое отношение между объектами двух типов: владельцем и подчиненным. Экземпляр структурной связи представляется одним экземпляром владельца и множеством связанных с ним экземпляров подчиненного объекта.
Структурные связи устанавливают отношения подчиненности между объектами н определяют возможную навигацию между ними. Связь между объектами в зависимости от числа входящих в нее объектов характеризуется степенью: п = 2,3,.., к (бинарная, тернарная,..., К - арная).
Процессы над объектами предметной области задаются с помощью запросных связей. Запросная связь есть операция, на входе которой используется по одному экземпляру каждого исходного объекта, а на выходе - соответствующее подмножество экземпляров конечного объекта. Если количество исходных объектов в запросной связи равно единице, то она называется одномерной, а иначе- многомерной, Например, процесс состояний в выборке множества сотрудников заданной организации, может быть описан одномерной запросной связью ОРГАННЗАЦИЯ-?СОТРУДНИК.
Широко используемые бинарные связи объектов (отображения) могут быть следующими.
1. Отображение 1:1("один к одному'). Здесь каждому экземпляру объекта А соответствует один и только один экземпляр объекта B и наоборот. Например, квартира ?? хозяин, номер зачетной книжки ?? студент.
2. Отображение 1 : М ("один ко многим"). Здесь одному экземпляру объекте А может соответствовать 0,1, или несколько экземпляров В , однако каждому экземпляру объекта В соответствует только один: экземпляр объекта А. Например, область ?? город.
3. Отображение М : 1 ("многие к одному") является обратным отображению 1 : М
4. Отображение М : N ("многие ко многим"). Здесь каждому экземпляру объекта А может соответствовать 0,1, несколько экземпляров В и наоборот. Например, дисциплина (курс ?? студент).
Связь моют быть однонаправленной (как простой, так и многозначной). Например:
[ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]
На графической диаграмме проекта БД обозначают (рис. 3.2): типы объектов - прямоугольниками; атрибуты - овалами, соединяя их с соответствующими типами объектов ненаправленными ребрами; идентифицирующие атрибуты подчеркиваются, связи - ромбами, соединяя их с соответствующими типами объектов ненаправленными ребрами, за исключением бинарных связей, которые представляются направленными ребрами.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 3.2. Пример графической диаграммы
Модель Entity-Relationship (“Сущность-Связь”)
Потребности проектировщиков баз данных в более удобных и мощных средствах моделирования предметной области вызвали к жизни направление семантических моделей данных. При том, что любая развитая семантическая модель данных, как и реляционная модель, включает структурную, манипуляционную и целостную части, главным назначением семантических моделей является обеспечение возможности выражения семантики данных.
Напомним, что наиболее часто на практике семантическое моделирование используется на первой стадии проектирования базы данных. При этом в терминах семантической модели производится концептуальная схема базы данных, которая затем вручную преобразуется к реляционной (или какой-либо другой) схеме. Этот процесс выполняется под управлением методик, в которых достаточно четко оговорены все этапы такого преобразования.
Основные понятия модели Entity-Relationship
Далее мы кратко рассмотрим некоторые черты одной из наиболее популярных семантических моделей данных - модель "Сущность-Связь" (часто ее называют кратко ER-моделью).
На использовании разновидностей ER-модели основано большинство современных подходов к проектированию баз данных (главным образом, реляционных). Модель была предложена Ченом (Chen) в 1976 г. Моделирование предметной области базируется на использовании графических диаграмм, включающих небольшое число разнородных компонентов. В связи с наглядностью представления концептуальных схем баз данных ER-модели получили широкое распространение в системах CASE, поддерживающих автоматизированное проектирование реляционных баз данных. Среди множества разновидностей ER-моделей одна из наиболее развитых применяется в системе CASE фирмы ORACLE (в т.н. нотации Баркера). Ее мы и рассмотрим. Более точно, мы сосредоточимся на структурной части этой модели.
Основными понятиями ER-модели являются сущность, связь и атрибут.
Сущность.
Сущностью называется имеющее особый смысл, существующее в действительности или воображаемое явление или объект, информация о котором подлежит запоминанию или выяснению.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис.1
На схемах сущность изображается в виде блока (прямоугольника с закругленными углами) с именем в середине (рис. ). Именем может быть существительное единственного числа, записываемое заглавными буквами. На самом деле блок может иметь любой размер и форму, так чтобы в нем могло уместиться точно выраженное имя сущности, а также чтобы повысить читабельность схемы.
Имя сущности может представлять тип или класс объекта, но не конкретное значение. В тех случаях, когда для именования сущности подходят разные слова, имеющие идентичный смысл в контексте данной проблемы, допускается использование синонимов. Одно имя назначается в качестве первого; синонимы могут записываться заглавными буквами с символом "наклонная черта" (/) перед каждым. Для облегчения понимания понятия и его отличий от других подобных понятий могут использоваться примеры.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис.2
Любое явление или объект может быть представлено в виде только одной сущности. Другими словами, во всех случаях сущности строятся по принципу взаимного исключения. Каждая сущность должна быть уникально определена, т.е. каждый экземпляр (вхождение) сущности должен иметь ясное и недвусмысленное определение, позволяющее отличать его от других экземпляров (вхождений) той же сущности.
Связь между сущностями.
Связью мы назовем поименованное отношение, имеющее место между двумя сущностями. Такая связь является бинарной, в том смысле что она имеет место между ровно двумя поименованными сущностями или же имеет вид отношения сущности к самой себе.
Каждая связь имеет два конца, каждый из которых обладает
- именем;
- степенью/мощностью;
- признаком обязательности.
Эти свойства используются для характеристики связи по отношению к каждой из участвующей в ней сторон.
Связь изображается в виде линии между двумя блоками, каждый из которых соответствует определенной сущности, или, в случае рекурсивной связи, в виде линии, которая начинается и заканчивается на одном и том же блоке. Чаще всего связь имеет тип (степень) “многие к одному”, является обязательной на конце “многие” и необязательной на конце “один”.
На конце “многие” линия связи разветвляется и принимает вид “вороньей лапки”, соприкасающейся с блоком сразу в трех точках (рис. ). На конце “один” линия соприкасается с блоком ровно в одной точке. Если на одном из концов связь обязательная, та часть линии, которая примыкает к этому концу, является сплошной. Если же связь необязательная, соответствующий фрагмент рисуется пунктиром. Зачастую полезно бывает представить связь типа “один ко многим” как связь между родителем и потомком, при этом потомок в какой-то мере зависит от своих родителей.
Имя (а скорее, описание) для каждого конца связи подписывается возле него строчными буквами. Если на одном из концов связь является обязательной, перед соответствующим описанием появляется выражение “должен”; для необязательных связей используется выражение “может”. Присвоение связям имен (описаний) на каждом конце помогает сократить избыточность связей, облегчает их понимание и способствует более быстрому обнаружению необходимости включения в схему дополнительных связей и сущностей. Описание связи содержит тип отношения, имеющего место между двумя сущностями; под этот тип должны подходить все экземпляры (вхождения) данной связи.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис.3
Если на одном из концов связь является обязательной, перед соответствующим описанием появляется выражение “должен”; для необязательных связей используется выражение “может”. Таким образом изображенная выше схема читается слева направо следующим образом:
каждый СОТРУДНИК может выполнять одно и более ЗАДАНИЙ,
а справа налево –
каждое ЗАДАНИЕ должно выполняться одним и только одним СОТРУДНИКОМ.
Рекурсивная связь.
Рекурсивная связь с идентичными свойствами изображается следующим образом:
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис.4
Атрибут.
Атрибутом назовем любое свойство, позволяющее квалифицировать, идентифицировать, классифицировать, измерять сущность или выражать ее состояние либо любое описание объекта или явления.
Атрибут может иметь текстовую, числовую, графическую форму, он может быть получен в результате функционирования органов чувств (осязания, обоняния и т.п.).
Для включения атрибута в модель запишем его название (в единственном числе) внутри блока строчными буквами. В случае необходимости название атрибута может дополняться примерами его значений.
[ Cкачайте файл, чтобы посмотреть картинку ]Рис.5
Необязательные атрибуты.
Значения некоторых атрибутов могут в какие-то моменты просто отсутствовать или же быть недоступны. В таких случаях перед именем атрибута на схеме ставится буква "o", что говорит о том, что атрибут – необязательный (optional).
Обязательные атрибуты.
Те атрибуты, значения которых должны быть известны всегда, имеют перед своим именем значок "*".
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис.6
Определение уникального идентификатора
Каждая сущность должна быть уникально определена, то есть каждый экземпляр (вхождение) сущности должен иметь ясное и недвусмысленное определение, позволяющее отличать его от других экземпляров (вхождений) той же сущности. Уникальным идентификатором может быть атрибут, комбинация атрибутов, комбинация связей или атрибутов и связей.
Сущность может иметь несколько альтернативных способов уникальной идентификации: первый метод состоит в обозначении тех атрибутов, которые составляют уникальный идентификатор, символом "#" и в перечеркивании входящих в уникальный идентификатор связей.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис.7

Программная реализация БД и СУБД.
Создание специализированной СУБД - весьма трудоемкое дело даже в сравнительно простых случаях, и для того, чтобы избрать этот путь, нужно иметь действительно веские основания и твердую убеждаемость в невозможности или нецелесообразности использования какой - либо СУБД общего назначения.
СУБД общего назначения - это сложные программные комплексы, предназначенные для выполнения всей совокупности функций, связанных с созданием и эксплуатацией БД информационной системы. Они позволяют определить структуру создаваемой БД, инициализировать ее и произвести начальную загрузку данных. Системные механизмы выполняют также функции управления ресурсами среды хранения, обеспечения логической и физической независимости данных, предоставления доступа пользователям к БД, защиты логической целостности БД, обеспечения ее физической целостности - защиты от разрушений. Другая важная группа функций - управления полномочиями пользователей на доступ к БД, настройка на конкретные условия применения, организация параллельного доступа пользователей к базе данных в социальной пользовательской среде, поддержка деятельности системного персонала, ответственного за эксплуатацию БД.
Для создания БД разработчик описывает ее логическую структуру, организацию в среде хранения, а также способы видения базы данных пользователями. При этом используются предоставляемые СУБД языковые средства определения данных, и система настраивается на работу с конкретной БД. Такие описания БД называются соответственно схемой (или логической схемой, или концептуальной схемой) БД, схемой хранения (или внутренней схемой) и внешними схемами.
Глава 2. Разработка базы данных по рынку бытовой химии.
Процесс разработки (проектирования) базы данных включает два этапа: разработку логической организации базы данных и создание ее на носителе. Логическая организация базы данных - это предоставление пользователя о предметной области, информация о которой должна храниться в базе данных. Под физической организацией базы данных понимается совокупность средств и методов размещения данных во внешней памяти и на их основе внутренняя модель данных. Внутренняя модель является средством отображения логической модели данных, показывает, каким образом записи размещаются в базе данных, как они упорядочиваются, как организуются связи, каким путем можно осуществить выборку и так далее.
В настоящее время разработаны и используются на персональных компьютерах около двадцати систем управления базами данных. Они представляют пользователю удобные средства интерактивного взаимодействия с БД и имеют развитый язык программирования. Одной из самых популярных настольных программных СУБД является Microsoft Access.
Одной из основных причин такой популярности Access заключается в том, что, является по сути настольной СУБД, это приложение вобрало в себя многие возможности систем управления реляционными базами данных архитектуры клиент-сервер, называемой также SQL базой данных. Несмотря на то, что, Access включают в себя сложные функции и может послужить прекрасным инструментом для профессионального разработчика приложений БД, его использование не должно вызвать проблем и у непрофессиональной пользователей и даже тех, кто раньше не работал с СУБД. Кнопки на панелях инструментов дублируют основные команды меню, расширенный набор мастеров и настроек управляет практически всеми параметрами создания и изменения объектов БД (таблиц, форм, отчетов, запросов и т.д.). С помощью ACCESS можно создавать многопользовательских приложений, в которых файлы базы данных являются разделяемыми ресурсами в локальной сети. В ACCESS реализованного доступа к объектам базы данных. Microsoft Access для хранения объектов БД имеет собственную уникальную структуру для хранения всех связанных таблиц, форм, отчетов, запросов и макрософт в одном файле. Также имеет возможность импорта и экспорта данных во многие широкие распространенные форматы БД, электронных таблиц и текстовых файлов. ACCESS позволяет связывать БД с внешними таблицами в форматах dBase, FoxPro, Paradox и работать с ними в исходном формате. Также Access можно использовать в качестве клиентской части архитектуры клиент-сервер, что обеспечивает применение Microsoft Access не только в качестве профессиональной системы управления базы данных, но и как мощное инструментальное средство для создания приложений клиент-сервер.
База данных по бытовой технике города Улан-Удэ была разработана в программе Microsoft Access. Вся необходимая информация представлена в двух таблицах. Таблица базы данных - это совокупность сведений. Так, например, в таблице «торговые салоны» отображена информация о торговом салоне, адресе, телефоне (рис. 1), а в таблице «товары» - информация о предоставляемых торговым салоном товарах (рис. 2). Каждое поле предоставляет собой столбец таблицы и содержит определенную категорию информации. Каждая запись предоставляет собой строку таблицы и содержит информацию об определенном товаре. Можно создать взаимосвязи между таблицами (Рис. 10), вместо того, чтобы хранить всю информацию в одной большой таблице, избегая тем самым ненужного дублирования данных, экономии памяти компьютера, а также увеличение скорости и точности обработки информации. Так, например, каждая запись в таблице «все товары» содержит информацию о фирме и предоставляемых ею товарах (рис. 3). Запросы используются примерно также, как и таблицы. Вы можете открыть запрос и просмотреть набор данных в табличном представлении. При создании запроса указываются таблицы, из которых будет производится выборка данных, указываются поля таблицы, которые должны быть внесены в результат запроса, указано условие отбора данных. В данном случае при выборе запроса «поиск по салону» (рис. 4), указав название салона, вы получите интересующую вас информацию о товарах в этом салоне.
При выборе запроса «поиск по товарам» (рис. 3) вы получите информацию о представляемых фирмой товарах.
С помощью форм можно отображать данные, содержащиеся в таблицах или запросах, в еще более удобное для восприятия виде. При помощи форм можно добавлять в таблицы новые данные или изменять и удалять существующие. Форма может содержать рисунки, графики и другие объекты. Формы создаются из набора отдельных элементов, называемых элементами управления (графический объект для предоставления данных). Форму для предоставления данных Microsoft Access предоставляет автоматически. После ее заполнения можно просмотреть информацию полностью или частично при помощи процедур поиска, запроса, сортировки. Для просмотра необходимой информации с помощью форм в моей базе данных представлены 6 различных форм: кнопочная, все товары, все торговые салоны, поиск, поиск по салону, поиск по товару (рис. 5-10). При выборе той или иной формы, указав, если есть необходимость, название товара, вы получите интересующую вас информацию.
Возможна реализация СУБД, которая принимает и обрабатывает как запросы в масштабах локальной сети, так и в масштабах Internet. Это зависит от возможностей операционной системы и от того, какие стандартные интерфейсы приема запросов СУБД поддерживает. Например, возможна реализация СУБД в виде FTP-сервера, Web-сервера, SQL-сервера.
Созданная при участии автора реализация описанной модели СУБД включает два варианта:
1) сервер, предоставляющий прикладным программам специально разработанный COM-интерфейс, который позволяет обращаться к СУБД любым программам, выполняющимся на платформе Wintel, на одном компьютере с СУБД;
2) сервер, принимающий запросы и отвечающий на них по специально разработанному протоколу, базирующемуся на TCP/IP, что позволяет обращаться к СУБД любым программам в масштабах от Intranet до Internet.  
Параллельная обработка запросов
Разработанная автором архитектура СУБД и механизм модульности данных позволяют эффективно реализовать параллельную обработку запросов к различным БД. К одной и той же БД все запросы прикладных программ обрабатываются последовательно, такое решение принято ввиду сложной организации БД и опасности взаимных блокировок запросов, приводящих к изменению одних и тех же данных. Запросы к разным БД по определению выполняют операции над различными данными и потому могут выполняться параллельно.
Поскольку в предложенной модели СУБД реализован гибкий механизм связывания баз, в ИС сложное хранилище данных может быть составлено из десятков баз, обращения к которым могут исполняться параллельно. Пиковая производительность подобной системы достигается, когда запросы к СУБД равномерно распределены на все базы, а сами БД расположены на сервере, где количество процессоров и дисковых носителей информации оптимально для данной конкретной ИС (вплоть до формулы процессор+диск на каждую БД).  
Рекурсивный механизм транзакций
Дополнительно к предложенной модели данных, технологии связывания баз и архитектуре, в рамках описываемой модели СУБД разработан специальным образом организованный механизм транзакций.
Механизм транзакций заключается в следующем: В любой момент в БД может быть начата транзакция. Изначально ни один атом БД в транзакцию не вовлечен и потому допускает любые операции над ним. При любой операции с атомом в рамках транзакции он становится вовлеченным в нее, и все операции с ним вне транзакции оказываются невозможными. Все изменения в атомах (содержимое и связи) в процессе выполнения транзакции задерживаются в оперативной памяти СУБД и в базу не записываются. При завершении (утверждении) транзакции все изменения вовлеченных в нее атомов записываются в БД. При отмене транзакции все изменения вовлеченных в нее атомов отвергаются, и эти атомы остаются такими же, какими были в момент начала транзакции.
Механизм транзакций допускает вложенность. В рамках транзакции может быть начата новая, вложенная транзакция - она действует аналогично первой транзакции, в нее могут быть вовлечены атомы первой транзакции, но не наоборот. Внешняя транзакция при отмене отвергает все изменения, выполненные во вложенной. Но не наоборот. Количество уровней вложенности не ограничено.
Механизм транзакций допускает параллельность. Это означает, что в одной и той же БД одновременно могут выполняться различные транзакции, они не могут отменять друг друга. Атом не может быть вовлечен в две параллельные транзакции.
Описанный механизм транзакций является важным для решения поставленных задач. Если входящие в ИС прикладные программы ведут работу со сложно организованными данными и в процессе выполнения длительных операций существует вероятность сбоя, механизм транзакций позволяет организовать надежную защиту данных от некорректной модификации в результате не полностью выполненных операций.  

Эксплуатация системы: наполнение базы данных реальными данными, поддержание
функционирования системы.
Стадия эксплуатации начинается с наполнения системы реальными данными, после чего происходят непосредственно использование ИС, поддержание ее функционирования. Возможно совершенствование системы и разработка новых приложений в случае развития и изменения предметной области автоматизации. Процесс проектирования БД - это итеративный процесс проектирования отображения "Описание проблемной области - схема внутренней модели данных" (рис. 3.1).
[ Cкачайте файл, чтобы посмотреть картинку ]
Обработка данных - это систематические действия по преобразованию данных некоторым способом, направленные на достижение определенной цели.
Реляционные СУБД предоставляют разнообразные средства для работы с данными. Например, можно производить поиск любой сложности, как в отдельной таблице, так и в нескольких связанных таблицах или файлах или с помощью одной команды обновлять содержимое одного поля или нескольких записей. Для чтения и изменения данных можно создавать процедуры, использующие функции СУБД. Во многих системах имеются широкие возможности для ввода данных и генерации отчетов.
В Microsoft Access для обработки данных таблиц используется мощный язык SQL (Structured Query Language – Структурированный язык запросов). Он позволяет определять подмножество данных из одной или нескольких таблиц, необходимых для решения конкретной задачи. При любой обработке данных из нескольких таблиц используются однажды заданные связи между таблицами. Кроме того, Access предоставляет простое и в тоже время богатое возможностями средство графического построения запроса - так называемый запрос по образцу, что обеспечивает задание данных, необходимых для решения некоторой задачи.
Управление данными - позволяет указать, каким пользователям разрешено просматривать, изменять или вставлять данные.
При возникновении необходимости коллективного использования информации, только СУБД обеспечивает надежную защиту информации от несанкционированного доступа, при этом право просматривать данные или вносить в них изменения получают только определенные пользователи. Предназначенная для коллективного использования СУБД имеет средства, не позволяющие нескольким пользователям одновременно изменять одни и те же данные.
Наиболее совершенные системы позволяют группировать вносимые изменения, (последовательности таких изменений называют транзакциями) таким образом, либо ни одно изменение не будет сохранено, либо будут сохранены все. Например, при вводе нового заказа вполне естественно сначала убедиться в том, что все пункты заказа внесены полностью, а если допущена ошибка, то сделать так, чтобы текущие изменения не сохранялись в базе данных.
Microsoft Access может использоваться как в качестве самостоятельной реляционной СУБД на отдельной рабочей станции, так и в сети в режиме “клиент-сервер”. Microsoft Access может выступать в роли сервера баз данных, отображая данные на Web-страницах в корпоративной интрасети.
В Microsoft Access применяется механизм автоматической блокировки для избежания одновременного изменения объекта несколькими пользователями. Кроме того, Microsoft Access использует специальное преобразование, называемое репликацией, позволяющее создавать копии баз данных для удаленных пользователей, которые можно периодически синхронизировать с помощью служебных программ, встроенных в Windows и Microsoft Access.
Одним из средств облегчающих работу с базой данных являются формы ввода-вывода. Эти формы позволяют осуществлять первоначальную загрузку записей в таблицы, выполнять их просмотр, а также производить их корректировку. При этом содержание таблиц отображается в удобном виде -–в виде документа.
Одним из эффективных инструментов обработки данных являются запросы. Запрос в отличие от формы, которая имеет дело лишь с полями имеющихся в базе данных таблиц, может создавать временные таблицы, в которые можно включать данные, как из реальных таблиц, так и производить вычисления над записями этих таблиц. Запросы на выборку удобны для поиска данных по определенному признаку: например, если надо вывести информацию обо всех учениках проживающих по определенному адресу.
Для вывода данных из таблиц в виде печатного документа в MS Access предназначены отчеты. Развитая система кнопочных форм позволяет максимально удобно ориентироваться в объектах базы данных и наиболее рационально их использовать.
Хотя процессы создания базы данных и её наполнения достаточно трудоёмки, следует отметить, что базу данных можно создавать не единовременно, а постепенно добавляя в неё новые элементы и пополняя её содержанием. В этом смысле, разработанная база данных не является законченным произведением, а вполне допускает внесение в неё изменений и дополнений.

Пользователи банков данных. Преимущества централизованного управления данными. Архитектура банка данных.
Пользователей информационной системы условно можно разделить на две группы: внутренние и конечные.
Пользователями БД являются четыре основные категории потребителей ее информации и/или поставщиков информации для нее: (1) конечные пользователи, (2) программисты и системные аналитики, (3) персонал поддержки БД в актуальном состоянии и (4) администратор БД. Хорошо спроектированные системы управления БД (СУБД), используют развитые графические интерфейсы и поддерживают системы отчетов, отвечающие специфике пользователей указанных четырех категорий. В этом случае персонал поддержки БД и конечные пользователи могут легко осваивать и использовать СУБД для обеспечения своих потребностей без какой-либо специальной подготовки, т.е. специфика функционирования данных систем скрыта от пользователя. Более того, хорошо спроектированные СУБД предоставляют опытному пользователю средства для создания собственных БД-приложений, не требуя от него специальной программистской подготовки. Конечным пользователям для обеспечения доступа к информации БД предоставляется графический интерфейс, как правило, в виде системы окон с функциональными меню, позволяющими легко получать необходимую информацию на экран и/или принтер в виде удобно оформленных отчетов.
Программисты и системные аналитики используют СУБД совершенно в ином качестве, обеспечивая разработку новых БД-приложений, поддерживая и модифицируя (при необходимости) уже существующие. Для данной группы пользователей СУБД требуются средства, обеспечивающие указанные функции (создание, отладка, редактирование и т.д.). Пользователи третьей категории нуждаются в интерфейсе, как правило, графическом для обеспечения задач поддержания БД в актуальном состоянии. Эти пользователи состоят в штатах подразделений функциональных и/или обработки информации, обеспечивающих прикладную область, и отвечают за актуальное состояние соответствующей ей БД (контроль текущего состояния, удаление устаревшей информации, добавление новой и т.д.). Программисты выполняют своего рода посреднические функции между БД и конечными пользователями. И если на первых этапах развития БД-технологии они составляли весьма многочисленную группу пользователей, то в процессе развития СУБД и прежде всего массового использования ПК эта категория сходит на нет. Особую и ответственную роль выполняет администратор, отвечающий как за актуальность находящейся в БД информации, так и за корректность функционирования и использования БД и СУБД.
В случае больших БД может быть достаточно много конечных пользователей, ряд программистов и несколько администраторов БД; в случае небольших БД (что особенно характерно для ПК) все эти функции могут обеспечиваться одним человеком. Важные функции выполняет администратор БД, отвечающий за выработку требований к БД, ее проектирование, реализацию, эффективное использование и сопровождение. Необходимость в таком специалисте вытекает из принципа независимости данных, а также диктуется важностью БД в деятельности организаций и более крупных объединений - поставщиков и потребителей информации БД. Администратор БД взаимодействует с пользователями в определении требований к базе в процессе выработки требований к системе в целом, пользуется языком описания данных для определения БД в процессе проектирования системы, взаимодействует с программистами, которые создают П0, использующее доступ к БД, отвечает за загрузку БД информацией в процессе реализации системы, контролирует работоспособность БД, используя соответствующие программные и аппаратные средства, и определяет, когда следует реорганизовывать данные в базе или начать работы по созданию новой, более совершенной БД. В целом, функции администратора БД сводятся к поддержанию целостности БД, необходимого уровня защиты ее данных и эффективности. Среди его наиболее важных обязанностей - согласование конфликтующих требований, которое требуется достаточно часто, ибо БД обслуживает, как правило, целый ряд различных прикладных процессов.
Внутренние пользователи разрабатывают информационную систему и поддерживают ее функционирование.
К группе внутренних пользователей можно отнести: администраторов баз данных, администраторов функциональных систем (подсистем), системных и прикладных программистов.
Конечные пользователи – это пользователи, обращающиеся к информационной системе или посреднику за получением необходимой информации, те пользователи, ради которых, собственно, и создается информационная система.
Конечные пользователи могут быть косвенными и прямыми. Косвенные конечные пользователи не общаются с информационной системой непосредственно. Они формулируют свои запросы службе администратора базы данных, а затем получают ответы на бумаге, которые перед тем, как их передать заказчику, интерпретируются специалистами.
Прямые конечные пользователи общаются с информационной системой в интерактивном режиме . Часть из них умеет обращаться к заранее составленными приложениями и интерпретировать ответы информационной системы. Другие умеют самостоятельно разрабатывать новые приложения.
Современные тенденции развития систем управления базами данных состоят в развитии языковых и программных средств, ориентированных на конечных пользователей, которые готовы разрабатывать самостоятельно новые приложения, не прибегая к услугам профессиональных программистов.
АРХИТЕКТУРА БнД.
СУБД реализует отображение (прямое и обратное):
Модель <- > хранимая БД
В описании отображения, кроме указания соответствий между полями записей модели и полями хранимых записей, указываются все необходимые сведения о хранимых д.: в каком коде они представлены, как они упорядочены, какие существуют индексы, где расположены те или иные д., с какими данными они связаны, какие методы доступа необходимо использовать для манипулирования хранимыми д. и т.п.
Часть задач обработки д. целесообразно возложить на ОС, используя ее программы методов доступа. Т.о. обеспечивается относительная независимость операций хранения д от используемых технических средств. Т.е. вводится понятие внутренней модели БД:
Модель ---- Внутренняя модель ---- физическая БД
При проектировании СУБД разрабатываются собственные методы доступа к хранимым записям (внутренней модели), базирующиеся на методах доступа ОС. Во внутренней модели БД должна быть представлена в виде совокупности хранимых файлов, для которых известна структура хранимых записей, определены служебные поля, реализующие необходимые связи между записями, известны методы доступа СУБД к этим записям и т.д. В состав СУБД включаются средства преобразования хранимых записей к виду физического представления на машинном носителе и обратно.
На рис.1. представлена архитектура БнД.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 1.
Пользователи составляют свои ПП, используя только термины модели данных (МД). СУБД, получив запрос из ПП, организует запрос (на считывание, напр., из физической БД необходимой порции д. с носителя в буфер) к ОС. Т.о. в буферной памяти СУБД окажутся хранимые записи, имеющие структуру в соответствии со схемой ВнМД.
Затем выполняется требуемое отображение хранимых записей в записи модели, а затем передача их в РО ПП, которая их затребовала.
Эта схема решает вопрос независимости ПП от д., однако требует знания модели д. пользователем, что не всегда оправдано. Следовательно, необходимо внешнее представление д. Логическое представление в МД является “синхронизирующим”, сама модель - концептуальной моделью.
Между внешней и концептуальной моделями также должно быть реальзовано отображение.
При таком подходе на внешнием уровне поддерживаются органиченные модели ПО, видимые отдельными приложениями (пользователями). На концептуальном уровне поддерживается модель ПО для всех приложений. Уровень хранимых данных - внутренний уровень. Такая архитектура БнД придает ему способность к адаптации к возможным изменениям как в ПП, так и в самих д. в силу независимости схем ВнС, КС, ВС. КС - стабильная и нечувствительная к изменениям во ВнС и ВС.
Централизация и децентрализация процессов обработки данных.
Централизация процессов обработки д. позволяет устранить такие надостатки как несвязанность, противоречивость и избыточность д. в ИС, обеспечивает возможность стандартизиции представления д., санкционированного доступа и т.п. Однако по мере роста БД, использование их в территориально разнесенных организациях приводит к тому, что централизованная СУБД плохо справляется с ростом числа обрабатываемых транзакций. Это приводит к снижению общей надежности и производительности системы при обработке запросов пользователей.
Децентрализация процессов обработки д. в ИС позволяет повысить общую производительность системы вследствие распределения нагрузки по нескольким узлам обработки (хотя и за счет снижения требований к целостности и противоречивости д. и их безопасности).
+ Доводы в пользу распределения обработки:
используются в одном периферийном подразделении (в основном);
выгодно хранить д. и обрабатывать на местах возникновения;
большое число операций поиска и манипулирования со вторичными ключами.
+Доводы в пользу централизации д.:
используются централизованными приложениями;
д., возникающие в различных подразделениях, рассматриваются системой как одно целое (логически);
большой объем д. общего назначения;
защита д.;
пользователи могут перемещаться.
В одной и той же системе одни д. могут быть централизованными, другие - децентрализованными. Основная задача при проектировании распределенной БД - распределение д. по сети.

Строение пакета СУБД. Компиляция и интерпретация программ.
Уточним понятие системы управления базами данных (СУБД).
В наиболее полном варианте такой пакет может иметь следующие компоненты:
1. Среда пользователя, дающая возможность непосредственного управления базами данных с клавиатуры.
2. Алгоритмический язык для программирования прикладных систем обработки данных, реализованный как интерпретатор, что позволяет быстро создавать и отлаживать достаточно сложные программы (законченные информационные системы).
3. Компилятор для придания завершенной программе вида готового коммерческого продукта в форме независимого EXE-файла.
4. Программы-утилиты быстрого программирования рутинных операций (генераторы отчетов, экранов, меню и других приложений).
Собственно СУБД – это, конечно, оболочка пользователя. Ввиду того, что такая среда ориентирована на немедленное удовлетворение его запросов, это всегда система-интерпретатор.
Наличие в СУБД языка программирования позволяет создавать сложные системы обработки данных, ориентированные под конкретные задачи и даже под конкретного пользователя. Есть такие СУБД, которые имеют только язык и не имеют оболочки пользователя. Они предназначены исключительно для программистов, и это системы компилирующего типа. Такие пакеты лишь с оговорками могут быть названы СУБД. Обычно их называют просто компиляторами.
Компиляция и интерпретация программ
 ЭВМ непосредственно выполняет программы на машинном языке программирования данной ЭВМ. При этом программа представляет собой набор отдельных команд компьютера. Эти команды являются достаточно «простыми», например, сложение, умножение, сравнение или пересылка отдельных данных. Каждая команда содержит в себе сведения о том, какая операция должна быть выполнена (код операции), с какими операндами (адреса данных или непосредственно сами данные) выполняются вычисления и куда (адрес) должен быть помещен результат.
Машинные языки были первыми языками программирования. Программирование на них затруднительно ввиду того, что, во-первых, эти языки различны для каждого типа ЭВМ, во-вторых, являются трудоемкими для большинства пользователей по причине необходимости знания особенностей конкретной ЭВМ и большого количества реализуемых ею операций (команд). Данные языки обычно используются для разработки системных программ, при этом чаще всего применяются специальные символические языки Ассемблеры, близкие к соответствующим машинным языкам.
Человеку свойственно формулировать и решать задачи в выражениях более общего характера, чем команды ЭВМ. Поэтому с развитием программирования появились языки, ориентированные па более высокий уровень абстракции при описании решаемой на ЭВМ задачи. Эти языки получили название языков высокого уровня. Их теоретическую основу составляют алгоритмические языки, например, Паскаль, Си, Бейсик, Фортран, PL/1.
Для перевода программы, написанной на языке высокого уровня, в соответствующую машинную программу используются языковые процессоры. Различают два вида языковых процессоров: интерпретаторы и трансляторы.
Интерпретатор это программа, которая получает исходную программу и по мере распознавания конструкций входного языка реализует действия, описываемые этими конструкциями.
Транслятор это программа, которая принимает исходную программу и порождает на своем выходе программу, записываемую на объектном языке программирования (объектную программу). В частном случае объектным может служит машинный язык, и в этом случае полученную на выходе транслятора программу можно сразу же выполнить на ЭВМ. В общем случае объектный язык необязательно должен быть машинным или близким к нему (автокодом). В качестве объектного языка может служить и некоторый промежуточный язык.
Для промежуточного языка может быть использован другой транслятор или интерпретатор с промежуточного языка на машинный. Транслятор, использующий в качестве входного язык, близкий к машинному (автокод или язык Ассемблера) традиционно называют Ассемблером. Транслятор с языка высокого уровня называют компилятором.
Говоря про оптимизацию запросов в реляционных СУБД, обычно имеют в виду такой способ обработки запросов, когда по начальному представлению запроса путем его преобразований вырабатывается процедурный план его выполнения, наиболее оптимальный при существующих в базе данных управляющих структурах. Соответствующие преобразования начального представления запроса выполняются специальным компонентом СУБД - оптимизатором, и оптимальность производимого им плана запроса носит условный характер: план оптимален в соответствии с критериями, заложенными в оптимизатор.

Многопользовательские системы. Файл-серверная и клиент-серверная технологии. Трехзвенная архитектура.
Многопользовательское, Мультерминальное или Терминальное решение позволяет организовать на базе одного [ Cкачайте файл, чтобы посмотреть ссылку ] несколько независимых мест терминалов с возможностью одновременной работы.
Рост производительности и усовершенствование технологий позволяют сейчас решать одновременно определенное число задач без потери скорости работы, однако в один момент времени только один пользователь может воспользоваться компьютером, поэтому часто мощности ПК простаивают. Например, при работе в [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ] используется лишь 10 % ресурсов ПК.
Низкий уровень шума Экономия места Снижение затрат на модернизацию Простота использования Экономия электроэнергии Не требуется локальная сеть Экологичность Низкая цена Совместимость с большинством современных видеокарт
Каждый [ Cкачайте файл, чтобы посмотреть ссылку ] должен быть подключен к графическому выводу. Некоторые [ Cкачайте файл, чтобы посмотреть ссылку ] имеют несколько выходов и поддерживают подключение нескольких мониторов. К примеру, для создания четырёхместной системы понадобятся: четыре монитора, четыре usb-клавиатуры и четыре usb-мыши (так как большинство ПК имеют только два вывода PS/2). Так как основная часть современных машин имеют только один слот [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ], придется использовать видеокарты стандарта [ Cкачайте файл, чтобы посмотреть ссылку ]
Где используется:
Библиотеки, музеи, читальные залы Интернет-кафе Выставки, семинары, конференции, презентации Для применения в бухгалтерии (проверялось компанией 1С) Рабочие места в офисах, банках, почтовых отделениях Кассовые терминалы, регистрационные пункты в домах отдыха, отелях, больницах Компьютерное тестирование и обучение Школы и университеты Для домашнего пользования
2. Файл-серверная архитектура программы.
В памяти компьютера находятся данные. Это может быть, например, база данных складского учета. Данными этими пользуются программы. Одна программа или несколько - не важно. Важно то, что эти программы самостоятельно читают и изменяют информацию непосредственно в файлах на жестком диске.
Проиллюстрирую это на модели музыкального магазина: - Продавец в стороне, а коробки с компакт-дисками доступны покупателям. - Покупатели самостоятельно выбирают то, что им нужно. Продавец никак не вмешивается в процесс, только принимает деньги в случае покупки. Неизбежные издержки:- Ошибки поиска - покупатель пришел к выводу, что нужного диска нет (в коробках не нашел), а диск есть - просто его вертел в руках другой покупатель. Повертел-повертел и положил на место;- Порча товара - поломают, помнут, а то и украдут...;- Неизбежность конфликтов - "я первый взял...", "не толкайся...", "это поломал не я, а вот этот субъект..."; - Конечное количество покупателей, что могут иметь доступ к коробкам. ВСЕ ЭТО И ЕСТЬ ФАЙЛ-СЕРВЕРНАЯ АРХИТЕКТУРА.Главная особенность - данными никто не управляет. Программы самостоятельно роются в них. Компьютер, в памяти которого хранятся файлы с данными, обычно называют "файл-сервером". Обращаю внимание: "файл-сервер" - это именно компьютер ("железо"), а не программа. И программа, и данные могут быть расположены на одном компьютере. Это дела не меняет.
Подавляющее большинство программ для автоматизации "малых и средних" предприятий построены на основе именно файл-серверной архитектуры.
Главнейшие недостатки:- Невозможность роста количества пользователей (я думаю, что предел это пять-восемь относительно нормально работающих клиентов);- Существенное замедление скорости работы программы с ростом объема информации в базе данных. Причина в том, что программа работает с данными на "клиентском" компьютере, а данные хранятся на "файл-сервере". Поэтому данные, как минимум, нужно передать (по сети) на машину клиента, что требует времени и ресурсов.
Клиент-серверная СУБД [ Cкачайте файл, чтобы посмотреть ссылку ], использующая [ Cкачайте файл, чтобы посмотреть ссылку ].
Клиент-серверная СУБД позволяет обмениваться [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ] минимально необходимыми объёмами информации. При этом основная вычислительная нагрузка ложится на сервер. Клиент может выполнять функции предварительной обработки перед передачей информации серверу, но в основном его функции заключаются в организации доступа пользователя к серверу.
В большинстве случаев клиент-серверная СУБД гораздо менее требовательна к пропускной способности компьютерной сети, чем [ Cкачайте файл, чтобы посмотреть ссылку ], особенно при выполнении операции поиска в [ Cкачайте файл, чтобы посмотреть ссылку ] по заданным пользователем параметрам, т.к. для поиска нет необходимости получать на клиент весь массив данных: клиент передаёт параметры запроса серверу, а сервер производит поиск по полученному запросу в локальной базе данных. Результат выполнения запроса, который обычно на несколько порядков меньше по объёму, чем весь массив данных, возвращается клиенту, который обеспечивает отображение результата пользователю.
Трёхзвенная архитектура вариант архитектуры [ Cкачайте файл, чтобы посмотреть ссылку ], в котором [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], доступ к данным и хранение данных разрабатываются и функционируют как независимые модули, зачастую на различных платформах. Авторство термина «трёхзвенная архитектура», также как и термина «[ Cкачайте файл, чтобы посмотреть ссылку ]», по-видимому, принадлежит [ Cкачайте файл, чтобы посмотреть ссылку ].
Трехзвенная архитектура "клиент - сервер(-а) приложений - сервер данных (хранилище)".
Трехзвенная архитектура "клиент - сервер(-а) приложений - сервер данных (хранилище)". Серверная часть SWR-PDM является интегрированным сервером СУБД и сервером приложений и отвечает за работу всего комплекса, за физическое хранение и безопасность данных. Клиентская часть представляет собой автономное приложение для работы с любыми системами, которые повседневно используются для подготовки инженерной документации. Клиентское приложение разработано в виде проводника хранилища SWR-PDM, и является естественным инструментом для пользователей, привыкших к проводнику Windows.
Трехзвенная архитектура До сих пор мы обсуждали самую простую архитектуру для работы с WWW и простыми бизнес-приложениями - клиент/сервер. Однако эту архитектуру не так-то просто нарастить по мере роста и изменения ваших приложений. В ней также трудно использовать преимущества объектно-ориентированного программирования. Первая проблема недавно нашла отражение в дискуссиях относительно «тонких клиентов». Потребность в тонких клиентах происходит из беспокоящей тенденции в передаче клиенту все больших объемов обработки. Эта проблема проявилась в PowerBuilder и VisualBasic - инструментах, которые прямо вытаскивают данные из базы в GUI, а затем все операции над этими данными проводят в GUI. Такая тесная привязка интерфейса пользователя к ядру базы данных приводит к появлению программ, которые трудно модифицировать и невозможно масштабировать при увеличении числа пользователей и объема данных. Если у вас есть опыт разработки интерфейсов пользователя, то вы сталкивались с проблемой переработки интерфейса в зависимости от каприза пользователя. Чтобы изолировать последствия такой переработки, проще всего оставить для GUI только одну задачу- действовать в качестве интерфейса пользователя. Такой интерфейс пользователя действительно является тонким клиентом. Влияние на масштабируемость сказывается и с другой стороны. Когда требуется переработать приложение, чтобы оно могло справляться с возросшим числом пользователей и объемом данных, модификация может быть осуществлена в результате изменений, вносимых в базу данных, в том числе таких, которые состоят в распределении базы данных по нескольким серверам. Навечно привязав свой интерфейс к базе данных, вам приходится делать изменения в этом GUI для решения проблем масштабирования - проблем, связанных исключительно с сервером. Тонкие клиенты - не единственное сегодняшнее поветрие. Другая тенденция - повторное использование кода. Общий для разных приложений код тяготеет к обработке данных, обычно называемой деловой логикой. Если вся ваша деловая логика располагается в интерфейсе пользователя, то добиться повторного использования кода будет, по меньшей мере, трудно. Решением этих проблем является разбиение приложения на три, а не на две части. Такая архитектура называется трехзвенной. Когда мы говорим об интерфейсе пользователя у клиента, то имеем в виду логическое различие. Разновидностью тонкого клиента, иногда называемой «сверхтонким клиентом», является то, что обычно всеми воспринимается как Web-страница. Web-страница может динамически создаваться на Web-сервере. В этом случае большая часть работы клиента происходит на сервере в виде динамической генерации HTML-страниц. Две главные задачи сервера приложений - это изоляция подключений к базе данных и обеспечение централизованного хранилища для деловой логики. Интерфейс пользователя имеет дело только с отображением и вводом данных, а ядро базы данных занимается только проблемами базы данных. При перемещении обработки данных в центральное место одну и ту же программу сервера приложений могут использовать различные интерфейсы пользователя, и устраняется необходимость писать правила обработки данных всякий раз, когда вы создаете новое приложение.

Операционные системы
1.Принципы построения операционных систем (ОС), вычислительный процесс и его реализация с помощью ОС; основные функции ОС.
ОС различаются по назначению, выполняемым функциям, формам реализации. Тем не менее, в основу их создания заложены общие принципы.
Частотный принцип. Для действий, которые часто встречаются при работе с ОС, обеспечиваются условия их быстрого выполнения.
.Принцип модульности. Модуль – функциональный элемент системы, имеющий оформление, законченное и выполненное в пределах требований системы, и средства сопряжения с другими модулями. Модули бывают однократными, многократными и реентерабельными.
Принцип функциональной избирательности. Используется при формировании ядра ОС. Модули "под рукой".
Принцип генерируемости. Настройка средств ОС, исходя из конкретной конфигурации ЭВМ и круга решаемых проблем (OS/2, Windows, UNIX).
Принцип функциональной избыточности. Проведение одной и той же работы различными средствами ОС -MFT, MVT, SVM.
Принцип умолчания. Он основан на хранении в системе некоторых данных, которые назначаются объектам ОС в случае их не указания.
Принцип перемещаемости. Построение модулей, исполнение которых не зависит от места расположения в ОП.
Принцип защиты. Он предполагает необходимость разработки мер, ограждающих программы и данные пользователей от нежелательных влияний друг на друга. (Привилегированные команды. Границы области адресации.).
Принцип независимости программ от внешних устройств. Связь программы с конкретным устройством устанавливается не на уровне трансляции, а в период ее исполнения.
Функции:
обеспечивать загрузку пользовательских программ в оперативную память и их исполнение
обеспечивать работу с устройствами долговременной памяти, такими как магнитные
диски, ленты, оптические диски и т.д. Как правило, ОС управляет свободным
пространством на этих носителях и структурирует пользовательские данные
предоставлять более или менее стандартный доступ к различным устройствам ввода/вывода, таким как терминалы, модемы, печатающие устройства
предоставлять некоторый пользовательский интерфейс. Слово некоторый здесь сказано не случайно - часть систем ограничивается командной строкой, в то время как другие на 90% состоят из средств интерфейса пользователя
Существуют ОС, функции которых этим и исчерпываются. Одна из хорошо известных систем такого типа - дисковая операционная система MS DOS.
Более развитые ОС предоставляют также следующие возможности:
параллельное (точнее, псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач
распределение ресурсов компьютера между задачами
организация взаимодействия задач друг с другом
взаимодействие пользовательских программ с нестандартными внешними устройствами
организация межмашинного взаимодействия и разделения ресурсов
защита системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и их программ
2.Классификация операционных систем. ОС с монолитным ядром. Слоеные системы. Микроядерная архитектура. Смешанные системы.
Прежде всего, традиционно различают ОС общего и специального назначения. ОС специального назначения, в свою очередь, подразделяются на ОС для носимых микрокомпьютеров и различных встроенных систем, организации и ведения баз данных, решения задач реального времени и т. п. Еще не так давно операционные системы для персональных компьютеров относили к ОС специального назначения. Сегодня современные мультизадачные ОС для персональных компьютеров уже многими относятся к ОС общего назначения, поскольку их можно использовать для самых разнообразных целей так велики их возможности.
По режиму обработки задач различают ОС, обеспечивающие однопрограммный и мультипрограммный (мультизадачный) режимы. К однопрограммным ОС относится, например, всем известная, хотя нынче уже практически и не используемая MS DOS. Напомним, что под мультипрограммированием понимается способ организации вычислений, когда на однопроцессорной вычислительной системе создается видимость одновременного выполнения нескольких программ. Любая задержка в решении программы (например, для осуществления операций ввода-вывода данных) используется для выполнения других (таких же либо менее важных) программ. Иногда при этом говорят о мультизадачном режиме, причем, вообще говоря, термины «мультипрограммный режим» и «мультизадачный режим» это не синонимы, хотя и близкие понятия. Основное принципиальное отличие этих терминов заключается в том, что мультипрограммный режим обеспечивает параллельное выполнение нескольких приложений, и при этом программисты, создающие эти программы, не должны заботиться о механизмах организации их параллельной работы (эти функции берет на себя сама ОС; именно она распределяет между выполняющимися приложениями ресурсы вычислительной системы, осуществляет необходимую синхронизацию вычислений и взаимодействие). Мультизадачный режим, наоборот, предполагает, что забота о параллельном выполнении и взаимодействии приложений ложится как раз на прикладных программистов. Хотя в современной технической и тем более научно-популярной литературе об этом различии часто забывают и тем самым вносят некоторую путаницу. Можно, однако, заметить, что современные ОС для персональных компьютеров реализуют и мультипрограммный, и мультизадачный режимы.
Большинство ОС использует монолитное ядро, которое компонуется как одна программа, работающая в привилегированном режиме и использующая быстрые переходы с одной процедуры на другую, не требующие переключения из привилегированного режима в пользовательский и наоборот. Альтернативой является построение ОС на базе микроядра, работающего также в привилегированном режиме и выполняющего только минимум функций по управлению аппаратурой, в то время как функции ОС более высокого уровня выполняют специализированные компоненты ОС - серверы, работающие в пользовательском режиме. При таком построении ОС работает более медленно, так как часто выполняются переходы между привилегированным режимом и пользовательским, зато система получается более гибкой - ее функции можно наращивать, модифицировать или сужать, добавляя, модифицируя или исключая серверы пользовательского режима. Кроме того, серверы хорошо защищены друг от друга, как и любые пользовательские процессы.
Построение ОС на базе объектно-ориентированного подхода дает возможность использовать все его достоинства, хорошо зарекомендовавшие себя на уровне приложений, внутри операционной системы, а именно: аккумуляцию удачных решений в форме стандартных объектов, возможность создания новых объектов на базе имеющихся с помощью механизма наследования, хорошую защиту данных за счет их инкапсуляции во внутренние структуры объекта, что делает данные недоступными для несанкционированного использования извне, структуризованность системы, состоящей из набора хорошо определенных объектов.
Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС. Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы.

3.Системные вызовы. Процессы. Файлы. Нити. Прерывания. Исключительные ситуации. Режимы работы.
Системные вызовы (system calls) – это интерфейс между операционной системой и пользовательской программой. Они создают, удаляют и используют различные объекты, главные из которых – процессы и файлы. Пользовательская программа запрашивает сервис у операционной системы, осуществляя системный вызов. Имеются библиотеки процедур, которые загружают машинные регистры определенными параметрами и осуществляют прерывание процессора, после чего управление передается обработчику данного вызова, входящему в ядро операционной системы. Цель таких библиотек – сделать системный вызов похожим на обычный вызов подпрограммы.
Основное отличие состоит в том, что при системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode). Поэтому системные вызовы иногда еще называют программными прерываниями, в отличие от аппаратных прерываний, которые чаще называют просто прерываниями.
В этом режиме работает код ядра операционной системы, причем исполняется он в адресном пространстве и в контексте вызвавшей его задачи. Таким образом, ядро операционной системы имеет полный доступ к памяти пользовательской программы, и при системном вызове достаточно передать адреса одной или нескольких областей памяти с параметрами вызова и адреса одной или нескольких областей памяти для результатов вызова.
В большинстве операционных систем системный вызов осуществляется командой программного прерывания (INT). Таким образом, программное прерывание – это синхронное событие.

Понятие процесса характеризует некоторую совокупность набора исполняющихся команд, ассоциированных с ним ресурсов (выделенная для исполнения память или адресное пространство, стеки, используемые файлы и устройства ввода-вывода и т. д.) и текущего момента его выполнения (значения регистров, программного счетчика, состояние стека и значения переменных), находящуюся под управлением операционной системы.
Не существует взаимно-однозначного соответствия между процессами и программами, обрабатываемыми вычислительными системами. Даже в случае обработки только одной программы в рамках одного процесса нельзя считать, что процесс представляет собой просто динамическое описание кода исполняемого файла, данных и выделенных для них ресурсов.
Процесс находится под управлением операционной системы, поэтому в нем может выполняться часть кода ее ядра, как в случаях, специально запланированных авторами программы (например, при использовании системных вызовов), так и в непредусмотренных ситуациях (например, при обработке внешних прерываний).
В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний:
ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;
ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;
ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса.
Файлы предназначены для хранения информации на внешних носителях, то есть принято, что информация, записанная, например, на диске, должна находиться внутри файла. Обычно под файлом понимают именованную часть пространства на носителе информации.
Прерывание (hardware interrupt) – это событие, генерируемое внешним (по отношению к процессору) устройством. Посредством аппаратных прерываний аппаратура либо информирует центральный процессор о том, что произошло какое-либо событие, требующее немедленной реакции (например, пользователь нажал клавишу), либо сообщает о завершении асинхронной операции ввода-вывода (например, закончено чтение данных с диска в основную память).
Исключительная ситуация (exception) – событие, возникающее в результате попытки выполнения программой команды, которая по каким-то причинам не может быть выполнена до конца.
Примерами таких команд могут быть попытки доступа к ресурсу при отсутствии достаточных привилегий или обращения к отсутствующей странице памяти.
Исключительные ситуации, как и системные вызовы, являются синхронными событиями, возникающими в контексте текущей задачи.
Исключительные ситуации можно разделить на исправимые и неисправимые.
4.Сетевые ОС и протоколы передачи информации, организация управления доступом и защиты ресурсов ОС
Сетевая операционная система составляет основу любой вычислительной сети. Каждый компьютер в сети в значительной степени автономен, поэтому под сетевой операционной системой в широком смысле понимается совокупность операционных систем отдельных компьютеров, взаимодействующих с целью обмена сообщениями и разделения ресурсов по единым правилам - протоколам. В узком смысле сетевая ОС - это операционная система отдельного компьютера, обеспечивающая ему возможность работать в сети.

В сетевой операционной системе отдельной машины можно выделить несколько частей (рисунок 1.1):
Средства управления локальными ресурсами компьютера: функции распределения оперативной памяти между процессами, планирования и диспетчеризации процессов, управления процессорами в мультипроцессорных машинах, управления периферийными устройствами и другие функции управления ресурсами локальных ОС.
Средства предоставления собственных ресурсов и услуг в общее пользование - серверная часть ОС (сервер). Эти средства обеспечивают, например, блокировку файлов и записей, что необходимо для их совместного использования; ведение справочников имен сетевых ресурсов; обработку запросов удаленного доступа к собственной файловой системе и базе данных; управление очередями запросов удаленных пользователей к своим периферийным устройствам.
Средства запроса доступа к удаленным ресурсам и услугам и их использования - клиентская часть ОС (редиректор). Эта часть выполняет распознавание и перенаправление в сеть запросов к удаленным ресурсам от приложений и пользователей, при этом запрос поступает от приложения в локальной форме, а передается в сеть в другой форме, соответствующей требованиям сервера. Клиентская часть также осуществляет прием ответов от серверов и преобразование их в локальный формат, так что для приложения выполнение локальных и удаленных запросов неразличимо.
Коммуникационные средства ОС, с помощью которых происходит обмен сообщениями в сети. Эта часть обеспечивает адресацию и буферизацию сообщений, выбор маршрута передачи сообщения по сети, надежность передачи и т.п., то есть является средством транспортировки сообщений.
Для того, чтобы иметь информацию о текущей конфигурации сети, маршрутизаторы обмениваются маршрутной информацией между собой по специальному протоколу. Протоколы этого типа называются протоколами обмена маршрутной информацией (или протоколами маршрутизации). Протоколы обмена маршрутной информацией следует отличать от, собственно, протоколов сетевого уровня. В то время как первые несут чисто служебную информацию, вторые предназначены для передачи пользовательских данных, также, как это делают протоколы канального уровня.
Для того, чтобы доставить удаленному маршрутизатору пакет протокола обмена маршрутной информацией, используется протокол сетевого уровня, так как только он может передать информацию между маршрутизаторами, находящимися в разных сетях. Пакет протокола обмена маршрутной информацией помещается в поле данных пакета сетевого уровня, поэтому с точки зрения вложенности пакетов протоколы маршрутизации следует отнести к более высокому уровню, чем сетевой. Но функционально они решают общую задачу с пакетами сетевого уровня - доставляют кадры адресату через разнородную составную сеть.
С помощью протоколов обмена маршрутной информацией маршрутизаторы составляют карту межсетевых связей той или иной степени подробности и принимают решение о том, какому следующему маршрутизатору нужно передать пакет для образования рационального пути.
На сетевом уровне работают протоколы еще одного типа, которые отвечают за отображение адреса узла, используемого на сетевом уровне, в локальный адрес сети. Такие протоколы часто называют протоколами разрешения адресов - Address Resolution Protocol, ARP. Иногда их относят не к сетевому уровню, а к канальному, хотя тонкости классификации не изменяют их сути.
5.Основные механизмы безопасности: средства и методы аутентификации в ОС, модели разграничения доступа, организация и использование средств аудита; администрирование ОС.
Основные механизмы безопасности подсистемы защиты операционной системы:
1. Разграничения доступа. Каждый пользователь системы имеет доступ только к тем объектам операционной системы, к которым ему предоставлен доступ в соответствии с текущей политикой безопасности.
2. Идентификации и аутентификации. Ни один пользователь не может начать работу с операционной системой, не идентифицировав себя и не предоставив системе аутентифицирующую информацию, подтверждающую, что пользователь действительно является тем, за кого он себя выдает.
3. Аудита. Операционная система регистрирует в специальном журнале события, потенциально опасные для поддержания безопасности системы. Записи об этих событиях могут просматривать в дальнейшем только администраторы операционной системы.
4. Управления политикой безопасности. Политика безопасности должна постоянно поддерживаться в адекватном состоянии, т.е. должна гибко реагировать на изменения условий функционирования операционной системы, требований к защите информации, хранимой и обрабатываемой в системе, и т.д. Управление политикой безопасности осуществляется администраторами системы с использованием соответствующих средств, встроенных в операционную систему.
5. Криптографический. В настоящее время защита информации немыслима без использования криптографических средств защиты. В операционных системах шифрование используется при хранении и передаче по каналам связи паролей пользователей и некоторых других данных, критичных для безопасности системы.
Идентификация субъекта доступа заключается в том, что субъект сообщает операционной системе идентифицирующую информацию о себе (имя, учетный номер и т.д.) и таким образом идентифицирует себя.
Аутентификация субъекта доступа заключается в том, что субъект предоставляет операционной системе помимо идентифицирующей информации еще и аутентифицирующую информацию, подтверждающую, что он действительно является тем субъектом доступа, к которому относится идентифицирующая информация. Пусть, например, пользователь, входя в систему, ввел имя и пароль. В этом случае имя пользователя является идентифицирующей информацией, а известный только ему пароль – аутентифицирующей информацией. Вводя пароль, пользователь подтверждает, что введенное имя принадлежит именно ему.
· аутентификация с помощью пароля;
· аутентификация с помощью внешних носителей ключевой информации;
· аутентификация с помощью биометрических характеристик пользователей.
1. Избирательное разграничение доступа. Система правил избирательного или дискреционного разграничения доступа (discretionary access control) формулируется следующим образом.
1. Для любого объекта операционной системы существует владелец.
2. Владелец объекта может произвольно ограничивать доступ других субъектов к данному объекту.
3. Для каждой тройки субъект-объект-метод возможность доступа определена однозначно.
Существует хотя бы один привилегированный пользователь (администратор), имеющий возможность обратиться к любому объекту по любому методу доступа. Это не означает, что этот пользователь может игнорировать разграничение доступа к объектам и поэтому является суперпользователем. Не всегда для реализации возможности доступа к объекту операционной системы администратору достаточно просто обратиться к объекту. Например, в Windows NT администратор для обращения к чужому (принадлежащему другому субъекту) объекту должен вначале объявить себя владельцем этого объекта, использовав привилегию администратора объявлять себя владельцем любого объекта, затем дать себе необходимые права, и только после этого администратор может обратиться к объекту. При этом использование администратором своей привилегии не остается незамеченным для прежнего владельца объекта.
2. Изолированная программная среда. Изолированная или замкнутая программная среда представляет собой расширение модели избирательного разграничения доступа. Здесь правила разграничения доступа формулируются следующим образом.
1. Для любого объекта операционной системы существует владелец.
2. Владелец объекта может произвольно ограничивать доступ других субъектов к данному объекту.
3. Для каждой четверки субъект-объект-метод-процесс возможность доступа определена однозначно.
4. Существует хотя бы один привилегированный пользователь (администратор), имеющий возможность обратиться к любому объекту по любому методу.
5. Для каждого субъекта определен список программ, которые этот субъект может запускать.
При использовании изолированной программной среды права субъекта на доступ к объекту определяются не только правами и привилегиями субъекта, но и процессом, с помощью которого субъект обращается к объекту.
3. Полномочное разграничение доступа без контроля информационных потоков. Полномочное или мандатное разграничение доступа (mandatory access control) обычно применяется в совокупности с избирательным. При этом правила разграничения доступа формулируются следующим образом.
1. Для любого объекта операционной системы существует владелец.
2. Владелец объекта может произвольно ограничивать доступ других субъектов к данному объекту.
3. Для каждой тройки субъект-объект-метод возможность доступа определена однозначно.
4. Существует хотя бы один привилегированный пользователь (администратор), имеющий возможность удалить любой объект.
В множестве объектов доступа операционной системы выделяется подмножество объектов полномочного разграничения доступа. Каждый объект полномочного разграничения доступа имеет гриф секретности
4. Полномочное разграничение доступа с контролем информационных потоков. Как и в предыдущем случае, мы будем рассматривать данную модель разграничения доступа в совокупности с избирательным разграничением доступа. Правила разграничения доступа в данной модели формулируются следующим образом.
1), 2) аналогичны полномочному разграничению доступа без контроля информационных потоков
Для каждой четверки субъект-объект-метод-процесс возможность доступа определена однозначно в каждый момент времени. При изменении состояния процесса со временем возможность предоставления доступа также может измениться, т.е. если в некоторый момент времени к некоторому объекту разрешен доступ некоторого субъекта посредством некоторого процесса, это не означает, что в другой момент времени доступ тоже будет разрешен.
4), 5), 6) аналогичны полномочному разграничению доступа без контроля информационных потоков
7. Если:
объект является объектом полномочного разграничения доступа,
гриф секретности объекта строго выше уровня допуска субъекта, обращающегося к нему,
субъект открывает объект в режиме, допускающем чтение информации,
то доступ субъекта к объекту должен быть запрещен независимо от состояния матрицы доступа.
Аудит
Процедура аудита применительно к операционным системам заключается в регистрации в специальном журнале, называемом журналом аудита или журналом безопасности, событий, которые могут представлять опасность для операционной системы. Пользователи системы, обладающие правом чтения этого журнала, называются аудиторами
Подсистема аудита операционной системы должна удовлетворять следующим требованиям:
1. Только сама операционная система может добавлять записи в журнал аудита. Если предоставить это право какому-то физическому пользователю, этот пользователь получит возможность компрометировать других пользователей, добавляя в журнал аудита соответствующие записи.
2. Ни один субъект доступа, в том числе и сама операционная система, не имеет возможности редактировать или удалять отдельные записи в журнале аудита.
3. Только пользователи-аудиторы, обладающие соответствующей привилегией, могут просматривать журнал аудита.
4. Только пользователи-аудиторы могут очищать журнал аудита. После очистки журнала в него автоматически вносится запись о том, что журнал аудита был очищен, с указанием времени очистки журнала и имени пользователя, очистившего журнал. Операционная система должна поддерживать возможность сохранения журнала аудита перед очисткой в другом файле.
5. При переполнении журнала аудита операционная система аварийно завершает работу ("зависает"). После перезагрузки работать с системой могут только аудиторы. Операционная система переходит к обычному режиму работы только после очистки журнала аудита.
Для обеспечения надежной защиты операционной системы в журнале аудита должны обязательно регистрироваться следующие события:
попытки входа/выхода пользователей из системы;
попытки изменения списка пользователей;
попытки изменения политики безопасности, в том числе и политики аудита.
Основные административные меры защиты. (задачи)
1. Постоянный контроль корректности функционирования операционной системы, особенно ее подсистемы защиты. Такой контроль наиболее удобно организовать, если операционная система поддерживает регистрацию событий (event logging). В этом случае операционная система автоматически регистрирует в специальном журнале (или нескольких журналах) наиболее важные события, произошедшие в процессе функционирования системы.
2. Организация и поддержание адекватной политики безопасности.
Политика безопасности должна постоянно корректироваться, оперативно реагируя на изменения в конфигурации операционной системы, установку, удаление и изменение конфигурации прикладных программных продуктов и расширений операционной системы, попытки злоумышленников преодолеть защиту операционной системы и т.д.
3. Инструктирование пользователей операционной системы о необходимости соблюдения мер безопасности при работе с операционной системой и контроль за соблюдением этих мер.
4. Регулярное создание и обновление резервных копий программ и данных операционной системы.
Постоянный контроль изменений в конфигурационных данных и политике безопасности операционной системы.
Основные принципы администрирования ОС.
Непрерывность;
Комплексность;
Актуальность;
Адекватность;
Непротиворечивость. (разграничение доступа, настроек процессов);
Формальный подход. Применение методик (инструкций, положений, приказов, РД и прочих рекомендательных документов) и четких концептуальных принципов при постановке задач администрирования и их реализации;
Подконтрольность.

6.Классификация вычислительных сетей. Одноранговая сеть. Сети с централизованным управлением.
В основу классификации ТВС положены наиболее характерные функциональные, информационные и структурные признаки.
По степени территориальной рассредоточенности элементов сети (абонентских систем, узлов связи) различают глобальные (государственные), региональные и локальные вычислительные сети (ГВС, РВС и ЛВС).
По характеру реализуемых функций сети делятся на вычислительные (основные функции таких сетей - обработка информации), информационные (для получения справочных данных по запросам пользователей), информационно-вычислительные, или смешанные, в которых в определенном, непостоянном соотношении выполняются вычислительные и информационные функции.
По способу управления ТВС делятся на сети с централизованным (в сети имеется один или несколько управляющих органов), децентрализованным (каждая АС имеет средства для управления сетью) и смешанным управлением, в которых в определенном сочетании реализованы принципы централизованного и децентрализованного управления (например, под централизованным управлением решаются только задачи с высшим приоритетом, связанные с обработкой больших объемов информации).
По организации передачи информации сети делятся на сети с селекцией информации и маршрутизацией информации. В сетях с селекцией информации, строящихся на основе моноканала, взаимодействие АС произвол дится выбором (селекцией) адресованных им блоков данных (кадров): всем АС сети доступны все передаваемые в сети кадры, но копию кадра снимают только АС, которым они предназначены. В сетях с маршрутизацией информации для передачи кадров от отправителя к получателю может использоваться несколько маршрутов. Поэтому с помощью коммуникационных систем сети решается задача выбора оптимального (например, кратчайшего по времени доставки кадра адресату) маршрута.
По типу организации передачи данных сети с маршрутизацией информации делятся на сети с коммутацией цепей (каналов), коммутацией сообщений и коммутацией пакетов. В эксплуатации находятся сети, в которых используются смешанные системы передачи данных.
По топологии, т.е. конфигурации элементов в ТВС, сети делятся на два класса: широковещательные и последовательные. Широковещательные конфигурации и значительная часть последовательных конфигураций (кольцо, звезда с интеллектуальным центром, иерархическая) характерны для ЛВС. Для глобальных и региональных сетей наиболее распространенной является произвольная (ячеистая топология). Нашли применение также иерархическая конфигурация и "звезда".
В одноранговой сети любой компьютер может совместно использовать каталоги на жестком диске и принтеры с любым другим подключенным к нему компьютером. Большая часть программного обеспечения для одноранговых сетей, в том числе и Windows 9х, позволяет разделять дисководы CD-ROM, а некоторые и модем. Основные ограничения для одноранговых сетей следующие:
- Количество компьютеров в одноранговой сети должно быть в пределах 10-30, в зависимости от интенсивности обмена информационными сообщениями в сети.
- Не принято использовать компьютеры, связанные одноранговой сетью, в качестве серверов приложений (сервер приложений компьютер, который позволяет другим компьютерам запускать Windows и приложения с него, а не со своих локальных дисков). Такие сети предназначены только для разделения ресурсов, таких как файлы, многопользовательские базы данных, модемы, сканеры или принтеры.
- Работа приложений на компьютере, служащем сервером в одноранговой сети, ухудшается, когда ресурсы этого компьютера используются другими. Можно управлять степенью ухудшения производительности, назначая более высокие приоритеты локальным задачам, однако при этом замедляется доступ других пользователей сети к файлам и принтерам в сети.
Сети с централизованным управлением.В сети с централизованным управлением выделяются одна или несколько машин, управляющих обменом данными по сети. Диски выделенных машин, которые называются файл-серверами, доступны всем остальным компьютерам сети. На файл-серверах должна работать специальная сетевая операционная система. Обычно это мультизадачная ОS, использующая защищенный режим работы процессора.
Остальные компьютеры называются рабочими станциями. Рабочие станции имеют доступ к дискам файл-сервера и совместно используемым принтерам, но и только. С одной рабочей станции нельзя работать с дисками других рабочих станций. С одной стороны, это хорошо, так как пользователи изолированы друг от друга и не могут случайно повредить чужие данные. С другой стороны, для обмена данными пользователи вынуждены использовать диски файл-сервера, создавая для него дополнительную нагрузку.
Есть, однако, специальные программы, работающие в сети с централизованным управлением и позволяющие передавать данные непосредственно от одной рабочей станции к другой минуя файл-сервер. Пример такой программы - программа NetLink. После ее запуска на двух рабочих станциях можно передавать файлы с диска одной станции на диск другой, аналогично тому, как копируются файлы из одного каталога в другой при помощи программы Norton Commander.
На рабочих станциях должно быть установлено специальное программное обеспечение, часто называемое сетевой оболочкой. Это обеспечение работает в среде той ОS, которая используется на данной рабочей станции, - DOS, OS/2 и т.д.
Файл-серверы могут быть выделенными или невыделенными. В первом случае файл-сервер не может использоваться как рабочая станция и выполняет только задачи управления сетью. Во втором случае параллельно с задачей управления сетью файл-сервер выполняет обычные пользовательские программы в среде MS-DOS. Однако при этом снижается производительность файл-сервера и надежность работы всей сети в целом, так как ошибка в пользовательской программе, запущенной на файл-сервере, может привести к остановке работы всей сети. Поэтому не рекомендуется использовать невыделенные файл-серверы, особенно в ответственных случаях. Существуют различные сетевые ОS, ориентированные на сети с централизованным управлением. Самые известные из них - Novell NetWare, Microsoft Lan Manager (на базе OS/2), а также выполненная на базе UNIX сетевая ОS VINES.
7.Сетевые компоненты ОС семейства Windows. Сетевые протоколы. Сетевые клиенты.
Сетевая модель OSI (англ. Open Systems Interconnection Reference Model-OSI модель взаимосвязи открытых систем) абстрактная модель для сетевых коммуникаций и разработки сетевых протоколов. Представляет уровневый подход к сети. Каждый уровень обслуживает свою часть процесса взаимодействия. Благодаря такой структуре совместная работа сетевого оборудования и программного обеспечения становится гораздо проще и понятнее.
Разумеется, в настоящее время основным используемым семейством протоколов является TCP/IP, разработка которого не была связана с моделью OSI. За все время существования модели OSI она не была реализована, и, по-видимому, не будет реализована никогда
Прикладной уровень (Application layer)
Верхний (7-й) уровень модели, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления.
Уровень представления (Presentation layer)
Этот уровень отвечает за преобразование протоколов и кодирование/декодирование данных. Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. На этом уровне может осуществляться сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.
Сеансовый уровень (Session layer)
Отвечает за поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время. Уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Синхронизация передачи обеспечивается помещением в поток данных контрольных точек, начиная с которых возобновляется процесс при нарушении взаимодействия
Транспортный уровень (Transport layer)
4-й уровень модели, предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности, как они были переданы. При этом неважно, какие данные передаются, откуда и куда, то есть он предоставляет сам механизм передачи. Блоки данных он разделяет на фрагменты, размер которых зависит от протокола, короткие объединяет в один, а длинные разбивает. Протоколы этого уровня предназначены для взаимодействия типа точка-точка.
Сетевой уровень (Network layer)
3-й уровень сетевой модели OSI, предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. На этом уровне работает такое сетевое устройство, как маршрутизатор.
Канальный уровень (Data Link layer)
Этот уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть. Полученные с физического уровня данные он упаковывает в кадры данных, проверяет на целостность, если нужно исправляет ошибки и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня. На этом уровне работают коммутаторы, мосты.
В программировании этот уровень представляет драйвер сетевой платы, в операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровня между собой, это не новый уровень, а просто реализация модели для конкретной ОС. Примеры таких интерфейсов: ODI, NDIS.
Физический уровень (Physical layer)
Самый нижний уровень модели, предназначен непосредственно для передачи потока данных. Осуществляет передачу электрических или оптических сигналов в кабель и соответственно их приём и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов. Другими словами, осуществляет интерфейс между сетевым носителем и сетевым устройством. На этом уровне работают концентраторы, повторители (ретрансляторы) сигнала и медиа конверторы.
8.IP – адресация. Классы адресов. Маска подсети.
Согласно спецификации протокола, каждому узлу, подсоединенному к IP-сети, присваивается уникальный номер. Узел может представлять собой компьютер, маршрутизатор, межсетевой экран и др. Если один узел имеет несколько физических подключений к сети, то каждому подключению должен быть присвоен свой уникальный номер.
Этот номер, или по-другому IP-адрес, имеет длину в четыре октета, и состоит из двух частей. Первая часть определяет сеть, к которой принадлежит узел, а вторая -- уникальный адрес самого узла внутри сети.
Номер сети Номер узла

11011100 11010111 00001110 00010110
Изначально все адресное пространство разделили на пять классов: A, B, C, D и Е. Такая схема получила название "классовой". Каждый класс однозначно идентифицировался первыми битами левого байта адреса. Сами же классы отличались размерами сетевой и узловой частей. Зная класс адреса, вы могли определить границу между его сетевой и узловой частями. Кроме того, такая схема позволяла при маршрутизации не передавать вместе с пакетом информацию о длине сетевой части IP-адреса.
Класс А ориентирован на очень большие сети. Все адреса, принадлежащие этому классу, имеют 8-битный сетевой префикс, на что указывает первый бит левого байта адреса установленный в нуль. Соответственно, на идентификацию узла отведено 24 бита и каждая сеть "восьмерка" может содержать до 224-2 узлов. Два адреса необходимо отнять, поскольку адреса, содержащие в правом октете все нули (идентифицирует указанную сеть) и все единицы (широковещательный адрес) используются в служебных целях и не могут быть присвоены узлам.
Самих же сетей "восьмерок" может быть 27-2. Снова мы вычитаем двойку, но это уже две служебных сети: 127/8 и 0/8 (по-старому: 127.0.0.0 и 0.0.0.0).
Наконец, можно заметить, что класс А содержит всего 27 * 224 = 231 адресов, или половину всех возможных IP-адресов.
Класс В предназначен для сетей большого и среднего размеров. Адреса этого класса идентифицируются двумя старшими битами, равными соответственно 1 и 0. Сетевой префикс класса состоит из шестнадцати бит или первых двух октетов адреса.
Поскольку два первых бита сетевого префикса заняты определяющим класс ключом, то можно задать лишь 214 различных сетей. Узлов же в каждой сети можно определить до 216-2.
В некоторых источниках, для определения количества возможных сетей используется формула 2х-2 для всех классов, а не только для А. Это связано с определенными причинами, которые более детально будут изложены ниже. На сегодняшний день нет никакой необходимости уменьшать количество возможных сетей на две.
Проведя вычисления, аналогичные приведенным для класса А, мы увидим, что класс В занимает четверть адресного пространства протокола IP.
Наконец, самый употребляемый класс сетей – класс С – имеет 24 битный сетевой префикс, определяется старшими битами, установленными в 110, и может идентифицировать до 221 сетей. Соответственно, класс позволяет адресовать до 28-2 узлов. Занимает восьмую часть адресного пространства протокола TCP/IP.
Последние два класса занимают оставшуюся восьмую часть в адресном пространстве и предназначены для служебного (класс D) и экспериментального (класс Е) использования. Для класса D старшие четыре бита адреса установлены в 1110, для класса Е -- 1111. Сегодня класс D используется для групповой передачи информации.
Поскольку длинные последовательности из единиц и нулей трудно запомнить, IP адреса обычно записывают в десятичной форме. Для этого каждый октет адреса представляется в виде десятичного числа. Между собой октеты отделяются точкой. Иногда октеты обозначаются как w.x.y.z и называются "z-октет", "y-октет", "x-октет" и "w-октет".
терминологии сетей TCP/IP маской подсети или маской сети называется битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая к адресу самого узла в этой сети. Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.0.0 находится в сети 12.34.0.0.
Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (логическое И). Например, в случае более сложной маски:
IP-адрес: 00001100 00100010 00111000 01001110 (12.34.56.78)
Маска подсети: 11111111 11111111 11100000 00000000 (255.255.224.0)
Адрес сети: 00001100 00100010 00100000 00000000 (12.34.32.0)
Маску подсети часто записывают вместе с IP-адресом нотации CIDR (в формате «IP-адрес/количество единичных бит в маске»).
Разбиение одной большой сети на несколько маленьких подсетей позволяет упростить маршрутизацию. Например, пусть таблица маршрутизации некоего маршрутизатора содержит следующую запись:
Сеть назначения Маска Адрес шлюза
255.255.255.0
Пусть теперь маршрутизатор получает пакет данных с адресом назначения 12.34.56.78. Обрабатывая построчно таблицу маршрутизации, он обнаруживает, что при наложении маски 255.255.0.0 на адрес 12.34.56.78 получается адрес сети 12.34.0.0. В таблице маршрутизации этой сети соответствует шлюз 11.22.3.4, которому и отправляется пакет.
Маски подсети являются основой метода бесклассовой маршрутизации.
Назначение маски подсети
Маска назначается по следующей схеме 28
· n (для сетей класса C), где n - количество компьютеров в подсети + 2, округленное до ближайшей большей степени двойки.
Пример: В некой сети класса C есть 30 компьютеров, маска для такой сети вычисляется следующим образом:
28 - 32 = 224 (0E0h) < = > 255.255.255.224 (0xFFFFFFE0)

Организация общего доступа к сетевому ресурсу.
Вам необходимо выбрать свойства папки, ресурсами который, вы хотите поделиться с пользователями сети и перейти на закладку доступ.
"Открыть общий доступ к папке" - позволяет пользователям сети копировать файлы, содержащиеся в данной папке в режиме "только чтение". Изменить ваши или записать свои файлы они не смогут.
"Общий Ресурс" - это сетевое имя папки, под ним она будет отображаться в ЛВС. Сетевое имя не обязательно должно совпадать с именем самой папки.
"Разрешить изменение файлов по сети" - позволяет пользователям копировать в эту папку свои файлы, а так же изменять ваши. По соображениям безопасности не стоит открывать полный доступ к системным папкам (Windows, Program Files) и содержащим важные для вас данные. Лучше всего создать специальную папку для входящих файлов (например Income) и открыть полный доступ только к ней.
Расширенный общий доступ к файлам
Собственно, это основной режим, известный ещё со времён Windows 2000. Как правило, для работы в домашней сети достаточно режима "Простой общий доступ к файлам", однако, если требуется более серьёзное разграничение, необходимо включить "Расширенный общий доступ", для этого, в любом окне нужно выбрать: Сервис > Свойства папки > Вид, и убрать галочку с параметра "Использовать простой общий доступ к файлам".
"Предельное число пользователей" - имеет смысл ограничивать только в очень больших сетях или на слабых компьютерах.
"Кэширование" - знакомая по Internet Explorer функция, которая позволяет переписывать содержимое папок себе на жесткий диск, чтобы в случае отключения удаленного компьютера работа с документами не прервалась.
"Разрешения" - настройки пользователей, которым будет доступна данная папка.
Необходимое условие для нормальной работы в расширенном режиме состоит в том, чтобы на компьютере, к которому вы обращаетесь, существовала учетная запись с таким же именем и паролем, как и на вашем. Причем пароль не должен быть пустым.
Например, вы пытаетесь c компьютера с именем SYS01 получить доступ к папке "Pictures", находящейся на компьютере Server из под учетной записи User01. При этом на компьютере Server также должна существовать учетная запись User01. Если нет, тогда её необходимо создать.
Создать новые учетные записи в Windows XP можно на закладке. "Пуск">"Настройка">"Панель Управления">"Учетные записи пользователей". Учетная запись "Гость" позволяет получать доступ любому пользователю, с любого компьютера входящего в сеть, логично назначить гостевой доступ в ограниченном режиме.

Принципы управления ресурсами в операционной системе; управление вычислительными процессами, вводом-выводом, реальной памятью; управление виртуальной памятью.
Управление процессами
Важнейшей частью операционной системы, непосредственно влияющей на функционирование вычислительной машины, является подсистема управления процессами. Процесс или задача является некоторой абстракцией, описывающей выполняющуюся программу. Для операционной системы процесс представляет собой единицу работы или заявку на потребление системных ресурсов. Подсистема управления процессами планирует выполнение процессов, то есть распределяет процессорное время между несколькими одновременно существующими в системе процессами, создает их и уничтожает, обеспечивает необходимыми системными ресурсами, поддерживает между ними взаимодействие. В многозадачной системе процесс может находиться в одном из трех основных состояний:
ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого он обладает всеми необходимыми ресурсами и непосредственно выполняется процессором компьютера;
ОЖИДАНИЕ - пассивное состояние процесса, когда процесс заблокирован по своим внутренним причинам и ждет наступления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;
ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса.
В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной операционной системе.
Функции базовой подсистемы ввода-вывода
Базовая подсистема ввода-вывода служит посредником между процессами вычислительной системы и набором драйверов. Системные вызовы для выполнения операций ввода-вывода трансформируются ею в вызовы функций необходимого драйвера устройства. Однако обязанности базовой подсистемы не сводятся к выполнению только действий трансляции общего системного вызова в обращение к частной функции драйвера. Базовая подсистема предоставляет вычислительной системе такие услуги, как поддержка блокирующихся, неблокирующихся и асинхронных системных вызовов, буферизация и кэширование входных и выходных данных, осуществление spooling'a и монопольного захвата внешних устройств, обработка ошибок и прерываний, возникающих при операциях ввода-вывода, планирование последовательности запросов на выполнение этих операций.
Физическая организация памяти компьютера
Запоминающие устройства компьютера разделяют, как минимум, на два уровня: основную (главную, оперативную, физическую) и вторичную (внешнюю) память.
Основная память представляет собой упорядоченный массив однобайтовых ячеек, каждая из которых имеет свой уникальный адрес (номер). Процессор извлекает команду из основной памяти, декодирует и выполняет ее. Для выполнения команды могут потребоваться обращения еще к нескольким ячейкам основной памяти. Обычно основная память изготавливается с применением полупроводниковых технологий и теряет свое содержимое при отключении питания.
Вторичную память (это главным образом диски) также можно рассматривать как одномерное линейное адресное пространство, состоящее из последовательности байтов. В отличие от оперативной памяти, она является энергонезависимой, имеет существенно большую емкость и используется в качестве расширения основной памяти.
Функции системы управления памятью
Чтобы обеспечить эффективный контроль использования памяти, ОС должна выполнять следующие функции:
отображение адресного пространства процесса на конкретные области физической памяти;
распределение памяти между конкурирующими процессами;
контроль доступа к адресным пространствам процессов;
выгрузка процессов (целиком или частично) во внешнюю память, когда в оперативной памяти недостаточно места;
учет свободной и занятой памяти.
Простейшие схемы управления памятью
Первые ОС применяли очень простые методы управления памятью. Вначале каждый процесс пользователя должен был полностью поместиться в основной памяти, занимать непрерывную область памяти, а система принимала к обслуживанию дополнительные пользовательские процессы до тех пор, пока все они одновременно помещались в основной памяти. Затем появился "простой свопинг" (система по-прежнему размещает каждый процесс в основной памяти целиком, но иногда на основании некоторого критерия целиком сбрасывает образ некоторого процесса из основной памяти во внешнюю и заменяет его в основной памяти образом другого процесса).
Понятие виртуальной памяти
Суть концепции виртуальной памяти заключается в следующем. Информация, с которой работает активный процесс, должна располагаться в оперативной памяти. В схемах виртуальной памяти у процесса создается иллюзия того, что вся необходимая ему информация имеется в основной памяти. Для этого, во-первых, занимаемая процессом память разбивается на несколько частей, например страниц. Во-вторых, логический адрес (логическая страница), к которому обращается процесс, динамически транслируется в физический адрес (физическую страницу). И, наконец, в тех случаях, когда страница, к которой обращается процесс, не находится в физической памяти, нужно организовать ее подкачку с диска. Для контроля наличия страницы в памяти вводится специальный бит присутствия, входящий в состав атрибутов страницы в таблице страниц.
Таким образом, в наличии всех компонентов процесса в основной памяти необходимости нет. Важным следствием такой организации является то, что размер памяти, занимаемой процессом, может быть больше, чем размер оперативной памяти. Принцип локальности обеспечивает этой схеме нужную эффективность.
Возможность выполнения программы, находящейся в памяти лишь частично, имеет ряд вполне очевидных преимуществ.
Программа не ограничена объемом физической памяти. Упрощается разработка программ, поскольку можно задействовать большие виртуальные пространства, не заботясь о размере используемой памяти.
Поскольку появляется возможность частичного помещения программы (процесса) в память и гибкого перераспределения памяти между программами, можно разместить в памяти больше программ, что увеличивает загрузку процессора и пропускную способность системы.
Объем ввода-вывода для выгрузки части программы на диск может быть меньше, чем в варианте классического свопинга, в итоге каждая программа будет работать быстрее.
11.Состояния процессов, наследование ресурсов, тупиковые ситуации, обработка исключений, сохранение и восстановление процессов
Состояние процессов
В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний:
ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;
ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;
ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса.
В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной операционной системе. Типичный граф состояний процесса показан на рисунке 2.1.
В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно "вытеснен" из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет.
Тупиковые ситуации
Если переставить местами операции P(e) и P(b) в программе "писателе", то при некотором стечении обстоятельств эти два процесса могут взаимно заблокировать друг друга. Действительно, пусть "писатель" первым войдет в критическую секцию и обнаружит отсутствие свободных буферов; он начнет ждать, когда "читатель" возьмет очередную запись из буфера, но "читатель" не сможет этого сделать, так как для этого необходимо войти в критическую секцию, вход в которую заблокирован процессом "писателем".
В зависимости от соотношения скоростей процессов, они могут либо совершенно независимо использовать разделяемые ресурсы (г), либо образовывать очереди к разделяемым ресурсам (в), либо взаимно блокировать друг друга (б). Тупиковые ситуации надо отличать от простых очередей, хотя и те и другие возникают при совместном использовании ресурсов и внешне выглядят похоже: процесс приостанавливается и ждет освобождения ресурса. Однако очередь - это нормальное явление, неотъемлемый признак высокого коэффициента использования ресурсов при случайном поступлении запросов. Она возникает тогда, когда ресурс недоступен в данный момент, но через некоторое время он освобождается, и процесс продолжает свое выполнение. Тупик же, что видно из его названия, является в некотором роде неразрешимой ситуацией.
12.Операции над процессами. PCB и контекст процесса. Одноразовые операции. Многоразовые операции. Переключения контекста.
Набор операций
Процесс не может перейти из одного состояния в другое самостоятельно. Изменением состояния процессов занимается операционная система, совершая операции над ними. Количество таких операций в нашей модели пока совпадает с количеством стрелок на диаграмме состояний. Удобно объединить их в три пары:
создание процесса – завершение процесса;
приостановка процесса (перевод из состояния исполнение в состояние готовность) – запуск процесса (перевод из состояния готовность в состояние исполнение);
блокирование процесса (перевод из состояния исполнение в состояние ожидание) – разблокирование процесса (перевод из состояния ожидание в состояние готовность).
В дальнейшем, когда мы будем говорить об алгоритмах планирования, в нашей модели появится еще одна операция, не имеющая парной: изменение приоритета процесса.
Операции создания и завершения процесса являются одноразовыми, так как применяются к процессу не более одного раза (некоторые системные процессы при работе вычислительной системы не завершаются никогда). Все остальные операции, связанные с изменением состояния процессов, будь то запуск или блокировка, как правило, являются многоразовыми. Рассмотрим подробнее, как операционная система выполняет операции над процессами.
Process Control Block и контекст процесса
Для того чтобы операционная система могла выполнять операции над процессами, каждый процесс представляется в ней некоторой структурой данных. Эта структура содержит информацию, специфическую для данного процесса:
состояние, в котором находится процесс;
программный счетчик процесса или, другими словами, адрес команды, которая должна быть выполнена для него следующей;
содержимое регистров процессора;
данные, необходимые для планирования использования процессора и управления памятью (приоритет процесса, размер и расположение адресного пространства и т. д.);
учетные данные (идентификационный номер процесса, какой пользователь инициировал его работу, общее время использования процессора данным процессом и т. д.);
сведения об устройствах ввода-вывода, связанных с процессом (например, какие устройства закреплены за процессом, таблицу открытых файлов).
Ее состав и строение зависят, конечно, от конкретной операционной системы. Во многих операционных системах информация, характеризующая процесс, хранится не в одной, а в нескольких связанных структурах данных. Эти структуры могут иметь различные наименования, содержать дополнительную информацию или, наоборот, лишь часть описанной информации. Для нас это не имеет значения. Для нас важно лишь то, что для любого процесса, находящегося в вычислительной системе, вся информация, необходимая для совершения операций над ним, доступна операционной системе. Для простоты изложения будем считать, что она хранится в одной структуре данных. Мы будем называть ее PCB (Process Control Block) или блоком управления процессом. Блок управления процессом является моделью процесса для операционной системы. Любая операция, производимая операционной системой над процессом, вызывает определенные изменения в PCB. В рамках принятой модели состояний процессов содержимое PCB между операциями остается постоянным.
Многоразовые операции
Одноразовые операции приводят к изменению количества процессов, находящихся под управлением операционной системы, и всегда связаны с выделением или освобождением определенных ресурсов. Многоразовые операции, напротив, не приводят к изменению количества процессов в операционной системе и не обязаны быть связанными с выделением или освобождением ресурсов.
Запуск процесса. Из числа процессов, находящихся в состоянии готовность, операционная система выбирает один процесс для последующего исполнения. Для избранного процесса операционная система обеспечивает наличие в оперативной памяти информации, необходимой для его дальнейшего выполнения. Далее состояние процесса изменяется на исполнение, восстанавливаются значения регистров для данного процесса и управление передается команде, на которую указывает счетчик команд процесса. Все данные, необходимые для восстановления контекста, извлекаются из PCB процесса, над которым совершается операция.
Приостановка процесса. Работа процесса, находящегося в состоянии исполнение, приостанавливается в результате какого-либо прерывания. Процессор автоматически сохраняет счетчик команд и, возможно, один или несколько регистров в стеке исполняемого процесса, а затем передает управление по специальному адресу обработки данного прерывания. На этом деятельность hardware по обработке прерывания завершается. По указанному адресу обычно располагается одна из частей операционной системы. Она сохраняет динамическую часть системного и регистрового контекстов процесса в его PCB, переводит процесс в состояние готовность и приступает к обработке прерывания, то есть к выполнению определенных действий, связанных с возникшим прерыванием.
Блокирование процесса. Процесс блокируется, когда он не может продолжать работу, не дождавшись возникновения какого-либо события в вычислительной системе. Для этого он обращается к операционной системе с помощью определенного системного вызова. Операционная система обрабатывает системный вызов (инициализирует операцию ввода-вывода, добавляет процесс в очередь процессов, дожидающихся освобождения устройства или возникновения события, и т. д.) и, при необходимости сохранив нужную часть контекста процесса в его PCB, переводит процесс из состояния исполнение в состояние ожидание.
Разблокирование процесса. После возникновения в системе какого-либо события операционной системе нужно точно определить, какое именно событие произошло. Затем операционная система проверяет, находился ли некоторый процесс в состоянии ожидание для данного события, и если находился, переводит его в состояние готовность, выполняя необходимые действия, связанные с наступлением события (инициализация операции ввода-вывода для очередного ожидающего процесса и т. п.).
Переключение контекста
До сих пор мы рассматривали операции над процессами изолированно, независимо друг от друга. В действительности же деятельность мультипрограммной операционной системы состоит из цепочек операций, выполняемых над различными процессами, и сопровождается переключением процессора с одного процесса на другой.
Давайте для примера упрощенно рассмотрим, как в реальности может протекать операция разблокирования процесса, ожидающего ввода-вывода (см. рис. 5). При исполнении процессором некоторого процесса (на рисунке – процесс 1) возникает прерывание от устройства ввода-вывода, сигнализирующее об окончании операций на устройстве. Над выполняющимся процессом производится операция приостановки. Далее операционная система разблокирует процесс, инициировавший запрос на ввод-вывод (на рисунке – процесс 2) и осуществляет запуск приостановленного или нового процесса, выбранного при выполнении планирования (на рисунке был выбран разблокированный процесс). Как мы видим, в результате обработки информации об окончании операции ввода-вывода возможна смена процесса, находящегося в состоянии исполнение.

Рис. 2.5. Выполнение операции разблокирования процесса. Использование термина "код пользователя" не ограничивает общности рисунка только пользовательскими процессами
Для корректного переключения процессора с одного процесса на другой необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста. Время, затраченное на переключение контекста, не используется вычислительной системой для совершения полезной работы и представляет собой накладные расходы, снижающие производительность системы. Оно меняется от машины к машине и обычно колеблется в диапазоне от 1 до 1000 микросекунд. Существенно сократить накладные расходы в современных операционных системах позволяет расширенная модель процессов, включающая в себя понятие threads of execution (нити исполнения или просто нити).
13.Планирование заданий пользователей. Критерии планирования и требования к алгоритмам. Вытесняющее и невытесняющее планирование.
Критерии планирования и требования к алгоритмам
Для каждого уровня планирования процессов можно предложить много различных алгоритмов. Выбор конкретного алгоритма определяется классом задач, решаемых вычислительной системой, и целями, которых мы хотим достичь, используя планирование. К числу таких целей можно отнести следующие:
Справедливость – гарантировать каждому заданию или процессу определенную часть времени использования процессора в компьютерной системе, стараясь не допустить возникновения ситуации, когда процесс одного пользователя постоянно занимает процессор, в то время как процесс другого пользователя фактически не начинал выполняться.
Эффективность – постараться занять процессор на все 100% рабочего времени, не позволяя ему простаивать в ожидании процессов, готовых к исполнению. В реальных вычислительных системах загрузка процессора колеблется от 40 до 90%.
Сокращение полного времени выполнения (turnaround time) – обеспечить минимальное время между стартом процесса или постановкой задания в очередь для загрузки и его завершением.
Сокращение времени ожидания (waiting time) – сократить время, которое проводят процессы в состоянии готовность и задания в очереди для загрузки.
Сокращение времени отклика (response time) – минимизировать время, которое требуется процессу в интерактивных системах для ответа на запрос пользователя.
Независимо от поставленных целей планирования желательно также, чтобы алгоритмы обладали следующими свойствами.
Были предсказуемыми. Одно и то же задание должно выполняться приблизительно за одно и то же время. Применение алгоритма планирования не должно приводить, к примеру, к извлечению квадратного корня из 4 за сотые доли секунды при одном запуске и за несколько суток – при втором запуске.
Были связаны с минимальными накладными расходами. Если на каждые 100 миллисекунд, выделенные процессу для использования процессора, будет приходиться 200 миллисекунд на определение того, какой именно процесс получит процессор в свое распоряжение, и на переключение контекста, то такой алгоритм, очевидно, применять не стоит.
Равномерно загружали ресурсы вычислительной системы, отдавая предпочтение тем процессам, которые будут занимать малоиспользуемые ресурсы.
Обладали масштабируемостью, т. е. не сразу теряли работоспособность при увеличении нагрузки. Например, рост количества процессов в системе в два раза не должен приводить к увеличению полного времени выполнения процессов на порядок.
Вытесняющее и невытесняющее планирование
Процесс планирования осуществляется частью операционной системы, называемой планировщиком. Планировщик может принимать решения о выборе для исполнения нового процесса из числа находящихся в состоянии готовность в следующих четырех случаях.
Когда процесс переводится из состояния исполнение в состояние закончил исполнение.
Когда процесс переводится из состояния исполнение в состояние ожидание.
Когда процесс переводится из состояния исполнение в состояние готовность (например, после прерывания от таймера).
Когда процесс переводится из состояния ожидание в состояние готовность (завершилась операция ввода-вывода или произошло другое событие). Подробно процедура такого перевода рассматривалась в лекции 2 (раздел "Переключение контекста"), где мы показали, почему при этом возникает возможность смены процесса, находящегося в состоянии исполнение.
В случаях 1 и 2 процесс, находившийся в состоянии исполнение, не может дальше исполняться, и операционная система вынуждена осуществлять планирование выбирая новый процесс для выполнения. В случаях 3 и 4 планирование может как проводиться, так и не проводиться, планировщик не вынужден обязательно принимать решение о выборе процесса для выполнения, процесс, находившийся в состоянии исполнение может просто продолжить свою работу. Если в операционной системе планирование осуществляется только в вынужденных ситуациях, говорят, что имеет место невытесняющее (nonpreemptive) планирование. Если планировщик принимает и вынужденные, и невынужденные решения, говорят о вытесняющем (preemptive) планировании. Термин "вытесняющее планирование" возник потому, что исполняющийся процесс помимо своей воли может быть вытеснен из состояния исполнение другим процессом.
Невытесняющее планирование используется, например, в MS Windows 3.1 и ОС Apple Macintosh. При таком режиме планирования процесс занимает столько процессорного времени, сколько ему необходимо. При этом переключение процессов возникает только при желании самого исполняющегося процесса передать управление (для ожидания завершения операции ввода-вывода или по окончании работы). Этот метод планирования относительно просто реализуем и достаточно эффективен, так как позволяет выделить большую часть процессорного времени для работы самих процессов и до минимума сократить затраты на переключение контекста. Однако при невытесняющем планировании возникает проблема возможности полного захвата процессора одним процессом, который вследствие каких-либо причин (например, из-за ошибки в программе) зацикливается и не может передать управление другому процессу. В такой ситуации спасает только перезагрузка всей вычислительной системы.
Вытесняющее планирование обычно используется в системах разделения времени. В этом режиме планирования процесс может быть приостановлен в любой момент исполнения. Операционная система устанавливает специальный таймер для генерации сигнала прерывания по истечении некоторого интервала времени – кванта. После прерывания процессор передается в распоряжение следующего процесса. Временные прерывания помогают гарантировать приемлемое время отклика процессов для пользователей, работающих в диалоговом режиме, и предотвращают "зависание" компьютерной системы из-за зацикливания какой-либо программы.

Взаимодействие процессов в ОС, синхронизация процессов, обмен сообщениями.

Взаимодействие процессов


























Средства межпроцессного взаимодействия
( IPC - Inter-Process Communications)

Конвейеры
Конвейер представляет собой буфер в оперативной памяти, поддерживающий очередь байт по алгоритму FIFO
Системный вызов pipe позволяет двум процессам обмениваться неструктурированным потоком байт через этот буфер, который выглядит как безымянный файл, в который можно писать и читать, осуществляя тем самым обмен данными.
конвейеры, создаваемые системным вызовом pipe, иногда называют программными конвейерами (software-pipes).
Именованные конвейеры
Именованные конвейеры представляют собой развитие механизма обычных конвейеров. Такие конвейеры имеют имя, которое является записью в каталоге файловой системы ОС, поэтому они пригодны для обмена данными между двумя произвольными процессами или потоками этих процессов.
Именованные конвейеры основаны на файловой системе, в отличии от обычных, но используют файловую систему только для хранения имени конвейера в каталоге, а данные между процессами передаются через буфер в оперативной памяти и в случае программного конвейера.
Очереди сообщений
Механизм очередей сообщений похож на механизм конвейеров с тем отличием, что он позволяет процессам и потокам обмениваться структурированными сообщениями.
Очереди сообщений являются глобальными средствами коммуникаций для процессов ОС, как и именованные конвейеры, так как каждая очередь имеет в пределах ОС уникальное имя
Разделяемая память
Разделяемая память представляет собой сегмент физической памяти, отображенной в виртуальное адресное пространство двух или более процессов.
Механизм разделяемой памяти поддерживается подсистемой виртуальной памяти, которая настраивает таблицы отображения адресов для процессов, запросивших разделение памяти, так что одни и те же адреса некоторой области физической памяти соответствуют виртуальным адресам разных процессов.
Специфические средства межпроцессного обмена в конкретных ОС

Динамические, последовательные и параллельные структуры программ. Логическая организация механизма передачи информации. Нити исполнения.
Логическая организация механизма передачи информации
Могу ли я использовать средство связи непосредственно для обмена информацией сразу после создания процесса или первоначально необходимо предпринять определенные действия для инициализации обмена? Например, для использования общей памяти различными процессами потребуется специальное обращение к операционной системе, которая выделит необходимую область адресного пространства. Но для передачи сигнала от одного процесса к другому никакая инициализация не нужна. В то же время передача информации по линиям связи может потребовать первоначального резервирования такой линии для процессов, желающих обменяться информацией.
К этому же вопросу тесно примыкает вопрос о способе адресации при использовании средства связи. Если я передаю некоторую информацию, я должен указать, куда я ее передаю. Если я желаю получить некоторую информацию, то мне нужно знать, откуда я могу ее получить.
Различают два способа адресации: прямую и непрямую. В случае прямой адресации взаимодействующие процессы непосредственно общаются друг с другом, при каждой операции обмена данными явно указывая имя или номер процесса, которому информация предназначена или от которого она должна быть получена. Если и процесс, от которого данные исходят, и процесс, принимающий данные, указывают имена своих партнеров по взаимодействию, то такая схема адресации называется симметричной прямой адресацией. Ни один другой процесс не может вмешаться в процедуру симметричного прямого общения двух процессов, перехватить посланные или подменить ожидаемые данные. Если только один из взаимодействующих процессов, например передающий, указывает имя своего партнера по кооперации, а второй процесс в качестве возможного партнера рассматривает любой процесс в системе, например ожидает получения информации от произвольного источника, то такая схема адресации называется асимметричной прямой адресацией.
При непрямой адресации данные помещаются передающим процессом в некоторый промежуточный объект для хранения данных, имеющий свой адрес, откуда они могут быть затем изъяты каким-либо другим процессом. Примером такого объекта может служить обычная доска объявлений или рекламная газета. При этом передающий процесс не знает, как именно идентифицируется процесс, который получит информацию, а принимающий процесс не имеет представления об идентификаторе процесса, от которого он должен ее получить.
При использовании прямой адресации связь между процессами в классической операционной системе устанавливается автоматически, без дополнительных инициализирующих действий. Единственное, что нужно для использования средства связи, – это знать, как идентифицируются процессы, участвующие в обмене данными.
При использовании непрямой адресации инициализация средства связи может и не требоваться. Информация, которой должен обладать процесс для взаимодействия с другими процессами, – это некий идентификатор промежуточного объекта для хранения данных, если он, конечно, не является единственным и неповторимым в вычислительной системе для всех процессов.
Нити исполнения
В свое время внедрение идеи мультипрограммирования позволило повысить пропускную способность компьютерных систем, т.е. уменьшить среднее время ожидания результатов работы процессов. Но любой отдельно взятый процесс в мультипрограммной системе никогда не может быть выполнен быстрее, чем при выполнении в однопрограммном режиме на том же вычислительном комплексе. Тем не менее, если алгоритм решения задачи обладает определенным внутренним параллелизмом, мы могли бы ускорить его работу, организовав взаимодействие нескольких процессов
Введем новую абстракцию внутри понятия “процесс” – нить исполнения или просто нить (в англоязычной литературе используется термин thread). Нити процесса разделяют его программный код, глобальные переменные и системные ресурсы, но каждая нить имеет свой собственный программный счетчик, свое содержимое регистров и свой собственный стек. Теперь процесс представляется как совокупность взаимодействующих нитей и выделенных ему ресурсов. Процесс, содержащий всего одну нить исполнения, идентичен процессу в том смысле, который мы употребляли ранее. Для таких процессов мы в дальнейшем будем использовать термин “традиционный процесс”. Иногда нити называют облегченными процессами или мини-процессами, так как во многих отношениях они подобны традиционным процессам. Нити, как и процессы, могут порождать нити-потомки, правда, только внутри своего процесса, и переходить из состояния в состояние. Состояния нитей аналогичны состояниям традиционных процессов. Из состояния рождение процесс приходит содержащим всего одну нить исполнения. Другие нити процесса будут являться потомками этой нити прародительницы. Мы можем считать, что процесс находится в состоянии готовность, если хотя бы одна из его нитей находится в состоянии готовность и ни одна из нитей не находится в состоянии исполнение. Мы можем считать, что процесс находится в состоянии исполнение, если одна из его нитей находится в состоянии исполнение. Процесс будет находиться в состоянии ожидание, если все его нити находятся в состоянии ожидание. Наконец, процесс находится в состоянии завершил исполнение, если все его нити находятся в состоянии завершили исполнение. Пока одна нить процесса заблокирована, другая нить того же процесса может выполняться. Нити разделяют процессор так же, как это делали традиционные процессы, в соответствии с рассмотренными алгоритмами планирования.
Поскольку нити одного процесса разделяют существенно больше ресурсов, чем различные процессы, то операции создания новой нити и переключения контекста между нитями одного процесса занимают существенно меньше времени, чем аналогичные операции для процессов в целом. Предложенная нами схема совмещения работы в терминах нитей одного процесса получает право на существование.
Различают операционные системы, поддерживающие нити на уровне ядра и на уровне библиотек. Все выше сказанное справедливо для операционных систем, поддерживающих нити на уровне ядра. В них планирование использования процессора происходит в терминах нитей, а управление памятью и другими системными ресурсами остается в терминах процессов. В операционных системах, поддерживающих нити на уровне библиотек пользователей, и планирование процессора, и управление системными ресурсами осуществляется в терминах процессов. Распределение использования процессора по нитям в рамках выделенного процессу временного интервала осуществляется средствами библиотеки. В таких системах блокирование одной нити приводит к блокированию всего процесса, ибо ядро операционной системы ничего не знает о существовании нитей. По сути дела, в таких вычислительных системах просто имитируется наличие нитей исполнения.
Информационные сети
1. Типы вычислительных сетей.
Одноранговая сеть
Самая главная характеристика такой сети – все входящие в ее состав компьютеры работают сами по себе, то есть ими никто не управляет.
Фактически одноранговая сеть выглядит как некоторое количество компьютеров, объединенных с помощью одного из типов связи. Именно отсутствие управляющего компьютера – сервера – делает ее построение дешевым и достаточно эффективным. Однако сами компьютеры, входящие в одноранговую сеть, должны быть достаточно мощными, чтобы справляться со всеми основными и дополнительными задачами (административными, защитой от вирусов и т. д.).
Любой компьютер в такой сети можно назвать как рабочим, так и сервером, поскольку нет какого-либо конкретного выделенного компьютера, который осуществлял бы административный или другой контроль. За компьютером такой сети следит сам пользователь (или пользователи), который работает на нем. В этом кроется главный недостаток одноранговой сети – ее пользователь должен не просто уметь работать на компьютере, но и иметь представление об администрировании. Кроме того, ему приходится самому справляться с внештатными ситуациями, возникающими при работе компьютера, и защищать его от разнообразных неприятностей, начиная с вирусов и заканчивая возможными программными и аппаратными неполадками.
Как и полагается, в одноранговой сети используются общие ресурсы, файлы, принтеры, модемы и т. п. Однако из-за отсутствия управляющего компьютера каждый пользователь разделяемого ресурса должен самостоятельно устанавливать правила и методы его использования.
Сеть на основе сервера
Сеть на основе сервера – наиболее часто встречающийся тип сети, который используется как в полноценных домашних сетях и в офисах, так и на крупных предприятиях.
Как ясно из названия, данная сеть использует один или несколько серверов, осуществляющих контроль за всеми рабочими местами. Как правило, сервер характеризуется большой мощностью и быстродействием, необходимыми для выполнения поставленных задач, будь то работа с базой данных или обслуживание других запросов пользователей. Сервер оптимизирован для быстрой обработки запросов от пользователей, обладает специальными механизмами программной защиты и контроля. Достаточная мощность серверов позволяет снизить требование к мощности клиентской машины. За работой сети на основе сервера обычно следит специальный человек – системный администратор. Он отвечает за регулярное обновление антивирусных баз, устраняет возникшие неполадки, добавляет и контролирует общие ресурсы и т. п.
Количество рабочих мест в такой сети может быть разным – от нескольких до сотен или тысяч компьютеров. С целью поддержки производительности сети на необходимом уровне при возрастании количества подключенных пользователей устанавливаются дополнительные серверы. Это позволяет оптимально распределить вычислительную мощь.
Не все серверы выполняют одинаковую работу. Существуют специализированные серверы, которые позволяют автоматизировать или просто облегчить выполнение тех или иных задач.
Файл-сервер. Предназначен, в основном, для хранения разнообразных данных, начиная с офисных документов и заканчивая музыкой и видео. Обычно на таком сервере создаются личные папки пользователей, доступ к которым имеют только они (или другие пользователи, получившие право на доступ к документам этой папки). Для управления таким сервером используется любая сетевая операционная система, равнозначная Windows NT 4.0.
Принт-сервер. Главная задача данного сервера – обслуживание сетевых принтеров и обеспечение доступа к ним. Очень часто, с целью экономии средств, файл-сервер и принт-сервер совмещают в один сервер.
Сервер базы данных. Основная задача такого сервера – обеспечить максимальную скорость поиска и записи нужных данных в базу данных или получения данных из нее с последующей передачей их пользователю сети. Это самые мощные из всех серверов. Они обладают максимальной производительностью, так как от этого зависит комфортность работы всех пользователей.
Сервер приложений. Это промежуточный сервер между пользователем и сервером базы данных. Как правило, на нем выполняются те из запросов, которые требуют максимальной производительности и должны быть переданы пользователю, не затрагивая ни сервер базы данных, ни пользовательский компьютер. Это могут быть как часто запрашиваемые из базы данные, так и любые программные модули.
Другие серверы. Кроме перечисленных выше, существуют другие серверы, например почтовые, коммуникационные, серверы-шлюзы и т. д.
Сеть на основе сервера предоставляет широкий спектр услуг и возможностей, которых трудно или невозможно добиться от одноранговой сети. Кроме того, одноранговая уступает такой сети в плане защищенности и администрирования. Имея выделенный сервер или серверы, легко обеспечить резервное копирование, что является первоочередной задачей, если в сети присутствует сервер базы данных.

2. Стандартизация в компьютерных сетях. Понятие протокола и интерфейса.
Работы по стандартизации вычислительных сетей ведутся большим количеством организаций.
В зависимости от статуса организаций различают следующие виды стандартов:
стандарты отдельных фирм (например, стек протоколов DECnet компании Digital Equipment или графический интерфейс OPEN LOOK для Unix-систем компании Sun);
стандарты специальных комитетов и объединений, создаваемых несколькими фирмами, например стандарты технологии ATM, разрабатываемые специально созданным объединением ATM Forum, насчитывающим около 100 коллективных участников, или стандарты союза Fast Ethernet Alliance по разработке стандартов 100 Мбит Ethernet;
национальные стандарты, например стандарт FDDI, один из многочисленных стандартов, разработанных Американским национальным институтом стандартов (ANSI), или стандарты безопасности для операционных систем, разработанные Национальным центром компьютерной безопасности (NCSC) Министерства обороны США;
международные стандарты, например модель и стек коммуникационных протоколов Международной организации по стандартизации (ISO), многочисленные стандарты Международного союза электросвязи (ITU), в том числе стандарты на сети с коммутацией пакетов X.25, сети frame relay, ISDN, модемы и многие другие.
25 лет назад, в сентябре 1981 г., были стандартизованы протоколы IP (RFC 791) и TCP (RFC 793). Разработанные в рамках проекта ARPANET под общей редакцией Йона Постела (Jon Postel) в [ Cкачайте файл, чтобы посмотреть ссылку ] Университета Южной Калифорнии документы RFC 791 и RFC 793, стали основой существования современной сети Internet, хотя и претерпели за 25 лет достаточно много изменений. Основой для этих стандартов послужила работа Винтона Серфа (Vinton Cerf)б Йогена Далала (Yogen Dalal) и Кэрла Саншайна (Yogen Dalal) по протоколу управления передачей данных в межсетевой среде, опубликованная в декабре 1974 г, как [ Cкачайте файл, чтобы посмотреть ссылку ]. В течение 7 лет был выпущен целый ряд промежуточных документов, а итогом многолетней работы стала публикация RFC 791 и RFC 793.
Сетево
·й протоко
·л набор правил, позволяющий осуществлять соединение и обмен данными между двумя включёнными в [ Cкачайте файл, чтобы посмотреть ссылку ] компьютерами.
Разные протоколы зачастую описывают лишь разные стороны одного типа [ Cкачайте файл, чтобы посмотреть ссылку ]; взятые вместе, они образуют [ Cкачайте файл, чтобы посмотреть ссылку ]. Названия «протокол» и «стек протоколов» также указывают на [ Cкачайте файл, чтобы посмотреть ссылку ], которым реализуется протокол.
Новые протоколы для [ Cкачайте файл, чтобы посмотреть ссылку ] определяются [ Cкачайте файл, чтобы посмотреть ссылку ], а прочие протоколы [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ]. [ Cкачайте файл, чтобы посмотреть ссылку ] занимается телекоммуникационными протоколами и форматами.
Наиболее распространённой системой классификации сетевых протоколов является так называемая [ Cкачайте файл, чтобы посмотреть ссылку ], в соответствии с которой протоколы делятся на 7 уровней по своему назначению от [ Cкачайте файл, чтобы посмотреть ссылку ] (формирование и распознавание электрических или других сигналов) до [ Cкачайте файл, чтобы посмотреть ссылку ] ([ Cкачайте файл, чтобы посмотреть ссылку ] для передачи информации приложениями).
В компьютерных сетях сетевым интерфейсом называют:
Точку соедиения между [ Cкачайте файл, чтобы посмотреть ссылку ] пользователя и частной или общественной [ Cкачайте файл, чтобы посмотреть ссылку ];
[ Cкачайте файл, чтобы посмотреть ссылку ] компьютера (наболее частое использование термина);
Точку соединения коммутируемой [ Cкачайте файл, чтобы посмотреть ссылку ] общественного пользования и [ Cкачайте файл, чтобы посмотреть ссылку ];
Точку соединения двух сетей между собой.
Сетевые интерфейсы:
постоянное соединение:
синхронное;
асинхронное.
коммутируемое соединение:
PSTN;
ISDN;
радиосоединение;
прочие типы соединений.

3. Эталонная модель взаимодействия открытых систем – OSI. Графическое представление модели.
Сетевая модель OSI ([ Cкачайте файл, чтобы посмотреть ссылку ] Open Systems Interconnection Reference Model-OSI модель взаимосвязи открытых систем) абстрактная модель для сетевых коммуникаций и разработки [ Cкачайте файл, чтобы посмотреть ссылку ]. Представляет уровневый подход к [ Cкачайте файл, чтобы посмотреть ссылку ]. Каждый уровень обслуживает свою часть процесса взаимодействия. Благодаря такой структуре совместная работа [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ] становится гораздо проще и понятнее.

Взаимодействие уровней
Уровни взаимодействуют сверху вниз и снизу вверх посредством интерфейсов и могут еще взаимодействовать с таким же уровнем другой системы с помощью протоколов.

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

Ну и дальше смотрим что происходит с запросом по 7 уровням.
Т.е. спускается с прикладного до физического, по кабелю передается электрический сигнал, доходит до получателя и поднимается до прикладного уровня получателя.
5. Функции и сетевые задачи уровней модели OSI.
Прикладной уровень (Application layer)
Верхний (7-й) уровень модели, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления.
Уровень представления (Presentation layer)
Этот уровень отвечает за преобразование протоколов и кодирование/декодирование данных. Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. На этом уровне может осуществляться сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.
Сеансовый уровень (Session layer)
Отвечает за поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время. Уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Синхронизация передачи обеспечивается помещением в поток данных контрольных точек, начиная с которых возобновляется процесс при нарушении взаимодействия
Транспортный уровень (Transport layer)
4-й уровень модели, предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности, как они были переданы. При этом неважно, какие данные передаются, откуда и куда, то есть он предоставляет сам механизм передачи. Блоки данных он разделяет на фрагменты, размер которых зависит от протокола, короткие объединяет в один, а длинные разбивает. Протоколы этого уровня предназначены для взаимодействия типа точка-точка.
Сетевой уровень (Network layer)
3-й уровень сетевой модели OSI, предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. На этом уровне работает такое сетевое устройство, как [ Cкачайте файл, чтобы посмотреть ссылку ].
Канальный уровень (Data Link layer)
Этот уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть. Полученные с физического уровня данные он упаковывает в [ Cкачайте файл, чтобы посмотреть ссылку ], проверяет на целостность, если нужно исправляет ошибки и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня [ Cкачайте файл, чтобы посмотреть ссылку ] (Media Access Control) регулирует доступ к разделяемой физической среде, [ Cкачайте файл, чтобы посмотреть ссылку ] (Logical Link Control) обеспечивает обслуживание сетевого уровня. На этом уровне работают [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ].
В программировании этот уровень представляет [ Cкачайте файл, чтобы посмотреть ссылку ] сетевой платы, в [ Cкачайте файл, чтобы посмотреть ссылку ] имеется программный интерфейс взаимодействия канального и сетевого уровня между собой, это не новый уровень, а просто реализация модели для конкретной ОС. Примеры таких интерфейсов: [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ].
Физический уровень (Physical layer)
Самый нижний уровень модели, предназначен непосредственно для передачи потока данных. Осуществляет передачу электрических или оптических сигналов в кабель и соответственно их приём и преобразование в биты данных в соответствии с [ Cкачайте файл, чтобы посмотреть ссылку ]. Другими словами, осуществляет интерфейс между сетевым носителем и сетевым устройством. На этом уровне работают [ Cкачайте файл, чтобы посмотреть ссылку ], повторители ([ Cкачайте файл, чтобы посмотреть ссылку ]) сигнала и медиа конверторы.
6. Сетевые топологии.
[ Cкачайте файл, чтобы посмотреть ссылку ] типа ши
·на, представляет собой общий кабель (называемый шина или магистраль), к которому подсоединены все [ Cкачайте файл, чтобы посмотреть ссылку ]. На концах кабеля находятся [ Cкачайте файл, чтобы посмотреть ссылку ], для предотвращения отражения сигнала.

Отправляемое рабочей станцией сообщение распространяется на все [ Cкачайте файл, чтобы посмотреть ссылку ] сети. Каждая машина проверяет кому адресовано сообщение и если ей, то обрабатывает его. Для того, чтобы исключить одновременную посылку данных, применяется либо «несущий» сигнал, либо один из компьютеров является главным и «даёт слово» остальным станциям.
При построении больших сетей возникает проблема ограничения на длину связи между узлами, в таком случае сеть разбивают на сегменты. Сегменты соединяются различными устройствами повторителями, концентраторами или хабами. Например, технология Ethernet позволяет использовать кабель длиной не более 185 метров.
[ Cкачайте файл, чтобы посмотреть ссылку ]
Звезда
· базовая [ Cкачайте файл, чтобы посмотреть ссылку ] [ Cкачайте файл, чтобы посмотреть ссылку ], в которой все [ Cкачайте файл, чтобы посмотреть ссылку ] сети присоединены к центральному узлу (обычно [ Cкачайте файл, чтобы посмотреть ссылку ]), образуя физический [ Cкачайте файл, чтобы посмотреть ссылку ]. Подобный [ Cкачайте файл, чтобы посмотреть ссылку ] может функционировать как отдельно, так и в составе сложной [ Cкачайте файл, чтобы посмотреть ссылку ] (как правило "дерево").


[ Cкачайте файл, чтобы посмотреть ссылку ], которой нужно послать данные, отсылает их на концентратор, а тот определяет адресата и отдаёт ему информацию. В определённый момент времени только одна машина в сети может пересылать данные, если на концентратор одновременно приходят два пакета, обе посылки оказываются не принятыми и отправителям нужно будет подождать случайный промежуток времени, чтобы возобновить передачу данных.

Кольцо
· базовая [ Cкачайте файл, чтобы посмотреть ссылку ] [ Cкачайте файл, чтобы посмотреть ссылку ], в которой [ Cкачайте файл, чтобы посмотреть ссылку ] подключены последовательно друг к другу, образуя замкнутую сеть.

В кольце, в отличие от других топологий ([ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ]), не используется конкурентный метод посылки данных, [ Cкачайте файл, чтобы посмотреть ссылку ] в сети получает данные от стоящего предыдущим в списке адресатов и перенаправляет их дальше, если они адресованы не ему. список адресатов генерируется компьютером, являющимся генератором маркера. Сетевой модуль генерирует маркерный сигнал (обычно порядка 2-10 байт во избежание затухания) и передает его следующей системе (иногда по возрастанию MAC-адреса). Следующая система, приняв сигнал, не анализирует его, а просто передает дальше. Это так называемый нулевой цикл. Последующий алгоритм работы - пакет данных GRE, передаваемый отправителем адресату начинает следовать по пути, проложенному маркером. если каждая последующая система не является риципиентом то пакет рекурсивно отправляется далее до получателя.

Смешанная топология [ Cкачайте файл, чтобы посмотреть ссылку ] преобладающая в крупных [ Cкачайте файл, чтобы посмотреть ссылку ] с произвольными связями между компьютерами. В таких сетях можно выделить отдельные произвольно связаные фрагменты (подсети), имеющие типовою топологию, поэтому их называют сетями со смешаной топологией.


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




7. Строение сетей Ethernet. Домен коллизий в сетях Ethernet.
Ethernet (эзернет, от [ Cкачайте файл, чтобы посмотреть ссылку ] aether [ Cкачайте файл, чтобы посмотреть ссылку ]) пакетная технология [ Cкачайте файл, чтобы посмотреть ссылку ] [ Cкачайте файл, чтобы посмотреть ссылку ], преимущественно локальных.
Стандарты Ethernet определяют проводные соединения и электрические сигналы на физическом уровне, формат пакетов и протоколы управления доступом к среде на [ Cкачайте файл, чтобы посмотреть ссылку ] [ Cкачайте файл, чтобы посмотреть ссылку ]. Ethernet в основном описывается стандартами [ Cкачайте файл, чтобы посмотреть ссылку ] группы 802.3. Ethernet стал самой распространённой технологией [ Cкачайте файл, чтобы посмотреть ссылку ] в середине [ Cкачайте файл, чтобы посмотреть ссылку ] годов прошлого века, вытеснив такие устаревшие технологии, как [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ].
В стандарте первых версий (Ethernet v1.0 и Ethernet v2.0) указано, что в качестве передающей среды используется [ Cкачайте файл, чтобы посмотреть ссылку ], в дальнейшем появилась возможность использовать кабель [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ].
Метод управления доступом [ Cкачайте файл, чтобы посмотреть ссылку ] (CSMA/CD, Carrier Sense Multiple Access with Collision Detection), скорость передачи данных 10 Мбит/с, размер пакета от 72 до 1526 [ Cкачайте файл, чтобы посмотреть ссылку ], описаны методы кодирования данных. Количество узлов в одном разделяемом сегменте сети ограничено предельным значением в 1024 рабочих станции (спецификации физического уровня могут устанавливать более жёсткие ограничения, например, к сегменту тонкого коаксиала может подключаться не более 30 рабочих станций, а к сегменту толстого коаксиала не более 100). Однако сеть, построенная на одном разделяемом сегменте, становится неэффективной задолго до достижения предельного значения количества узлов.
В [ Cкачайте файл, чтобы посмотреть ссылку ] году принят стандарт [ Cкачайте файл, чтобы посмотреть ссылку ] 802.3u Fast Ethernet со скоростью 100 Мбит/с, а позже был принят стандарт [ Cкачайте файл, чтобы посмотреть ссылку ] 802.3z Gigabit Ethernet со скоростью 1000 Мбит/с. Появилась возможность работы в режиме [ Cкачайте файл, чтобы посмотреть ссылку ].
В зависимости от скорости передачи данных и передающей среды существует несколько вариантов технологии. Независимо от способа передачи стек сетевого протокола и программы работают одинаково практически во всех нижеперечисленных вариантах.
В этом разделе мы дадим краткое описание всех официально существующих разновидностей. По некоторым причинам, в дополнение к основному стандарту многие производители рекомендуют пользоваться другими запатентованными носителями например, для увеличения расстояния между точками сети используется [ Cкачайте файл, чтобы посмотреть ссылку ] кабель.
Доме
·н колли
·зий ([ Cкачайте файл, чтобы посмотреть ссылку ] Collision domain)  логический участок [ Cкачайте файл, чтобы посмотреть ссылку ], в котором могут происходить [ Cкачайте файл, чтобы посмотреть ссылку ] пакетов данных, т. е. когда два устройства, подключенные к общей среде передачи, начинают одновременно передавать данные и, в результате наложения сигналов, данные теряются. Устройства вынуждены в этом случае повторять передачу заново. Явление наиболее распространено в сетях [ Cкачайте файл, чтобы посмотреть ссылку ] (а именно в сетях, использующих метод доступа [ Cкачайте файл, чтобы посмотреть ссылку ]). Большое количество коллизий в сегменте значительно снижает производительность сети.
Домен коллизий может представлять некоторый участок [ Cкачайте файл, чтобы посмотреть ссылку ], к которому подключены несколько устройств, отдельный [ Cкачайте файл, чтобы посмотреть ссылку ] с подключенными к нему несколькими устройствами, или целые Ethernet-сети, построенные на основе концентраторов и [ Cкачайте файл, чтобы посмотреть ссылку ].
8. Повторители. Мосты. Концентраторы. Коммутаторы. Маршрутизаторы.
Повторитель
Предназначен для увеличения расстояния сетевого соединения путем повторения электрического сигнала «один в один». Бывают однопортовые повторители и многопортовые. В терминах [ Cкачайте файл, чтобы посмотреть ссылку ] работает на физическом уровне. Одной из первых задач, которая стоит перед любой технологией транспортировки данных, является возможно невозбранность их передачи на максимально большое расстояние.
Физическая среда накладывает на этот процесс свое ограничение - рано или поздно мощность сигнала падает, и прием становится невозможным. При этом не имеет значения абсолютное значение амплитуды - для распознавания важно соотношение сигнал/шум.
Мост, сетевой мост, бридж (калька с [ Cкачайте файл, чтобы посмотреть ссылку ] Bridge) сетевое оборудование для объединения сегментов локальной сети. Сетевой мост работает на втором уровне [ Cкачайте файл, чтобы посмотреть ссылку ], обеспечивая ограничение [ Cкачайте файл, чтобы посмотреть ссылку ] (в случае сети Ethernet). Формальное описание сетевого моста приведено в стандарте [ Cкачайте файл, чтобы посмотреть ссылку ]
Различия между коммутаторами и мостами
В общем случае коммутатор (свитч) и мост аналогичны по функциональности; разница заключается в внутреннем устройстве - мосты обрабатывают IP-пакеты используя центральный процессор, коммутатор использует коммутационную матрицу (аппратную схему для коммутации пакетов). В настоящее время мосты практически не используются (т.к. для работы требуют производительный процессор).
Сетево
·й концентра
·тор или Хаб ([ Cкачайте файл, чтобы посмотреть ссылку ] от [ Cкачайте файл, чтобы посмотреть ссылку ] hub центр деятельности) сетевое устройство, для объединения нескольких устройств [ Cкачайте файл, чтобы посмотреть ссылку ] в общий сегмент. Устройства подключаются при помощи [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ].
В настоящее время почти не выпускаются им на смену пришли [ Cкачайте файл, чтобы посмотреть ссылку ] (свитчи), выделяющие каждое подключенное устройство в отдельный сегмент. Сетевые коммутаторы ошибочно называют «интеллектуальными концентраторами».
Концентратор работает на физическом уровне [ Cкачайте файл, чтобы посмотреть ссылку ], повторяет приходящий на один порт сигнал на все активные порты. В случае поступления сигнала на два и более порта одновременно возникает коллизия, и передаваемые кадры данных теряются. Таким образом, все подключенные к концентратору устройства находятся в одном [ Cкачайте файл, чтобы посмотреть ссылку ]. Концентраторы всегда работают в режиме [ Cкачайте файл, чтобы посмотреть ссылку ], все подключенные устройства Ethernet разделяют между собой предоставляемую полосу доступа.
Сетевой коммутатор или свитч ([ Cкачайте файл, чтобы посмотреть ссылку ] от [ Cкачайте файл, чтобы посмотреть ссылку ] switch переключатель) устройство, предназначенное для соединения нескольких узлов [ Cкачайте файл, чтобы посмотреть ссылку ] в пределах одного сегмента. В отличие от [ Cкачайте файл, чтобы посмотреть ссылку ], который распространяет [ Cкачайте файл, чтобы посмотреть ссылку ] от одного подключенного устройства ко всем остальным, коммутатор передает данные только непосредственно получателю. Это повышает производительность и безопасность сети, избавляя остальные сегменты сети от необходимости (и возможности) обрабатывать данные, которые им не предназначались.
Коммутатор работает на [ Cкачайте файл, чтобы посмотреть ссылку ] [ Cкачайте файл, чтобы посмотреть ссылку ], и потому в общем случае может только объединять узлы одной сети по их [ Cкачайте файл, чтобы посмотреть ссылку ]. Для соединения нескольких сетей на основе [ Cкачайте файл, чтобы посмотреть ссылку ] служат [ Cкачайте файл, чтобы посмотреть ссылку ].
Коммутатор хранит в памяти специальную таблицу ([ Cкачайте файл, чтобы посмотреть ссылку ]-таблицу), в которой указывается соответствие [ Cкачайте файл, чтобы посмотреть ссылку ] узла порту коммутатора. При включении коммутатора эта таблица пуста, и он работает в режиме обучения. В этом режиме поступающие на какой-либо порт данные передаются на все остальные порты коммутатора. При этом коммутатор анализирует [ Cкачайте файл, чтобы посмотреть ссылку ] данных, определяя MAC-адрес компьютера-отправителя, и заносит его в таблицу. Впоследствии, если на один из портов коммутатора поступит пакет, предназначенный для этого компьютера, этот пакет будет отправлен только на соответствующий порт. Если MAC-адрес компьютера-получателя еще не известен, то пакет будет продублирован на все интерфейсы. Со временем коммутатор строит полную таблицу для всех своих портов, и в результате трафик локализуется.
Маршрутиза
·тор или ро
·утер [ Cкачайте файл, чтобы посмотреть ссылку ] устройство, на основании информации о [ Cкачайте файл, чтобы посмотреть ссылку ] сети и определённых правил принимающее решения о пересылке пакетов сетевого уровня [ Cкачайте файл, чтобы посмотреть ссылку ] между различными [ Cкачайте файл, чтобы посмотреть ссылку ].
Работает на более высоком уровне, нежели [ Cкачайте файл, чтобы посмотреть ссылку ] и является более совершенным по своей функциональности, чем [ Cкачайте файл, чтобы посмотреть ссылку ].
Обычно маршрутизатор использует адрес получателя, указанный в пакетах данных и определяет по таблице маршрутизации путь, по которому следует передать данные. Если в таблице маршрутизации для адреса нет описанного маршрута, пакет отбрасывается.

9. Сети Token Ring. Метод доступа к разделяемой среде для сетей Token Ring .
Token ring «маркерное кольцо», архитектура кольцевой сети с маркерным (эстафетным) доступом.
Тип [ Cкачайте файл, чтобы посмотреть ссылку ], в которой все [ Cкачайте файл, чтобы посмотреть ссылку ] схематически объединены в [ Cкачайте файл, чтобы посмотреть ссылку ]. По кольцу от компьютера к компьютеру (станции сети) передается специальный блок данных, называемый маркером ([ Cкачайте файл, чтобы посмотреть ссылку ] token). Когда какой-либо станции требуется передача данных, маркер ею модифицируется и больше не распознается другими станциями, как спецблок, пока не дойдёт до адресата. Адресат принимает данные и запускает новый маркер по кольцу. На случай потери маркера или хождения данных, адресат которых не находится, в сети присутствует машина со специальными полномочиями, умеющая удалять безадресные данные и запускать новый маркер.
Передача маркера
Token Ring и IEEE 802.5 являются главными примерами сетей с передачей маркера. Сети с передачей маркера перемещают вдоль сети небольшой блок данных, называемый маркером. Владение этим маркером гарантирует право передачи. Если узел, принимающий маркер, не имеет информации для отправки, он просто переправляет маркер к следующей конечной станции. Каждая станция может удерживать маркер в течение определенного максимального времени.
Данная технология предлагает вариант решения проблемы коллизий, которая возникает при работе локальной сети. В технологии Ethernet, такие коллизии возникают при одновременной передаче информации несколькими рабочими станциями, находящимися в пределах одного [ Cкачайте файл, чтобы посмотреть ссылку ], то есть использующих общий физический канал данных.
Если у станции, владеющей маркером, имеется информации для передачи, она захватывает маркер, изменяет у него один бит (в результате чего маркер превращается в последовательность "начало блока данных"), дополняет информацией, которую он хочет передать и, наконец, отсылает эту информацию к следующей станции кольцевой сети. Когда информационный блок циркулирует по кольцу, маркер в сети отсутствует (если только кольцо не обеспечивает "раннего освобождения маркера" - early token release), поэтому другие станции, желающие передать информацию, вынуждены ожидать. Следовательно, в сетях Token Ring не может быть коллизий. Если обеспечивается раннее высвобождение маркера, то новый маркер может быть выпущен после завершения передачи блока данных.
Информационный блок циркулирует по кольцу, пока не достигнет предполагаемой станции назначения, которая копирует информацию для дальнейшей обработки. Информационный блок продолжает циркулировать по кольцу; он окончательно удаляется после достижения станции, отославшей этот блок. Станция отправки может проверить вернувшийся блок, чтобы убедиться, что он был просмотрен и затем скопирован станцией назначения.

10. Технология Fast Ethernet.
Fast Ethernet – спецификация IEЕЕ 802.3 u официально принятая 26 октября 1995 года определяет стандарт протокола канального уровня для сетей работающих при использовании как медного, так и волоконно-оптического кабеля со скоростью 100Мб/с. Новая спецификация является наследницей стандарта Ethernet IEЕЕ 802.3, используя такой же формат кадра, механизм доступа к среде CSMA/CD и топологию звезда. Эволюция коснулась нескольких элементов конфигурации средств физического уровня, что позволило увеличить пропускную способность, включая типы применяемого кабеля, длину сегментов и количество концентраторов.
100BASE-T Основной термин для обозначения одного из трёх стандартов 100 Мбит/с ethernet, использующий в качестве среды передачи данных витую пару. Длина сегмента до 100 [ Cкачайте файл, чтобы посмотреть ссылку ]. Включает в себя 100BASE-TX, 100BASE-T4 и 100BASE-T2.
[ Cкачайте файл, чтобы посмотреть ссылку ], IEEE 802.3u Развитие технологии 10BASE-T, используется топология звезда, задействован кабель [ Cкачайте файл, чтобы посмотреть ссылку ] категории-5, в котором фактически используются 2 пары проводников, максимальная скорость передачи данных 100 Мбит/с.
100BASE-T4 100 MБит/с ethernet по кабелю категории-3. Задействованы все 4 пары. Сейчас практически не используется. Передача данных идёт в полудуплексном режиме.
100BASE-T2 Не используется. 100 Mбит/с ethernet через кабель категории-3. Используется только 2 пары. Поддерживается полнодуплексный режим передачи, когда сигналы распространяются в противоположных направления по каждой паре. Скорость передачи в одном направлении 50 Mбит/с.
100BASE-FX 100 Мбит/с ethernet с помощью оптоволоконного кабеля. Максимальная длина сегмента 400 метров в полудуплексном режиме (для гарантированного обнаружения коллизий) или 2 [ Cкачайте файл, чтобы посмотреть ссылку ] в полнодуплексном режиме по многомодовому [ Cкачайте файл, чтобы посмотреть ссылку ].
100BASE-LX 100 Мбит/с ethernet с помощью оптоволоконного кабеля. Максимальная длина сегмента 15 [ Cкачайте файл, чтобы посмотреть ссылку ] в полнодуплексном режиме по паре одномодовых [ Cкачайте файл, чтобы посмотреть ссылку ] на длине волны 1310нм.
100BASE-LX WDM 100 Мбит/с ethernet с помощью оптоволоконного кабеля. Максимальная длина сегмента 15 [ Cкачайте файл, чтобы посмотреть ссылку ] в полнодуплексном режиме по одному одномодовому [ Cкачайте файл, чтобы посмотреть ссылку ] на длине волны 1310нм и 1550нм. Интерфейсы бывают двух видов, отличаются длиной волны передатчика и маркируются либо цифрами (длина волны) либо одной латинской буквой A(1310) или B(1550). В паре могут работать только парные интерфейсы, с одной стороны передатчик на 1310нм а с другой на 1550нм.

11. Технология Gigabit Ethernet.
Технология Gigabit Ethernet - это расширение IEEE 802.3 Ethernet, использующее такую же структуру пакетов, формат и поддержку протокола CSMA/CD, полного дуплекса, контроля потока и прочее, но при этом предоставляя теоретически десятикратное увеличение производительности.
Поскольку технология Gigabit Ethernet совместима с 10Mbps и 100Mbps Ethernet, возможен легкий переход на данную технологию без инвестирования больших средств в программное обеспечение, кабельную структуру и обучение персонала

[ Cкачайте файл, чтобы посмотреть ссылку ], IEEE 802.3ab Стандарт Ethernet 1 [ Cкачайте файл, чтобы посмотреть ссылку ]. Используется витая пара категории 5e или категории 6. В передаче данных участвуют все 4 пары. Скорость передачи данных 250 [ Cкачайте файл, чтобы посмотреть ссылку ] по одной паре.
[ Cкачайте файл, чтобы посмотреть ссылку ], Стандарт Ethernet 1 [ Cкачайте файл, чтобы посмотреть ссылку ], использующий только витую пару категории 6. Передающие и принимающие пары разделены физически по две пары в каждом направлении, что существенно упрощает конструкцию приемопередающих устройств. Скорость передачи данных 500 [ Cкачайте файл, чтобы посмотреть ссылку ] по одной паре. Практически не используется.
[ Cкачайте файл, чтобы посмотреть ссылку ] общий термин для обозначения технологии Гигабит Ethernet со сменными трансиверами [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ].
[ Cкачайте файл, чтобы посмотреть ссылку ], IEEE 802.3z 1 Гбит/с Ethernet технология, использует [ Cкачайте файл, чтобы посмотреть ссылку ], дальность прохождения сигнала без повторителя до 550 [ Cкачайте файл, чтобы посмотреть ссылку ].
[ Cкачайте файл, чтобы посмотреть ссылку ], IEEE 802.3z 1 Гбит/с Ethernet технология, использует многомодовое волокно дальность прохождения сигнала без повторителя до 550 [ Cкачайте файл, чтобы посмотреть ссылку ]. Оптимизирована для дальних расстояний, при использовании одномодового волокна (до 40 [ Cкачайте файл, чтобы посмотреть ссылку ]).
[ Cкачайте файл, чтобы посмотреть ссылку ] Технология Гигабит Ethernet для коротких расстояний (до 25 [ Cкачайте файл, чтобы посмотреть ссылку ]), используется специальный медный кабель (Экранированная витая пара (STP)) с волновым сопротивлением 150 Ом. Заменён стандартом 1000BASE-T, и сейчас не используется.
[ Cкачайте файл, чтобы посмотреть ссылку ] (Long Haul) 1 Гбит/с Ethernet технология, использует одномодовый оптический кабель, дальность прохождения сигнала без повторителя до 100 [ Cкачайте файл, чтобы посмотреть ссылку ].
12. Технология 100 VG-AnyLan. Суть метода доступа - приоритетные требования в технологии 100 VG-AnyLan.
В качестве альтернативы технологии Fast Ethernet, фирмы AT&T и HP выдвинули проект новой технологии со скоростью передачи данных 100 Мб/с - 100Base-VG. В этом проекте было предложено усовершенствовать метод доступа с учетом потребности мультимедийных приложений, при этом сохранить совместимость формата пакета с форматом пакета сетей 802.3. В сентябре 1993 года по инициативе фирм IBM и HP был образован комитет IEEE 802.12, который занялся стандартизацией новой технологии. Проект был расширен за счет поддержки в одной сети кадров не только формата Ethernet, но и формата Token Ring. В результате новая технология получила название 100VG-AnyLAN, то есть технология для любых сетей (Any LAN - любые сети), имея в виду, что в локальных сетях технологии Ethernet и Token Ring используются в подавляющем количестве узлов.
В технологии 100VG-AnyLAN определены новый метод доступа Demand Priority и новая схема квартетного кодирования Quartet Coding, использующая избыточный код 5В/6В.
Метод доступа Demand Priority основан на передаче концентратору функций арбитра, решающего проблему доступа к разделяемой среде. Метод Demand Priority повышает коэффициент использования пропускной способности сети за счет введения простого, детерминированного метода разделения общей среды, использующего два уровня приоритетов: низкий - для обычных приложений и высокий - для мультимедийных.

Характеристики:
Метод доступа - Demand Priority
Кадры передаются не всем узлам сети, а только станции назначения
Выделенный арбитр доступа - Концентратор
Данные передаются по 4 парам UTP категории 3 (25 Мбит/c по каждой паре)
Особенность - сохранение формата кадра [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ].
13. Технология FDDI. Особенности метода доступа FDDI.
FDDI ([ Cкачайте файл, чтобы посмотреть ссылку ] Fiber Distributed Data Interface распределённый волоконный интерфейс данных) стандарт передачи данных в [ Cкачайте файл, чтобы посмотреть ссылку ], протянутой на расстоянии до 200 [ Cкачайте файл, чтобы посмотреть ссылку ]. Стандарт основан на [ Cкачайте файл, чтобы посмотреть ссылку ] [ Cкачайте файл, чтобы посмотреть ссылку ]. Кроме большой территории, сеть FDDI способна поддерживать несколько тысяч пользователей.
Технология FDDI во многом основывается на технологии Token Ring, развивая и совершенствуя ее основные идеи. Разработчики технологии FDDI ставили перед собой в качестве наиболее приоритетных следующие цели:
Повысить битовую скорость передачи данных до 100 Мб/с.
Повысить отказоустойчивость сети за счет стандартных процедур восстановления ее после отказов различного рода - повреждения кабеля, некорректной работы узла, концентратора, возникновения высокого уровня помех на линии и т.п.
Максимально эффективно использовать потенциальную пропускную способность сети как для асинхронного, так и для синхронного трафиков.
Сеть FDDI строится на основе двух оптоволоконных колец, которые образуют основной и резервный пути передачи данных между узлами сети. Использование двух колец - это основной способ повышения отказоустойчивости в сети FDDI, и узлы, которые хотят им воспользоваться, должны быть подключены к обоим кольцам. В нормальном режиме работы сети данные проходят через все узлы и все участки кабеля первичного (Primary) кольца, поэтому этот режим назван режимом Thru - "сквозным" или "транзитным". Вторичное кольцо (Secondary) в этом режиме не используется.
В стандартах FDDI отводится много внимания различным процедурам, которые позволяют определить наличие отказа в сети, а затем произвести необходимую реконфигурацию. Сеть FDDI может полностью восстанавливать свою работоспособность в случае единичных отказов ее элементов. При множественных отказах сеть распадается на несколько не связанных сетей.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 31. Реконфигурация колец FDDI при отказе
Кольца в сетях FDDI рассматриваются как общая разделяемая среда передачи данных, поэтому для нее определен специальный метод доступа. Этот метод очень близок к методу доступа сетей Token Ring и также называется методом маркерного (или токенного) кольца - token ring.
[ Cкачайте файл, чтобы посмотреть картинку ]

14. Задачи сетевого уровня открытых систем OSI. Понятие «Подсеть», «Сеть» и «Составная сеть».
Сетевой уровень модели OSI, предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети.

Компьютерная сеть (вычислительная сеть, сеть передачи данных) система связи между двумя или более [ Cкачайте файл, чтобы посмотреть ссылку ]. Для передачи [ Cкачайте файл, чтобы посмотреть ссылку ] могут быть использованы различные физические явления, как правило различные виды [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ].

Подсеть - метод, состоящий в том, чтобы взять сетевой IP адрес и локально разбить его так, чтобы этот один сетевой IP адрес мог в действительности использоваться в нескольких всзаимосвязанных локальных сетях. Помните, один сетевой IP адрес может использоваться только для одной сети.
Ключевое слово здесь - "локально": вся мировая сеть из машин и физических сетей собрана из IP сетей, разбитых на подсети, и при этом ничего не нужно изменять - он остается целой IP сетью. Самое важное: разбиение на подсети - это локальная настройка, и оно не видно снаружи.
Составная сеть – сеть, построенная их нескольких сетей, в том числе построенных по разным принципам.
Особенностью технологии TCP/IP является гибкая система адресации, позволяющая более просто по сравнению с другими протоколами аналогичного назначения включать в составную сеть сети других технологий. Это свойство также способствует применению стека TCP/IP для построения больших гетерогенных сетей.

15. Многоуровневая структура стека TCP/IP. Уровень межсетевого взаимодействия, основной (транспортный) уровень, прикладной уровень, уровень сетевых интерфейсов.
Стек протоколов TCP/IP ([ Cкачайте файл, чтобы посмотреть ссылку ] Transmission Control Protocol/Internet Protocol) собирательное название для сетевых протоколов разных уровней, используемых в сетях.
В [ Cкачайте файл, чтобы посмотреть ссылку ] данный стек занимает(реализует) все уровни и делится сам на 4 уровня: прикладной, транспортный, межсетевой, уровень доступа к сети(в OSI это уровни физический, канальный и частично сетевой). На стеке протоколов TCP/IP построено все взаимодействие пользователей в сети от программной оболочки до канального уровня модели OSI. По сути база, на которой завязано все взаимодействие. При этом стек независим от физической среды передачи данных.
Обычно в стеке TCP/IP верхние 3 уровня ([ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ]) модели OSI объединяют в один прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению. Упрощенно интерпретацию стека TCP/IP можно представить так:


Прикладной «7 уровень»
напр. [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] ([ Cкачайте файл, чтобы посмотреть ссылку ], работающий поверх [ Cкачайте файл, чтобы посмотреть ссылку ], и [ Cкачайте файл, чтобы посмотреть ссылку ], работающий поверх [ Cкачайте файл, чтобы посмотреть ссылку ], являются частью сетевого уровня)

4
Транспортный
напр. [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] (протоколы маршрутизации, подобные [ Cкачайте файл, чтобы посмотреть ссылку ], что работают поверх [ Cкачайте файл, чтобы посмотреть ссылку ], являются частью сетевого уровня)

3
Межсетевой
Для TCP/IP это [ Cкачайте файл, чтобы посмотреть ссылку ] (IP) (вспомогательные протоколы, вроде [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ] работают поверх IP, но являются частью сетевого уровня; [ Cкачайте файл, чтобы посмотреть ссылку ] не работает поверх IP)

2
Канальный
напр. [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], и подобные.

1
Физический
напр. физическая среда и принципы кодирования информации, [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ]



Физический уровень
[ Cкачайте файл, чтобы посмотреть ссылку ] описывает среду передачи данных (будь то кабель, [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ]), физические характеристики такой среды и принцип передачи данных ([ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], амплитуду сигналов, частоту сигналов, способ синхронизации передачи, время ожидания ответа и максимальное расстояние).
Канальный уровень
[ Cкачайте файл, чтобы посмотреть ссылку ] описывает, каким образом передаются [ Cкачайте файл, чтобы посмотреть ссылку ] через физический уровень, включая кодирование (т.е. специальные последовательности битов, определяющих начало и конец пакета данных). [ Cкачайте файл, чтобы посмотреть ссылку ], например, в полях [ Cкачайте файл, чтобы посмотреть ссылку ] содержит указание того, какой машине или машинам в сети предназначен этот пакет.
Примеры протоколов канального уровня [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ].
[ Cкачайте файл, чтобы посмотреть ссылку ] не совсем вписывается в такое определение, поэтому обычно описывается в виде пары протоколов [ Cкачайте файл, чтобы посмотреть ссылку ]/[ Cкачайте файл, чтобы посмотреть ссылку ].
[ Cкачайте файл, чтобы посмотреть ссылку ] занимает промежуточное положение между канальным и сетевым уровнем и, строго говоря, его нельзя отнести ни к одному из них.
Канальный уровень иногда разделяют на 2 подуровня LLC и MAC.
Сетевой уровень
Изначально разработан для передачи данных из одной (под)сети в другую. Примерами такого протокола является [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ] в сети [ Cкачайте файл, чтобы посмотреть ссылку ].
С развитием концепции [ Cкачайте файл, чтобы посмотреть ссылку ] в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны, например в протоколе [ Cкачайте файл, чтобы посмотреть ссылку ] (используется для передачи диагностической информации [ Cкачайте файл, чтобы посмотреть ссылку ]-соединения) и [ Cкачайте файл, чтобы посмотреть ссылку ] (используется для управления [ Cкачайте файл, чтобы посмотреть ссылку ]-потоками).
ICMP и IGMP расположены над IP и должны попасть на следующий транспортный уровень, но функционально являются протоколами сетевого уровня, а поэтому их невозможно вписать в модель OSI.
Пакеты сетевого протокола [ Cкачайте файл, чтобы посмотреть ссылку ] могут содержать код, указывающий, какой именно протокол следующего уровня нужно использовать, чтобы извлечь данные из пакета. Это число уникальный IP-номер протокола. ICMP и IGMP имеют номера, соответственно, 1 и 2.
Транспортный уровень
Протоколы [ Cкачайте файл, чтобы посмотреть ссылку ] могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют для какого именно приложения предназначены эти данные.
Протоколы автоматической маршрутизации, логически представленные на этом уровне (поскольку работают поверх IP), на самом деле являются частью протоколов сетевого уровня; например [ Cкачайте файл, чтобы посмотреть ссылку ] (IP идентификатор 89).
[ Cкачайте файл, чтобы посмотреть ссылку ] (IP идентификатор 6) «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный [ Cкачайте файл, чтобы посмотреть ссылку ], дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от [ Cкачайте файл, чтобы посмотреть ссылку ].
[ Cкачайте файл, чтобы посмотреть ссылку ] (IP идентификатор 17) протокол передачи [ Cкачайте файл, чтобы посмотреть ссылку ] без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол [ Cкачайте файл, чтобы посмотреть ссылку ].
UDP обычно используется в таких приложениях, как потоковое видео и [ Cкачайте файл, чтобы посмотреть ссылку ], где допускается потеря пакетов, а повторный запрос затруднён или не оправдан, либо в приложениях вида запрос-ответ (например, запросы к [ Cкачайте файл, чтобы посмотреть ссылку ]), где создание соединения занимает больше ресурсов, чем повторная отправка.
И TCP, и UDP используют для определения протокола верхнего уровня число, называемое [ Cкачайте файл, чтобы посмотреть ссылку ]. Существует [ Cкачайте файл, чтобы посмотреть ссылку ] TCP и UDP.
Прикладной уровень
На [ Cкачайте файл, чтобы посмотреть ссылку ] работает большинство сетевых приложений.
Эти программы имеют свои собственные протоколы обмена информацией, например, [ Cкачайте файл, чтобы посмотреть ссылку ] для [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] (передача файлов), [ Cкачайте файл, чтобы посмотреть ссылку ] ([ Cкачайте файл, чтобы посмотреть ссылку ]), [ Cкачайте файл, чтобы посмотреть ссылку ] (безопасное соединение с удалённой машиной), [ Cкачайте файл, чтобы посмотреть ссылку ] (преобразование символьных имён в [ Cкачайте файл, чтобы посмотреть ссылку ]) и многие другие.
В массе своей эти протоколы работают поверх [ Cкачайте файл, чтобы посмотреть ссылку ] или [ Cкачайте файл, чтобы посмотреть ссылку ], и привязаны к [ Cкачайте файл, чтобы посмотреть ссылку ], например:
[ Cкачайте файл, чтобы посмотреть ссылку ] на TCP-порт 80 или 8080,
[ Cкачайте файл, чтобы посмотреть ссылку ] на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд),
[ Cкачайте файл, чтобы посмотреть ссылку ] на TCP-порт 22,
запросы [ Cкачайте файл, чтобы посмотреть ссылку ] на порт UDP (реже TCP) 53,
обновление маршрутов по протоколу [ Cкачайте файл, чтобы посмотреть ссылку ] на UDP-порт 520.
Эти порты определены Агентством по выделению имен и уникальных параметров протоколов ([ Cкачайте файл, чтобы посмотреть ссылку ]).
Бесспорно, к этому уровню относятся: [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] Media Access Control  управление доступом к носителю)  это уникальный идентификатор, сопоставляемый с различными типами оборудования для [ Cкачайте файл, чтобы посмотреть ссылку ]. Большинство [ Cкачайте файл, чтобы посмотреть ссылку ] [ Cкачайте файл, чтобы посмотреть ссылку ] используют одно из трёх пространств MAC-адресов, управляемых [ Cкачайте файл, чтобы посмотреть ссылку ]: MAC-48, EUI-48 и EUI-64. Адреса в каждом из пространств теоретически должны быть глобально уникальными. Не все протоколы используют MAC-адреса, и не все протоколы, использующие MAC-адреса, нуждаются в подобной уникальности этих адресов.
Структура MAC-адреса
[ Cкачайте файл, чтобы посмотреть ссылку ]
Стандарты [ Cкачайте файл, чтобы посмотреть ссылку ] определяют 48-разрядный MAC-адрес, который разделен на четыре части.
Первый [ Cкачайте файл, чтобы посмотреть ссылку ] указывает, для одиночного (0) или группового (1) [ Cкачайте файл, чтобы посмотреть ссылку ] предназначен [ Cкачайте файл, чтобы посмотреть ссылку ], а второй является ли он универсальным (0) или локально управляемым (1).
Третье поле указывает часть адреса, которую производитель получает (при регистрации) в [ Cкачайте файл, чтобы посмотреть ссылку ], а три последних [ Cкачайте файл, чтобы посмотреть ссылку ] выбираются изготовителем устройства. Адрес устройства глобально уникален и обычно зашивается в аппаратуру.
Четвёртое поле показывает номер интерфейса.

IP-адрес (aй-пи адрес, сокращение от [ Cкачайте файл, чтобы посмотреть ссылку ] Internet Protocol Address) уникальный [ Cкачайте файл, чтобы посмотреть ссылку ] ([ Cкачайте файл, чтобы посмотреть ссылку ]) устройства (обычно [ Cкачайте файл, чтобы посмотреть ссылку ]), подключённого к локальной сети или [ Cкачайте файл, чтобы посмотреть ссылку ].
IP-адрес представляет собой 32-битовое (по версии [ Cкачайте файл, чтобы посмотреть ссылку ]) или 128-битовое (по версии [ Cкачайте файл, чтобы посмотреть ссылку ]) двоичное число. Удобной формой записи IP-адреса ([ Cкачайте файл, чтобы посмотреть ссылку ]) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например, 192.168.0.1. (или 128.10.2.30 традиционная десятичная форма представления адреса, а 10000000 00001010 00000010 00011110 двоичная форма представления этого же адреса).
Какая часть адреса относится к номеру сети, а какая к номеру узла, определяется значениями первых бит адреса. Значения этих бит являются также признаками того, к какому классу относится тот или иной IP-адрес.
На рисунке показана структура IP-адреса разных классов.
[ Cкачайте файл, чтобы посмотреть ссылку ]
Первый байт адреса полностью определяет класс сети:
A: (0000 0000 -- 0111 1111)2     (0 -- 127)10 [ Cкачайте файл, чтобы посмотреть ссылку ] -- local network 127.0.0.0/8
B: (1000 0000 -- 1011 1111)2     (128 -- 191)10
C: (1100 0000 -- 1101 1111)2     (192 -- 223)10
D: (1110 -- 1110 1111)2     (224 -- 255)10 мнемоника -- multicast 224.0.0.0/4
Доме
·н область (ветвь) иерархического пространства доменных имён сети [ Cкачайте файл, чтобы посмотреть ссылку ], которая обозначается уникальным доменным именем.
Доме
·нное имя символьное имя домена. Должно быть уникальным в рамках одного домена. Полное имя домена состоит из имён всех доменов, в которые он входит, разделённых точками. Например, [ Cкачайте файл, чтобы посмотреть ссылку ] ru.wikipedia.org. (с точкой в конце) обозначает домен третьего уровня ru, который входит в домен второго уровня wikipedia, который входит в домен org, который входит в [ Cкачайте файл, чтобы посмотреть ссылку ]. Доменное имя служит для адресации узлов сети Интернет и расположенных на них сетевых ресурсов ([ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ], сетевых сервисов) в удобной для человека форме. Альтернативой может быть адресация узла по [ Cкачайте файл, чтобы посмотреть ссылку ], что менее удобно и труднее запоминается.
Доме
·нная зона совокупность доменных имён определённого уровня, входящих в конкретный домен. Например, зона wikipedia.org. означает все доменные имена третьего уровня в этом домене. Термин «доменная зона» в основном применяется в технической сфере, при настройке [ Cкачайте файл, чтобы посмотреть ссылку ]-серверов (поддержание зоны, делегирование зоны, трансфер зоны).
Виды доменных имён
Международные домены ([ Cкачайте файл, чтобы посмотреть ссылку ])
Так называемые [ Cкачайте файл, чтобы посмотреть ссылку ] управляются организацией [ Cкачайте файл, чтобы посмотреть ссылку ].
Национальные домены ([ Cкачайте файл, чтобы посмотреть ссылку ])
[ Cкачайте файл, чтобы посмотреть ссылку ] делегированы соответствующим национальным регистраторам, которые устанавливают правила регистрации в них либо сами, либо согласно указаниям правительства. Управляющей организацией является [ Cкачайте файл, чтобы посмотреть ссылку ].
Зарезервированные доменные имена
Документ [ Cкачайте файл, чтобы посмотреть ссылку ] (Reserved Top Level DNS Names Зарезервированные имена доменов верхнего уровня) определяет названия доменов, которые следует использовать в качестве примеров (например, в документации), а также для тестирования. Кроме [ Cкачайте файл, чтобы посмотреть ссылку ], в эту группу также входят [ Cкачайте файл, чтобы посмотреть ссылку ], [ Cкачайте файл, чтобы посмотреть ссылку ] и др.
Корпоративные информационные системы
Структура корпоративной ИС. Функциональные компоненты КИС. Классификация КИС.
Корпоративная информационная система (КИС) – это совокупность информационных систем отдельных подразделений предприятия, объединенных общим документооборотом, таких, что каждая из систем выполняет часть задач по управлению принятием решений, а все системы вместе обеспечивают функционирование предприятия в соответствии со стандартами качества ИСО 9000.
Классификация по виду
MPS (Master Planning Shedule) – Хорошо известная методология «объемно-календарного планирования». Является базовой практически для всех планово-ориентированных методологий. Применяется в основном в производстве, но также может использоваться и в других отраслях бизнеса, например, дистрибуции.
MRP (Material Requirements Planning) – Методология планирования потребности в материальных ресурсах, заключающаяся в определении конечной потребности в ресурсах по данным объемно-календарного плана производства. Ключевым понятием методологии является понятие «разузлование», т.е. приведение древовидного состава изделия к линейному списку (Bill of Materials), по которому планируется потребность и осуществляется заказ комплектующих.
CRP (Capacity Requirements Planning) – Планирование производственных ресурсов. Данная концепция схожа с MRP, но вместо единого понятия состава изделия она оперирует такими понятиями, как «обрабатывающий центр», «машина», «рабочие ресурсы», ввиду чего технически реализация CRP более сложна. Обычно применяется совместно с MRP ввиду тесной логической связи при планировании. Методологии MRP/CRP применяются в АСУП производственных предприятий.
FRP (Finance Requirements Planning) – Планирование финансовых ресурсов.
MRPII (Manufacturing Resources Planning) – Планирование производства. Интегрированная методология, включающая MRP/CRP и, как правило, MPS и FRP. При использовании данной методологии обязательно подразумевается анализ финансовых результатов производственного плана.
ERP (Enterprise Resources Planning) – Концепция бизнес-планирования. Под ERP подразумевается «интегрированная» система, выполняющая функции, предусмотренные концепциями MPS-MRP/CRP-FRP. Важным отличием от методологии MRPII является возможность «динамического анализа» и «динамического изменения плана» по всей цепочке планирования. Конкретные возможности методологии ERP существенно зависят от программной реализации. Концепция ERP более «размыта», чем MRPII. Если MRPII имеет явно выраженную направленность на производственные компании, то методология ERP оказывается применимой и в торговле, и в сфере услуг, и в финансовой сфере.
CSRP (Customer Synchronized Resources Planning) – Планирование ресурсов, синхронизированное с покупателем. CSRP включает в себя полный цикл – от проектирования будущего изделия с учетом требований заказчика, до гарантийного и сервисного обслуживания после продажи. Суть CSRP состоит в том, чтобы интегрировать покупателя в систему управления предприятием. При этом не отдел продаж, а сам покупатель размещает заказ на изготовление продукции, сам отвечает за правильность его исполнения и при необходимости отслеживает соблюдение сроков производства и поставки. Предприятие же может очень четко отслеживать тенденции спроса на его продукцию.
SCM (Supply Chain Management) – Управление цепочками поставок. Концепция SCM придумана для оптимизации управления логистическими цепями и позволяет существенно снизить транспортные и операционные расходы путем оптимального структурирования логистических схем поставок. Концепция SCM поддерживается в большинстве систем ERP- и MRPII-класса.
CRM (Customer Relationship Management) – Концепция построения автоматизированных систем обслуживания клиентов компании. CRM подразумевает накопление, обработку и анализ не только финансово-бухгалтерской, но и прочей информации о взаимоотношениях с клиентами. Это способствует повышению производительности менеджеров, улучшает качество обслуживания клиентов и способствует увеличению продаж.
Структура корпораций и предприятий; архитектура, эксплуатация и сопровождение информационных систем ИС.
Архитектура КИС состоит из нескольких уровней.
Информационно-логический уровень.
Представляет собой совокупность потоков данных и центров (узлов) возникновения, потребления и модификации информации. Может быть представлен в виде модели, на основании которой разрабатываются структуры баз данных, системные соглашения и организационные правила для обеспечения взаимодействия компонентов прикладного программного обеспечения.
Прикладной уровень.
Представляет собой совокупность прикладных программ и программных комплексов, которые реализуют функционирование информационно-логической модели. Это могут быть системы документооборота, системы контроля над исполнением заданий, системы сетевого планирования, АСУ ТП, САПР, бухгалтерские системы, офисные пакеты, системы управления финансами, кадрами, логистикой, и т.д. и т.п.
Системный уровень.
Операционные системы и сетевые средства.
Аппаратный.
Средства вычислительной техники.
Транспортный.
Активное и пассивное сетевое оборудование, сетевые протоколы и технологии.

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

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

Понятие и структура ERP – системы. Пример ERP – систем.
Исторически концепция ERP стала развитием более простых концепций MRP (Material Requirement Planning Планирование материальных потребностей) и MRP II (Manufacturing Resource Planning Планирование производственных ресурсов). Используемый в ERP-системах программный инструментарий позволяет проводить производственное планирование, моделировать поток заказов и оценивать возможность их реализации в службах и подразделениях предприятия, увязывая его со сбытом.
В основе ERP систем лежит принцип создания единого хранилища данных, содержащего всю корпоративную бизнес-информацию и обеспечивающего одновременный доступ к ней любого необходимого количества сотрудников предприятия, наделенных соответствующими полномочиями. Изменение данных производится через функции (функциональные возможности) системы. Основные функции ERP систем: ведение конструкторских и технологических спецификаций, определяющих состав производимых изделий, а также материальные ресурсы и операции, необходимые для его изготовления; формирование планов продаж и производства; планирование потребностей в материалах и комплектующих, сроков и объемов поставок для выполнения плана производства продукции; управление запасами и закупками: ведение договоров, реализация централизованных закупок, обеспечение учета и оптимизации складских и цеховых запасов; планирование производственных мощностей от укрупненного планирования до использования отдельных станков и оборудования; оперативное управление финансами, включая составление финансового плана и осуществление контроля его исполнения, финансовый и управленческий учет; управления проектами, включая планирование этапов и ресурсов, необходимых для их реализации.
Достоинства
Использование ERP системы позволяет использовать одну интегрированную программу вместо нескольких разрозненных. Единая система может управлять обработкой, логистикой, дистрибуцией, запасами, доставкой, выставлением счетов-фактур и бухгалтерским учётом.
Реализуемая в ERP-системах система разграничения доступа к информации предназначена (в комплексе с другими мерами информационной безопасности предприятия) для противодействия как внешним угрозам (например, промышленному шпионажу), так и внутренним (например, хищениям). Внедряемые в связке с CRM-системой и системой контроля качества, ERP-системы нацелены на максимальное удовлетворение потребностей компаний в средствах управления бизнесом.
Недостатки
Множество проблем, связанных с ERP, возникают из-за недостаточного инвестирования в обучение персонала, а также в связи с недоработанностью политики занесения и поддержки актуальности данных в ERP И недоверие компаний высокотехнологичным решениям.
Лидерами российского рынка ERP-систем являются:
Oracle Продвижением Oracle Applications в России занимается российское представительство корпорации Oracle - Oracle CIS - через своих бизнес-партнеров. В настоящее время в России и СНГ реализовано 29 проектов по внедрению ERP-системы Oracle Applications со средним количеством пользователей около 70. Microsoft Business Solutions Представительство Microsoft действует в России с ноября 1992 г., с июля 2004 г. - ООО "Майкрософт Рус". MBS является одним из ведущих мировых поставщиков ERP-решений. Компания предлагает своим клиентам целую линейку продуктов Axapta, Great Plains, Navision, Solomon, а также Microsoft CRM, предназначенных для комплексной автоматизации прежде всего средних и малых предприятий.

В апреле 2000 г. на российском рынке ERP-систем для средних предприятий появилась локализованная версия Axapta 2.1 (а уже в декабре 2001 г. Navision Axapta 2.5), разработанная датской компанией Navision a/s. Специально для розничных сетей, работающих в России, на базе ERP-системы Microsoft Axapta было разработано отраслевое решение Axapta Retail. Стоимость поставки и внедрения системы Axapta составляет несколько сотен тысяч долларов.
Корпорация Галактика На рынке с 1986 г. Доход в 2005 г. ,7 млн. (на 16% больше, чем в 2004 г.) В 2005 г. выпустила на рынок полнофункциональный комплекс бизнес-решений Галактика Business Suite, ядром которого является система Галактика ERP. Cогласно рейтингу, подготовленному "Эксперт РА", по итогам первого полугодия 2005 г. корпорация "Галактика" занимает 10-е место среди крупнейших консалтинговых групп России. Имеет отделения в Санкт-Перетбурге, Екатеринбурге и Самаре, официальных представителей в Тюмени, Новокузнецке, Хабаровске и Владивостоке, а также центральные офисы в Минске, Киеве и Алматы. 1С ЗАО "1С" было основано в 1991 г. По данным экспертов, в 2003 г. продажи компании составили млн., в первом полугодии 2004 г. млн. Хотя компания традиционно не позиционирует свои решения как продукты класса ERP, в 2005 г. IDC впервые включила ее в свое исследование, отмечая, что они полностью соответствуют мировым стандартам систем ERP. За 2004 г. продажи "1С Предприятие: 8.0" выросли на 143%, а за январь-сентябрь 2005 г. на 282% по сравнению с аналогичным периодом 2004 г. Широкое распространение продуктов 1С во многом обусловлено тем, что "1С" работает с пользователями через самую разветвленную на компьютерном рынке СНГ партнерскую сеть. "1С" не ограничивается продажей собственных разработок. Фирма официальный дистрибьютор программного обеспечения Miсrosoft, Novell, Symantec, Intel и других зарубежных фирм.

Понятие и структура OLAP – системы. Архитектура OLAP – приложений.
Механизм OLAP является на сегодня одним из популярных методов анализа данных. Есть два основных подхода к решению этой задачи. Первый из них называется Multidimensional OLAP (MOLAP) – реализация механизма при помощи многомерной базы данных на стороне сервера, а второй Relational OLAP (ROLAP) – построение кубов 'на лету' на основе SQL запросов к реляционной СУБД. Каждый из этих подходов имеет свои плюсы и минусы. Их сравнительный анализ выходит за рамки этой статьи. Мы же опишем нашу реализацию ядра настольного ROLAP модуля.
Такая задача возникла после применения ROLAP системы, построенной на основе компонентов Decision Cube, входящих в состав Borland Delphi. К сожалению, использование этого набора компонент показало низкую производительность на больших объемах данных. Остроту этой проблемы можно снизить, стараясь отсечь как можно больше данных перед подачей их для построения кубов. Но этого не всегда бывает достаточно.
В Интернете и прессе можно найти много информации об OLAP системах, но практически нигде не сказано о том, как это устроено внутри. Поэтому решение большинства проблем нам давалось методом проб и ошибок.
Общую схему работы настольной OLAP системы можно представить следующим образом:

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


Понятие гиперкуба. Метки. Иерахии и уровни. Срезы гиперкуба.
Гиперкуб данных содержит одно или более измерений и представляет собой упорядоченный набор ячеек (Рис. 1). Каждая ячейка определяется одним и только одним набором значений измерений - меток. Ячейка может содержать данные - меру или быть пустой.
Под измерением будем понимать множество меток, образующих одну из граней гиперкуба. Примером временного измерения является список дней, месяцев, кварталов. Примером географического измерения может быть перечень территориальных объектов: населенных пунктов, районов, регионов, стран и т.д.
Для получения доступа к данным пользователю необходимо указать одну или несколько ячеек путем выбора значений измерений, которым соответствуют необходимые ячейки. Процесс выбора значений измерений будем называть фиксацией меток, а множества выбранных значений измерений - множеством фиксированных меток.
Метки
Значения, "откладываемые" вдоль измерений, называются членами или метками (members). Метки используются как для "разрезания" куба, так и для ограничения (фильтрации) выбираемых данных - когда в измерении, остающемся "неразрезанным", нас интересуют не все значения, а их подмножество, например три города из нескольких десятков. Значения меток отображаются в двумерном представлении куба как заголовки строк и столбцов.
Иерархии и уровни
Метки могут объединяться в иерархии, состоящие из одного или нескольких уровней (levels). Например, метки измерения "Магазин" (Store) естественно объединяются в иерархию с уровнями:
   All (Мир)
      Country (Страна)
         State (Штат)
            City (Город)
               Store (Магазин).
В соответствии с уровнями иерархии вычисляются агрегатные значения, например объем продаж для USA (уровень "Country") или для штата California (уровень "State"). В одном измерении можно реализовать более одной иерархии - скажем, для времени: {Год, Квартал, Месяц, День} и {Год, Неделя, День}.

13 EMBED Photoshop.Image.9 \s 1415
Операции манипулирования данными в гиперкубе. Агрегация данных в гиперкубе.
Агрегация данных - суть получение значений, соответствующих меткам некоторого уровня [ Cкачайте файл, чтобы посмотреть картинку ]иерархического измерения D на основе значений уровня [ Cкачайте файл, чтобы посмотреть картинку ].
Рассмотрим иерархическое измерение D с L уровнями (Рис. 2). Первичные данные (факты) соответствуют нижнему уровню иерархии ([ Cкачайте файл, чтобы посмотреть картинку ]).
[ Cкачайте файл, чтобы посмотреть картинку ]

Рис. 2. Агрегация гиперкуба данных. Одномерное представление.
Вычисление агрегатов производится в соответствии с применяемым методом агрегирования. Например, в случае суммирования значение агрегата [ Cкачайте файл, чтобы посмотреть картинку ]на уровне иерархии [ Cкачайте файл, чтобы посмотреть картинку ]может быть вычислено по формуле: [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- количество фактов, соответствующих меткам, являющимся дочерними по отношению к метке j.
Обобщая, получим формулы вычисления агрегатов по методу суммирования на остальных уровнях иерархии: [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]
Ось измерения D, первоначально содержащая метки, соответствующие нижнему уровню иерархии ([ Cкачайте файл, чтобы посмотреть картинку ]), может быть дополнена метками, соответствующими уровням иерархии, начиная с [ Cкачайте файл, чтобы посмотреть картинку ]. Таким образом, различие между метками, соответствующими первичным данным и метками, соответствующим агрегатам является условным.
Операция свертки данных в этом случае представляет собой построение среза гиперкуба данных, соответствующего смене метки уровня агрегации [ Cкачайте файл, чтобы посмотреть картинку ]на уровень [ Cкачайте файл, чтобы посмотреть картинку ]. Операция детализации соответствует смене метки уровня [ Cкачайте файл, чтобы посмотреть картинку ]на уровень [ Cкачайте файл, чтобы посмотреть картинку ].
Количество агрегатов для одного измерения [ Cкачайте файл, чтобы посмотреть картинку ]. Рассмотрим случай двух измерений (Рис. 3).
[ Cкачайте файл, чтобы посмотреть картинку ]

Рис. 3. Агрегация гиперкуба данных. Двумерное представление.
Количество агрегатов, хранимое в гиперкубе данных наряду с первичными данными, зависит от количества меток, соответствующих уровням иерархии измерений гиперкуба, начиная с [ Cкачайте файл, чтобы посмотреть картинку ], и может существенно превышать количество первичных данных.
В случае двух измерений число агрегатов будет составлять сумма значений областей: [ Cкачайте файл, чтобы посмотреть картинку ]. С другой стороны, количество агрегатов может быть вычислено как разность количества всех значений гиперкуба и количества значений, соответствующих области первичных данных [ Cкачайте файл, чтобы посмотреть картинку ]. Количество значений последней есть произведение [ Cкачайте файл, чтобы посмотреть картинку ]. Таким образом, количество агрегатов [ Cкачайте файл, чтобы посмотреть картинку ]гиперкуба данных в двумерном случае составляет: [ Cкачайте файл, чтобы посмотреть картинку ]
Обобщая на случай произвольного числа измерений D, получим: [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- кол-во меток i-го уровня иерархии измерения [ Cкачайте файл, чтобы посмотреть картинку ], а [ Cкачайте файл, чтобы посмотреть картинку ]- кол-во уровней иерархии измерения j.

Разреженный гиперкуб данных. Бинарное представление гиперкуба данных. Выборка данных из гиперкуба.
Наполнение гиперкуба данными при недостаточном количестве исходных данных приводит к образованию пустых ячеек. Гиперкубы данных с большим количеством пустых ячеек называют разреженными.
Введем оператор подсчета количества непустых ячеек [ Cкачайте файл, чтобы посмотреть картинку ], ставящий в соответствие множествам фиксированных измерений [ Cкачайте файл, чтобы посмотреть картинку ]и фиксированных меток [ Cкачайте файл, чтобы посмотреть картинку ]гиперкуба данных [ Cкачайте файл, чтобы посмотреть картинку ]некоторое число [ Cкачайте файл, чтобы посмотреть картинку ], равное количеству непустых ячеек в области гиперкуба данных, соответствующей фиксированным значениям.
Количество всех ячеек [ Cкачайте файл, чтобы посмотреть картинку ], соответствующих множествам [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]будет равно произведению мощностей множеств [ Cкачайте файл, чтобы посмотреть картинку ]по незафиксированным измерениям [ Cкачайте файл, чтобы посмотреть картинку ]: [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда степень разреженности области гиперкуба данных [ Cкачайте файл, чтобы посмотреть картинку ](в процентах) на множествах фиксированных измерений [ Cкачайте файл, чтобы посмотреть картинку ]и меток [ Cкачайте файл, чтобы посмотреть картинку ]можно вычислить как отношение: [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]
Заметим, что при [ Cкачайте файл, чтобы посмотреть картинку ]оператор [ Cкачайте файл, чтобы посмотреть картинку ]принимает значение 0, если ячейка, соответствующая множеству [ Cкачайте файл, чтобы посмотреть картинку ]пуста и 1 в противном случае. Степень разреженности гиперкуба [ Cкачайте файл, чтобы посмотреть картинку ]в целом: [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]
Оценка заполненности многомерной базы данных может быть произведена на основе анализа хранилища данных до начала операции формирования гиперкубов данных. Вычисление значений оператора [ Cкачайте файл, чтобы посмотреть картинку ]на различных наборах [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]позволяет оценить степень заполнения хранилища данных и построить гиперкуб данных заданной плотности путем отбрасывания меток, соответствующих пустым ячейкам.
Введение оператора [ Cкачайте файл, чтобы посмотреть картинку ]является основой формального подхода к описанию плотности гиперкубов данных и решению множества задач, связанных с оценкой заполненности многомерных баз данных. Некоторые из этих задач будут рассмотрены далее подробно.
Бинарное представление
Для вычисления значения оператора [ Cкачайте файл, чтобы посмотреть картинку ]может быть использована модель бинарного представления гиперкуба данных (Рис. 4).
[ Cкачайте файл, чтобы посмотреть картинку ]

Рис. 4. Бинарное представление гиперкуба данных

Бинарное представление гиперкуба данных [ Cкачайте файл, чтобы посмотреть картинку ]представляет собой гиперкуб [ Cкачайте файл, чтобы посмотреть картинку ], структура которого в точности повторяет структуру гиперкуба данных [ Cкачайте файл, чтобы посмотреть картинку ]. Однако вместо значений, содержащихся в ячейках гиперкуба данных [ Cкачайте файл, чтобы посмотреть картинку ], ячейки бинарного гиперкуба [ Cкачайте файл, чтобы посмотреть картинку ]содержат: 1 - если соответствующая ячейка [ Cкачайте файл, чтобы посмотреть картинку ]содержит числовое значение, 0 - если соответствующая ячейка [ Cкачайте файл, чтобы посмотреть картинку ]пуста.
Таким образом, гиперкуб [ Cкачайте файл, чтобы посмотреть картинку ]является бинарным представлением гиперкуба данных [ Cкачайте файл, чтобы посмотреть картинку ], характеризующим степень его заполненности.
Значение оператора [ Cкачайте файл, чтобы посмотреть картинку ]может быть вычислено как сумма значений [ Cкачайте файл, чтобы посмотреть картинку ]бинарного гиперкуба [ Cкачайте файл, чтобы посмотреть картинку ]: [ Cкачайте файл, чтобы посмотреть картинку ],
где [ Cкачайте файл, чтобы посмотреть картинку ]- срез бинарного гиперкуба, соответствующий множествам фиксированных значений [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]гиперкуба данных [ Cкачайте файл, чтобы посмотреть картинку ].
Множество значений операторов, соответствующих выбранному измерению [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]может быть определено как одномерная проекция бинарного представления [ Cкачайте файл, чтобы посмотреть картинку ]гиперкуба данных [ Cкачайте файл, чтобы посмотреть картинку ]по выбранному измерению [ Cкачайте файл, чтобы посмотреть картинку ].
Аналогично определяется двумерная проекция по выбранным измерениям [ Cкачайте файл, чтобы посмотреть картинку ]и трехмерная проекция. Построение одно-, двух- и трехмерных проекций бинарного представления гиперкуба данных является основой создания карт заполненности многомерных баз данных и может быть использовано при решении различных задач, связанных с обработкой данных в многомерных базах данных с неполной информацией.
Карта заполненности гиперкуба данных. Одномерная, двумерная и трехмерная проекции карты. Организация доступа к данным в гиперкубе. Агрегация разреженного гиперкуба данных.
Метод построения карт заполненности может быть использован в качестве основы создания средств эффективной выборки данных из разреженного гиперкуба данных, а также средств администрирования и анализа заполненности многомерных баз данных. Суть метода состоит в создании визуального представления многомерной базы данных, позволяющего пользователю оценивать заполненность гиперкубов данных и осуществлять визуальный поиск информации в базе данных.
Карта заполненности представляет собой набор визуальных образов (разноцветных графических примитивов) и строится на основе одно-, двух- или трехмерной проекции бинарного представления гиперкуба данных.
Одномерная проекция
На рис. 6 представлен пример одномерной проекции бинарного представления разреженного гиперкуба данных в виде картограммы. Цветовая градация территориальных объектов соответствует количеству данных в гиперкубе. В качестве измерения для построения проекции выбрана ось территориальных объектов.
[ Cкачайте файл, чтобы посмотреть картинку ]

Рис. 6. Одномерная картографическая проекция бинарного представления разреженного гиперкуба данных

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

Рис. 7. Одномерная проекция бинарного представления гиперкуба данных.

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

Рис. 8. Двумерная карта заполненности
В качестве примера можно привести двумерную карту заполненности многомерной базы данных, содержащей значения показателей образовательной статистики, соответствующие территориальным объектам, а также годам (рис. 8). Красный цвет соответствует отсутствию данных, синий - наличию данных за один год, зеленый - наличию данных за два года. Взглянув на такую карту, пользователь получает довольно полное представление о наличии данных по определенным показателям и территориальным объектам с учетом временной составляющей.
Алгоритм построения двумерной проекции представляет собой процедуру подсчета значений оператора [ Cкачайте файл, чтобы посмотреть картинку ]для всевозможных комбинаций меток [ Cкачайте файл, чтобы посмотреть картинку ], соответствующих выбранных для построения проекции измерений [ Cкачайте файл, чтобы посмотреть картинку ]. Результатом работы алгоритма является двумерный массив (матрица) значений оператора [ Cкачайте файл, чтобы посмотреть картинку ], соответствующих меткам измерений [ Cкачайте файл, чтобы посмотреть картинку ], на основе которого может быть построена двумерная карта заполненности гиперкуба данных, соответствующая указанным измерениям.
На первом шаге алгоритма определяется множество измерений [ Cкачайте файл, чтобы посмотреть картинку ], по которому будет построена проекция. Затем алгоритм входит в стадию вложенного цикла по всем меткам [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]. В теле цикла происходит формирование множества [ Cкачайте файл, чтобы посмотреть картинку ], а затем вычисление значения оператора [ Cкачайте файл, чтобы посмотреть картинку ]. Вычисленные значения [ Cкачайте файл, чтобы посмотреть картинку ]сохраняются в массиве. Возможно также динамическое формирование карты заполненности сразу после вычисления значения [ Cкачайте файл, чтобы посмотреть картинку ].
Трехмерная проекция
При наличии у гиперкуба данных большого числа измерений целесообразно использовать карту заполненности, основанную на трехмерной проекции бинарного представления гиперкуба данных.
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]

Рис. 9. Трехмерная карта заполненности

На рис. 9 представлены примеры трехмерных карт заполненности многомерной базы данных, включающей следующие измерения:
территориальные объекты (субъекты федерации) (OY);
показатели (OX);
время (года) (OZ);
тип местоположения учебных заведений (городское/сельское)
Ось Х соответствует показателям, ось Y - территориальным объектам, ось Z - времени. Цвет и размер графического примитива - шарика соответствует наличию данных по четвертому измерению: большой зеленый шарик показывает наличие данных, соответствующих всем меткам измерения, шарик меньшего размера - только одной метке, отсутствие шарика - отсутствие данных.
Для удобства работы пользователя с трехмерным представлением предусмотрены операции вращения куба, приближения, отдаления и т.п. Данный подход может быть условно назван трехмерной навигацией в гиперкубе данных.
Трехмерная навигация в разреженном гиперкубе данных может быть рассмотрена в качестве основы создания эффективного конструктора запросов к многомерной базе данных с частичной или слабой заполненностью. Использование трехмерной проекции бинарного представления позволяет избежать "попадания в пустоту" при формировании запроса, что существенно повышает эффективность работы пользователя с такой базой данных.
Многомерное хранение данных. Сравнение оперативных и аналитических ИС. Концепция хранилища данных.
В основе концепции Хранилищ Данных лежат две основополагающие идеи:
Интеграция ранее разъединенных детализированных данных:-исторические архивы, -данные из традиционных СОД, -данные из внешних источников в едином Хранилище Данных, их согласование и возможно агрегация.
Разделение наборов данных используемых для операционной обработки и наборов данных используемых для решения задач анализа.
Предметом концепции Хранилищ Данных являются сами данные. После того как традиционная СОД реализована и начинает функционировать, она становится ровно таким же самостоятельным объектом реального мира, как и любое, производственный процесс. А данные, которые являются одним из конечных продуктов такого производства, обладают ровно теми же свойствами и характеристиками, что и любой промышленный продукт: сроком годности, местом складирования (хранения), совместимостью с данными из других производств (СОД), рыночной стоимостью, транспортабельностью, комплектностью, ремонтопригодностью и т.д.
И именно с этой точки зрения рассматриваются данные в Хранилищах Данных. То есть, её предметом являются не способы описания и отображения объектов предметной области, а собственно данные, как самостоятельный объект предметной области, порожденной в результате функционирования ранее созданных информационной систем.
Для правильного понимания данной концепции необходимо понимание следующих принципиальных моментов:
Концепция Хранилищ Данных - это не концепция анализа данных, скорее это концепция подготовки данных для анализа.
Концепция Хранилищ Данных не предопределяет архитектуру целевой аналитической системы. Она говорит о том, какие процессы должны выполняться в системе, но не о том, где конкретно и как эти процессы должны выполняться.
Концепция Хранилищ Данных предполагает не просто единый логический взгляд данные организации (как иногда это трактуется). Она предполагает реализацию единого интегрированного источника данных.
Последний пункт достаточно принципиален, поэтому рассмотрим его более детально. Сегодня, достаточно популярны решения, предполагающие интеграцию различных СОД на основе единого справочника метаданных (поддерживающего единый логический взгляд данные организации), но не единого интегрированного источника данных (Виртуальное Хранилище Данных). При этом предполагается динамическая выгрузка, по каждому новому запросу, данных из различных операционных источников (СОД) их динамическое согласование, агрегация и транспортировка к пользователю.
Очевидно, что для определённых классов приложений, это решение вполне корректно. Но следует заранее понимать все ограничения им накладываемые.

Компоненты хранилища данных. Проблемы интеграции данных в информационном хранилище. Реализация хранилищ данных. Витрины данных.
Основополагающим отличием Хранилищ Данных от традиционных СОД является то, что они практически никогда не создаются на пустом месте. И практически всегда, конечное решение будет разнородным (с точки зрения производителей программных средств, принципов построения, операционных систем) .
Основой Хранилищ Данных являются не внутренние, как в большинстве традиционных СОД, а внешние источниками данных: различного рода информационные системы, электронные архивы, общедоступные и коммерческие электронные каталоги, справочники, статистические сборники. Как правило, сегодня в любой организации реально функционирует множество несвязанных или слабо связанных СОД. В большинстве случаев, они создавались в различное время, различными коллективами разработчиков и реализованы на основе различных программных и аппаратных средств. Таким образом, уже сама основа, на которой будет строиться Хранилище Данных, чаще всего уже является крайне неоднородной. Добавьте сюда средства выгрузки, транспортировки, реализации целевой БД Хранилища Данных.
Очевидно, что в таких условиях, даже говорить об однородности программных средств чрезвычайно сложно. И практически всегда, задача построения Хранилища Данных, это задача построения единой согласовано функционирующей информационной системы, на основе неоднородных программных средств и решений. И уже сам выбор средств реализации Хранилища Данных становится чрезвычайно сложной задачей. Здесь должно учитываться множество факторов, включая, взаимную совместимость различных программных компонент, легкость их освоения и использования, эффективность функционирования, стабильность и даже формы, уровень и потенциальную перспективность взаимоотношений различных фирм производителей.
Хранилища Данных уже по своей природе являются распределенным решением.
В основе концепции Хранилищ Данных, лежит физическое разделение узлов, в которых выполняется операционная обработка, от узлов в которых выполняется анализ данных. И хотя, при реализации такой системы, нет необходимости в строгой синхронизации данных в различных узлах (например, на основе средств двух фазной фиксации транзакций), средства асинхронной асимметричной репликации данных являются неотъемлемой частью практически любого решения.
Наличие метаданных и средств их представления конечным пользователям является одним из основополагающих факторов успешной реализации Хранилища Данных. Более того, без наличия актуальных, максимально полных и легко понимаемых пользователем описаний данных, Хранилище Данных превращается в обычный, но очень дорогостоящий электронный архив.
Первой же задачей, с которой сталкиваешься при проектировании и реализации системы Хранилищ Данных, является необходимость одновременной работы с самыми разнородными внешними источниками данных, несогласованностью их структур и форматов, масштабами и количеством архивов, которые должны быть переработаны и загружены. И при построении такой системы, разработчику сложно обойтись без высокоуровневых средств описания информационной модели системы. Причем, эта модель должна содержать описания не только целевых структур данных в БД Хранилища, но и структур данных в источниках их получения (различных информационных системах, архивах, электронных справочниках и т.д.), правила, процедуры и периодичность их выборки и выгрузки, процедуры и места согласования и агрегации.
Наличие развитых средства защиты и ограничения прав доступа.
Собрав в одном месте всю информацию об истории развития организации, ее успехах и неудачах, о взаимоотношениях с поставщиками и заказчиками, об истории развития и состоянии рынка, менеджеры получают уникальную возможность для анализа прошлой деятельности, сегодняшнего дня и построения обоснованных прогнозов на будущее. Однако не следует забывать и о том, что если не обеспечены надлежащие средства защиты и ограничения прав доступа, вы можете снабдить этой информацией и ваших конкурентов.
Одним из первых же вопросов, встающих при обсуждении проекта Хранилища Данных, является вопрос защиты данных. Чисто психологически, многих пугают не столько затраты на реализацию системы Хранилищ Данных (чаще всего есть понимание, что эффект от ее использования будет больше), а то, что доступ к критически значимой информации может получить кто либо, не имеющий на это права.
В таких системах, часто оказывается недостаточно защиты обеспечиваемой в стандартных конфигурациях коммерческих СУБД (обычно уровень защиты по классу "C2 Orange Book".) Региональный менеджер должен видеть только те данные, которые относятся к его региону, а менеджер подразделения не должен видеть данные, относящиеся ко всей фирме. Но, для повышения эффективности доступа к данным, в целевой БД Хранилища Данных, все эти данные, как правило, хранятся в виде единой фактологической таблицы. Следствием этого, является то, что средства реализации должны поддерживать ограничения доступа не только на уровне отдельных таблиц и их колонок, но и отдельных строк в таблице (класс "B1 Orange Book").
Не менее остро стоят и вопросы авторизации и идентификации пользователей, защиты данных в местах их преобразования и согласования, в процесс их передачи по сети (шифрование паролей, текстов запросов, данных).
В заключение хотелось бы остановиться на двух моментах. Во первых, не следует искать в концепции Хранилищ Данных что-то совершенно принципиально новое, о чём не говорилось и не писалось ранее и чему нельзя найти аналогий в прошлом. Её реальное значение состоит в том, что Концепция Хранилищ Данных, составляет: "часть ответа со стороны информационных технологий на вопрос: "Что мы делаем дальше?". И подобно многим новациям в технологиях, этот термин используется для того, чтобы описать обезоруживающую по своей простоте концепцию, которая имеет потенциал развиться со временем во что-то более сложное и значительное ". И как было показано выше, уже сегодня можно говорить о том, что появление этой концепции послужило серьёзным стимулом для развития внутренней архитектуры современных СУБД, их программного окружения, инструментальных средств конечного пользователя, различных межкорпоративных стандартов.
И во вторых. Несмотря на то, что стоимость аналитических систем даже сегодня остается достаточно высокой, а методологии и технологии реализации таких систем находятся ещё в стадии их становления, уже сегодня, экономический эффект обеспечиваемый ими существенно превышает эффект от традиционных оперативных систем.
Эффект от правильной организации, стратегического и оперативного планирования развития бизнеса трудно заранее оценить в цифрах, но очевидно, что он в десятки и даже сотни раз может превзойти затраты на реализацию таких систем. Однако не следует и заблуждаться. Эффект обеспечивает не сама система, а люди с ней работающие. Поэтому не совсем корректны декларации типа:система Хранилищ Данных будет помогать менеджеру принимать правильные решения". Cовременные аналитические системы не являются системами искусственного интеллекта и они не могут ни помочь, ни помешать в принятии решения. Их цель своевременно обеспечить менеджера всей информацией необходимой для принятия решения. А какая информация будет запрошена и какое решение будет принято на её основе, зависит только от конкретного человека.
Понятие Data Mining. Приложения Data Mining.
Data mining (добыча знаний) – это процесс выявления скрытых фактов и взаимосвязей в больших массивах данных. Data mining разрешает распространенный парадокс: чем больше накапливается данных о клиентах, тем сложнее и дольше эффективно анализировать эти данные и получать значимые выводы. То, что, по идее, должно быть золотоносной жилой, обычно остается неисследованным из-за отсутствия подходящего персонала, недостатка времени и навыков. Data mining задействует четкое понимание бизнеса и мощные аналитические технологии для быстрого и тщательного изучения больших массивов данных с целью извлечения ценной информации – бизнес аналитики (business intelligence), необходимой для принятия эффективных решений.
Clementine: инструмент для data mining, Clementine позволяет задействовать бизнес-экспертизу на каждом этапе процесса data mining, и, таким образом, создавать мощные прогностические модели, предназначенные для решения конкретных бизнес-задач. SPSS: позволяет использовать мощные статистические методы для усовершенствования процесса принятия решений.
SPSS Classification Trees: позволяет выполнять сегментацию при помощи масштабируемых деревьев решений.
Консалтинг SPSS: независимо от размеров Вашей организации, команда консультантов SPSS может помочь Вам в разработке и внедрении решения data mining, которое будет отвечать индивидуальным потребностям Вашей организации.
В течение последних двух лет пользователи называют Clementine наиболее часто используемым инструментом в опросе, проводимом KDnuggets, ведущим Веб-сайтом по тематике data mining и web mining. А SPSS для Windows и SPSS Classification Trees занимали в этих опросах вторые места.

Разведочный анализ данных и его методы. Типы закономерностей, используемых Data Mining.
В отличие от традиционной проверки гипотез, предназначенной для проверки априорных предположений, касающихся связей между переменными (например, "Имеется положительная корреляция между возрастом человека и его/ее нежеланием рисковать"), разведочный анализ данных (РАД) применяется для нахождения связей между переменными в ситуациях, когда отсутствуют (или недостаточны) априорные представления о природе этих связей. Как правило, при разведочном анализе учитывается и сравнивается большое число переменных, а для поиска закономерностей используются самые разные методы.
Методы многомерного разведочного анализа специально разработаны для поиска закономерностей в многомерных данных (или последовательностях одномерных данных). К ним относятся: кластерный анализ, факторный анализ, анализ лискриминантных функций, многомерное шкалирование, логлинейный анализ, канонические корреляции, пошаговая линейная и нелинейная (например, логит) регрессия, анализ соответствий, анализ временных рядов и деревья классификации.
Cогласно В.А.Дюку [1], выделяют пять стандартных типов закономерностей, выявляемых методами Data Mining:
ассоциация высокая вероятность связи событий друг с другом (например, один товар часто приобретается вместе с другим);
последовательность высокая вероятность цепочки связанных во времени событий (например, в течение определенного срока после приобретения одного товара будет с высокой степенью вероятности приобретен другой);
классификация имеются признаки, характеризующие группу, к которой принадлежит то или иное событие или объект (обычно при этом на основании анализа уже классифицированных событий формулируются некие правила);
кластеризация закономерность, сходная с классификацией и отличающаяся от нее тем, что сами группы при этом не заданы они выявляются автоматически в процессе обработки данных;
временные закономерности наличие шаблонов в динамике поведения тех или иных данных (типичный пример сезонные колебания спроса на те или иные товары либо услуги), используемых для прогнозирования.

Классификация систем Data Mining.Нейронные сети в Data Mining.
Одна из возможных классификаций нейронных сетей - по направленности связей.
Нейронные сети бывают с обратными связями и без обратных связей.
Сети без обратных связей
* Сети с обратным распространением ошибки.
Сети этой группы характеризуются фиксированной структурой, итерационным обучением, корректировкой весов по ошибкам. Такие сети были рассмотрены в предыдущей лекции.
* Другие сети (когнитрон, неокогнитрон, другие сложные модели).
Преимуществами сетей без обратных связей является простота их реализации и гарантированное получение ответа после прохождения данных по слоям.
Недостатком этого вида сетей считается минимизация размеров сети - нейроны многократно участвуют в обработке данных.
Меньший объем сети облегчает процесс обучения.
Сети с обратными связями
* Сети Хопфилда (задачи ассоциативной памяти).
* Сети Кохонена (задачи кластерного анализа).
Преимуществами сетей с обратными связями является сложность обучения, вызванная большим числом нейронов для алгоритмов одного и того же уровня сложности.
Недостатки этого вида сетей - требуются специальные условия, гарантирующие сходимость вычислений.
Другая классификация нейронных сетей: сети прямого распространения и рекуррентные сети.
Сети прямого распространения
* Персептроны.
* Сеть Back Propagation.
* Сеть встречного распространения.
* Карта Кохонена.
Рекуррентные сети. Характерная особенность таких сетей - наличие блоков динамической задержки и обратных связей, что позволяет им обрабатывать динамические модели.
* Сеть Хопфилда.
* Сеть Элмана - сеть, состоящая из двух слоев, в которой скрытый слой охвачен динамической обратной связью, что позволяет учесть предысторию наблюдаемых процессов и накопить информацию для выработки правильной стратегии управления. Эти сети применяются в системах управления движущимися объектами.
Нейронные сети могут обучаться с учителем или без него.
При обучении с учителем для каждого обучающего входного примера требуется знание правильного ответа или функции оценки качества ответа. Такое обучение называют управляемым. Нейронной сети предъявляются значения входных и выходных сигналов, а она по определенному алгоритму подстраивает веса синаптических связей. В процессе обучения производится корректировка весов сети по результатам сравнения фактических выходных значений с входными, известными заранее.
При обучении без учителя раскрывается внутренняя структура данных или корреляции между образцами в наборе данных. Выходы нейронной сети формируются самостоятельно, а веса изменяются по алгоритму, учитывающему только входные и производные от них сигналы. Это обучение называют также неуправляемым. В результате такого обучения объекты или примеры распределяются по категориям, сами категории и их количество могут быть заранее не известны.

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

База данных может использоваться одним пользователем на локальном компьютере или несколькими пользователями в сети. Использование базы данных в сети имеет ряд особенностей. Чтобы подготовить базу данных для использования в сети, необходимо выполнить специальную настройку среды, параметров базы данных и ее объектов и реализовать особенности общего доступа к данным в программном коде приложения.
Предоставление общего доступа к данным и объектам базы данных.
Защита совместно используемых баз данных.
Программный доступ к базам данных с помощью интерфейса DAO.
Способы совместного использования баз данных.
Базы данных могут использоваться одновременно несколькими пользователями в сети. Предоставить общий доступ к базе данных можно несколькими способами:
поместив базу данных в общую папку в сети;
опубликовав в сети таблицы базы данных;
обеспечив подключение к базе данных через Интернет;
с помощью репликации;
с помощью SQL Server.
Совместное использование базы данных
Чтобы предоставить совместный доступ к базе данных, поместите ее на файловый сервер или в общую папку на рабочей станции. Это самый простой метод обеспечения совместного доступа к базе данных и всем ее объектам: формам, отчетам, запросам, макросам и модулям. Он подходит, если нужно, чтобы все пользователи могли использовать одни и те же объекты базы данных одинаковым способом.
Поместив базу данных в общую папку на файловом сервере или рабочей станции, убедитесь в том, что установлен параметр, определяющий открытие базы данных по умолчанию в режиме совместного доступа.
Для работы с базой данных в сети необходимо выполнить локальную или сетевую установку либо установить исполняемую версию.
Совместное использование только данных
Можно предоставить совместный доступ в сети лишь к таблицам в базе данных. Для этого необходимо разделить базу данных на файл объектов данных и файл объектов приложения.
После разделения базы данных поместите файл объектов данных на файловый сервер или в общую папку на рабочей станции, чтобы предоставить общий доступ к таблицам, а файл объектов приложений на компьютер пользователя в виде локальной копии. В этом случае производительность базы данных будет несколько выше, чем при совместном доступе ко всей базе данных, поскольку по сети будут передаваться только данные из таблиц. При этом отдельный пользователь может настроить формы, отчеты и прочие объекты из файла объектов приложения в соответствии со своими индивидуальными потребностями. Эти изменения не отразятся на остальных пользователях, которые используют свои локальные копии файла объектов приложения.
При эксклюзивном (монопольном) способе доступа к файлу этот файл доступен лишь одной захватившей его рабочей станции, и ни одна другая рабочая станция не получит доступа к нему, до тех пор, пока захватившая его станция не отпустит его. При таком виде доступа запрещаются чтение, запись и изменение структуры файла из других сеансов работы. Иногда этот способ доступа называют полной блокировкой файла.
При наложении на файл полной блокировки другие пользователи приложения не могут получить доступ к нему. Нельзя установить полную блокировку файла, если кто-то из пользователей сети любым способом открыл этот файл или установил для него любую блокировку.
При совместном (разделенном) способе доступа к файлу несколько рабочих станций могут одновременно иметь доступ к этому файлу, который открывается в режиме разделения. Для обеспечения целостности данных БД доступ для модификации данных БД осуществляется посредством механизма блокировки изменений, которая ограничивает доступ пользователей к отдельной записи, или к таблице целиком.
При игнорировании правил разделения файлов при совместном доступе может произойти потеря или затирание информации.


Виды команд сетевых СУБД. Виды блокировки файлов и записей. Обработка ошибок сетевыми приложениями. Тестирование сетевого приложения.
Для «ручной» блокировки изменений объекта используются функции FLOCK(), RLOCK(), LOCK(). Функция FLOCK() устанавливает блокировку изменений таблицы целиком, а функции RLOCK() и LOCK() идентичны по своему действию и устанавливают блокировку изменений одной, либо нескольких, записей таблицы. При вызове функции «ручной» блокировки выполняется следующая последовательность действий:
тестируется состояние блокировки требуемого объекта;
если требуемый объект занят монопольно, либо заблокирован другим пользователем, то текущую блокировку установить невозможно, и функция возвращает логическое значение «ложь» (.F.);
если требуемый объект свободен от состояния блокирования, то функция устанавливает на него состояние блокировки изменений и возвращает логическое значение «истина» (.T.).
При использовании функций ручной блокировки надо не забывать снимать установленную блокировку, когда надобность в ней отпадает. Снятие блокировки дает возможность другим пользователям сети работать с ранее заблокированными вами данными.
По умолчанию, установлена возможность одновременной блокировки лишь одной записи таблицы. Если по смыслу задачи требуется одновременно заблокировать несколько записей одной таблицы, то для разрешения такой возможности должна быть выполнена команда SET установки
SET MULTILOCKS ON
Если в списке блокируемых записей содержатся номера более чем одной записи, то VFP пытается блокировать сразу все записи, и, если это удается, то попытка блокировки считается успешной. В противном случае, если хотя бы одну запись из списка невозможно заблокировать, то вся блокировка считается безуспешной, ни одна из записей списка не блокируется, а все ранее сделанные этим пользователем блокировки сохраняются.
Выполняя блокировку по одной записи, можно последовательно заблокировать весь файл таблицы, но предпочтительней это делать функцией flock(), которая выполняется быстрее.
Команды, снимающие блокировку с записей и таблиц, приведены в следующей таблице:
Команда
Действие

CLOSE
Снимает все блокировки записей и таблиц

CLOSE ALL
Снимает все блокировки записей и таблиц

END TRANSACTION
Снимает все автоматически установленные блокировки

QUIT
Снимает все блокировки записей и таблиц

UNLOCK
Снимает все блокировки записей и таблицы в текущей рабочей области

UNLOCK ALL
Снимает все блокировки записей и таблиц во всех рабочих областях

USE
Снимает все блокировки записей и таблицы

SET MULTILOCKS OFF
Позволяет автоматическое снятие текущей блокировки при создании новой

FLOCK()
Перед блокировкой файла снимает все блокировки находящихся в нем записей

TABLEUPDATE()
Прежде чем обновить таблицу, снимает все блокировки

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

Буферизация редактирования данных. Обновление данных с использованием буферизации. Работа с транзакциями.
Транзакция при работе в СУБД есть логическая единица работы, представляющая собой последовательность нескольких операций, которая преобразует некоторое целостное состояние БД в другое целостное состояние, но не гарантирует сохранение ее целостности во все промежуточные моменты времени между этими состояниями.
Транзакция, как логическая единица работы, не обязательно предполагает выполнение только одной операции над БД (например, замена кода в нормативной и оперативной информации).
В идеальном случае, при модификации БД должны существовать гарантии, что эта модикация будет успешной, но на практике всегда существует вероятность возникновения ошибок.
Транзакция в VFP – это набор операций, который:
последовательно изменяет данные, но может рассматриваться как логическая единица;
может управлять конкурирующими изменениями данных;
может использоваться для перехвата ошибок и совершенствования управления модификацией данных.
Система, поддерживающая обработку транзакций – это наилучшее средство обеспечения надежности. Если в транзакции осуществлялась модификация БД, а затем, до ее завершения, произошел сбой, то произведенные обновления будут аннулированы. Таким образом, транзакция либо полностью исполняется, либо полностью аннулируется, так, как если бы она не выполнялась совсем.
Транзакции могут использоваться либо отдельно, либо вместе с буферизацией записи или таблицы. При использовании транзакций, следует учитывать, что транзакции могут выполняться только для связанных таблиц, т.е. таблиц, входящих в состав БД.
При выполнении транзакции используются данные, кэшированные в буфере, а не данные с диска, это делается для того, чтобы использовать самые свежие значения.

Мировые информационные системы
Основные понятия WEB-технологий.
Веб-страницей называется сетевой документ, открываемый в браузере. Обычно веб-страница создается в формате HTML и содержит, как правило, текст, изображения и ссылки. В связи с развитием технологий, веб-страницей также могут называться документы и в другом формате, например, XML, Flash, PDF.
Сайт это набор отдельных веб-страниц, которые связаны между собой ссылками и единым оформлением.
HTML это система верстки веб-страниц, которая определяет, какие элементы и как должны располагаться в документе. Чтобы показать, что мы имеем дело не с обычным текстовым документом, используется термин HTML-документ. Подобные документы открываются под управлением браузера.
HTML-документ Обычный текстовый файл, который может содержать в себе текст, теги и стили. Изображения и другие объекты хранятся отдельно. Содержимое такого файла обычно называется HTML-код.
Браузером называется программа для просмотра веб-страниц. Браузер анализирует код HTML, находит специальные символы, называемые тегами, и использует их для отображения изображений, изменения вида текста, создание ссылок на другие веб-страницы и т.д.
Наиболее популярны следующие браузеры: Internet Explorer, Firefox, Mozilla, Netscape, Opera.
Тег это специальный символ разметки, который применяется для вставки различных элементов на веб-страницу таких как: рисунки, таблицы, ссылки и др. и для изменения их вида. Для обозначения тегов используется символ <тег>. Теги нечувствительны к регистру, поэтому запись и эквивалентна.
Контейнером называется парный тег, внутри которого могут располагаться другие теги. Контейнер требует закрывающего тега, обозначаемого . Таким образом, контейнер состоит из открывающего тега (<тег>) и закрывающего ().
Ссылки являются основой сетевых документов и позволяют переходить с одной веб-страницы на другую. Особенность их состоит в том, что сама ссылка может указывать не только на HTML-файлы, но и на файл любого типа, причем этот файл может размещаться совсем на другом сайте. Главное, чтобы к файлу, на который делается ссылка, был доступ.
CSS (Cascading Style Sheets, каскадные таблицы стилей) или стили это набор параметров форматирования, который применяется к элементам документа, чтобы изменить их внешний вид. Возможность работы со стилями издавна включают в развитые издательские системы и текстовые редакторы, тем самым, позволяя одним нажатием кнопки придать тексту заданный, заранее установленный вид. Теперь это доступно и создателям сайта, когда цвет, размеры текста и другие параметры хранятся в определенном месте и легко «прикручиваются» к любому тегу.
HTML-редактор Редактор, предназначенный для добавления и изменения кода HTML. В отличие от обычных текстовых редакторов здесь существует подсветка синтаксиса, проверка правильности кода, удобное добавление и редактирование параметров тегов, и многое другое.
Кодировка Чтобы русскоязычные символы корректно отображались в браузере, их необходимо указывать в определенной кодировке. Браузер понимает, какая кодировка используется в документе, если определенным образом настроен веб-сервер или внутри веб-страницы добавлен соответствующий параметр.
Веб-сервером называется компьютер, на котором хранятся документы сайта. Одновременно так же называется программа, которая обеспечивает выдачу документов при их запросе браузером, а также работу с различными сервисами. Наиболее популярными веб-серверами являются Apache и Internet Information Server (IIS).

Сервисы Интернет.
Наиболее подходящим для классификации сервисов Интернет является деление на сервисы интерактивные, прямые и отложенного чтения. Эти группы объединяют сервисы по большому числу признаков. Сервисы, относящиеся к классу отложенного чтения, наиболее распространены, наиболее универсальны и наименее требовательны к ресурсам компьютеров и линиям связи. Основным признаком этой группы является та особенность, что запрос и получение информации могут быть достаточно сильно (что, вообще говоря, ограничивается только актуальностью информации на момент получения) разделены по времени. Сюда относится, например, электронная почта.
Сервисы прямого обращения характерны тем, что информация по запросу возвращается немедленно. Однако от получателя информации не требуется немедленной реакции. Сервисы, где требуется немедленная реакция на полученную информацию, т.е. получаемая информация является, по сути дела, запросом, относятся к интерактивным сервисам. Для пояснения вышесказанного можно заметить, что в обычной связи аналогами сервисов интерактивных, прямых и отложенного чтения являются, например, телефон, факс и письменная корреспонденция.
Электронная почта
Электронная почта (e-mail) – первый из сервисов Интернет, наиболее распространенный и эффективный из них.
Электронная почта – типичный сервис отложенного чтения (off-line). Вы посылаете Ваше сообщение, как правило в виде обычного текста, адресат получает его на свой компьютер через какой-то, возможно достаточно длительный промежуток времени, и читает Ваше сообщение тогда, когда ему будет удобно.
E-mail очень похож на обычную бумажную почту, обладая теми же достоинствами и недостатками. Обычное письмо состоит из конверта, на котором написан адрес получателя и стоят штампы почтовых отделений пути следования, и содержимого – собственно письма. Электронное письмо также состоит из заголовков, содержащих служебную информацию (об авторе письма, получателе, пути прохождения по сети и т.д.), играющих роль конверта, и собственно содержимого письма. Вы можете вложить в обычное письмо что-нибудь, например фотографию; аналогично, Вы можете послать файл с данными электронным письмом. Вы можете подписать обычное письмо – можно подписать и электронное письмо. Обычное письмо может не дойти до адресата или дойти слишком поздно – как и электронное письмо. Обычное письмо весьма дешево, и электронная почта – самый дешевый вид связи.
Итак, электронная почта повторяет достоинства (простота, дешевизна, возможность пересылки нетекстовой информации, возможность подписать и зашифровать письмо) и недостатки (негарантированное время пересылки, возможность доступа третьих лиц во время пересылки, неинтерактивность) обычной почты. Однако у них есть и существенные отличия. Стоимость пересылки обычной почты очень сильно зависит от того, куда, в сколь удаленную точку планеты она должна быть доставлена, и ее размера и типа. Для электронной почты такой зависимости или нет, или она довольно невелика. Электронное письмо можно шифровать и подписывать гораздо более надежно и удобно, нежели бумажное – для последнего, строго говоря, вообще нет общепринятых средств шифрования. Скорость доставки электронных писем гораздо выше, чем бумажных, и минимальное время их прохождения несравнимо меньше.
Списки рассылки
Списки рассылки (maillists) – простой, но в то же время весьма полезный сервис Интернет. Это практически единственный сервис, не имеющий собственного протокола и программы-клиента и работающий исключительно через электронную почту.
Идея работы списка рассылки состоит в том, что существует некий адрес электронной почты, который на самом деле является общим адресом многих людей – подписчиков этого списка рассылки. Вы посылаете письмо на этот адрес, например на адрес [email protected] (это адрес списка рассылки, посвященного обсуждению проблем локализации операционных систем класса UNIX), и Ваше сообщение получат все люди, подписанные на этот список рассылки.
FTP – передача файлов
Еще один широко распространенный сервис Интернет – ftp. Русского перевода этого слова, вообще говоря, нет, и его так и называют в разговоре – эфтэпэ. Расшифровывается эта аббревиатура как протокол передачи файлов, но при рассмотрении ftp как сервиса Интернет имеется в виду не просто протокол, но именно сервис – доступ к файлам в файловых архивах. Вообще говоря, ftp – стандартная программа, работающая по протоколу TCP, всегда поставляющаяся с операционной системой. Ее исходное предназначение – передача файлов между разными компьютерами, работающими в сетях TCP/IP: на одном из компьютеров работает программа-сервер, на втором пользователь запускает программу-клиента, которая соединяется с сервером и передает или получает по протоколу ftp файлы. Тут предполагается, что пользователь зарегистрирован на обоих компьютерах и соединяется с сервером под своим именем и со своим паролем на этом компьютере. Протокол ftp, разумеется, оптимизирован для передачи файлов.
Система гипермедиа WWW
WWW (World Wide Web – всемирная паутина) – самый популярный и интересный сервис Интернет сегодня, самое популярное и удобное средство работы с информацией. Самое распространенное имя для компьютера в Интернет сегодня – www, больше половины потока данных Интернет приходится на долю WWW. Количество серверов WWW сегодня нельзя оценить сколь-нибудь точно. Скорость роста WWW даже выше, чем у самой сети Интернет. Сегодня WWW – самая передовая технология Интернет, и она уже становится массовой технологией – возможно, недалек тот день, когда каждый человек, знающий, что такое телефон, будет знать, что такое WWW.
Сервисы IRC, icq и т.п.
К интерактивным сервисам, служащим общению людей через Интернет, относится IRC – Internet Relay Chat, разговоры через Интернет. В Интернет существует сеть серверов IRC. Пользователи присоединяются к одному из каналов – тематических групп и участвуют в разговоре, который ведется не голосом, но текстом. Узлы IRC синхронизованы между собой, так что, подключившись к ближайшему серверу, Вы подключаетесь ко всей сети IRC.
Поисковые каталоги и серверы
Примером поисковых каталогов м.б. Google.com, yandex.ru и многие другие. Предназначены для поиска необходимых данных в Интернет.
К новым сервисам можно отнести карты Google, погодные информеры, u-tube и многое другое.
3. служба DNS
Отображение символьных адресов на IP-адреса: служба DNS
DNS (Domain Name System) - это распределенная база данных, поддерживающая иерархическую систему имен для идентификации узлов в сети Internet. Служба DNS предназначена для автоматического поиска IP-адреса по известному символьному имени узла. Спецификация DNS определяется стандартами RFC 1034 и 1035. DNS требует статической конфигурации своих таблиц, отображающих имена компьютеров в IP-адрес.
Протокол DNS является служебным протоколом прикладного уровня. Этот протокол несимметричен - в нем определены DNS-серверы и DNS-клиенты. DNS-серверы хранят часть распределенной базы данных о соответствии символьных имен и IP-адресов. Эта база данных распределена по административным доменам сети Internet. Клиенты сервера DNS знают IP-адрес сервера DNS своего административного домена и по протоколу IP передают запрос, в котором сообщают известное символьное имя и просят вернуть соответствующий ему IP-адрес.
Если данные о запрошенном соответствии хранятся в базе данного DNS-сервера, то он сразу посылает ответ клиенту, если же нет - то он посылает запрос DNS-серверу другого домена, который может сам обработать запрос, либо передать его другому DNS-серверу. Все DNS-серверы соединены иерархически, в соответствии с иерархией доменов сети Internet. Клиент опрашивает эти серверы имен, пока не найдет нужные отображения. Этот процесс ускоряется из-за того, что серверы имен постоянно кэшируют информацию, предоставляемую по запросам. Клиентские компьютеры могут использовать в своей работе IP-адреса нескольких DNS-серверов, для повышения надежности своей работы.
База данных DNS имеет структуру дерева, называемого доменным пространством имен, в котором каждый домен (узел дерева) имеет имя и может содержать поддомены. Имя домена идентифицирует его положение в этой базе данных по отношению к родительскому домену, причем точки в имени отделяют части, соответствующие узлам домена.
Корень базы данных DNS управляется центром Internet Network Information Center. Домены верхнего уровня назначаются для каждой страны, а также на организационной основе. Имена этих доменов должны следовать международному стандарту ISO 3166. Для обозначения стран используются трехбуквенные и двухбуквенные аббревиатуры, а для различных типов организаций используются следующие аббревиатуры:
com - коммерческие организации (например, microsoft.com);
edu - образовательные (например, mit.edu);
gov - правительственные организации (например, nsf.gov);
org - некоммерческие организации (например, fidonet.org);
net - организации, поддерживающие сети (например, nsf.net).
Каждый домен DNS администрируется отдельной организацией, которая обычно разбивает свой домен на поддомены и передает функции администрирования этих поддоменов другим организациям. Каждый домен имеет уникальное имя, а каждый из поддоменов имеет уникальное имя внутри своего домена. Имя домена может содержать до 63 символов. Каждый хост в сети Internet однозначно определяется своим полным доменным именем (fully qualified domain name, FQDN), которое включает имена всех доменов по направлению от хоста к корню. Пример полного DNS-имени :
kt11.ru.
Серверные языки программирования
[ Cкачайте файл, чтобы посмотреть картинку ]
В первую очередь, языки веб-программирования можно классифицировать на клиентские и серверные. Как следует из названия, клиентские языки используются для написания программ, выполняемых на стороне клиента (веб-браузер), а серверные - для программ, выполняемых на сервере.
Серверные языки веб-программирования могут быть условно разделены по операционной системе, на которой они работают: Windows и *nix. Это разделение в некоторой степени условно, т.к. практически все популярные языки и фреймворки портированы на обе ОС. Тем не менее, они редко используются на неродных ОС.
Если говорить про ОС Windows, то тут безраздельно властвует технология [ Cкачайте файл, чтобы посмотреть ссылку ], разработанная компанией Microsoft. С помощью ASP.NET можно создавать сайты любого уровня сложности - от самых простых, состоящих их нескольких страниц, до очень сложных, обрабатывающих миллионы запросов в день (сайты Microsoft, написанные на ASP.NET, являются одними из самых посещаемых в Интернет). Технология ASP.NET привлекательна для тех, кто неплохо разбирается в ОС Windows, но незнаком с Unix-подобными системами. Основной недостаток - меньшее, по сравнению с *nix, количество дешевых хостингов или необходимость покупки серверной лицензии, в случае с выделенным хостингом. Однако, по сравнению со стоимостью разработки сложных сайтов, а, также, стоимостью трафика, разница расходов на Windows и *nix хостинг может быть пренебрежимо мала.
Самым популярным языком веб-программирования является, безусловно, [ Cкачайте файл, чтобы посмотреть ссылку ]. Его основными преумуществами являются: простой синтаксис, высокое быстродействие, поддержка большинством хостингов. Очень весомым преумуществом является то, что на PHP написаны многие популярные движки (например, самый популярный движок для stand alone блогов - WordPress).
Другой популярный язык веб-программирования на платформе Unix - язык [ Cкачайте файл, чтобы посмотреть ссылку ]. Он имеет сложный запутанный синтаксис и никогда не предназначался для веб-программирования. Я не рекомендую его использовать для создания сайтов.
[ Cкачайте файл, чтобы посмотреть ссылку ] - это часть технологии J2EE, предназначенная для создания сайтов с помощью языка Java. JSP имеет очень много общего с ASP.NET и выбор между этими двумя технологиями чаще всего основывается на субъективных предпочтениях, а не на каких-либо преумуществах или недостатках этих платформ.
В последнее время высокую популярность приобрел язык Ruby и, в частности, фреймворк [ Cкачайте файл, чтобы посмотреть ссылку ]. С его помощью можно очень быстро создать сайт с требуемой функциональностью. Одним из существенных недостатков Ruby является низкое быстродействие.
Технологии Java. Особенности версий JDK.
Весьма показательна хронология развития проекта Sun, который привел к появлению языка Java:
1990 Три программиста из Sun начинают мозговой штурм проблемы создания ручного электронного прибора с новым, простым в употреблении, графическим пользовательским интерфейсом.
1991 Группа программистов-разработчиков приходит к выводу, что такое устройство может быть использовано для взаимосвязи самых различных электронных приборов. Работа над прототипом прибора, как и положено, начинается несколькими месяцами позже с создания объектно-ориентированного языка под кодовым названием Oak(Дуб).
Апрель 1995 Oak переименовывается в Java. Sun выпускает браузер HotJava, демонстрирующий достоинства новой технологии.
23 мая 1995 Netscape покупает у Sun лицензию на Java для своего браузера Navigator 2.0.
4 декабря 1995 Netscape и Sun объявляют JavaScript, переименовывая язык сценариев LiveWire, разрабатываемый NetScape, и обогащая его возможностями Java.
7 декабря 1995. Удивляя своим решением, Microsoft подписывает с Sun протокол о намерении лицензировать Java.
Все вышеперечисленное представляет собой генезис главнейшего нововведения Internet: нового программного языка, который Sun называет Java. По сути, Jаvа позволяет Web-страницe поставлять наряду с визуальным содержимым миниатюрные приложения, апплеты, которые, загрузившись однажды, могут оживить страницу. Апплеты могут создавать танцующую рекламу, самообновляющиеся табло, движущиеся маркеры диаграмм котировки акций фондового рынка, даже мультипликацию.
Java это язык программирования, который обладает уникальным качеством - возможностью создания миниатюрных приложений или апплетов, запускаемых с помощью любого Java-бpаузеpа, для удаленного исполнения в сети. Для того, чтобы клиент мог работать с приложением, вовсе необязательно чтобы соответствующее программное обеспечение располагалось на машине клиента; одним кликом мыши клиент, работающий на Java, может загрузить апплет и исполнить приложение локально.
Язык Java уникален также и тем, что он независит от аппаратной платформы; pазpаботчики ПО на Java могут не писать специальных апплетов для работы приложения под Windows, Unix или Macintosh клиентские машины. Один и тот же апплет, написанный на языке Jаvа будет работать у любого клиента, оснащенного Java.
Java имеет обширную библиотеку процедур поддержки протоколов TCP/IP, например HTTP и FTP. Java апплеты могут открывать объекты в сети и получать к ним доступ через URL с такой же легкостью, к которой программисты привыкли, имея дело с местной файловой системой. Java создавался для применения в сетевых распределенных средах. Поэтому большое внимание было уделено безопасности. Использование в Java техники аутентификации общего ключа шифрования позволяет программистам создавать чистые в отношении вирусов, защищенные от несанкционированного вмешательства извне системы.
Внутри Java существуют 3 основных семейства технологий:
J2EE или Java EE (начиная с v1.5) Java Enterprise Editon, для создания программного обеспечения уровня предприятия;
J2SE или Java SE (начиная с v1.5) Java Standard Editon, для создания пользовательских приложений, в первую очередь для настольных систем;
J2ME, Java ME или Java Micro Edition, для использования в устройствах, ограниченных по вычислительной мощности, в том числе мобильных телефонах, PDA, встроенных системах.

Особенности версий JDK.
Первая версия содержала всего 8 стандартных библиотек:
java.lang - базовые классы, необходимые для работы любого приложения (название - сокращение от language);
java.util - многие полезные вспомогательные классы;
java.applet - классы для создания апплетов;
java.awt, java.awt.peer - библиотека для создания графического интерфейса пользователя (GUI), называется Abstract Window Toolkit, AWT;
java.awt.image - дополнительные классы для работы с изображениями;
java.io - работа с потоками данных (streams) и с файлами;
java.net - работа с сетью.

Таким образом, все библиотеки начинаются с java, именно они являются стандартными. Все остальные (начинающиеся с com, org и др.) могут меняться в любой версии без поддержки совместимости.
Финальная версия JDK 1.0 была выпущена в январе 1996 года.
Сразу поясним систему именования версий. Обозначение версии состоит из трех цифр. Первой пока всегда стоит 1. Это означает, что поддерживается полная совместимость между всеми версиями 1.х.х. То есть программа, написанная на более старом JDK, всегда успешно выполнится на более новом. По возможности соблюдается и обратная совместимость - если программа откомпилирована более новым JDK, а никакие новые библиотеки не использовались, то в большинстве случаев старые виртуальные машины смогут выполнить такой код.
Вторая цифра изменилась от 0 до 5. В каждой версии происходило существенное расширение стандартных библиотек, а также добавлялись некоторые новые возможности в сам язык. Менялись и утилиты, входящие в JDK.
Наконец, третья цифра означает развитие одной версии. В языке или библиотеках ничего не меняется, лишь устраняются ошибки, производится оптимизация, могут меняться (добавляться) аргументы утилит. Хотя с развитием версии 1.х ничего не удаляется, конечно, какие-то функции или классы устаревают. Они объявляются deprecated, и хотя они будут поддерживаться до объявления 2.0, пользоваться ими не рекомендуется.

Виды Java-приложений.
Приложении (Application) в частности консольные;
Applets – спец Java-приложения работают в браузере;
Servlets – спец приложения работают на стороне сервера;
Web-components – EJB(Enterprise Java Beans), JSP (Java Server Pages), JSF (Java Server Faces);
сложные корпоративные приложения.

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

Обзор операторов языка программирования Java.
Арифметические (+,-/,*)
логические(&,|, !)
унарные (один операнд)
Операторы ветвления
ncl = (ncl==1) ? 2:1; - тернарная конструкция
if (ncl==1) ncl =2
else ncl=1;
Операторы цикла
Предусловие
Постусловие
Арифметический (известно число повторений)
Итерационный (неизвестно число повторений)
Управляющие операторы языка программирования Java.
Управляющие операторы используются в языках программирования для того чтобы продвигать и разветвлять поток выполнения, основываясь на изменениях состояния программы. Операторы Java можно разделить на ветвление, итерацию и переход.
Java поддерживает два оператора выбора if, switch.
int a, b;
//
if (aelse b=0;
Многозвенная if-else-if. Операторы if выполняются сверху вниз. Как только одно из условий управляющих оператором if становится true оператор выполняется а остальная часть опускается.
Оператор switch – это оператор множественного ветвления. Он переключает выполнение на различные части кода, основываясь на значении выражения и часто обеспечивает лучшую альтернативу чем длинный ряд операторов if-else-if.
switch (expression) {
case value1:
//..
break;
case value2:
//..
break;
default:
//последовательность операторов по умолчанию
}
Здесь expression должно иметь тип byte, short, int, char; каждое value, указанное в операторах case должно иметь тип совместимы с типом выражения. Каждое значение case должно быть уникальной константой а не переменной.
Оператор switch работает след образом. Значения выражения сравнивается с каждым из указанных значений в case-операторах. Если соответствие найдено, то выполняется кодовая последовательность следующая после этого оператора. Если ни одна из case-констант не соответствует значению выражения, то выполняется оператор default. Однако оператор default не обязателен. Оператор break используется внутри switch чтобы закончить последовательность операторов. После оператора break выполнение передается к первой строке кода после switch.
Цикл while повторяет блок операторов, пока управляющее выражение true. предусловие
while (condition) { –любое булевское выражение
//тело цикла
}
Постусловие
do {
// тело цикла
} while (condition);
Арифметический.
for (initialization; condition; iteration) {
//telo
}
Оператор break используется в трех случаях. Заканчивает последовательность операторов в ветвях оператора switch. Можно использовать для выхода из цикла. Может применяться как форма оператора безусловного перехода goto.
Оператор continue в циклах while и do while вызывает передачу управления непосредственно условному выражению, которое управляет циклом. В цикле for управление переходит сначала к итерационной части и затем к условному выражению.
Оператор return используется для явного возврата из метода, т.е. передает программное управление обратно в вызывающую программу. Он немедленно заканчивает выполнение метода, в котором он находится.

Обработка исключений в Java.
При обработке ошибок в Java используются проверяемые исключения (checked exceptions). Исключение заставляет программиста предпринять какие-то действия при возникновении ошибки. Исключительные ситуации в программе обнаруживаются при их возникновении, а не позже, когда необработанная ошибка приведет к множеству проблем.
Метод, в котором обнаруживается ошибка, возбуждает (throw) исключение. Оно может быть перехвачено (catch) кодом, находящимся дальше в стеке вызова благодаря этому первый фрагмент может обработать исключение и продолжить выполнение программы. Неперехваченные исключения передаются стандартному обработчику Java, который может сообщить о возникновении исключительной ситуации и завершить работу потока в программе.
Исключения в Java являются объектами у них имеется тип, методы и данные. Представление исключения в виде объекта оказывается полезным, поскольку объект-исключение может обладать данными или методами (или и тем и другим), которые позволят справиться с конкретной ситуацией. Объекты-исключения обычно порождаются от класса Exception, в котором содержится строковое поле для описания ошибки. Java требует, чтобы все исключения были расширениями класса с именем Throwable. Основная парадигма работы с исключениями Java заключена в последовательности try-catch-finally. Сначала программа пытается (try) что-то сделать; если при этом возникает исключение, она его перехватывает (catch); и, наконец (finally), программа предпринимает некоторые итоговые действия в стандартном коде или в коде обработчика исключения в зависимости от того, что произошло.
Ниже приводится метод averageOf, который возвращает среднее арифметическое двух элементов массива. Если какой-либо из индексов выходит за пределы массива, программа запускает исключение, в котором сообщает об ошибке. Прежде всего, следует определить новый тип исключения Illegal AverageException для вывода сообщения об ошибке. Затем необходимо указать, что метод averageOf возбуждает это исключение, при помощи ключевого слова throws:
class IllegalAverageException extends Exception {
}
class MyUtilities {
public double averageOf(double[] vals, int i, int j)
throws IllegalAverageException
{
try {
return (vals[i] + vals[j]) / 2;
} catch (IndexOutOfBounds e) {
throw new IllegalAverageException();
}
}
}
Если при определении среднего арифметического оба индекса i и j оказываются в пределах границ массива, вычисление происходит успешно и метод возвращает полученное значение. Однако, если хотя бы один из индексов выходит за границы массива, возбуждается исключение IndexOutOfBounds и выполняется соответствующий оператор catch. Он создает и возбуждает новое исключение IllegalAverageException в сущности, общее исключение нарушения границ массива превращается в конкретное исключение, более точно описывающее истинную причину. Методы, находящиеся дальше в стеке выполнения, могут перехватить новое исключение и должным образом прореагировать на него.
Если выполнение метода может привести к возникновению проверяемых исключений, последние должны быть объявлены после ключевого слова throws, как показано на примере метода averageOf. Если не считать исключений RuntimeException и Error, а также подклассов этих типов исключений, которые могут возбуждаться в любом месте программы, метод возбуждает лишь объявленные в нем исключения как прямо, посредством оператора throw, так и косвенно, вызовом других методов, возбуждающих исключения.
Именно поэтому исключения, которые должны быть объявлены после ключевого слова throws, называются проверяемыми исключениями. Исключения, являющиеся расширениями RuntimeException и Error, не нуждаются в объявлении и проверке; они называются непроверяемыми исключениями.
Операторы try – catch.
В общем случае конструкция выглядит так:
try {
...
} catch(SomeExceptionClass e) {
...
} catch(AnotherExceptionClass e) {
...
}
Сначала выполняется код, заключенный в фигурные скобки оператора try. Если во время его выполнения не происходит никаких нештатных ситуаций, то далее управление передается за закрывающую фигурную скобку последнего оператора catch, ассоциированного с данным оператором try. Если в пределах try возникает исключительная ситуация, то далее выполнение кода производится по одному из перечисленных ниже сценариев.
Возникла исключительная ситуация, класс которой указан в качестве параметра одного из блоков catch. В этом случае производится выполнение блока кода, ассоциированного с данным catch (заключенного в фигурные скобки). Далее, если код в этом блоке завершается нормально, то и весь оператор try завершается нормально и управление передается на оператор (выражение), следующий за закрывающей фигурной скобкой последнего catch. Если код в catch завершается не штатно, то и весь try завершается нештатно по той же причине.
Если возникла исключительная ситуация, класс которой не указан в качестве аргумента ни в одном catch, то выполнение всего try завершается нештатно.
Конструкция try-catch-finally
Оператор finally предназначен для того, чтобы обеспечить гарантированное выполнение какого-либо фрагмента кода. Вне зависимости от того, возникла ли исключительная ситуация в блоке try, задан ли подходящий блок catch, не возникла ли ошибка в самом блоке catch,- все равно блок finally будет в конце концов исполнен. Последовательность выполнения такой конструкции следующая: если оператор try выполнен нормально, то будет выполнен блок finally. В свою очередь, если оператор finally выполняется нормально, то и весь оператор try выполняется нормально. Если во время выполнения блока try возникает исключение и существует оператор catch, который перехватывает данный тип исключения, происходит выполнение связанного с catch блока. Если блок catch выполняется нормально, либо ненормально, все равно затем выполняется блок finally. Если блок finally завершается нормально, то оператор try завершается так же, как завершился блок catch. Если в списке операторов catch не находится такого, который обработал бы возникшее исключение, то все равно выполняется блок finally. В этом случае, если finally завершится нормально, весь try завершится ненормально по той же причине, по которой было нарушено исполнение try. Во всех случаях, если блок finally завершается ненормально, то весь try завершится ненормально по той же причине.
В конструкции try-catch-finally обязательным является использование одной из частей оператора catch или finally. То есть конструкция
try { ...} finally { ...}
является вполне допустимой. В этом случае блок finally при возникновении исключительной ситуации должен быть выполнен, хотя сама исключительная ситуация обработана не будет и будет передана для обработки на более высокий уровень иерархии.
Если обработка исключительной ситуации в коде не предусмотрена, то при ее возникновении выполнение метода будет прекращено и исключительная ситуация будет передана для обработки коду более высокого уровня. Таким образом, если исключительная ситуация произойдет в вызываемом методе, то управление будет передано вызывающему методу и обработку исключительной ситуации должен произвести он. Если исключительная ситуация возникла в коде самого высокого уровня (например, методе main()), то управление будет передано исполняющей системе Java и выполнение программы будет прекращено (более точно - будет остановлен поток исполнения, в котором произошла такая ошибка).
Оператор throw.
Помимо того, что предопределенная исключительная ситуация может быть возбуждена исполняющей системой Java, программист сам может явно породить ошибку. Делается это с помощью оператора throw.
В данном случае предполагается, что в качестве параметра методу может быть передано только положительное значение; если это условие не выполнено, то с помощью оператора throw порождается исключительная ситуация. (Для успешной компиляции также требуется в заголовке метода указать throws Exception - это выражение рассматривается ниже.) Метод должен делегировать обработку исключительной ситуации вызвавшему его коду. Для этого в сигнатуре метода применяется ключевое слово throws, после которого должны быть перечислены через запятую все исключительные ситуации, которые может вызывать данный метод. То есть приведенный выше пример должен быть приведен к следующему виду:
...
public int calculate(int theValue)
throws Exception {
if( theValue < 0) {
throw new Exception(
"Some descriptive info");
}
}
...
Предположим, что оператор throw применяется внутри конструкции try-catch.
try {
...
throw new IOException();
...
} catch(Exception e) {
...
}
В этом случае исключение, возбужденное в блоке try, не будет передано для обработки на более высокий уровень иерархии, а обработается в пределах блока try-catch, так как здесь содержится оператор, который может это исключение перехватить. То есть произойдет неявная передача управления на соответствующий блок catch.

Событийные модели в Java.
В Java 1.0 использовалась другая событийная модель: любое событие проходило всю иерархию объектов. Начиная с Java 1.1 изменяется подход к обработке событий: используется модель делегирования событий. Существенное отличие при этом: событие, как системное сообщение, посылается только тем блокам прослушивания, которые настроены на прием таких сообщений.
Событие – это объект, который описывает изменение состояния.
Источник события – это объект, который генерирует событие.
генерация события происходит когда каким то образом изменяется внутреннее состояние объекта источника. Для того чтобы блоки прослушивания могли принимать информацию об определенном типе событий, такие блоки прослушивания д/б зарегистрированы блоком источника.
Блок прослушивания событий – это объект, который получает уведомление когда происходит событие.
2 отличительные особенности блока прослушивания:
1.Блок прослушивания д/б зарегистрирован одним или несколькими источниками;
2. В блоке прослушивания (в объекте) д/б реализованы методы для приема и обработки уведомлений о событиях.
Наборы интерфейсов в которых описываются методы для обработки событий размещены в пакете java.awt.event. Например MouseMotionListener – содержит 2 метода о событиях перетаскивания и передвижения мыши.
Классы событий.
В основе механизма обработки событий находятся классы, которые представляют события. В корне иерархии классов событий Java находится класс EventObject, который размещен в пакете java.util. EventObject – суперкласс всех событий.
AWTEvent – суперкласс всех AWT-событий, которые обрабатываются моделью делегирования событий.
Примеры классов:
ActionEvent – генерируется, когда нажата кнопка, дважды щелкнут элемент списка или выбран пункт меню.
ItemEvent – помечен флажок, выбран/отменен элемент меню с меткой, выбор элемента в списке выбора.
KeyEvent – когда получен ввод с клавиатуры.
MouseEvent – драг, клик, указатель над/под объектом.
WindowEvent – окно закрыто, активизировано, дезактивизировано.
Интерфейсы прослушивания событий.
Модель делегирования событий содержит 2 части: источники событий и блоки прослушивания. Блоки прослушивания создаются путем реализации одного или нескольких интерфейсов прослушивания, определяемых пакетом java.awt.event. Когда событие происходит, источник события вызывает соответствующий метод, определенный блоком прослушивания, и передает ему объект события в качестве параметра.
ActionListener – определяет метод для приема action события.
MouseEvent – определяет 5 методов, распознающих события щелчка, входа/выхода в границы компонента, нажатия/отпускания клавиши мыши.
WindowListener – определяет 7 методов, распознающих события активизации, деактивизации, открытия, закрытия, сворачивания/разворачивания и выхода из окна.

программирование Java-апплетов
Архитектура и скелетная форма Java-апплета.
Апплет – программа работающая с окном. Апплеты управляются событиями. Апплет ожидает возникновения некоторого события. AWT уведомляет апплет о событии вызовом обработчика события, который был обеспечен апплетом. Как только это случается апплет должен выполнить соответствующее действие и затем быстро возвратить управление AWT. Пользователь взаимодействует с апплетом когда и как хочет. Эти взаимодействия посылаются апплету как события, на которые апплет должен ответить.
Все апплеты переопределяют набор методов обеспечивающих основной механизм, с помощью которого браузер или программа просмотра взаимодействуют с апплетоми управляет его выполнением. Четыре таких метода – init(), start(), stop(), destroy() – определены в Applet. Пятый paint() определен AWT-классом Component. Скелет апплета:
import java.awt.*;
import.java.applet.*;
/*


*/
public class AppletSkel extends Applet {
//вызывается первым
public void init() {
//инициализация
}
/*Вызывается вторым после init()
Вызывается также после перезапуска апплета*/
public void start() {
//начало или продолжение выполнения
}
//Вызывается когда апплет остановлен
public void stop() {
//приостанавливает выполнение
}
/*Вызывается когда апплет завершается.
Это последний выполняемый метод*/
public void destroy() {
//выполняет завершающие действия
}
//Вызывается когда окно апплета д/б перерисовано
public void paint(Graphics g) {
//повторный показ содержимого окна
}
}
Этапы программирования и подключения Java-апплетов.
import java.awt.*;
import.java.applet.*;
/*


*/
public class SimpleApplet extends Applet {
public void paint(Graphics g) {
g.drawString (“SimpleApplet”,20,20);
}
}
Апплет начинается с двух операторов import. Первый импортирует AWT классы, т.о. апплеты взаимодействуют с пользователем не через классы консольного ввода/вывода, а через AWT. AWT осуществляет поддержку графического оконного интерфейса. Второй оператор import импортирует пакет java.applet, который содержит класс Applet. Объявляется класс SimpleApplet, он д/б объявлен как public, потому что к немй необходимо обеспечить доступ из кодов которые находятся вне программы. Внутри класса объявляется метод paint(). Этот метод определен в AWT и д/б переопределен апплетом. Метод paint() вызывается каждый раз когда апплет должен восстанавливать изображение своего вывода.
Для выполнения апплета в браузере надо написать текстовый файл в формате языка html, который содержит спец тег:


Процедура быстрой разработки апплета включает 3 шага:
Редактирование исходного файла Java;
Компиляция программы;
3. Запуск программы просмотра апплетов со спецификацией имени исходного файла в ее аргументе. Встретив в комментарии тег , утилита просмотра выполнит его.
Передача параметров в Java-апплеты.
Тег позволяет передавать параметры включающему апплету. Для получения этих параметров следует использовать метод getParameter(). Он возвращает значение указанного параметра в форме String объекта. Т.о. для числовых и булевых значений нужно будет преобразовывать их строчные представления во внутренние форматы.
import java.awt.*;
import java.applet.*;
/*



*/
public class ParamDemo extends Applet {
int fontSize;
//инициализация строки для показа
public void start(){
String param;
param=getParameter(“fontSize”);
try {
if (param !=null) //если не найден
fontSize=Integer.parseInt(param);
else
fontSize=0;
} catch (NumberFormatExeption e) {
fontSize=-1;
}
// Показ параметров на экране
public void paint(Graphics g) {
g.drawString (Font size: “ + fontSize, 0, 26);
}
}
Если параметр недоступен, getParameter() возращает null-указатель. Кроме того в операторе try который отлавливает исключение NumberFormatExeption д/б выполнены преобразования к числовым типам

Принципы программирования оконных приложений на Java.
Awt определяет окна согласно иерархии классов которые с каждым уровнем добавляет новые функции и специфику. Существует 2 основных типа окон производное от Panel (в апплете), и Frame – стандартное окно. Panel - это окно не содержащее заголовков строк меню и обрамления. Window создает окно верхнего уровня. Frame подкласс Window имеет строку заголовка, строку меню, обрамления и углы измен размеры окна. Canvas генерирует пустое окно в котором можно рисовать.
//создать фрейм окно
public class AppletFrame extends Applet {
Frame f;
public void init() {
f = new SampleFrame(“Frame”);
f.setSize(250,250);
f.setVisible(true);
}
public void start() {
f.setVisible(true);
}
public void stop() {
f.setVisible(false);
}
public void paint (Graphics g) {
g.drawString(“AppletWindow”,10,20);
}
}
Окно – контейнер для разнообразной информации (текста, графики и т.д.). Средства AWT ориентированы на поддержку этих возможностей.
Обзор компонентов AWT.
основные компоненты:
кнопки
текстовые метки
флажки
списки с выбором элементов
списки
полосы прокрутки
элементы редактирования текста: текстовые поля и текстовые метки.
Текстовая метка - это объект класса Label, содержащий строку, которую она отображает. Метки – пассивные элементы управления, которые не поддерживают никакого взаимодействия с пользователем.
Label(String str)
Кнопка – это компонент, который содержит текстовую метку и генерирует событие, когда ее нажимают.
Button(String str)
Флажок – это элемент управления, который используется для включения или выключения некоторой опции. Возможно создание набора взаимоисключающих флажков. CheckBox(String str, boolean on)
Класс Choice используется для создания раскрывающихся списков, из которых можно сделать выбор. Каждый элемент в списке это строка, которая выровнена по левому краю и появляется в списке в том порядке, в котором добавлялась к объекту. Класс Choice определяет только конструктор, который создает пустой список. Чтобы добавить элемент выбора используются методы addItem() или add().
Класс List обеспечивает компактный многоэлементный список со множественным выбором и прокруткой. В отличие от объекта Choice, который показывает в меню только один выбранный элемент, List- объект может быть сконструирован так, чтобы отображать любое число элементов выбора в видимом окне.List(int numRows)
Полосы прокрутки используются для выбора непрерывных значений из некоторого интервала с конечными границами. Они бывают горизонтальными и вертикальными. Scrollbar(int style)
TextField реализует однострочную область ввода текста. Текстовые поля дают возможность пользователю вводить строки и редактировать текст, используя клавиши-стрелки, сочетания клавиш для операций «вырезать» и «вставить». TextField()
Иногда однострочный текстовый ввод не достаточен, поэтому используют TextArea.
Обзор компонентов Swing.
Swing – это набор классов, который обеспечивает более мощные и гибкие компоненты, чем AWT. В дополнение к знакомым компонентам типа кнопок, флажков и т.п. Swing поставляет панели со вкладками, панели с прокруткой, деревья и таблицы. Даже знакомые компоненты такие как кнопки имеют больше возможностей. Например с кнопкой можно связать как изображение так и текстовую строку. кроме того изображение может меняться когда меняется состояние кнопки. Swing компоненты платформо независимы, потому что написаны полностью на Java. Фундаментальными для Swing является класс JApplet, который расширяет класс Applet. Апплеты, которые используют Swing-компоненты д/б подклассами JApplet.
В Swing значки инкапсулированы классом ImageIcon, который рисует значок из изображения. ImageIcon(String filename)
Поле текста Swing JTextField позволяет редактировать одну строку текста. JTextField(int cols)
Кнопки Swing обладают свойствами которых нельзя найтив классе Button определенном в AWT. Класс JButton позволяет связать с кнопкой изображение, строку или и то и другое. JButton(Icon i)
Переключатели поддерживаются классом JRadioButton. JRadioButton(icon i). Переключатели д/б объед в группу, где в каждый момент м/б выбран только один элемент.
Swing обеспечивает комбинированное поле – комбинацию текстового поля и раскрывающегося списка через класс JComboBox. Комбинированное поле обычно отображает один элемент списка. Однако оно может также отображать и раскрывающийся список, который дает возможность пользователю выбирать различные входы. JComboBox(Vector v)
Панель со вкладками – компонент который появляется как группа папок. Каждая папка имеет заголовок. Только одна из папок может быть выбрана одновременно. Используется умалчиваемый конструктор JTabbedPane.
Панель прокрутки – компонент который может быть просмотрен. JScrollPane(Component comp)
Дерево – компонет который представляет собой иерархический вид данных. Пользователь может развернуть/свернуть индивидуальные поддеревья в этом показе. JTree(Object obj[])
Таблицы – компонет который отображает строки и столбцы данных. JTable(Object data[][],Object colHeads[])
Swing имеет еще много свойств например Swing обеспечивает инструментальные панели (toolbars), подсказки кнопочных команд (tooltips), прогресс-полоски (progress bars) и т.д.
Пример с использованием компонентов Swing.
демонстрирует 4 кнопки и текстовое поле. Каждая кнопка отображает пиктограмму, которая представляет флажок страны. Когда кнопка нажимается в текстовом поле выводится название страны.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*


*/
public class Demo extends JApplet
implements ActionListener {
JTextField jtf;
public void init() {
//получить панель содержания
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());

//добавить кнопки в панель содержания
ImageIcon france = new ImageIcon(“france.gif”);
JButton jb = new JButton(france);
jb.setActionCommand(“France”);
jb.addActionListener(this);
contentPane.add(jb);

ImageIcon germany = new ImageIcon(“germany.gif”);
jb = new JButton(germany);
jb.setActionCommand(“germany”);
jb.addActionListener(this);
contentPane.add(jb);

ImageIcon italy = new ImageIcon(“italy.gif”);
jb = new JButton(italy);
jb.setActionCommand(“italy”);
jb.addActionListener(this);
contentPane.add(jb);

ImageIcon japan = new ImageIcon(“japan.gif”);
jb = new JButton(japan);
jb.setActionCommand(“japan”);
jb.addActionListener(this);
contentPane.add(jb);

//добавить текстовое поле в панель содержания
jtf = new JTextField(15);
contentPane.add(jtf);
}
public void actionPerformed(ActionEvent ae) {
jtf.setText(ae.getActionCommand());
}
}


Элементы WEB-дизайна. Основные понятия, влияющие факторы.
Понятия web-дизайна
Web-дизайнер - это специалист, который занимается проектированием и разработкой web-узла; созданием его структуры, подбором цветовой палитры и разработкой пользовательского интерфейса.
Web-мастер - это специалист, основной задачей которого является поддержка существующего web-сайта. Поддержка заключается в информационном наполнении страниц сайта и в виртуальном взаимодействии с пользователями интернета, которые посещают этот сайт.
Web-сайт - это совокупность web-страниц, объединенных между собой единой композицией, темой информационного содержания, структурой, набором цветов, и находящихся на одном или нескольких серверах.
Web-страница - это текстовой документ, составленный с использованием языка HTML-разметки. Web-страница является простым файлом с расширением html или htm. Этот файл содержит текст и изображения.
Браузер - это прикладная программа, которая позволяет запрашивать, получать с сервера и отображать web-страницы. Самым популярным браузером в настоящее время считается Microsoft Internet Explorer.
Статический web-узел - это web-сайт, содержимое которого фиксировано и не изменяется до тех пор, пока мастер не заменит данные на сайте.
Динамический web-узел - это web-сайт, в котором информация хранится в базе данных, а web-страницы генерируются динамически в ответ на запрос клиента.
Модем - это устройство, позволяющее передавать цифровую информацию по телефонным линиям.
Сервер - это компьютер, подключенный к сети и предназначенный для управления ресурсами. Если он подключен к глобальной сети интернета, то на нем могут быть размещены web-документы, которые передаются в ответ на запросы клиентов.
Электронная почта - это система, предназначенная для обмена электронными сообщениями по глобальной сети интернета.
Сетевой робот - это компьютерная программа, которая сканирует различные web-сайты, извлекает информацию о ключевых словах и сохраняет ее в базе данных поискового сервера.
Поисковый сервер - это компьютерная программа, которая организует поиск по ключевым словам в глобальной сети интернета либо на конкретном web-узле. В ответ на запрос пользователя поисковый сервер возвращает список ссылок на документы. В качестве примера поискового сервера можно назвать "yandex" и "rambler".
Доменное имя - это название web-сайта, представленное в виде символов на английском языке. Например, www.desighner.ru, www.site.com и другие.
Протокол интернет (IP) - это протокол передачи информационных пакетов, который лежит в основе функционирования глобальной сети интернета.
Web-палитра - это набор из 216 цветов. Web-ориентированная палитра гарантирует, что цветное изображение будет отображаться в неизменном виде большинством браузеров, работающих на разных платформах.
Протокол - это набор правил, регламентирующих обмен информацией между компьютерами в сети. В качестве примеров сетевых протоколов можно привести IP, HTTP и FTP.
Гипертекст - это информационная структура, которая обеспечивает навигацию между web-документами посредством гипертекстовых ссылок. Фрагменты текста или изображения, при активации которых отображаются связанные с ними документы, называются гипертекстовыми ссылками.
Принципы web-дизайна
Сначала необходимо разобраться с тем, что такое принципы web-дизайна. Если посмотреть по толковому словарю терминов и понятий, то принцип - это основное, исходное положение какой-либо теории или руководящая идея, основное правило деятельности. И, следовательно, принципы web-дизайна - это общие рекомендации, соблюдение которых способствует успеху web-сайта.
Дизайн - это организация визуальной информации. Принципы дизайна - это описание особенностей восприятия и обработки визуальной информации, а также правил размещения визуальных данных на плоскости. Знание принципов дизайна помогает принимать решения об использовании различных элементов при создании композиции.
Дизайнер должен предвидеть, как будет воспринята информация пользователем, и уметь управлять процессом восприятия. Знание принципов дизайна позволяет разработчику сознательно принимать решения, о которых он, возможно, догадывался лишь интуитивно, и, следовательно, повышает эффективность работы по созданию web-узла.
В первую очередь необходимо понять, почему так важно знать принципы web-дизайна. Дело в том, что пользователи любят работать с простыми, с хорошо организованными web-узлами, которые позволяют легко разобраться в их структуре и найти нужную информацию. Когда пользователь обращается к web-сайту, он сразу должен понять основную направленность данного web-ресурса. Ведь большинство пользователей не станут разбираться в том, имеются или нет полезные данные на web-узле, структура которого непонятна, а средства навигации сложны в использовании. Вместо этого они будут искать другой, более подходящий для них сайт.
Раз дизайн - это описательное явление или узор, то нужно теперь разобраться в том, из каких элементов состоит дизайн. Этими элементами являются пространство, формат, фрагмент, основа, линия, форма, фигура, текстура и цвет. Все эти термины используются для описания внешнего вида web-узла. Пожалуй, самым сложным среди элементов web-сайта следует считать цвет, потому что цвет создает общую эмоциональную окраску web-страницы и создает у пользователей то или иное настроение. Некоторые цвета могут вызывать волнение, другие- успокаивают. Правильный выбор цвета позволяет объединить различные элементы web-узла, неправильный выбор испортит общее впечатление от документов.
Теперь можно приступить к рассмотрению непосредственно принципов web-дизайна, соблюдение которых позволит разработать действительно стильный и популярный web-узел. К принципам дизайна относятся такие понятия, как удобство восприятия, согласованность, применение контрастов, простота, структура и использование акцентов. Они образуют основу описания композиции. Некоторые из этих принципов применимы к любому типу дизайна, другие являются специфическими для среды интернета, но для любого web-сайта необходимо обеспечить применение всех этих принципов.
Удобство восприятия
Для того чтобы пользователю было удобно работать с вашим web-сайтом, не следует отступать от традиций. Необходимо, чтобы изображения или символы, используемые для навигации или выполнения специальных функций, были с первого взгляда понятны тем, кто уже имеет опыт работы с подобными средствами. Это относится к внешнему виду кнопок и стилю, в котором оформлены гипертекстовые ссылки.
Согласованность
Согласованность выражается в общей применимости материалов web-сайта и соответствия всех страниц единой теме. То есть пользователь, ознакомившись с исходной страницей, должен в общих чертах представить себе остальные документы данного web-узла. Одним словом, согласованность проявляется в организованности web-узла, способах объединения материалов в группы и использовании стилей.
Единство стиля
Единство стиля проявляется при объединении компонентов web-узла. Это когда готовый продукт должен выглядеть как единое целое, а не как сумма разнородных частей.

Системы навигации сайта.
Информационная среда WWW базируется на технологии гипертекста, в основе которой лежит концепция связывания документов с помощью ссылок. Именно ссылки объединили Интернет в единое пространство, дав пользователям возможность свободно перемещаться, не задумываясь о структуре и пространственной распределенности этой сложнейшей системы. Правильное использование гиперссылок является важнейшим фактором повышения юзабилити сайта. Известный специалист по юзабилити Якоб Нильсен утверждает, что навигация сайта должна в любой момент предоставлять посетителю ответы на три вопроса: 1. Где я нахожусь?
2. Где я уже был?
3. Куда я могу пойти?
Анализ путей попадания посетителей на сайт показывает, что основным источником трафика являются поисковые системы. Поэтому важно, чтобы посетитель не только перешел на внутреннюю страницу сайта с поисковой системы, но сразу же смог понять, в каком подразделе какого раздела и на какой странице он находится. При проектировании страниц необходимо учитывать ситуацию, когда пользователь попадает сразу на внутреннюю страницу сайта. Поэтому на любой странице сайта должны присутствовать следующие элементы: логотип компании, который является ссылкой на стартовую страницу, а также краткое описание сферы деятельности центральная навигация, отображающая структуру основных информационных блоков сайта (разделов и подразделов) поле поиска по сайту. Если необходимо исключить попадание пользователя из поисковой системы на определенную страницу, необходимо установить запрет на ее индексирование поисковыми системами. Т.е поместить в элементе следующий текст: . Поисковые сервера должны исключить такую страницу из баз данных. Классификация элементов навигации. Все средства навигации делятся по отношению к сайту на внешние и внутренние. Внешние средства реализованы в виде кнопок браузера, управляющих переходами по сайту. Внутреннюю навигацию можно разделить на основную и вспомогательную. Центральный элемент основной навигации – это панель или меню переходов. Основная навигация обычно представлена структурными ссылками, ведущими на разделы сайта. К вспомогательной навигации относят ссылки типа «на уровень вверх», «на стартовую» и т.д.Желательно, чтобы структурные ссылки отличались от вспомогательных и перекрестных ссылок, размещенных в тексте. На большинстве сайтов они выглядят одинаково. Поэтому часто бывает непонятно, ведет ссылка на целый раздел или на единственную страницу. С проблемой определения содержимого таких ссылок часто сталкиваются пользователи download-менеджеров, когда необходимо указывать, до какого уровня вложенности необходимо скачивать целый сайт или отдельные его разделы. Качественная вспомогательная навигация должна включать ссылки, ведущие к предыдущему разделу, к странице с оглавлением раздела и на главную страницу сайта. Удобно представлять это в виде пройденного пути, например: HomeShop.by > Бытовая техника > Соковыжималки > Moulinex Такая навигация обязательно должна присутствовать на сайтах с многоуровневой структурой. Все элементы строки, кроме последнего, должны быть ссылками на соответствующие страницы.Для разделения звеньев навигации не рекомендуется использовать символы «:» и «|», т.к они не информируют о вложенности и соподчиненности страниц. Оптимальным вариантом будет выбор в качестве разделителей «/» или «>». Навигационная система должна четко указывать пользователю о том, куда можно перейти с текущей страницы, и какую информацию при этом получить. Некорректно использовать ссылки с текстом «Вперед», «Следующая глава» и т.п. Особенно неуместна ссылка «Назад» на странице, на которую пользователь попадает с поисковой системы, т.к. ее можно интерпретировать как возврат к окну результатов поиска. Лучше использовать информативные ссылки подобного типа: «Следующая глава: 5. Основы визуального проектирования». Полезно заполнять для ссылок атрибут «title», который при наведении указателя мыши выводит всплывающую подсказку с описанием ссылки. Иногда в отдельный тип выделяют ссылки глобальной навигации, которые ведут на страницы типа About us, Contact us и т.п. Глобальные ссылки должны быть доступны с любой страницы сайта. Причем часто такие ссылки располагают как внизу, так и вверху страницы. Существует тематическая навигация, которая представлена ссылками, список которых генерируется и выдается в зависимости от того, какая информация была загружена пользователем на данной странице. Например, если это статья, то в конце можно представить ссылки на статьи подобной тематики, расположенные в порядке убывания релевантности относительно рассматриваемой темы. Для электронного магазина это могут быть ссылки на список наиболее покупаемых товаров в данной категории, ссылки на аксессуары или сопутствующие товары, ссылки на товары этой же категории, но других производителей и т.д. URL-адрес как элемент навигации URL-адрес сайта может быть удобным для пользователя, если названия каталогов и файлов являются информативными. Например: www.macromedia.com/software/dreamweaver/tutorial/links.html. Очевидно, что по данному адресу находится страница учебного пособия по визуальному HTML-редактору Dreamweaver от фирмы Macromedia, которая посвящена работе со ссылками. Помимо дополнительного источника информации по структуре сайта, URL может использоваться для быстрого перехода к нужной странице путем сокращения адреса. Например, удалив часть адреса до раздела software, можно попасть на страницу, представляющую программное обеспечение компании Macromedia. Если в URL-адресе используются нумерованные страницы или подкаталоги, например, «page_1», то изменив цифру, можно быстро попасть на требуемую страницу. Т.о. использование простого и логически структурированного URL-адреса - еще один способ облегчить пользователям навигацию по сайту. Многие страницы содержат внешние ссылки, по которым происходит переход на другие сайты. Таким образом реализуется базовая философия Всемирной паутины, заключающаяся во взаимосвязанности ресурсов друг с другом. Обычно внешние и внутренние ссылки не отличаются по оформлению. Рекомендуется выделять ссылки, уводящие на другие ресурсы, например, разместив рядом с ссылкой какой-либо графический значок. Основной спорный вопрос относительно внешних ссылок состоит в том, в каком окне отображать их содержимое. Многие считают открытие внешней ссылки в новом окне плохим тоном, полагая, что, если ресурс заслуживает внимания, то пользователь на него все равно вернется. Однако, существует и противоположное мнение. Процесс навигации по сайту, как и процесс осмысления и усвоения отображаемой на нем информации, не должен прерываться переходом на другие ресурсы. А это и есть самый безобидный способ удержать посетителя на сайте, действуя согласно правилу: новому сайту - новое окно. При наведении на внешнюю ссылку в строке статуса должен выводится адрес соответствующего ресурса, благодаря чему пользователь может получить некоторую полезную информацию. Если ссылка ведет на файл, например, для скачивания, необходимо обязательно указывать его размер. Текстовая ссылка как элемент навигации. Ссылки, расположенные в тексте, не должны совпадать по оформлению с основным текстом. Если в тексте используется подчеркнутый текст и ссылки с таким же оформлением, то обнаружить команду гипертекстового перехода можно, только усердно поводив по тексту указателем мыши. Т.о. даже, если на сайте не используется подчеркивание ссылок, выделять таким образом текст, чтобы привлечь к нему внимание, крайне не рекомендуется. Так как многие пользователи привыкли воспринимать подчеркивание на web-страницах согласно первоначальному его назначению. Навигационные элементы сайта должны быть легко узнаваемы. Глаз пользователя должен однозначно выделять их среди других элементов страницы. Якоб Нильсен до сих пор настоятельно рекомендует использовать для оформления ссылок классический, но уже морально устаревший стандарт с синим цветом и подчеркиванием. Этот вопрос очень спорный, и однозначной рекомендации здесь быть не может. Однако в данный момент, когда практически неограниченны возможности по настройке внешнего вида элементов страниц с помощью CSS, трудно согласиться с Нильсеном. Кроме того, физиологи утверждают, что восприятия ярко синего цвета глазом человека ограничено из-за малого количества рецепторов, воспринимающих длину волны синего цвета. По их мнению, степень читабельности синего цвета, воспринимаемого с экрана монитора, довольно низкая в сравнении с другими цветами. Выбор цвета для посещенных ссылок не так актуален, как для активных ссылок. Здесь главное, чтобы пользователь однозначно идентифицировал уже посещенные ссылки. Для «отработанных» ссылок можно использовать менее насыщенный цвет, чем у активных ссылок или цвет более близкий к цвету основного текста и даже фона страницы. Т.о. проектирование навигации является одним из важнейших моментов при разработке сайта, отвечающего требованиям юзабилити. Если навигация сайта не логична как по структуре, так и по оформлению, то основным способом ориентации на сайте будет «метод тыка», который совершенной неуместен в такой динамичной среде как Интернет. При этом будет нарушаться основное условие работы с сайтом – оперативное получение информации при минимуме затрат времени и ресурсов.
Понятие хостинга
Слово [ Cкачайте файл, чтобы посмотреть ссылку ], как и многие другие слова из интернетовского лексикона, произошло из английского языка от слова "host", у которого есть несколько значений: хозяин, основное устройство, главный компьютер, содержатель постоялого двора. Значение "содержатель постоялого двора" наиболее близко к правильному толкованию термина "хостинг" в Интернет, т.к. подразумевается, что ваша веб-страничка размещена на компьютере провайдера Интернет наряду с множеством веб-страничек других людей.
Почему возникает необходимость в хостинге? Предположим, Вы создали сайт на своем компьютере. Теперь перед Вами возникает следующий вопрос: как его разместить в Интернете, чтобы некий пользователь в любой момент времени мог получить к нему доступ? Разумеется, можно сделать так, чтобы из Интернета данную страничку любые желающие могли просматривать прямо с Вашего компьютера. Но это значит, что: во-первых, ваш компьютер должен постоянно работать; во-вторых, должен быть постоянно подключен к Интернету; в-третьих, соединение с Интернетом должно происходить с большой скоростью, ведь если несколько человек сразу захотят посмотреть вашу веб-страничку, то скорости обычного телефонного соединения будет недостаточно. Кроме того, вам придется дополнительно установить на своем компьютере довольно сложное программное обеспечение.
Очевидно, что размещение сайта (хостинг) в Интернете на вашем персональном компьютере связано с большими проблемами и затратами. Но есть простой и недорогой способ, который позволяет избавиться от них. Это и есть хостинг.
Если Ваш веб-сайт небольшой или средний (например, размером 20-50 Мбайт), то для него не требуется установка и использование отдельного сервера (компьютера), наиболее эффективным и популярным решением является так называемый виртуальный сервер, когда один сервер провайдера Интернет (хостинг-провайдера) обеспечивает функционирование нескольких (сотнии тысячи) виртуальных веб-сайтов. Эта услуга называется хостинг виртуальных серверов или просто виртуальный хостинг. Виртуальный хостинг обеспечивает доступ к вашему веб-сайту любого пользователя Интернет в любое время из любой точки мира по электронному адресу, который был вами ранее зарегистрирован [ Cкачайте файл, чтобы посмотреть ссылку ].
Если вы воспользуетесь услугой виртуального хостинга, вы получите: - дисковое пространство на сервере; - имя виртуального сервера (доменное имя);
- средства доступа и администрирования своего веб-сервера;
- средства настройки и конфигурации веб-сервера;
- возможность выполнения скриптов с целью создания сервисов на вашем веб-сервере;
- почтовые ящики, и т.д.
Если же Ваш первоначально небольшой веб-сайт постепенно переростает в крупный Интернет-проект, и Вы хотите, чтобы все технические ресурсы компьютера использовались только для него (чтобы не было ограничений на используемое вами програмное обеспечение и технологии), тогда вам необходим физический хостинг. Физический хостинг - это размещение вашего компьютера (сервера) на территории телекоммуникационного узла (серверной) хостинг-провадера, подключение компьютера к сети Интернет и обеспечение технического обслуживания со стороны провайдера.
Основные отличия физического хостинга от виртуального хостинга заключаются в следующем: отсутствие ограничений на используемое программное обеспечение и технологии (эти ограничения обязательно присутствуют при использовании виртуального хостинга); использование технических ресурсов сервера только для Вашего проекта (при виртуальном хостинге ресурсы находятся в общем пользовании всех виртуальных серверов); при размещении нескольких ваших Интернет-проектов на вашем компьютере будет удобнее и даже выгоднее, чем виртуальный хостинг.

Управление данными в информационных системах
1. Типы и преобразование данных в клиентских сценариях.
Скрипт клиентский, сценарий - (от англ. script) это программа, которая может быть загружена вместе с документом HTML или встроена прямо в него. Программа выполняется на клиентской машине при загрузке документа или в другое время. Таким образом, они позволяют авторам расширить возможности документов HTML, как активные, так и интерактивные. Элемент SCRIPT помещает скрипт в документ. Этот элемент может появляться любое число раз в HEAD и BODY документа HTML. Скрипт может быть определён внутри элемента SCRIPT или во внешнем файле.

Для написания скриптов используются языки JavaScript, VB Script, TCL.

JavaScript распознает следующие типы величин:
1. Числа. (10, 3.14, 0хFF, 0777)
2. Логические (Булевы), значения true или false
3. Строки, типа "Howdy!"
4. Пустой указатель, специальное ключевое слово, обозначающее нулевое значение

Тип переменной зависит от того, какой тип информации в ней хранится. JavaScript не является жестко типизированным языком. Это означает, что вы не должны точно определять тип данных переменной, в момент ее создания. Тип переменной присваивается переменной автоматически в течение выполнения скрипта.

var oneString="1"
var oneInt=1
var oneConcatenate=oneString+oneInt //«11»
var oneAddition=oneInt+oneString //2

В первой операции сложения первый операнд является строкой. JavaScript предполагает, что производится операция с двумя строками. Когда JavaScript обнаруживает в качестве второго операнда целое число, он в соответствии со своими представлениями преобразует переменную в строку.
Поскольку JavaScript свободно типизированный язык, то это не вызовет ошибки.
VBScript имеет только один тип данных - Variant - специальный тип данных, который может содержать различные виды информации, в зависимости от того, как она используется. Тип данных Variant существует только в VBScript. Все функции VBScript возвращают значения только типа Variant. Тип данных Variant может содержать как численную, так и текстовую информацию. Variant ведет себя как число, когда он используется в численном контексте, и как текст - в случае использования в текстовом контексте.
Подтипы Variant:
Empty, Null,Boolean, Byte, Integer, Long, Single, Double, Date (Time), String, Object, Error.
(Источник: http://www.citforum.ru/internet/intranet_app/interintr_07.shtml)

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

2. Типы данных в PHP-приложениях
PHP поддерживает восемь простых типов.

Четыре скалярных типа: boolean, integer, float, string
Два смешанных типа: array, object
И, наконец, два специальных типа: resource, NULL
Для удобства понимания в этом руководстве используется также несколько псевдо-типов:
mixed, number, callback

Также можно найти несколько упоминаний типа двойной точности. Рассматривайте его как число с плавающей точкой, два имени существуют только по историческим причинам.

Как правило, программист не устанавливает тип переменной; предпочтительнее, чтобы это делал PHP во время выполнения программы в зависимости от контекста, в котором используется переменная. Если вы хотите принудительно изменить тип переменной, вы можете либо привести переменную, либо использовать функцию settype().

$foo = "0"; // $foo это строка (ASCII 48)
$foo += 2; // $foo теперь целое число (2)
$foo = $foo + 1.3; // $foo теперь число с плавающей точкой (3.3)
$foo = 5 + "10 Little Piggies"; // $foo это целое число (15)
$foo = 5 + "10 Small Pigs"; // $foo это целое число (15)
?>

3. Типы данных в Java-приложениях.
В языке Java определено восемь базовых типов данных. Для каждого базового типа данных отводится конкретный размер памяти. Этот размер, как мы говорили в предыдущем разделе, не зависит от платформы, на которой выполняется приложение Java:

Тип данных
Размер занимаемой области памяти
Значение по умолчанию

boolean
8
false

byte
8
0

char
16
'x0'

short
16
0

int
32
0

long
64
0

float
32
0.0F

double
64
0.0D


Все базовые типы данных по умолчанию инициализируются.
Переменные типа boolean могут находиться только в двух состояниях - true и false, причем эти состояния никаким образом нельзя соотнести с целыми значениями.
Переменные типа byte, short, int и long являются знаковыми. В языке Java нет беззнаковых переменных, как это было в языке С.
Переменные базовых типов могут передаваться функциям в качестве параметров только по значению, но не по ссылке.

4. Валидаторы в WEB-приложениях. Разновидности.
Валидатор программа, проверяющая данные на соответствие стандарту. В Web-приложениях валидаторы чаще всего используются для проверки данных введенных пользователем.

function is_alnum(Obj) {
var str = Obj.value;
for (var i=0; i{
chr = str.charAt(i);
if (isNaN(chr) && chr != '')
Obj.value = str.substring(0,str.lastIndexOf(chr))+str.substring(str.lastIndexOf(chr)+1,str.length);
}}

Эта функция является валидатором. Она проверяет элемент формы Input на соответствие числовому формату. В случае ввода пользователем некорректного символа валидатор удалит его.

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

5. Клиентские валидаторы в WEB-приложениях.
Выполняются у пользователя. Могут проверять введенные данные до отправки их на сервер.

6. Серверные валидаторы в WEB-приложениях.
Тут тоже самое, но проверяет на самом сервере, что дает большую гибкость, т.к. серверу виднее почему что-то не подходит. Он данные в базу попытается записать, не вошло, будет знать почему, в отличие от клиентских.

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

Разметка разделяется на стилистическую разметку, структурную и семантическую.

Стилистическая разметка отвечает за внешний вид документа. ( (курсив), (жирный), (подчеркивание)).

Структурная разметка задает структуру документа. (

(параграф), (заглавие),
(секция))

Семантическая разметка информирует о содержании данных. ( (имя документа), )

Основными понятиями любого языка разметки являются теги, элементы и атрибуты.

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

Элемент - это тэги в совокупности с их содержанием.

Атрибуты состоят из пары "название" = "значение", которую можно задавать при определении элемента в начальном тэге. Слева и справа от символа равенства можно оставлять пробелы. Значение атрибута указывается в виде строки, заключенной в одинарные или двойные кавычки.

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

Управляющие элементы: кнопки, флажки, кнопки с зависимой фиксацией, меню, текстовый ввод, выбор файлов, скрытые управляющие элементы, объекты.

8. Технология CSS.
Cascading Style Sheets (Таблицы Каскадных Стилей) - это язык, содержащий набор свойств для описания внешнего вида любых HTML документов. CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения и других аспектов представления документа. Основной целью разработки CSS являлось разделение содержимого (написанного на HTML или другом языке разметки) и представления документа (написанного на CSS). Это разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печать, чтение голосом (специальным голосовым браузером или программой чтения с экрана), или при выводе устройствами, использующими Шрифт Брайля.
Стандарт CSS определяет приоритеты, в порядке которых применяются правила стилей, если для какого-то элемента подходят несколько правил одновременно. Это называется «каскадом», в котором для правил рассчитываются приоритеты или «веса», что делает результаты предсказуемыми.
Таблица стилей состоит из набора правил. Каждое правило, в свою очередь, состоит из одного или нескольких селекторов, разделённых запятыми и блока определений. Блок определений же обрамляется фигурными скобками, и состоит из набора свойств и их значений.
Существуют классовые селекторы (селектор {свойства}), ID селекторы (#id {свойства}), контекстуальные селекторы (контекстные селекторы - это сочетания нескольких обыкновенных селекторов).

p {
font-family: "Garamond", serif;
}
h2 {
font-size: 110 %;
color: red;
background: white;
}
.note {
color: red;
font-weight: bold;
}
p#paragraph1 {
margin: 0;
}
a:hover {
text-decoration: none;
}
#news p {
color: blue;
}

CSS можно включать в HTML, подключив из внешнего файла, непосредственно в документ, непосредственно в элемент.

9. Организация взаимодействия страниц во фреймовой структуре.
Окно просмотра браузера можно разбить на несколько прямоугольных областей, называемых фреймами. Области соприкасаются друг с другом и в каждую из областей можно загрузить отдельный HTML-документ, и работать с ним независимо от документов, загруженных в другие области окна или фрейма. Между фреймами можно организовать взаимодействие, например, выбор ссылки в одном из фреймов позволит изменить содержимое других фреймов. Фреймы часто используются в случаях, когда возникает необходимость загрузить документ в одну из областей при работе в другой области, или когда следует отобразить информацию, которая должна постоянно находиться на экране.
Для того, чтобы передать данные в другой фрейм, а именно изменить его содержимое, при нажатии на ссылку необходимо указать атрибут target в теге гиперссылки, а в его значении указать имя фрейма, в который посылаем данные. Если все документы, загружаемые по ссылкам, должны загружаться в один и тот же фрейм, то можно задать параметр target в теге
Для того, чтобы получить больший контроль над фреймом, нужно использовать JavaScript. Для получения контроля над фреймом надо получить ссылку на него, используя объектную модель браузера. Для этого можно определить его через document, а можно через top. Например «top.frames['messages'].document» даст контроль над документом, заключающемся во фрейме messages.

10. Плавающие фреймы (iFrame) на WEB-страницах
Браузер Microsoft Internet Explorer разрешает использование так называемых плавающих фреймов, описание которых может быть расположено в тексте обычного HTML-документа. Для определения плавающего фрейма используется тег информацию. Для плавающих фреймов с помощью параметров можно задавать размеры фрейма, горизонтальное выравнивание, размер отступа содержимого фрейма от границ.
Во всем остальном плавающие фреймы сходятся с остальными.

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

Администрирование информационных систем
Организация авторизованного доступа в WEB-приложениях.
HTTP-Аутентификация в PHP
Ваш скрипт может использовать функцию header() для того, чтобы отправить браузеру клиента сообщение "Authentication Required", что в свою очередь приведет к появлению диалогового окна для ввода имени пользователя и пароля. После того как клиент ввел свое имя и пароль, скрипт будет вызван повторно, но уже с предопределенными переменными PHP_AUTH_USER, PHP_AUTH_PW и AUTH_TYPE, которые соответственно содержат имя пользователя, пароль и тип аутентификации. Эти переменные могут быть найдены в массиве $_SERVER и $HTTP_SERVER_VARS.
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Текст, отправляемый в том случае,
если пользователь нажал кнопку Cancel';
exit;
} else {
echo "

Hello {$_SERVER['PHP_AUTH_USER']}.

";
echo "

Вы ввели пароль {$_SERVER['PHP_AUTH_PW']}.

";
}
?>
PHP-авторизация
В скрипте может содержаться форма для ввода логина и пароля. Они отсылаются к функции проверки валидности (правильности) логина и пароля. Они могут быть напрямую прописаны в самом скрипте (иногда этот способ имеет преимущества), функция проверки валидности может обращатся к базе с запросом, чтобы проверить валидность логина и пароля. После проверки логина и пароля скрипт перемещает пользователя либо к сообщению о неверном вводе, либо предоставляет доступ к закрытой части.

echo "






";

if (isset($_POST['log'],$_POST['prl']) && !empty($_POST['log']) && !empty($_POST['prl']))
{
if ($_POST['log'] == "login" && $_POST['prl'] == "password") {
echo "Ok";
}
else echo "Неправильный логин или пароль";
}
?>

Сессионные переменные в WEB-приложениях.
Любой скрипт, который будет использовать переменные (данные) из сессий, должен содержать следующую строчку:
session_start();
Эта команда говорит серверу, что данная страница нуждается во всех переменных, которые связаны с данным пользователем (браузером). Сервер берёт эти перемнные (из файла, либо из БД) и делает их доступными. Очень важно открыть сессию до того, как какие-либо данные будут посылаться пользователю;
В броузере клиента, лишь хранится уникальный идентификатор номера сессии, либо в форме cookie, либо в виде переменной в адресной строке броузера, какой из двух способов использовать для передачи идентификатора сессии между страницами интерпретатор PHPвыбирает сам.
После начала сессии можно задавать глобальные переменные. Это элементарно: вызываем функцию session_register('var_name'); и переменная $var_name становится доступной на всех страницах, использующих сессию.
Другие полезные функции для работы с сессиями:
session_unregister(string) - сессия <забывает> значение заданной глобальной переменной;
session_destroy() - сессия уничтожается (например, если пользователь покинул систему, нажав кнопку <выход>);
session_set_cookie_params(int lifetime [, string path [, string domain]])-с помощью этой функции можно установить, как долго будет <жить> сессия, задав unix_timestamp(количество секунд прошедших с 1 января 1970 года) определяющий время <смерти> сессии. По умолчанию, сессия <живёт> до тех пор, пока клиент не закроет окно браузера.
С выходом в свет PHP 4.1.0 - работа с сессиями значительно облегчилась. Все переменные сессий стали доступны из глобального массива _SESSION['var_name'].
Сейчас сессии зачастую используют для авторизации.

Представление о стеке протоколов TCP/IP.
Стек протоколов TCP/IP
Это стандартизованный набор сетевых протоколов. В настоящее время - это основной набор протоколов взаимодействия в Интернете. В состав стека протоколов TCP/IP входят два основных протокола: IP, TCP и несколько вспомогательных протоколов.
Протокол IP (Internet Protocol) - основной протокол сетевого уровня. Определяет способ адресации на сетевом уровне.
Протокол TCP (Transmission Control Protocol) - протокол, обеспечивающий гарантированную доставку данных.
Как работают эти протоколы?
Протокол IP задает формат адреса узла (поэтому адреса компьютеров называются IP-адресами) и доставляет пакет данных. Однако, на одном узле (компьютере сети) может функционировать параллельно несколько программ, которым требуется доступ к сети. Следовательно, данные внутри компьютерной системы должны распределяться между программами. Поэтому, при передаче данных по сети недостаточно просто адресовать конкретный узел. Необходимо также идентифицировать программу-получателя, что невозможно осуществить средствами протокола IP. Другой серьезной проблемой IP является невозможность передачи больших массивов данных. Протокол IP разбивает передаваемые данные на пакеты, каждый из которых передается в сеть независимо от других. В случае если какие-либо пакеты потерялись, то модуль IP на принимающей стороне не сможет обнаружить потерю, т.е. целостность данных будет нарушена. Для решения этих проблем разработан протокол TCP. Каждой программе назначается номер TCP- порта в соответствии с ее функциональным назначением на основе определенных стандартов. Порт можно рассматривать как ячейку в почтовом отделении связи. Протокол IP определяет только адрес почтового отделения, а протокол TCP положит конверт в нужную ячейку. Таким образом, стек протоколов IP и TCP обеспечивают полную адресацию:
Номер TCP-порта позволяет однозначно идентифицировать программу на компьютере сети,
Компьютер в сети однозначно определяется IP-адресом.
Следовательно, комбинация IP-адреса и номера порта позволяет однозначно идентифицировать программу в сети. Такой комбинированный адрес называется сокетом (socket). Дополнительно к этому, протокол TCP обеспечивает гарантированную доставку данных. Это обеспечивается тем, что принимающий компьютер подтверждает успешный прием данных. Если передающий компьютер не получает подтверждения, он пытается произвести повторную передачу.

Интегрированные среды разработки WEB-приложений.
Каждый выбирает свой инструмент для создания Web-страниц. Это может быть MS FrontPage или Macromedia DreamWeaver, Allaire HomeSite. А кто-то пользуется простым текстовым редактором, например Блокнотом(Notepad/ Notepad++).
FrontPage [ Cкачайте файл, чтобы посмотреть ссылку ]-[ Cкачайте файл, чтобы посмотреть ссылку ], входящий в состав пакета приложений [ Cкачайте файл, чтобы посмотреть ссылку ].
Данное приложение при разработке страниц веб-узла пользуется движком [ Cкачайте файл, чтобы посмотреть ссылку ] ([ Cкачайте файл, чтобы посмотреть ссылку ]). В браузерах, использующих другие движки (например, [ Cкачайте файл, чтобы посмотреть ссылку ]), страницы, созданные с помощью FrontPage могут отображаться по-другому. Тем не менее, при правильном использовании режимов совместимости, FrontPage позволяет создавать сайты, отображающиеся одинаково в любом браузере.
Программа обладает широким спектром возможностей, в частности, может автоматически отправлять изменения, внесённые разработчиком сайта в исходные тексты, в режиме реального времени.
В Microsoft Office 2007 программа FrontPage была заменена на [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ].
DreamWeaver
Macromedia DreamWeaver - профессиональный редактор HTML для визуального создания и управления сайтами различной сложности и страницами сети Internet. В нем можно писать код HTML или в визуальной среде( [ Cкачайте файл, чтобы посмотреть ссылку ] режим) , Dreamweaver облегчает эту работу и обеспечивает полезными инструментами и средствами, чтобы сделать свои собственные проекты непревзойденными. Dreamweaver включает в себя много инструментов и средств для редактирования и создания профессионального сайта: HTML, CSS, JavaScript, редакторы кода (просмотр кода и инспектор кода), что позволяет вам, редактировать различные текстовые документы, которые поддерживаются в Dreamweaver. Также вы можете настроить Dreamweaver, чтобы он наводил порядок и переформатировал HTML. Возможность визуального редактирования в Dreamweaver также позволяет быстро создавать или менять дизайн проекта без написания кода. Dreamweaver относится к так называемым "визуальным" редакторам, т.е. вы сразу можете видеть на экране (хотя бы приблизительно) результат своей работы. При этом он предоставляет полный доступ к источнику кода и не вставляет в него ничего лишнего, как это делает, например, FrontPage. Таким образом, можно создавать свою страничку и параллельно изучать HTML, заглядывая в источник. DreamWeaver полностью настраиваемый. Можно использовать Dreamweaver, чтобы создавать свои собственные объекты и команды, изменять "горячие" клавиши и расширять возможности DreamWeaver новыми свойствами, инспекторами свойств и новыми отчетами о сайте.
HomeSite
HomeSite первоначально был разработан в 1995 [ Cкачайте файл, чтобы посмотреть ссылку ], основанной Ником Брадбери (Nick Bradbury). В марте 1997 корпорация [ Cкачайте файл, чтобы посмотреть ссылку ] (основанной Jeremy и его братом J.J. Allaire) приобрели HomeSite. После ухода из Allaire в 1998, Ник продолжил работу над [ Cкачайте файл, чтобы посмотреть ссылку ] редактором [ Cкачайте файл, чтобы посмотреть ссылку ] и [ Cкачайте файл, чтобы посмотреть ссылку ] распознователем [ Cкачайте файл, чтобы посмотреть ссылку ]. Корпорация [ Cкачайте файл, чтобы посмотреть ссылку ] приобрела [ Cкачайте файл, чтобы посмотреть ссылку ] в 2001. Некоторые активные пользователи HomeSite критиковали Macromedia за небрежность инструментария в более дорогом Dreamweaver редакторе. В 2006 году [ Cкачайте файл, чтобы посмотреть ссылку ] купила Macromedia и в его будущем можно сомневаться еще больше.
Когда HomeSite принадлежал Нику Брадбери, и позже Allaire, он имел многочисленных поклонников у его пользовательского сообщества. Пока многие компьютерные компании использовали [ Cкачайте файл, чтобы посмотреть ссылку ] (Что Вы Видите, То Вы и Получаете) инструментальные средства создания сайта, где пользователь не видел код, Ник Брадбери создавал программу, у которой центральное место занимал сам код. Программа полюбилась тем, кто предпочитал работать непосредственно с кодом. Эта концепция звучала так: «Вы Видите То, что Вам Требуется».
Далее он встроил разнообразные средства, чтобы пользователь мог переделывать пользовательский интерфейс и расширил выполняемые функции. Корпорация [ Cкачайте файл, чтобы посмотреть ссылку ] сохранила эту концепцию поскольку ее целевой рынок пользователей [ Cкачайте файл, чтобы посмотреть ссылку ] ставил также на центральное место код. Разработчики в Allaire расширили первоначальную версию HomeSite новыми возможностями, такими как: [ Cкачайте файл, чтобы посмотреть ссылку ], встроенное создание сценариев и [ Cкачайте файл, чтобы посмотреть ссылку ] для понимания самих тегов и редакторов тегов.
NOTEPAD++
Текстовые редакторы возможно использовать только для создания небольших страниц, так как у них есть много минусов: не поддерживаются проекты, отсутствует "подсветка" текста..., в общем, работать с ними может только профессионал, знающий язык HTML.

Модель "клиент-сервер" для WEB-приложений.
Модель клиент-сервер
Работа WWW заключается в организации взаимодействия двух различных систем, обменивающихся данными. Система которая загружает Web-страницу, называется клиентом. Обычно для этого на клиентской системе (в основном на простом домашнем компьютере) запускается программа-клиент называемая Web-браузер, такая как Netscape Communicator, Internet Explorer, Opera или какая-либо другая. Так вы получаете доступ в World Wide Web. Web-броузер обеспечивает вас средствами навигации в этом пространстве и отображения Web-страниц.
На другом конце Web-соединения находится система, называемая Web-сервером. Она принимает клиентский запрос на определённую страницу, находит её на локальном диске и и посылает клиенту - Web-броузеру.


Сервер
Клиент
Клиент

Хранилище документов
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]



[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]



Сеть



В клиент-серверных системах сервер - это компьютер (или приложение/программа), обеспечивающий удалённым пользователям доступ по сети к своим данным или ресурсам. Клиент - это компьютер (или приложение/программа),  который запрашивает эти данные или ресурсы. Чаще всего сервер - мощная машина, а клиент - обычный настольный компьютер.
Таким образом становится возможным вести централизованные базы данных, предоставлять клиентским машинам определенные услуги. Клиенту же передаются только результаты действий сервера в виде HTML страницы.

Клиентские сценарии WEB-приложений.
Это сценарии на JavaScript или VBScript или другие скриптовые языки. При помощи этих языков можно обрабатывать события вызываные пользователем, нужным нам образом. Например, щелчек мышью, нажатие на кнопку формы и другие возможные действия. Обрабатывать данные, перестраивать внешний вид страницы, отправлять данные на сервер, блокировать доступ, отображать подсказки.
Сценарий размещается в HTML странице, заключается в специальные теги.

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

Он выведет поверх окна браузера дочернее модальное окно с надписью. Часто сценарии используются для контроля вводимой информации в поля HTML-форм, а соответственно и для корректности работы серверного сценария. К примеру, при заказе товара в Интернет магазине, не дать пользователю оставить поля с адресом для доставки пустым или чтоб пользователь вместо цифры-номера дома не ввел строку.
В данный момент по большей части используется сопряжение технологий под названием AJAX. В которой используется DOM (Document Object Model) общая разметка представляемой страницы и обработка событий вызываемых действиями пользователя. Javascript для вычислений, изменений данных, и передачи данных на сервер(серверному сценарию) без перезагрузки страницы xmlHttpRequest, CSS для общего определения стиля оформления страницы и ее элементов.

Обработка событий в клиентских сценариях WEB-приложений.
Использование языка JavaScript при обработке событий значительно расширило возможности языка HTML. Чаще всего программы создаются для обработки информации, вводимой пользователем в поля форм. Возможности управления элементами форм обеспечиваются главным образом за счет функций обработки событий, которые могут быть заданы для всех элементов формы. События делятся на несколько категорий:
события, чвязанные с документами (события документа):
- загрузка и выгрузка документов;
события, связанные с гиперсвязью (события гиперсвязи):
- активизация гиперсвязи;
события, связанные с формой (события формы):
- щелчки мыши на кнопках
- получение и потеря фокуса ввода и изменение содержимого полей ввода, областей текста и списков;
- выделение текста в полях ввода и областях текста;
события, связанные с мышью:
- помещение указателя мыши на гиперсвязь и активизация гиперсвязи.
События, связанные с документами, возникают при загрузке и выгрузке документа, в то время как события гиперсвязей возникают при их активизации или при помещении на них указателя мыши.
Чтобы обеспечить перехват события, необходимо написать функцию-обработчик события. В качестве обработчиков событий могут быть задану целые функции языка JavaScript или только группы из одного или нескольких JS-операторов. В таблице перечислены имена всех событий и условия их возникновения: Имя события Атрибут HTML Условие возникновения события
Blur onBlur Потеря фокуса ввода элементом формы
Change onChange Изменение содержимого поля ввода иди области текста, либо выбор нового элемента списка
Click onClick Щелчок мыши на элементе формы или гиперсвязи
Focus onFocus Получение фокуса ввода элементом формы
Load onLoad Завершение загрузки документа
MouseOver onMouseOver Помещение указателя мыши на гиперсвязь
MouseOut onMouseOut Помещение указателя мыши не на гиперсвязь
Select onSelect Выделение текста в поле ввода или области текста
Submit onSubmit Передача данных формы
Unload onUnload Выгрузка текущего документа и начало загрузки нового

Программирование типовых функциональных блоков серверных сценариев PHP-WEB-приложений.
Описание языка:
Пхп скрипт должен быть заключен в специальные теги, которые говорят ВебСерверу что код заключенный в эти теги он должен обработать:
echo “ПРЕВЕД”;
?>
Внутри этого блока пишем код который мы хотим обработать на сервере. Например echo “ПРЕВЕД”;
Пошлет браузеру клиента html файл с текстом указанным в кавычках. Каждая команда должна заканчиваться точкой с запятой. Пятой версией PHP интерпритатора хорошо поддерживается ООП. Существует механизм сессий для хранения данных(переменных) текущего клиента на протяжении всего времени пока он не закроет браузер.
Переменные объявляются при помощи знака доллара $val. Переменные не обладают каким либо типом. Что присвоим переменной то и будет, хоть int хоть объект.
Комментарии как обычно через //однострочный камент или /*блочный камент */
Поддерживаются все операторы основные, в том числе и битовые.
Функции определяются так
function MyFunc($a_param,$b_param)
{
// Что то мы тут делаем
return “Ла-ЛА” ;// возвращает строку, может возвращать что угодно, числа, объекты
}
Обязательно слово function и после него идентификатор функции и круглые скобки (в них можно указать входные данные, а можно и не указывать). Обязательны фигурные скобки после круглых, внутри фигурных скобок размещаем команды. Return можно и не ставить тогда функция ничего возвращать не будет.
Классы это некий трафарет по которому мы можем делать объекты. В классе определяются поля – переменные(то же что и обычные переменные только они в программе видны как члены класса и живут нераздельно от него) и методы(те же функции только принадлежащие к конкретному классу и имеющие доступ к его переменным). Создаются объекты в скрипте через оператор new.
Пример класса:
// ключевое слово class определяет что следом за ним идет идентификатор класса
Class MyClass{
/* эти фигурные скобки обязательны, все что записано внутри этих скобок считается членами класса */

Var $a; // так объявляются переменные
Function Say($Msg){

Return echo ”Say:”.$Msg;
}
}
?>

9.Организация взаимодействия серверных сценариев с СУБД с использованием PHP и MySQL.
SQL может применятся в прикладных программах двумя способами: в виде встроенного SQL и интерфейса программирования приложений (Application Program Interface, API). Первый способ напоминает использование PHP - инструкции SQL размещаются среди кода прикладной программы. В настоящий момент такой стиль не поддерживает ни MySQL ни PHP. Второй подход заключается в том, что программа взаимодействует с СУБД посредством совокупности функций. Именно такой подход используется при взаимодействии PHP и MySQL.

mysql_connect

Эта функция устанавливает соединение с сервером server MySQL и возвращает дескриптор соединения с базой данных, по которому все другие функции, принимающие этот дескриптор в качестве аргумента, будут однозначно определять выбранную базу данных. Вторым и третьим аргументами этой функции являются имя пользователя username и его пароль password соответственно.
Переменные $dblocation, $dbuser и $dbpasswd хранят имя сервера, имя пользователя и пароль, и, как правило, прописываются в отдельном файле (к примеру, config.php), который потом вставляется в каждый PHP-файл, в котором имеется код для работы с MySQL:

mysql_close

Эта функция разрывает соединение с сервером MySQL, и возвращает true при успешном выполнении операции и false в противном случае. Функция принимает в качестве аргумента дескриптор соединения с базой данных, возвращаемый функцией mysql_connect.

mysql_select_db

Функция mysql_select_db выбирает базу данных для дальнейшей работы, и все последующие SQL-запросы применяются к выбранной базе данных. Функция принимает в качестве аргументов название выбираемой базы данных database_name и дескриптор соединения resource. Функция возвращает true при успешном выполнении операции и false в противном случае.

mysql_query

Эта функция применяется для отправки серверу SQL-запросов. Функция возвращает дескриптор запроса в случае успеха и false в случае неудачного выполнения запроса.
Результат выполнения показан на следующем рисунке:

mysql_fetch_array

Эта функция возвращает значения полей в виде ассоциативного массива, в качестве аргумента принимает дескриптор запроса возвращаемый функцией mysql_query.

mysql_result
С помощью этой функции можно получить доступ к отдельному полю записи.

Обзор среды разработки Java-приложений на примере NetBeans.
NetBeans IDE свободная интегрированная среда разработки приложений (IDE) на языке программирования Java, Ruby и ряде других.

Среда разработки NetBeans поддерживает разработку для платформ J2SE и J2EE. Для разработки программ в среде NetBeans и для работы самой среды NetBeans должен быть установлен Sun JDK или J2EE SDK. Для разработки в среде NetBeans для мобильных платформ (J2ME) необходимо установить NetBeans Mobility Pack.
Проект NetBeans IDE поддерживается и спонсируется фирмой Sun Microsystems, однако разработка NetBeans ведется независимо сообществом разработчиков-энтузиастов (NetBeans Community) и компанией NetBeans Org.

По качеству и возможностям последние версии NetBeans IDE не уступают лучшим коммерческим (платным) интегрированным средам разработки для языка Java, таким, как IntelliJ IDEA, поддерживая рефакторинг, профилирование, выделение синтаксических конструкций цветом, автодополнение набираемых конструкций на лету, множество предопределённых шаблонов кода и др.
NetBeans обеспечивает несколько просмотров/редакторов для одного и того же объекта: пользователь может легко переключиться между различными способами просмотра одного и того же объекта (например, с исходного файла Java на редактор формы, с текстового XML на визуальный редактор описателя развёртывания), без необходимости открывать новые окна для каждого просмотра и постоянно искать в них нужный фрагмент кода.
Полностью интегрированная поддержка модульного тестирования (JUnit).
Исходные файлы показываются в контексте проекта в логическом виде.
Возможность работать с несколькими проектами одновременно.

На идеях, технологиях и в значительной части на исходном коде NetBeans IDE базируются предлагаемые фирмой Sun коммерческие интегрированные среды разработки для Java Sun Java Studio Creator, Sun Java Studio Enterprise и Sun Studio.

Этапы разработки Java-приложений в среде NetBeans.
Разработку Java-приложений в среде NetBeans можно разделить на следующие этапы:
1) создание проекта
Для того чтобы создать первый проект необходимо в меню File выбрать пункт New Project
2) Выбор категории проекта из списка категорий
В списке категорий проектов можно увидеть следующие пункты General (стандартное приложение), Web (Web-приложение), Enterprise (корпоративное приложение), NetBeans Plug-ins Modules (плагины для IDE NetBeans), Samples (примеры).
3) Указание имени проекта и местонахождение рабочих файлов проекта
Так же можно назначить проект главным (set as Main Project) (Этот проект будет открываться при загрузке IDE NetBeans).
Если выбрать галочку “Create Main Class”, то будет создан главный класс приложения. В поле находящимся рядом можно указать имя этого класса.
После указания и выбора значений всех полей следует нажать кнопку Finish и проект будет создан
4) Написание исходного кода приложения
Для редактированиа формы оконного приложения можно воспользоваться редактором форм
5) Для запуска проекта в меню Run выбрать пункт Run Main Project.
Результат выполнения можно увидеть в поле Output
6) Отладка
Отладка и доработка кода для устранения ошибок и предотвращения ошибок при неправильном использовании. Возможно указать точки остановки(breakpoint) в коде проекта для удобства отладки.
7) Комментирование кода
Комментарии в коде приложения будут являтся основой документации. Документация генерируется утилитой javadoc по имеющимся комментариям.

Структура справочной системы Java. Утилита javadoc.
В стандартной библиотеке существует огромное количество классов и методов, запомнить которые невозможно. Поэтому для нахождения информации о конкретном методе или классе необходимо пользоваться оперативной документацией интерфейса API. Документация интерфейса API является составной частью набора инструментальных средств Java SDK и создана в HTML формате. Для каждой новой версии JDK имеется собственная документация.
Открыть документацию по интерфейсам классам или методам языка можно через файл docs/api/index.html. Окно документации разделено на три фрейма. В маленьком фрейме в правом углу приведены все доступные пакеты. Все пакеты можно увидеть также и в основном окне, щелкнув мышью на ссылке Overwiev в верхней строке основного окна. В правом нижнем фрейме перечислены все классы. Если щелкнуть кнопкой мыши на конкретном имени класса, то будет показана соответствующая документация по этому классу в основном окне.

Javadoc генератор документации в HTML-формате из комментариев исходного кода на Java от Sun Microsystems. Javadoc - стандарт для документирования классов Java. Большинство cред разработки программного обеспечения автоматически генерируют HTML-документацию, используя Javadoc.

Javadoc берет файл Java программы и выводить несколько html файлов, в каждом из которых находится описание отдельного класса. Также выводит дерево иерархий и индекс.

Сущ два типа комментариев // и /**/. И документальный комментарий /***/ . Такие комментарии с помощью утилиты javadoc извлечь и поместить в html файл.
Тег @author - документирует автора класса. @author description. Description – имя того кто написал класс.
Тег @deprecated – определяет что класс не рекомендуется к применении. @deprecated description. Используется для переменных методов и классов.
Тег @exeption – описывает исключения для методов. @exeption exeption-name explanation. Explanation – строка описания исключения.
Тег {@link} обеспечивает встроенную гиперссылку.
Тег @param документирует параметры метода.
Тег @return описывает возвращаемое значение метода.
Тег @version определяет версию класса. @version info
После /** первая строка становится главным описанием класса, метода и т.д., каждый @ тег начинается с новой строки или следует за знаком *.


Основы теоретического и практического моделирования
1. Основные понятия теории множеств, множество, подмножество, операции над множествами и их свойства.
    Теория множеств составляет основу построения всей современной математики. Сама она базируется на двух очень простых понятиях: на понятии множества и понятии элемента. Под множеством принято понимать любую совокупность объектов, которые по какой-либо причине необходимо сгруппировать вместе. Отдельные объекты, входящие в состав множества называются его элементами. Множество A и его элемент a находятся в отношении принадлежности: a
· A. Эта запись расшифровывается так: элемент a принадлежит множеству A, а множество A содержит в себе элемент a. Перевернутая запись A
· a означает то же самое. 
    Выделим из множества A какую-нибудь часть его элементов. Эту выделенную часть можно трактовать как самостоятельное множество B. Тот факт, что B является частью A, обозначают так: B
· A. При этом говорят, что B есть подмножество множества A. Надо четко различать две записи   
 
a
· A
 
B
· A

Знак включения
· связывает два множества, а знак принадлежности
· связывает множество с его элементом. 
    Составляя множество B, мы могли включить в него все элементы из A. Тогда получится B = A. Но даже в этом крайнем случае B можно трактовать как часть A. То есть B
· A не исключает возможности совпадения B = A. Желая обозначить подмножество B, не совпадающее с A, будем писать [ Cкачайте файл, чтобы посмотреть картинку ]


    Другой крайний случай B
· A возникает, когда B не содержит ни одного элемента. Такое множество называют пустым множеством и обозначают специальным значком B
· A. Пустое множество можно рассматривать как подмножество для любого множества A, т. е.
·
·
· A. 
    Пусть A и B - два произвольных множества. Некоторые из элементов этих двух множеств могут быть общими: c
· A и c
· B. Из таких элементов формируется отдельное множество C, которое называют пересечением множеств A и B. Его обозначают так: C = A
· B. Если A
· B [ Cкачайте файл, чтобы посмотреть картинку ]
·, то говорят, что множества A и B пересекаются. Если же, наоборот, A
· B =
·, то говорят, что эти множества не пересекаются. 
    Пусть вновь A и B - два произвольных множества. Соберем в одно множество C все элементы из A и B. Полученное множество в этом случае называют объединением множеств A и B. Его обозначают так: C = A
· B.      Элементы, составляющие множество A
· B, разбиваются на три группы (на три подмножества). Это   
элементы, принадлежащие множеству A и множеству B одновременно; 
элементы, принадлежащие множеству A, но не принадлежащие множеству B; 
элементы, принадлежащие множеству B, но не принадлежащие множеству A. 
Первая группа элементов составляет пересечение A
· B. Вторая группа элементов составляет множество, которое называют разностью множеств A и B. Его обозначают A \ B. Очевидно, что третья группа элементов, составляет множество, которое является разностью B \ A. Множества A
· B, A \ B и B \ A не пересекаются друг с другом. При этом их объединение совпадает с объединением A и B: A
· B = (A
· B)
· (A \ B)
· (B \ A).

Два множества А и В называются  равными ( А = В ), если они состоят из одних и тех же элементов, то есть каждый элемент множества  А  является элементом множества  В  и наоборот, каждый элемент множества  В  является элементом множества  А .
 
Говорят, что множество А содержится в множестве В ( рис.1 ) или  множество А  является подмножеством множества  В ( в этом случае пишут А [ Cкачайте файл, чтобы посмотреть картинку ]В ), если каждый элемент множества  А одновременно является элементом множества  В . Эта зависимость между множествами называется  включением. Для любого множества  А имеют место включения:  [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]А  и  А [ Cкачайте файл, чтобы посмотреть картинку ] А .
[ Cкачайте файл, чтобы посмотреть картинку ]
Сумма ( объединение ) множеств  А и В ( пишется  А [ Cкачайте файл, чтобы посмотреть картинку ]В ) есть множество элементов, каждый из которых принадлежит либо А , либо В. Таким образом,  е [ Cкачайте файл, чтобы посмотреть картинку ]А [ Cкачайте файл, чтобы посмотреть картинку ]В  тогда и только тогда, когда либо  е [ Cкачайте файл, чтобы посмотреть картинку ]А ,  либо  е [ Cкачайте файл, чтобы посмотреть картинку ]В.
Произведение ( пересечение ) множеств  А и В ( пишется  А [ Cкачайте файл, чтобы посмотреть картинку ]В , рис.2 ) есть множество элементов, каждый из которых принадлежит и А , и В . Таким образом,  е [ Cкачайте файл, чтобы посмотреть картинку ]А [ Cкачайте файл, чтобы посмотреть картинку ]В  тогда и только тогда, когда   е [ Cкачайте файл, чтобы посмотреть картинку ]А  и  е [ Cкачайте файл, чтобы посмотреть картинку ]В .
[ Cкачайте файл, чтобы посмотреть картинку ]
Разность множеств А и В ( пишется  А – В , рис.3 ) есть множество элементов, которые принадлежат множеству А , но не принадлежат множеству В. Это множество называется также дополнением множества В относительно множества А.
[ Cкачайте файл, чтобы посмотреть картинку ]
Симметричная разность множеств А и В ( пишется  А \ В  ) есть множество:
 
А \ В  = ( А – В ) [ Cкачайте файл, чтобы посмотреть картинку ]( В – А ).

Отношение эквивалентности и разбиение на классы.
    Пусть M - некоторое множество. Рассмотрим упорядоченные пары элементов (a,b), где a
· M и b
· M. Упорядоченность означает, что a - первый элемент в паре, а b - второй элемент. При этом пара (b,a) считается отличающейся от пары (a,b). Множество всевозможных упорядоченных пар элементов из M называется декартовым квадратом множества M и обозначается M x M. 
    Пусть некоторые из пар в множестве M x M как-то выделены. Тогда выделенные пары составят некоторое подмножество R
· M x M. Если такое подмножество задано, то будем говорить, что на множестве M задано бинарное отношение R. Действительно, выделенность пары (a,b)
· R может служить указанием на то, что между элементами a и b имеется определенная связь, которая отсутствует для невыделенных пар. Выделенность пары (a,b) можно обозначать специальным символом, например: a
·R b. Запись a
·R b читается так: элемент a находится с элементом b в отношении R. 
    Хорошо известными примерами бинарных отношений являются отношение равенства и отношение порядка между числами. Они записываются так: a = b, a < b или b > a. 
 Определение 2.1. Бинарное отношение R на множестве M называется отношением эквивалентности и обозначается символом ~R, если выполнены следующие условия:   
рефлексивность: a ~R a для любого a
· M; 
симметричность: из a ~R b вытекает b ~R a; 
транзитивность: из a ~R b и b ~R c вытекает a ~R c. 
Если по контексту ясно, о каком отношении эквивалентности идет речь, то буква R в записи a ~R b опускается и отношение R между a и b записывается так: a ~ b.


 Определение 2.2. Пусть на множестве M задано отношение эквивалентности R. Классом эквивалентности элемента a из M называется множество всех элементов x из M, которые эквивалентны элементу a, то есть ClR(a) = {x
· M: x ~R a}. 
 Теорема 2.1. Если a ~R b, то ClR(a)= ClR(b). Если же элементы a и b не эквивалентны, то их классы эквивалентности не пересекаются: ClR(a)
· ClR(b) =
·. 
    Иногда классы эквивалентности, заданные отношением R, рассматривают как элементы некоторого множества. Множество, составленное из всех классов эквивалентности, называют фактормножеством и обозначают M / R. Переход от множества M к фактормножеству M / R называют факторизацией. 
    Теорема 2.1 показывает, что если два класса эквивалентности различны, то они не имеют общих элементов. При этом любой элемент a из M содержится в одном из классов эквивалентности. Поэтому всякое отношение эквивалентности R определяет разбиение множества M в объединение не пересекающихся друг с другом классов эквивалентности:   
M = 

·
Q

 
Q
· M / R
 

 

 Упражнение 2.1. Пользуясь свойствами рефлексивности, симметричности и транзитивности отношения эквивалентности R, докажите теорему 2.1. 


Упорядоченные множества.
 Определение 3.1. Бинарное отношение P на множестве M называется отношением порядка и обозначается символом нерефлексивность: из a

· b; 
несимметричность: условие a

транзитивность: из a



    Запись a

    Если выполнено одно из условий a < b или b < a, то говорят, что элементы a и b сравнимы. Множество M с отношением порядка P называется линейно упорядоченным, если любые два элемента в нем сравнимы. Если же в M допускается существование несравнимых пар элементов, то M называется частично упорядоченным множеством. 

Тернарные отношения.
    Наряду с бинарными отношениями иногда приходится рассматривать и тройные, или тернарные, отношения. Простой пример дает операция сложения чисел. Равенство a + b = c означает, что упорядоченная тройка чисел (a,b,c) выделена по сравнению с другими тройками, для которых такое равенство не выполнено. Эту ситуацию легко формализовать.  
 Определение 4.1. Скажем, что на множестве M задано тернарное отношение R, если задано некоторое подмножество R в декартовом произведении M x M x M. 
Свойства операций над множествами:
[ Cкачайте файл, чтобы посмотреть картинку ]
П р и м е р ы.  1. Множество детей является подмножеством всего населения.
 
                         2. Пересечением множества целых чисел с множеством поло-
                             жительных чисел является множество натуральных чисел.
 
 3. Объединением множества рациональных чисел с множест-
                             вом иррациональных чисел является множество действи-
                             тельных чисел.
 
                         4. Нуль является дополнением множества натуральных чисел
                             относительно множества неотрицательных целых чисел.

2. Понятие отношения, виды отношений, свойства отношений, отображения, виды отображений, операции над отображениями.
    Основное множество, которое изучается в геометрии Евклида, - это пространство, его элементы называются точками. Геометрическое пространство евклидовой геометрии принято обозначать буквой E. Отдельные точки пространства по традиции обозначают заглавными буквами латинского алфавита. Кроме всего пространства и отдельных точек здесь рассматриваются различные геометрические фигуры: плоскости, прямые, отрезки, лучи, многоугольники, многогранники и другие. Все они являются некоторыми подмножествами пространства и состоят из точек.


    Отношения принадлежности и включения, введенные значками
· и
·, в геометрии обозначаются различными словами, соответствующими их наглядному смыслу. Так, например, если точка A принадлежит прямой m, то говорят, что точка A лежит на прямой m, а прямая m проходит через точку A. Точно так же, если прямая m содержится в плоскости
·, то говорят, что прямая m лежит на плоскости
·, а плоскость
· проходит через прямую m. Обычно подобная вольность речи не вызывает трудностей и делает изложение более живым и наглядным. 

Аксиоматика Евклида.
    Геометрическое пространство E состоит из точек. Все точки этого пространства равноправны, ни одна из них ничем не выделена. Если взять отдельную точку, то она сама по себе никакими геометрическими свойствами не обладает. Свойства точек начинают проявляться при сопоставлении их с другими точками. Например, если взять три точки, то они могут лежать на одной прямой, а могут и не лежать. Треугольник, заданный этими точками может быть равносторонним, равнобедренным, прямоугольным, или каким-нибудь еще. Формируя определенную геометрическую фигуру, точки пространства E вступают в определенные отношения друг с другом. Основные свойства таких отношений собраны в аксиомах Евклида. Общее число аксиом Евклида в современной редакции равно двадцати. Они разбиваются на пять групп аксиом:  
аксиомы связи (8 аксиом A1--A8); 
аксиомы порядка (4 аксиомы A9--A12); 
аксиомы конгруэнтности (5 аксиом A13--A17); 
аксиомы непрерывности (2 аксиомы A18 и A19); 
аксиомы параллельности (1 аксиома A20). 
Множества и отображения.
    Пусть X и Y - два множества. Отображением множества X в множество Y называется правило, которое каждому элементу x из множества X ставит в соответствие некоторый элемент y из множества Y. Отображения, так же, как и множества, обозначают различными буквами (чаще всего строчными буквами латинского алфавита). Запись f: X ---> Y означает, что задано отображение f из множества X в множества Y. Если x
· X, то запись f(x) означает результат применения правила f к элементу x. Элемент y = f(x) из множества Y называют образом элемента x из X. А элемент x
· X, такой, что y = f(x), называют прообразом элемента y из Y. 
    Для того, чтобы правило f можно было трактовать как отображение f: X ---> Y, оно должно быть однозначным в том смысле, что применяя его всякий раз к одному и тому же элементу x
· X, мы должны получать один и тот же результат. Иными словами, из x1 = x2 вытекает f(x1) = f(x2). 
    Простейшим примером отображения служит тождественное отображение из множества X в то же самое множество X. Оно обозначается так: idX: X ---> X. Каждому элементу x из множества X тождественное отображение ставит в соответствие его самого, то есть idX(x) = x для всех x
· X. 
    Пусть f: X ---> Y и g: Y ---> Z - два отображения. В этом случае мы можем определить третье отображение. Зададим правило h, применение которого к элементу x из X состоит в том, что мы применяем к x равило f, затем к результату f(x) применяем второе правило g, получая в итоге g(f(x)). То есть h(x) = g(f(x)). Полученное отображение h: X ---> Z называют композицией отображений g и f и обозначают h = g ° f. Тогда   
(7.1)
 
g ° f(x) = g(f(x)).

для всех x из X. Таким образом, соотношение (7.1) есть краткая формулировка определения композиции g ° f. Композицию можно понимать как аналог умножения, где в качестве сомножителей выступают отображения.


 Теорема 7.1. Если заданы три отображения f: Z ---> W, g: Y ---> Z и h: X ---> Y, то имеет место соотношение   
(7.2)
 
(f ° g) ° h=f ° (g ° h).

Оно выражает свойство ассоциативности для композиции. 
Док-во В левой и в правой частях (7.2) стоят отображения, то есть (7.2) - это равенство отображений. Два отображения в данном случае - это два правила, которые элементам из X ставят в соответствие элементы их W. Их формулировки могут быть совсем не похожими друг на друга, однако, они считаются равными, если результаты их применения к элементу x совпадают для всех x
· X. Поэтому доказательство 7.2 сводится к проверке равенства   
(7.3)
 
(f ° g) ° h(x)=f ° (g ° h)(x).

для всех x из X. Сделаем это прямым вычислением на основе формулы (7.1), определяющей композицию двух отображений:   
(f ° g) ° h(x) = f ° g(h(x)) = f(g(h(x))),

f ° (g ° h)(x) = f(g ° h(x)) = f(g(h(x))).

В результате этих несложных вычислений левая и правая части (7.3) свелись к одному и тому же выражению f(g(h(x))). Равенство (7.3), а значит и равенство (7.2), доказаны.  
 Определение 7.1. Пусть f: X ---> Y - отображение множества X в множество Y и пусть A - некоторое непустое подмножество в X. Тогда множество B
· Y, состоящее из образов всех элементов множества A, называют образом множества A и записывают B = f(A).


    Согласно этому определению образ непустого множества не пуст. Для пустого множества полагают f(
·) =
·. Образ самого множества X иногда обозначают через Im f, то есть Im f = f(X). Множество X называют областью определения отображения f, множество Y называют областью значений, а множество Im f называют образом отображения f. Область значений и образ отображения f часто не совпадают.  
 Определение 7.2. Пусть f: X ---> Y - отображение множества X в множество Y и пусть y - некоторый элемент множества Y. Множество, состоящее из всех тех элементов множества X, которые отображаются в элемент y, называют полным прообразом элемента y. Его обозначают через f -1(y). 
 Определение 7.3. Пусть f: X ---> Y - отображение множества X в множество Y и пусть B - некоторое непустое подмножество в множестве Y. Множество, состоящее из всех тех элементов x из X, для которых f(x)
· B, называют полным прообразом множества B. Его обозначают через f -1(B). 
    Согласно определению 7.3 полный прообраз множества Y совпадает с X, то есть f -1(Y)=X. Для пустого множества полагают f -1(
·) =
·. Однако, полный прообраз непустого множества B тоже может оказаться пустым.  
 Определение 7.4. Отображение f: X ---> Y называется инъективным, если для любого y
· Y полный прообраз f -1(y) содержит не более одного элемента. 
 Определение 7.5. Отображение f: X ---> Y называется сюръективным, если для любого y
· Y полный прообраз f -1(y) не пуст. 
 Определение 7.6. Отображение f: X ---> Y называется биективным, или взаимно однозначным, если оно является инъективным и сюръективным одновременно.


 Теорема 7.2. Отображение f: X ---> Y инъективно тогда и только тогда, когда из x1 [ Cкачайте файл, чтобы посмотреть картинку ] x2 вытекает f(x1) [ Cкачайте файл, чтобы посмотреть картинку ] f(x2). 
 Теорема 7.3. Отображение f: X ---> Y сюръективно тогда и только тогда, когда Im f = Y. 
 Упражнение 7.1. Докажите теоремы 7.2 и 7.3, которые часто используются для проверки инъективности и сюръективности отображений вместо исходных определений 7.4 и 7.5. 
    Пусть отображение f: X ---> Y биективно. Тогда для всякого элемента y
· Y полный прообраз f -1(y) не пуст, но содержит не более одного элемента. Значит, он содержит ровно один элемент. Это обстоятельство позволяет задать отображение h: Y ---> X, которое каждому элементу y из Y ставит в соответствие тот самый единственный элемент из множества f -1(y). Такое отображение h называется обратным отображением для f. Его обозначают h = f -1.  
 Теорема 7.4. Отображение h: Y ---> X, обратное биективному отображению f: X ---> Y, является биективным, причем из h = f -1 вытекает h -1 = f. 
 Теорема 7.5. Отображение f: X ---> Y и обратное для него отображение f -1: Y ---> X связаны соотношениями   
(7.4)
 
f ° f -1=idY,
 
f -1 ° f=idX.

 Теорема 7.6. Композиция двух инъективных отображений есть инъективное отображение. 
 Теорема 7.7. Композиция двух сюръективных отображений есть сюръективное отображение. 
 Теорема 7.8. Композиция двух биективных отображений есть биективное отображение. 
 Упражнение 7.2. Докажите теоремы 7.4, 7.5, 7.6, 7.7 и 7.8.


¬ 8. Сужение и продолжение отображений.
    Пусть X' - некоторое подмножество в множестве X и пусть заданы два отображения f: X ---> Y и h: X' ---> Y'. Если h(x) = f(x) для всех x
· X', то говорят, что h есть сужение отображения f на подмножество X'. Отображение f, напротив, называется расширением или продолжением отображения h с множества X' на множество X. 
    Если задано отображение f: X ---> Y, то очень легко построить его сужение на произвольное подмножество X'
· X. Достаточно просто запретить применение f к элементам, не принадлежащим X', и мы получим отображение f: X' ---> Y, являющееся сужением исходного. 
    Продолжить отображение f: X' ---> Y' с множества X' на большее множество X обычно бывает сложнее. Для этого надо определить значения f(x) для элементов x из X, не принадлежащих множеству X', что можно сделать многими способами. Однако, обычно в постановке задачи отображение f: X' ---> Y' обладает некоторыми свойствами, которые требуется сохранить в результате его продолжения на множество X. Это делает задачу о продолжении содержательной и резко сужает элемент произвола в выборе возможных продолжений.


3. Основные понятия теории графов, граф, подграф, сеть, дерево, связность. Операции над графами, их свойства.

Граф – система, которая интуитивно может быть рассмотрена как множество кружков и множество соединяющих их линий (геометрический способ задания графа – см. рисунок 1). Кружки называются вершинами графа, линии со стрелками – дугами, без
стрелок – ребрами. Граф, в котором направление линий не выделяется (все линии являются ребрами), называется неориентированным; граф, в котором направление линий принципиально (линии являются дугами) называется ориентированным.
Теория графов может рассматриваться как раздел дискретной математики (точнее – теории множеств), и формальное определение графа таково: задано конечное множество X, состоящее из n элементов (X = {1, 2, ..., n}), называемых вершинами графа, и
подмножество V декартова произведения X . X, то есть V I X2,
называемое множеством дуг, тогда ориентированным графом G
называется совокупность (X, V) (неориентированным графом называется совокупность множества X и множества неупорядоченных пар элементов, каждый из которых принадлежит множеству X). Дугу между вершинами i и j, i, j I X, будем обозначать (i, j). Число дуг графа будем обозначать m (V = (v1, v2, ..., vт)).

Язык графов оказывается удобным для описания многих физических, технических, экономических, биологических, социальных и других систем.
Приведем ряд примеров приложений теории графов.
1. «Транспортные» задачи, в которых вершинами графа являются пункты, а ребрами – дороги (автомобильные, железные и др.) и/или другие транспортные (например, авиационные) маршруты.
Другой пример – сети снабжения (энергоснабжения, газоснабжения, снабжения товарами и т.д.), в которых вершинами являются пункты производства и потребления, а ребрами – возможные маршруты перемещения (линии электропередач, газопроводы,
дороги и т.д.). Соответствующий класс задач оптимизации потоков грузов, размещения пунктов производства и потребления и т.д., иногда называется задачами обеспечения или задачами о размещении. Их подклассом являются задачи о грузоперевозках [7, 12].
2. «Технологические задачи», в которых вершины отражают производственные элементы (заводы, цеха, станки и т.д.), а дуги –потоки сырья, материалов и продукции между ними, заключаются в определении оптимальной загрузки производственных элементов
и обеспечивающих эту загрузку потоков [7, 12].
3. Обменные схемы, являющиеся моделями таких явлений как бартер, взаимозачеты и т.д. Вершины графа при этом описывают участников обменной схемы (цепочки), а дуги – потоки материальных и финансовых ресурсов между ними. Задача заключается в
определении цепочки обменов, оптимальной с точки зрения, например, организатора обмена и согласованной с интересами участников цепочки и существующими ограничениями [6, 9, 17].
4. Управление проектами1. С точки зрения теории графов проект – совокупность операций и зависимостей между ними (сетевой график – см. ниже). Хрестоматийным примером является проект строительства некоторого объекта. Совокупность моделей и методов, использующих язык и результаты теории графов и ориентированных на решение задач управления проектами, получила название календарно-сетевого планирования и управления (КСПУ) [7, 10]. В рамках КСПУ решаются задачи определения последовательности выполнения операций и распределения ресурсов между ними, оптимальных с точки зрения тех или иных критериев (времени выполнения проекта, затрат, риска и др.).
5. Модели коллективов и групп, используемые в социологии, основываются на представлении людей или их групп в виде вершин, а отношений между ними (например, отношений знакомства, доверия, симпатии и т.д.) – в виде ребер или дуг. В рамках подобного описания решаются задачи исследования структуры социальных групп, их сравнения, определения агрегированных показателей, отражающих степень напряженности, согласованности взаимодействия, и др.
6. Модели организационных структур, в которых вершинами являются элементы организационной системы, а ребрами или дугами – связи (информационные, управляющие, технологические и др.) между ними [13, 18].
Завершив краткое описание прикладных областей, вернемся к введению основных понятий.
Подграфом называется часть графа, образованная подмножеством вершин вместе со всеми ребрами (дугами), соединяющими вершины из этого множества. Если из графа удалить часть ребер (дуг), то получим частичный граф. Две вершины называются смежными, если они соединены ребром (дугой). Смежные вершины называются граничными вершинами соответствующего ребра (дуги), а это ребро (дуга) – инцидентным соответствующим вершинам.
Путем называется последовательность дуг (в ориентированном графе), такая, что конец одной дуги является началом другой дуги. Простой путь – путь, в котором ни одна дуга не встречается дважды. Элементарный путь – путь, в котором ни одна вершина
не встречается дважды. Контур – путь, у которого конечная вершина совпадает с начальной вершиной. Длиной пути (контура) называется число дуг пути (или сумма длин его дуг, если последние заданы).
Граф, для которого из (i, j) I V следует (j, i) I V называется
симметрическим. Если из (i, j) I V следует, что (j, i)
·
·V, то соответствующий граф называется антисимметрическим.
Цепью называется множество ребер (в неориентированном графе), которые можно расположить так, что конец (в этом расположении) одного ребра является началом другого. Другое определение: цепь – последовательность смежных вершин. Замкнутая
цепь называется циклом. По аналогии с простым и элементарным путем, можно определить соответственно простые и элементарные цепь и цикл. Любой элементарный цикл является простым, обратное утверждение в общем случае неверно. Элементарная цепь (цикл, путь, контур), проходящая через все вершины графа называется гамильтоновой цепью (соответственно – циклом, путем, контуром). Простая цепь (цикл, путь, контур), содержащая все ребра (дуги) графа называется эйлеровой цепью (соответственно – циклом, путем, контуром).
Если любые две вершины графа можно соединить цепью, то граф называется связным. Если граф не является связным, то его можно разбить на связные подграфы, называемые компонентами.
Связностью графа называется минимальное число ребер, после удаления которых граф становится несвязным. Для ориентированных графов, если любые две вершины графа можно соединить путем, то граф называется сильно связным. Известно [7], что: связность графа не может быть больше, чем [2m / n], где [x] – целая часть числа x; существуют графы с n вершинами и m ребрами, имеющие связность [2m / n]; в сильно связном графе через любые две вершины проходит контур.
Связный граф, в котором существует эйлеров цикл, называется эйлеровым графом.
В неориентированном графе степенью вершины i называется число di инцидентных ей ребер. Очевидно, di . n – 1, i I X. Граф, степени всех вершин которого равны n – 1, называется полным. Граф, все степени вершин которого равны, называется однородным.
Вершина, для которой не существует инцидентных ей ребер (di = 0) называется изолированной. Вершина, для которой существует только одно инцидентное ей ребро (di = 1) называется висячей.
Известно [7], что: 13 EMBED Equation.DSMT4 1415 (данное выражение называется «леммой о рукопожатиях» – поскольку в каждом рукопожатии участвуют две руки, то при любом числе рукопожатий общее число пожатых рук четно (при условии, что каждая рука учитывается столько раз, в скольких рукопожатиях она участвовала)); в любом графе число вершин нечетной степени четно.
Связный граф является эйлеровым тогда и только тогда, когда степени всех его вершин четны (теорема Эйлера). Обозначим nk –число вершин, имеющих степень k, k = 0, 1, 2,... . Известно [7, 15],
что: 13 EMBED Equation.DSMT4 1415
Для ориентированных графов для каждой вершины можно ввести два числа – полустепень исхода 13 EMBED Equation.DSMT4 1415 (число выходящих из нее вершин) и полустепень захода 13 EMBED Equation.DSMT4 1415 (число входящих в нее вершин). В дальнейшем, если не оговорено особо, будем рассматривать графы без петель, то есть без дуг, у которых начальная и конечная вершины совпадают. Известно [7, 15], что:
13 EMBED Equation.DSMT4 1415; для эйлерова графа имеет место: 13 EMBED Equation.DSMT4 1415
13 EMBED Equation.DSMT4 1415; эйлеров граф является объединением контуров, попарно не имеющих общих ребер.

Определим матрицу смежности графа как квадратную матрицу n x n, элемент aij которой равен единице, если 13 EMBED Equation.DSMT4 1415, и нулю, если 13 EMBED Equation.DSMT4 1415, 13 EMBED Equation.DSMT4 1415. Для неориентированного графа матрица смежности всегда симметрическая. Определим матрицу инциденций для ребер графа как прямоугольную матрицу n x m, элемент rij которой равен единице, если
вершина i инцидентна ребру j, и нулю в противном случае, 13 EMBED Equation.DSMT4 1415, 13 EMBED Equation.DSMT4 1415. Аналогично определяется матрица инциденций для дуг графа – как прямоугольная матрицу m x n, элемент rij которой равен плюс единице, если дуга Uj исходит из вершины i, минус
единице, если дуга Uj заходит в вершину i, и нулю в остальных случаях, 13 EMBED Equation.DSMT4 1415, 13 EMBED Equation.DSMT4 1415
Деревом называется связный граф без простых циклов, имеющий не менее двух вершин (дерево можно также понимать как связный граф, не содержащий связного частичного графа, состоящего из всех его вершин). Для дерева m = n – 1, а число висячих
вершин равно 13 EMBED Equation.DSMT4 1415( 2)
Легко показать, что в дереве любые две вершины связаны единственной цепью.
Прадеревом называется ориентированное дерево, у которого одна из вершин, называемая корнем, не имеет заходящих дуг, а степени захода остальных вершин равны единице.
Плоским (планарным) называется граф, который можно изобразить на плоскости так, что различным вершинам соответствуют различные кружки и никакие два ребра не имеют общих точек, отличных от их границ (не пересекаются). Для плоского графа
существует понятие грани – части плоскости, ограниченной ребрами и не содержащей внутри себя ни вершин, ни ребер. Для простоты определения грани в дальнейшем в основном будем рассматривать графы без висячих вершин. Например, дерево имеет всего одну внешнюю грань – всю плоскость. Степенью грани называется
число ее граничных ребер (висячие ребра считаются дважды).
Обозначим p – число граней плоского графа, pk – число его граней, имеющих степень k, qi – степень i-ой грани. Можно показать, что
имеет место 13 EMBED Equation.DSMT4 1415, 13 EMBED Equation.DSMT4 1415, 13 EMBED Equation.DSMT4 1415 - формула Эйлера [7, 15]. Данные выражения являются необходимыми условиями существования плоских графов с заданными наборами чисел {ni} и {pi}.
Любому связному плоскому графу G можно поставить в соответствие двойственный ему связный плоский граф G*, определяемый следующим образом: каждой грани графа G соответствует вершина графа G*, каждому ребру V графа G, являющемуся граничным для граней z1 и z2, соответствует ребро V* графа G*, соединяющее соответствующие граням z1 и z2 вершины. Понятие двойственного графа тесно связано с понятием двойственности в
линейном программировании [7].

4. Нахождение минимального и максимального пути, задача о максимальном потоке.

Задача о кратчайшем пути. Пусть задана сеть из n + 1 вер- шины, то есть ориентированный граф, в котором выделены две вершины – вход (нулевая вершина) и выход (вершина с номером n). Для каждой дуги заданы числа, называемые длинами дуг. Длиной пути (контура) называется сумма длин входящих в него дуг (если длины дуг не заданы, то длина пути (контура) определяется как число входящих в него дуг). Задача заключается в поиске кратчайшего пути (пути минимальной длины) от входа до выхода
сети1. Известно [7, 15], что для существования кратчайшего пути не-
обходимо и достаточно отсутствия в сети контуров отрицательной
длины.
Предположим, что в сети нет контуров. Тогда всегда можно пронумеровать вершины таким образом, что для любой дуги (i, j) имеет место j > i. Такая нумерация называется правильной. Легко показать, что в сети без контуров всегда существует правильная
нумерация.
1 В дальнейшем будем предполагать, что в любую вершину сети можно попасть
из входа, и из любой вершины можно попасть в выход (вершины, не удовлетворяющие этому требованию, можно удалить).
Обозначим lij – длину дуги (i; j). Кратчайший путь в сети, имеющей правильную нумерацию, определяется следующим алгоритмом.
Алгоритм 1.
Шаг 0: Помечаем нулевую вершину индексом l0 = 0;
Шаг k: помечаем вершину k индексом 13 EMBED Equation.DSMT4 1415
Индекс выхода 13 EMBED Equation.DSMT4 1415 будет равен длине кратчайшего пути1. На рисунке 2 приведен пример применения алгоритма 1 для определения кратчайшего пути (числа у дуг равны длинам дуг, индексы вершин помещены в квадратные скобки, кратчайший путь выделен
двойными линиями). Когда индексы (называемые в некоторых задачах потенциалами вершин) установятся, кратчайший путь определяется методом обратного хода от выхода к входу, то есть кратчайшим является путь 13 EMBED Equation.DSMT4 1415, такой, что 13 EMBED Equation.DSMT4 1415и т.д.

Следующий алгоритм дает возможность определять кратчайший путь в общем случае (то есть при произвольной нумерации вершин).
Алгоритм 2 (алгоритм Форда).
1 Алгоритм 1 для задач динамического программирования отражает принцип оптимальности Беллмана: если ищется кратчайший путь между двумя точками, то длина пути между любыми двумя точками кратчайшего пути также должна быть минимальна.
Шаг 0: Помечаем нулевую вершину индексом 13 EMBED Equation.DSMT4 1415, все остальные вершины индексами 13 EMBED Equation.DSMT4 1415
Шаг k: Рассматриваем все дуги. Для дуги (i; j), если 13 EMBED Equation.DSMT4 1415, то вычисляем новое значение 13 EMBED Equation.DSMT4 1415
Индексы устанавливаются за конечное число шагов. Обозначим 13 EMBED Equation.DSMT4 1415 – установившиеся значения индексов, которые обладают следующим свойством: величина 13 EMBED Equation.DSMT4 1415равна длине кратчайшего пути из нулевой вершины в вершину i. Кратчайший путь из вер-
шины 0 в вершину i определяется методом обратного хода. Если длины всех дуг неотрицательны, то для поиска кратчайшего пути применим следующий алгоритм.
Алгоритм 3.
Шаг 0: Помечаем нулевую вершину индексом 13 EMBED Equation.DSMT4 1415;
Шаг k: Пусть уже помечено некоторое множество вершин. Обозначим Q – множество непомеченных вершин, смежных с помеченными. Для каждой вершины 13 EMBED Equation.DSMT4 1415вычисляем величину 13 EMBED Equation.DSMT4 1415, где минимум берется по всем помеченным вершинам i, смежным с вершиной k. Помечаем вершину k, для которой величина xk минимальна, индексом 13 EMBED Equation.DSMT4 1415. Подобную процедуру повторяем до тех пор, пока не будет помечена вершина n. Длина кратчайшего пути равна 13 EMBED Equation.DSMT4 1415, а сам кратчайший путь определяется так, как это было описано выше. Запишем задачу о кратчайшем пути как задачу линейного программирования (ЛП). Пусть xij = 0, если дуга (i; j) входит в путь1 m,
xij = 0, если дуга (i; j) не входит в путь 13 EMBED Equation.DSMT4 1415, 13 EMBED Equation.DSMT4 1415.
Задачу о минимальном пути можно записать в виде2:
13 EMBED Equation.DSMT4 1415
1 Будем считать, что имеются две дуги между каждой парой вершин, так как, если их нет в исходном графе, то, положив их длину равной бесконечности, мы заведомо исключим их из решения.
2 Ограничение (2) отражает требование того, что в искомом пути из входа выходит одна дуга и в выход заходит одна дуга. Ограничение (3) обеспечивает равенство числа заходящих и выходящих в любую промежуточную вершину дуг.
Аналогично задаче о кратчайшем пути формулируется и решается задача о максимальном (длиннейшем) пути – достаточно изменить знаки дуг на противоположные и решить задачу о кратчайшем пути. Для существования решения задачи о максимальном пути необходимо и достаточно отсутствия контуров положительной длины.
Задачи о максимальном потоке
Рассмотрим сеть из (n + 1) вершины. Пусть каждой дуге поставлено в соответствие число cij, называемое пропускной способностью дуги (i; j).
Потоком x в сети называется совокупность чисел 13 EMBED Equation.DSMT4 1415, где xij –поток по дуге (i; j), удовлетворяющих условиям 13 EMBED Equation.DSMT4 1415
13 EMBED Equation.DSMT4 1415
13 EMBED Equation.DSMT4 1415, 13 EMBED Equation.DSMT4 1415Величиной потока x называется
13 EMBED Equation.DSMT4 1415
Задача о максимальном потоке заключается в определении потока максимальной величины1.
Разрезом W в сети называется любое множество вершин, обязательно содержащее выход и не содержащее вход. Пропускной способностью C(W) разреза W называется сумма пропускных способностей дуг, заходящих в разрез.
Известно [5, 7, 19], что величина любого потока не превышает пропускной способности любого разреза (теорема Форда-Фалкерсона).
Следовательно, если удастся найти поток, величина которого равна пропускной способности некоторого разреза, то этот поток максимален, а разрез минимален.
Алгоритм 7 (алгоритм Форда-Фалкерсона). Применение алгоритма проиллюстрируем примером сети, приведенной на рисунке 3, в которой пропускные способности всех дуг равны единице.
Шаг 0. Берем произвольный поток (например, поток x01 = x12 = x25 = 1). Помечаем начальную вершину индексом «0».
Обозначим Z – множество помеченных вершин.
Общий шаг. Первое действие. Помечаем вершину j индексом +i, если, во-первых, существует дуга (i; j), и, во-вторых, 13 EMBED Equation.DSMT4 1415Если в результате этого типа пометок мы пометили выход, то поток можно увеличить хотя бы на единицу (если cij – целые числа). Двигаясь обратно, можно найти путь, поток по которому можно увеличить. Однако, как видно из примера, этого недостаточно для нахождения максимального потока.
1 Наиболее распространенной содержательной интерпретацией является перевозка грузов из начальной вершины в конечную по дугам графа, где пропускная способность дуги характеризует максимальное количество груза, которое по ней можно перевозить в единицу времени.

Второе действие. Помечаем вершину i индексом -j, если, во-первых, существует дуга (j; i), и, во-вторых, 13 EMBED Equation.DSMT4 1415 (легко видеть, что пометки первого типа увеличивают поток по дуге, а пометки второго типа – уменьшают).
Если в результате этого типа пометок мы пометили выход, то поток можно увеличить. Двигаясь обратно, можно найти цепь, в которой каждая вершина помечена номером предыдущей (знак пометки не важен).
Рассмотрим цепь 13 EMBED Equation.DSMT4 1415 = (0; 3; 2; 1; 4; 5), приведенную на рисунке 3. Полученные в результате второго действия потоки обозначены жирным шрифтом.
Критерий остановки алгоритма следующий [7, 8]: если, применяя пометки обоих типов, вершину n пометить не удалось, то полученный поток имеет максимальную величину.

5. Основные понятия логики высказываний, методы представления логических функций, логические операции, их свойства, конъюнктивные и дизъюнктивные нормальные формы.
Кроме обычной алгебры существует специальная, основы которой были заложены английским математиком XIX века Дж. Булем. Эта алгебра занимается так называемым исчислением высказываний.
Ее особенностью является применимость для описания работы так называемых дискретных устройств, к числу которых принадлежит целый класс устройств автоматики и вычислительной техники.
При этом сама алгебра выступает в качестве модели устройства. Это означает, что работа произвольного устройства указанного типа может быть лишь в каком-то отношении описана с помощью построений этой алгебры. Действительное реальное устройство физически работает не так, как это описывает алгебра логики. Однако применение положений этой теории позволяет сделать ряд полезных в практическом отношении обобщений.
Рассмотрим некоторую схему и представим ее в виде так называемого "черного" ящика.
[ Cкачайте файл, чтобы посмотреть картинку ]

Будем считать, что внутреннее содержимое ящика неизвестно.
X1,X2,X3 – входные сигналы, F – выходной сигнал.
Считаем также, что схема А – элементарная, т.е. нет другой схемы Б, меньшей, чем А, которая бы содержалась в А.
Построим абстрактное устройство из элементарных устройств, типа А, Б, В и т.д. Очевидно, более сложное устройство можно построить из простых путем:
последовательного соединения элементов;
параллельного соединения;
перестановки входов элементов.
[ Cкачайте файл, чтобы посмотреть картинку ]

Тогда роль Y1 для второго элемента Б будет играть:
Y1=FА(X1,X2,X3)
Y2=FБ(X1,X2)
F=F(Y1,Y2)=F(FА(X1,X2,X3),FБ(X1,X2))
Параллельное соединение элементов не меняет функции, поэтому, с точки зрения логики, этот тип соединения не используется. Физически иногда все же применяют параллельное соединение элементов, но в основном для того, чтобы, например, усилить сигнал.
В связи с этим, параллельное соединение элементов в алгебре логики не рассматривается.
Функция, которую выполняет элемент, вообще говоря, зависит от переменных, которые подаются на вход.
Поэтому перестановка аргументов влияет на характер функции.
[ Cкачайте файл, чтобы посмотреть картинку ]

F=F(FА(X1,X2,X3),FБ(X2,X3)) [ Cкачайте файл, чтобы посмотреть картинку ]
F(FБ(X2,X3),FА(X1,X2,X3))
Таким образом, произвольные, сколь угодно сложные в логическом отношении схемы, можно строить, используя два приема:
последовательное соединение элементов;
перестановка входов элементов.
Этим двум физическим приемам в алгебре логики соответствуют:
принцип суперпозиции (подстановка в функцию вместо ее аргументов других функций);
подстановка аргументов (изменение порядка записи аргументов функций или замена одних аргументов функции другими).
Итак, физическая задача построения и анализа работы сложного устройства заменяется математической задачей синтеза и анализа соответствующих функций алгебры логики.
Элементарные функции алгебры логики
Существует несколько синонимов по отношению к функциям алгебры логики:
функции алгебры логики (ФАЛ);
переключательные функции;
булевские функции;
двоичные функции.
По мере необходимости будем пользоваться всеми этими синонимами.
Рассмотрим некоторый набор аргументов:

и будем считать, что каждый из аргументов принимает только одно из двух возможных значений, независимо от других
Чему равно число различных наборов?
Xi = {0, 1}
Поставим каждому набору в соответствие некоторое двоичное число:
X1,X2,...........Xn
0, 0,...........,0 нулевой набор
0, 0,...........,1 первый набор
0, 0,..........1,0 второй набор
...................
1, 1,...........,1 (2n-1)-ый набор
Очевидно, что количество различных X1,X2,...........Xn n-разрядных чисел в позиционной двоичной системе есть 2n.
Допустим, что некоторая функция F(X1,X2,....Xn) задана на этих наборах и на каждом из них она принимает либо '0'-ое, либо '1'-ое значение.
Такую функцию называют функцией алгебры логики или переключательной функцией.
Чему равно число различных переключательных функций 'n' аргументов?
Т.к. функция на каждом наборе может принять значение '0' или '1', а всего различных наборов 2n, то общее число различных функций 'n' аргументов есть: 22n.
По сравнению с аналитической функцией непрерывного аргумента даже для одного аргумента существует множество различных функций.
Число аргументов
1
2
3
4
5
10

Число различных перекл. ф-ций
4
16
256
65536
~4*109
~10300

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

Таким образом, вначале необходимо изучить эти элементарные функции, чтобы на их основе строить более сложные.
ФАЛ одного аргумента
Чтобы задать ФАЛ, нужно задать ее значения на всех наборах аргументов.
Аргумент Х
значение
Наименование функции


0
1


F0(x)
0
0
константа '0'

F1(x)
0
1
переменная 'х'

F2(x)
1
0
инверсия 'х' (отрицание х)

F3(x)
1
1
константа '1'

Будем у функции ставить индекс, эквивалентный набору ее значений для соответствующих значений аргумента, начиная с 0,0,....,0,..... и т.д. в порядке возрастания.
Эти функции можно реализовать на 4-х элементах, каждый из которых имеет максимум один вход. Таким образом, принципом подстановки аргументов для построения более сложных функций нельзя воспользоваться.
Необходимо рассмотреть более сложные функции, т.е. ФАЛ 2х аргументов.
Дадим такие определения:
ФАЛ, принимающие одинаковые значения на всех наборах аргументов, называются равными.
ФАЛ существенно зависит от аргумента Хi, если
F(X1,X2,...,Хi-1,0,Xi+1,...,Xn) [ Cкачайте файл, чтобы посмотреть картинку ]
F(X1,X2,...,Хi-1,1,Xi+1,...,Xn)
В противном случае она зависит не существенно, а соответствующий аргумент наз. фиктивным.
Например:
Х1
Х2
Х3
F(X1,X2,Х3)

0
0
0
0

0
0
1
0

0
1
0
1

0
1
1
1

1
0
0
0

1
0
1
0

1
1
0
1

1
1
1
1

Видно, что Х3 – фиктивный аргумент. Это показывает, что в функцию можно ввести любое число фиктивных аргументов, от которых она существенно не зависит. Этот прием в дальнейшем потребуется для выполнения ряда преобразований.
Все ФАЛ от 2-х аргументов. Сведем их в единую таблицу 2.1.
Таблица 2.1.

№ функции
Значение функции на наборах логических переменных
Наименование функции
Обозначение функции

X1
0
0
1
1



X2
0
1
0
1



f0(X1,X2)
0
0
0
0
Константа "ноль"
f(X1,X2)=0

f1(X1,X2)
0
0
0
1
Конъюнкция, произведение
f(X1,X2)= X1& X2
f(X1,X2)= X1 [ Cкачайте файл, чтобы посмотреть картинку ] X2
f(X1,X2)= X1 · X2
f(X1,X2)= X1 X2

f2(X1,X2)
0
0
1
0
Запрет по X2
X1
· X2

f3(X1,X2)
0
0
1
1
Переменная X1
f(X1,X2)= X1

f4(X1,X2)
0
1
0
0
Запрет по X1
X2
· X1

f5(X1,X2)
0
1
0
1
Переменная X2
f(X1,X2)= X2

f6(X1,X2)
0
1
1
0
Сложение по mod2 (неравнозначность)
f(X1,X2)= X1 [ Cкачайте файл, чтобы посмотреть картинку ] X2

f7(X1,X2)
0
1
1
1
Дизъюнкция
f(X1,X2)= X1[ Cкачайте файл, чтобы посмотреть картинку ] X2
f(X1, X2)= X1+ X2

f8(X1,X2)
1
0
0
0
Стрелка Пирса
f(X1, X2)= X1 [ Cкачайте файл, чтобы посмотреть картинку ] X2

f9(X1,X2)
1
0
0
1
Равнозначность
f(X1, X2)= X1 [ Cкачайте файл, чтобы посмотреть картинку ] X2
f(X1, X2)= X1~X2

f10(X1,X2)
1
0
1
0
Инверсия X2
f(X1, X2)=^X2
f(X1, X2)=X2

f11(X1,X2)
1
0
1
1
Импликация от X2 к X1
f(X1, X2)= X2 [ Cкачайте файл, чтобы посмотреть картинку ] X1

f12(X1,X2)
1
1
0
0
Инверсия X1
f(X1, X2)=^X1
f(X1, X2) = X1

f13(X1,X2)
1
1
0
1
Импликация от X1 к X2
f(X1, X2)= X1 [ Cкачайте файл, чтобы посмотреть картинку ] X2

f14(X1,X2)
1
1
1
0
Штрих Шеффера
f(X1, X2)= X1|X2

f15(X1,X2)
1
1
1
1
Константа "единица"
f(X1, X2)=1

Эти функции введены формально. Однако им можно придавать определенный "логический" смысл. Алгебра логики часто называется исчислением высказываний.
При этом под высказываниями понимается всякое предложение, относительно которого можно утверждать, что оно истинно или ложно.
Например:
В=<один плюс один - два>
есть истинное высказывание.
Рассмотрим, какое смысловое содержание можно вложить в некоторые сложные высказывания на примере ФАЛ 2-х аргументов.
Инверсия
Читается НЕ Х или Х с чертой, отрицание Х.
Возьмем, например, такое высказывание: А=<Киев-столица Франции>, тогда сложное высказывание НЕ А означает: не верно, что А, т.е. не верно, что <Киев-столица Франции>.
Из простых высказываний можно строить более сложные, применяя так называемые связи.
Логические связи – это ФАЛ, аргументами которых являются простые высказывания.
Конъюнкция
Возьмем 2 высказывания:
А=<Москва – столица РФ>
В=<дважды два - четыре>
тогда сложное высказывание: А & В будет истинным, так как истинны оба этих высказывания.
Поскольку таблица истинности для конъюнкции совпадает с таблицей умножения, если истинному высказыванию приписать значение '1', а ложному - '0', то сложное высказывание можно назвать произведением.
X1
X2
f1(X1,X2)

0
0
0

0
1
0

1
0
0

1
1
1

Функция конъюнкции истинна тогда, когда истинны одновременно оба высказывания.
[ Cкачайте файл, чтобы посмотреть картинку ]

Дизъюнкция
Это сложное высказывание истинно тогда, когда истинно хотя бы одно высказывание, входящее в него.
X1
X2
f1(X1,X2)

0
0
0

0
1
1

1
0
1

1
1
1

Читается X1 ИЛИ X2: Некоторое отличие от смысла союза "или", принятого в русском языке: в данном случае этот союз употребляется в смысле объединения, а не разъединения.
[ Cкачайте файл, чтобы посмотреть картинку ]

Логическая равнозначность
Это сложное высказывание истинно тогда, когда истинны или ложны одновременно оба высказывания.
Отсюда следует, что вне зависимости от смысла, равнозначными являются как истинные, так и ложные высказывания.
Например,
А=<дважды два - пять>
B=<один плюс два - шесть>
А~В равнозначны.
Импликация
Это сложное высказывание ложно только тогда, когда X1 – истинно, а X2 – ложно.
X1
X2
f1(X1,X2)

0
0
1

0
1
1

1
0
0

1
1
1

Читается: если X1, то X2. При этом X1 – посылка, X2 – следствие.
Если посмотреть на таблицу истинности, то может показаться странным название этой функции, т.к. из него следует, что истинным может быть высказывание, составленное из двух ложных.
Но в действительности, все верно, т.к. содержанием высказываний в алгебре логики не интересуются.
Тогда из ложной посылки может следовать ложное следствие и это можно считать верным:
<если Киев – столица Франции>,
то <2-квадрат 3>.
Эквивалентности
В некоторых случаях сложное и длинное высказывание можно записать более коротким и простым без нарушения истинности исходного высказывания. Это можно выполнить с использованием некоторых эквивалентных соотношений.
Дизъюнкция:
х [ Cкачайте файл, чтобы посмотреть картинку ] х [ Cкачайте файл, чтобы посмотреть картинку ] х [ Cкачайте файл, чтобы посмотреть картинку ] х [ Cкачайте файл, чтобы посмотреть картинку ] ... [ Cкачайте файл, чтобы посмотреть картинку ] х [ Cкачайте файл, чтобы посмотреть картинку ] х [ Cкачайте файл, чтобы посмотреть картинку ] х= х ,
т.е. истинность высказывания не изменится, если его заменить более коротким, таким образом, это правило приведения подобных членов:
x v x = 1
1 [ Cкачайте файл, чтобы посмотреть картинку ] x = 1
– постоянно истинное высказывание.
0 [ Cкачайте файл, чтобы посмотреть картинку ]x = x
x1 [ Cкачайте файл, чтобы посмотреть картинку ]x2 = x2 [ Cкачайте файл, чтобы посмотреть картинку ]x1
- (переместительный) коммуникативный закон.
x1 [ Cкачайте файл, чтобы посмотреть картинку ]х2 [ Cкачайте файл, чтобы посмотреть картинку ]х3 = (x1 [ Cкачайте файл, чтобы посмотреть картинку ]х2) [ Cкачайте файл, чтобы посмотреть картинку ]х3 = x1 [ Cкачайте файл, чтобы посмотреть картинку ](х2 [ Cкачайте файл, чтобы посмотреть картинку ]х3)
- сочетательный закон.
Конъюнкция:
х [ Cкачайте файл, чтобы посмотреть картинку ]х [ Cкачайте файл, чтобы посмотреть картинку ]х [ Cкачайте файл, чтобы посмотреть картинку ]х... [ Cкачайте файл, чтобы посмотреть картинку ]х [ Cкачайте файл, чтобы посмотреть картинку ]х [ Cкачайте файл, чтобы посмотреть картинку ]х= х
правило приведения подобных членов:
1 [ Cкачайте файл, чтобы посмотреть картинку ]x = х
0 [ Cкачайте файл, чтобы посмотреть картинку ]x = 0 - постоянно ложное высказывание
x [ Cкачайте файл, чтобы посмотреть картинку ] x = 0 - постоянно ложное высказывание
Сложение по mod 2
1 [ Cкачайте файл, чтобы посмотреть картинку ]  х = x
0 [ Cкачайте файл, чтобы посмотреть картинку ] x = x
x [ Cкачайте файл, чтобы посмотреть картинку ]  x = 1
x [ Cкачайте файл, чтобы посмотреть картинку ]x [ Cкачайте файл, чтобы посмотреть картинку ]x [ Cкачайте файл, чтобы посмотреть картинку ]...[ Cкачайте файл, чтобы посмотреть картинку ] x = х – при нечетном числе членов, 0 - при четном числе членов
Правило де Моргана
x1 [ Cкачайте файл, чтобы посмотреть картинку ]x2 [ Cкачайте файл, чтобы посмотреть картинку ]... [ Cкачайте файл, чтобы посмотреть картинку ]xn = x1 & x2& ... & xn
x1 [ Cкачайте файл, чтобы посмотреть картинку ]x2 [ Cкачайте файл, чтобы посмотреть картинку ]... [ Cкачайте файл, чтобы посмотреть картинку ]xn = x1 & x2 & ... & xn
Докажем для двух переменных с помощью таблицы истинности:
Х1
Х2
Х1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2
X1 & X2

0
0
1
1

0
1
1
1

1
0
1
1

1
1
0
0

Операция поглощения:
Х [ Cкачайте файл, чтобы посмотреть картинку ]XY = X или в общем виде X [ Cкачайте файл, чтобы посмотреть картинку ]X*f(X,Y,Z...) = X;
Операция полного склеивания:
XY [ Cкачайте файл, чтобы посмотреть картинку ] XY = X (по Y)
XY [ Cкачайте файл, чтобы посмотреть картинку ] XY = Y (по Х)
Операция неполного склеивания:
XY [ Cкачайте файл, чтобы посмотреть картинку ] XY = Х [ Cкачайте файл, чтобы посмотреть картинку ] XY [ Cкачайте файл, чтобы посмотреть картинку ] XY
Введем понятие степени:

Х[ Cкачайте файл, чтобы посмотреть картинку ]
=Х, если [ Cкачайте файл, чтобы посмотреть картинку ]=1;
=Х, если [ Cкачайте файл, чтобы посмотреть картинку ]=0.
Рассмотрим конъюнкцию вида:
Х1[ Cкачайте файл, чтобы посмотреть картинку ]1 * Х2[ Cкачайте файл, чтобы посмотреть картинку ]2 * Х3[ Cкачайте файл, чтобы посмотреть картинку ]3 ... Хn [ Cкачайте файл, чтобы посмотреть картинку ]n
Существует 2n наборов вида < [ Cкачайте файл, чтобы посмотреть картинку ]1, [ Cкачайте файл, чтобы посмотреть картинку ]2, ... [ Cкачайте файл, чтобы посмотреть картинку ]n >. Поставим в соответствие каждой конъюнкции (*) номер набора i и образуем дизъюнкцию всех конъюнкций:
[ Cкачайте файл, чтобы посмотреть картинку ]i[ Cкачайте файл, чтобы посмотреть картинку ]A(Х1[ Cкачайте файл, чтобы посмотреть картинку ]1 * Х2[ Cкачайте файл, чтобы посмотреть картинку ]2 * Х3[ Cкачайте файл, чтобы посмотреть картинку ]3 ... Хn[ Cкачайте файл, чтобы посмотреть картинку ]n )
Теорема (без доказательства):
Любая ФАЛ, зависящая от 'n' аргументов, может быть представлена в форме:
F(Х1, Х2,... Хi... Хn)= [ Cкачайте файл, чтобы посмотреть картинку ]Х1[ Cкачайте файл, чтобы посмотреть картинку ]1 * Х2[ Cкачайте файл, чтобы посмотреть картинку ]2... Хi[ Cкачайте файл, чтобы посмотреть картинку ]i F([ Cкачайте файл, чтобы посмотреть картинку ]1, [ Cкачайте файл, чтобы посмотреть картинку ]2, ... [ Cкачайте файл, чтобы посмотреть картинку ]i, Xi+1,...Xn)
Из этой теоремы вытекает ряд важных следствий:
Она дает возможность перейти от табличного задания функции к аналитической форме и сделать обратный переход.
Устанавливает так называемую функциональную полноту связок (базиса) "[ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], -", т.к. позволит построить в этом базисе произвольную ФАЛ от произвольного числа аргументов.
Примечание:
Если i[ Cкачайте файл, чтобы посмотреть картинку ]n, то соответствующая форма функции называется дизъюнктивной нормальной (ДНФ).
Если i=n, то каноническая форма функции носит название совершенной ДНФ (СДНФ). Дизъюнкции берутся по тем наборам, на которых функция f(X1,X2,...,Xn)=1
Пример: ДНФ
f(Х1, Х2, Х3)= Х1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2 Х3 [ Cкачайте файл, чтобы посмотреть картинку ]Х1Х2 Х3
Пример: СДНФ
f(Х1, Х2, Х3)= Х1Х2 Х3 [ Cкачайте файл, чтобы посмотреть картинку ]Х1Х2 Х3
В ДНФ в каждый член любая переменная входит в прямом виде или с отрицанием.
Аналогичная теорема справедлива и для представления функции в конъюнктивной нормальной форме (КНФ):
f(Х1, Х2,..., Хn)=&( Х1[ Cкачайте файл, чтобы посмотреть картинку ]1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2[ Cкачайте файл, чтобы посмотреть картинку ]2 [ Cкачайте файл, чтобы посмотреть картинку ]... [ Cкачайте файл, чтобы посмотреть картинку ]Хi[ Cкачайте файл, чтобы посмотреть картинку ]i) f([ Cкачайте файл, чтобы посмотреть картинку ]1, [ Cкачайте файл, чтобы посмотреть картинку ]2, ... [ Cкачайте файл, чтобы посмотреть картинку ]i, Xi+1...Xn)
или при представлении в совершенной КНФ (СКНФ):
f(Х1, Х2,, Хn)=&( Х1[ Cкачайте файл, чтобы посмотреть картинку ]1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2[ Cкачайте файл, чтобы посмотреть картинку ]2 [ Cкачайте файл, чтобы посмотреть картинку ]Х3[ Cкачайте файл, чтобы посмотреть картинку ]3[ Cкачайте файл, чтобы посмотреть картинку ] ... [ Cкачайте файл, чтобы посмотреть картинку ]Хn[ Cкачайте файл, чтобы посмотреть картинку ]n)
где: & означает, что конъюнкции берется по тем наборам, на которых
f(Х1, Х2, ... Хn)=0.
Дадим на основании этих теорем правило перехода от табличной формы функции к СДНФ и СКНФ.
Переход от табличной формы функции к СДНФ или правило записи функции по единицам:
Выбрать те наборы аргументов, на которых f(Х1, Х2, ... Хn)=1.
Выписать все конъюнкции для этих наборов. Если при этом Хi имеет значение '1', то этот множитель пишется в прямом виде, если '0', то с отрицанием.
Все конъюнктивные члены соединить знаком дизъюнкции [ Cкачайте файл, чтобы посмотреть картинку ].
Пример:
f(Х1, Х2)= Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2
X1
Х2
f(Х1, Х2)

0
0
0

0
1
1

1
0
1

1
1
1

Правило перехода от табличной формы задания функции к СКНФ или правило записи функции по нулям.
Выбрать те наборы аргументов, на которых f(Х1, Х2, ... Хn)=0.
Если при этом Хi имеет значение '0', то остается без изменений. Если '1', то с отрицанием.
Все дизъюнктивные члены соединить знаком конъюнкции[ Cкачайте файл, чтобы посмотреть картинку ].
Пример:
f(Х1, Х2)= (Х1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2) ( Х1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2 )
X1
Х2
f(Х1, Х2)

0
0
1

0
1
0

1
0
1

1
1
0

Пример:
X1
Х2
Х3
f(Х1, Х2, Х3)

0
0
0
0

0
0
1
1

0
1
0
0

0
1
1
1

1
0
0
1

1
0
1
0

1
1
0
1

1
1
1
1

СДНФ f(Х1, Х2, Х3)= Х1Х2Х3 [ Cкачайте файл, чтобы посмотреть картинку ]Х1Х2Х3 [ Cкачайте файл, чтобы посмотреть картинку ]Х1Х2Х3 [ Cкачайте файл, чтобы посмотреть картинку ]Х1Х2Х3 [ Cкачайте файл, чтобы посмотреть картинку ]Х1Х2Х3
СКНФ f(Х1, Х2, Х3)= (Х1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2 [ Cкачайте файл, чтобы посмотреть картинку ]Х3) & (Х1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2 [ Cкачайте файл, чтобы посмотреть картинку ]Х3) & (Х1 [ Cкачайте файл, чтобы посмотреть картинку ]Х2 [ Cкачайте файл, чтобы посмотреть картинку ]Х3)
Рассмотрим способ получения СДНФ из СКНФ и обратно.
Из [ Cкачайте файл, чтобы посмотреть ссылку ] с помощью способа записи функции по нулям следует, что СКНФ той же функции дизъюнкции будет иметь вид:
f(Х1, Х2)= Х1[ Cкачайте файл, чтобы посмотреть картинку ] Х2
X1
Х2
f(Х1, Х2)

0
0
0

0
1
1

1
0
1

1
1
1

Итак, имеем две формы одной и той же функции:
f(Х1, Х2)= Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2 =Х1[ Cкачайте файл, чтобы посмотреть картинку ]Х2
Итак, видно, что общее число членов в этих двух формах равно сумме нулей и единиц функции, то есть равно 2n.
Если в исходной форме функции, записанной в СКНФ или СДНФ, содержится z членов, то в другой ее форме (т.е. СДНФ или СКНФ) их будет (2n- z).
Поскольку в функцию мы включаем дизъюнктивные или конъюнктивные члены и берем их по наборам, на которых функция или обращается в '0', или в '1', то для перехода от одной формы задания функции к другой нужно выписать все недостающие члены и поставить над каждой переменной отрицание, а также заменить знаки конъюнкции на дизъюнкцию и обратно.
f(Х1, Х2)= Х1[ Cкачайте файл, чтобы посмотреть картинку ] Х2
f(Х1, Х2)СДНФ= Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2
т.е. получили СДНФ.
Практический смысл перехода заключается в том, что можно определить, реализация какой формы потребует меньший объем оборудования.
Понятие функциональной полноты ФАЛ
Было отмечено, что техническая (физическая) задача синтеза произвольного устройства сводится к математической задаче построения произвольной ФАЛ.
Естественно возникает вопрос, какое количество связок необходимо, чтобы построить произвольную ФАЛ. Ответ на этот вопрос не однозначен. Мы видим, что, например, с помощью только функции f0 (константа 0), f15 (константа 1) произвольную ФАЛ построить нельзя. Нельзя ее построить и с помощью только инвертора. Существуют и другие базисы: [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], 1, |. Есть также одноэлементные базисы: f8 – стрелка Пирса, f14 – штрих Шеффера, И-НЕ, ИЛИ-НЕ.
Технически синтез устройства означает, что нужно иметь некоторый набор элементов, ФАЛ которых образуют базис, чтобы можно было построить реальное устройство.
Однако, как было отмечено, задача синтеза ФАЛ – идеальная модель. В действительности, для построения реальных устройств пользуются несколько более расширенным набором элементов - усиления и коррекции сигналов.
Минимизация ФАЛ и ограничения при ее рассмотрении
Покажем на примере, что СДНФ не является экономной формой записи:
f(Х1, Х2)= Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2 =Х1[ Cкачайте файл, чтобы посмотреть картинку ]Х1 Х2
на основании полного склеивания по Х2 мы видим, что запись стала короче, т.к. содержит меньшее число связок и букв. Физически это означает, что устройство, которое реализует эквивалентную, но более простую функцию, будет иметь в своем составе меньшее количество оборудования, а следовательно, будет работать надежнее.
Итак, задача синтеза устройства должна быть дополнена задачей уменьшения оборудования в нем. С математической точки зрения это задача построения минимальной ФАЛ.
Под минимальной ФАЛ понимается такая форма, в которой содержится меньшее количество букв и членов, чем в ее исходной форме.
Речь идет именно о буквах, а не о переменных, так в функции:
f(Х1, Х2)= Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] Х1Х2 имеется 6 букв и только 2 переменных.
Видно, что если какое-либо элементарное произведение входит в функцию, то при добавлении к нему новых сомножителей, полученное произведение так же будет входить в функцию.
Пример: если Х1Х2 входит в функцию от любого числа аргументов (>2), то в нее войдет, например, произведение Х1Х2Х3.
Это можно показать так:
f(Х1, Х2)= Х1Х2[ Cкачайте файл, чтобы посмотреть картинку ] [ Cкачайте файл, чтобы посмотреть картинку ](Х1Х2)= Х1Х2 (Х3[ Cкачайте файл, чтобы посмотреть картинку ]Х3)[ Cкачайте файл, чтобы посмотреть картинку ] [ Cкачайте файл, чтобы посмотреть картинку ](Х1Х2)= Х1 Х2 Х3 [ Cкачайте файл, чтобы посмотреть картинку ]Х1 Х2 Х3 [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ](Х1Х2)=Х1 Х2 Х3 [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ](Х1 Х2 Х3)
Дадим ряд определений:
Произведение одной или нескольких неповторяющихся переменных, взятых с отрицанием или без него, называют элементарным.
Например, Х1 Х2 Х3 – элементарное произведение, т.к. в него входят различные буквы Х1 Х2 Х3.
Дизъюнкция элементарных произведений – ДНФ.
ДНФ является минимальной, если в ней минимальное число букв и членов.
Конституентой единицы функции называют функцию, принимающую значение единицы только на одном наборе аргументов.
Обычно конституенты единицы выражают через произведение всех переменных, от которых зависит функция. СДНФ – дизъюнкция конституент единицы.
Ранг произведения – число букв, входящих в него.
Собственной частью называется произведение, полученное путем отбрасывания одной или нескольких переменных.
Например, Х1 Х2 Х3 Х4, где Х1, Х1 Х2, Х1 Х2 Х3 – некоторые собственные части.
Если функция [ Cкачайте файл, чтобы посмотреть картинку ]равна нулю на наборах аргументов, на которых обращается в нуль функция F, то говорят, что [ Cкачайте файл, чтобы посмотреть картинку ]является импликантой функции F (т.е. нулей у импликанты не меньше, чем у функции).
Простой импликантой называется произведение, которое само входит