Серия изданий «Научно-образовательные и научно-информационные материалы МГТУ им. Н.Э. Баумана — национального исследовательского университета техники и технологий» Департамент образования города Москвы Ассоциация московских вузов Московский государственный технический университет имени Н.Э. Баумана Кафедра ИУ-7 «Программное обеспечение ЭВМ и информационные технологии» Б.Г. Трусов, И.В. Рудаков, Ю.И. Терентьев, С.С. Комалов, С.В. Горин, В.А. Крищенко Научно-образовательный материал «Учебник по курсу «Информатика» Часть 1 (Электронная версия) Москва МГТУ им. Н.Э. Баумана 2011 ИНФОРМАЦИЯ И ИНФОРМАТИКА. АЛГЕБРА ЛОГИКИ. СИСТЕМЫ СЧИСЛЕНИЯ (ОСНОВНЫЕ ПОНЯТИЯ) ПОНЯТИЕ ИНФОРМАЦИИ Слово «Информация» происходит от латинского слова informatio – сведение, разъяснение, ознакомление. Строгого научного определения информации в настоящее время не существует, принято оперировать понятием об информации, которое рассматривается как базовое понятие и его невозможно определить через другие, более простые понятия. Так же, как, например, понятия точки, луча в геометрии. Содержание базовых понятий выясняется на примерах или путем сопоставления с другими понятиями. Имеется несколько сотен определений понятия информации. Среди них, например, такие информация есть отражение различных сторон реального мира, информация- это продукт взаимодействия данных и адекватных им методов, информация – есть снятая неопределенность, результат выбора из возможных альтернатив, информация – это длина алгоритма, позволяющего преобразовать один объект в другой, т.е. мера сложности объекта и т.д. Федеральный закон «Об информации, информатизации и защите информации» определяет информацию как «сведения о лицах, предметах, фактах, событиях, явлениях и процессах независимо от формы их представления». Сопоставление всех этих определений понятия информации позволяет сделать заключение об их противоречивости и зачастую специализированной направленности. В настоящее время формируется понимание того, что информатика является комплексным научным направлением, имеющим междисциплинарный характер. В каждой дисциплине понятие информации включено в свою систему понятий в соответствии с предметом изучения, при этом фиксируются каждый раз лишь некоторые, наиболее важные в конкретном контексте, аспекты информации. Будем описывать информацию, используя категорию «свойство». Данная философская категория выражает такую сторону предмета, которая обусловливает его общность или различие с другими предметами и обнаруживается в его отношении к ним. Свойства информации. 1. Атрибутивные свойства – это свойства, без которых информация не существует. К ним относятся: 1.1. Непрерывность. Информация имеет свойство сливаться с уже накопленной ранее, тем самым, способствуя ее дальнейшему накоплению. 1.2. Дискретность. Содержащиеся в информации сведения, знания дискретны, т.е. характеризуют отдельные фактические данные и свойства изучаемых объектов, которые распространяются в виде различных сообщений, состоящих из букв, цифр, знаков, цвета, линий. 1.3. Неотрывность от физического носителя. 1.4. Языковая природа информации. Рассматривая последние два свойства надо учитывать, что жесткой связи информации с конкретным носителем или с конкретным языком нет. 2. Прагматические свойства – характеризуют степень полезности информации для потребителя. К ним относятся: 2.1. Новизна 2.2. Полезность 2.3. Ценность 2.4. Объективность и субъективность (относительность понятия объективности). 2.5. Полнота 2.6. Достоверность 2.7. Адекватность 2.8. Доступность 2.9. Актуальность 3. Динамические свойства – характеризуют изменение информации во времени. К ним относятся: 3.1. Рост информации 3.2. Старение информации В структуре предметной области информатики можно выделить следующие разделы: 1. Теоретическая информатика (теория алгоритмов и автоматов, теория информации, математическая логика, теория формальных языков и грамматик, теория кодирования и др.). 2. Технические и программные средства информатизации 3. Информационные системы и технологии Мы будем знакомиться с информатикой в тех аспектах, которые позволяют рассматривать ее как техническую науку, занимающуюся способами создания, хранения, воспроизведения, обработки и передачи данных средствами вычислительной техники, принципами функционирования этих средств и методами управления ими. ДАННЫЕ Данные – это зарегистрированные сигналы. Существуют различные физические методы регистрации данных (изменение магнитных, оптических характеристик поверхностей, состояния электронной системы, химического состава и т.д.). В зависимости от используемого метода регистрации применяются различные типы носителей (бумага, CD-ROM, магнитные диск и лента, триггеры). Операции с данными: сбор данных; формализация данных; фильтрация данных; сортировка данных; архивация данных; защита данных; транспортировка данных; преобразование данных. Последняя операция – важнейшая. Эта операция связанна с переводом данных из одной формы в другую. Преобразование данных необходимо, во – первых, для того, чтобы компьютер или человек мог хранить и обрабатывать данные в удобной для них форме. Во-вторых, многократное преобразование данных необходимо при их транспортировке. В ходе преобразования данных из одной формы представления к другой проводится операция кодирования. Кодирование применяется в различных областях (система записи математических объектов, азбука Морзе, система Брайля для слепых, морская сигнализация флажками и т.д.). Следует отметить, что в каждой области человеческой деятельности существует множество других, часто весьма специфических операций с данными, которые выполняются в ходе решения различных задач социальной, экономической, научной, промышленной, культурной направленностей. Данные и информация, грубо говоря, связаны следующим образом: информация – это полезное содержание данных, данные – это форма представления информация. Более полная характеристика указанной связи обеспечивается выделением трех аспектов информации: прагматического, семантического и синтаксического. Прагматический аспект отражает соответствие информации цели, для которой ее предполагает использовать потребитель информации. Семантический аспект отражает степень соответствия объекта и его образа, содержащегося в информации (данных), т.е. речь идет о смысловом содержании информации. Синтаксический аспект затрагивает форму представления информации, но не ее смысловое содержание. Можно сказать, что данные представляют собой информацию в синтаксическом аспекте. АЛГЕБРА ЛОГИКИ Высказывание – повествовательное предложение, относительно которого определенно и объективно можно сказать истинно оно или ложно (ЛОЖЬ или ИСТИНА, 0 или 1, TRUE или FALSE). Алгебра логики – раздел математики, изучающий процессы умозаключений и законы, которые позволяют из истинности одних высказываний делать заключения об истинности или ложности других высказываний, независимо от их конкретного содержания. Алгебра логики (булева алгебра) была создана в 1854 г. Дж. Булем и в настоящее время находит широкое применение при разработке алгоритмов и для структурнофункционального описания, анализа и синтеза современных электронных схем. Базовыми операциями алгебры логики служат операции логического умножения – конъюнкции (обозначается точкой или знаком ), логического сложения – дизъюнкции (обозначается знакам + или ), логического отрицания – инверсии (обозначается надчеркиванием или знаком ). При составлении формул применяются скобки, чтобы изменять порядок выполнения операций. Наивысшим приоритетом обладает операция инверсии, затем идет конъюнкция и потом уже дизъюнкция. Таблицы истинности для указанных операций: А А 0 1 1 0 А 0 0 1 1 В 0 1 0 1 А 0 0 1 1 АВ 0 0 0 1 В 0 1 0 1 А В 0 1 1 1 Представляют интерес еще две логические операции: эквиваленции (обозначается знаком ) и импликации (обозначается знаком ). А 0 0 1 1 В 0 1 0 1 А В 1 0 0 1 А 0 0 1 1 В 0 1 0 1 АВ 1 1 0 1 Приведем основные логические законы (тождественно истинные высказывания), которые позволяют упрощать формулы, заменяя их подформулы эквивалентными выражениями: 1. X X - закон тождества 2. X X - закон исключенного третьего 3. ( X X ) - закон противоречия 4. X X - закон двойного отрицания 5. X Y Y X - закон коммутативности конъюнкции 6. X (Y Z ) ( X Y ) X - закон ассоциативности конъюнкции 7. ( X Y ) X Y и ( X Y ) X Y - законы де Моргана 8. X X X и X X X - законы сокращений 9. и еще с десяток тождественно истинных и тождественно ложных высказываний. Пример 1. Упростить логическую формулу ( X Y ) ( X Y ) X Y ( X Y ) X X Y Y 0 Y Y 0 Пример 2. Доказать законы де Моргана, построив соответствующие таблицы истинности. X Y X Y ( X Y ) X Y X Y ( X Y ) X Y 0 0 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 Таким образом, результат, выражаемый последним столбцом таблицы, свидетельствует, что высказывание ( X Y ) X Y является тождественно истинным (выполняется при любых комбинациях значений входящих в него высказываний), т.е. оно действительно является логическим законом. Так же доказывается второй закон де Моргана. СИСТЕМЫ СЧИСЛЕНИЯ Под системой счисления понимается совокупность приемов и правил представления чисел в виде конечного числа символов. Система счисления имеет свой алфавит – упорядоченный набор символов (цифр) и совокупность операций образования чисел из этих символов. Различают непозиционные и позиционные системы счисления. В позиционных системах счисления значение цифры зависит от ее положения в числе, а в непозиционных – не зависит. Римская непозиционная система счисления. Алфавит включает символы I (1), V (5), X (10), L (50), C (100), D(500), M (1000). Значение числа, представленного в римской системе, определяется как сумма или разность цифр в числе, при этом, если меньшая цифра стоит перед большей цифрой, то она вычитается из последней, если после – прибавляется. Например, десятичное число 1998 в римской системе имеет вид MCMXCVIII. Непозиционные системы сложны и громоздки при записи чисел и мало удобны при выполнении арифметических операций. Среди позиционных систем наиболее распространены десятичная, двоичная, восьмеричная и шестнадцатеричная системы. До сих пор используются отголоски 60 –ричной и 12 – ричной систем (в 1 минуте 60 секунд, в 1 часе 60 минут, часто применяется дюжина -12, в круге содержится 30 дюжин градусов, в сутках две дюжины часов, 1 фут равен 12 дюймам и т.д.). В позиционных системах счисления количественное значение цифры зависит от ее позиции в числе. Каждая позиционная система характеризуется своим алфавитом цифр и основанием (2, 8, 10, 16). Основание системы равно количеству цифр используемого алфавита. В качестве алфавита берутся последовательные целые числа 0, 1, 2….(p-1). Если система счисления требует использования цифр больших 9, то применяются буквы латинского алфавита (например, в 16- ричной системе это буквы A, B, C, D, E, F). Арифметические действия над числами в системе с любым основанием выполняются по тем же правилам, что и в наиболее привычной для нас десятичной системе, с той только разницей, что надо применять те таблицы сложения и умножения, которые справедливы для данной системы счисления. Само число A p в произвольной p - ичной системе счисления (основание системы равно p) представляется в следующем виде A p a n p n a n 1 p n 1 ... a1 p 1 a 0 p 0 a 1 p 1 ... a m p m n a k m k pk , (1) при этом число A p изображается как последовательность цифр a k , т.е. A p a n a n 1 ... a0 , a 1 ... a m . Целесообразно рассмотреть следующие задачи: 1. Перевод чисел в десятичную систему из других систем (двоичной, восьмеричной, шестнадцатеричной). Эта задача решается наиболее просто: процедура сводится к вычислению многочлена в правой части (1) в десятичной системе. Например, 1001,012 1 2 3 0 2 2 0 21 1 2 0 0 2 1 1 2 2 9,2510 . 123,58 1 8 2 2 81 3 8 0 5 8 1 83,62510 2. Перевод чисел из десятичной системы в двоичную, восьмеричную, шестнадцатеричную системы. Перевод целой части числа осуществляется делением этой части числа а основание системы, в которую выполняется перевод, а дробной части – ее умножением на основание системы. При этом обе операции выполняются в десятичной системе. Пример 1. Перевести число 23 из десятичной системы в двоичную систему: 2310 23 2 22 11 2 10 5 2 1 4 2 2 1 2 1 1 0 =101112 (собираются остатки от деления на 2 в порядке, обратном их получению). Пример 2. Перевести число 0.24 из десятичной системы в пятеричную систему: 0.2410 = 0.24 5 1.20 (1), 0.20 5 1.0(1) =0.115 (умножается дробная часть числа на основание системы, равное в нашем примере 5, дробная часть полученного произведения снова умножается на 5 и т.д., а затем собираются целые части полученных произведений в порядке их получения). Пример 3. Перевести число 0.24 из десятичной системы в шестнадцатеричную систему: 0.2410= 0.24 16 3.84 (3), 0.84 16 13.44 ( D), 0.44 16 7.04 (7) 0.3D716 3. Перевод чисел из двоичной системы в восьмеричную и шестнадцатеричную системы и обратный перевод. Эту операцию проводят с использованием триад и тетрад (три и четыре разряда в двоичном представлении числа). Для перевода числа из двоичной системы в восьмеричную число разбивают на триады влево о вправо от запятой, и в случае, когда последняя триада оказывается неполной, она дополняется нулями: для целой части – слева до трех разрядов, а для дробной части – справа. Затем каждая триада заменяется восьмеричной цифрой. Аналогично для перевода числа из двоичной системы в шестнадцатеричную число разбивают на тетрады, и каждая тетрада заменяется шестнадцатеричной цифрой. Пример 1. Перевести число из двоичной системы в восьмеричную. 10011100,10012=010’011’100,100’1002=234,448 Обратный перевод осуществляется заменой каждой цифры триадой или тетрадой. В задачах индикации данных в десятичном представлении оказывается удобной двоично-десятичная система счисления. В этой системе десятичные цифры от 0 до 9 представляются двоичными комбинациями от 0000 до 1001. При работе с отрицательными числами удобна двоичная дополнительная или обратная арифметика. В современной вычислительной технике используется в основном двоичная система счисления. Ее главное преимущество состоит в том, что практическая реализация устройств, построенных на базе этой системе, возможно при использовании технических устройств лишь с двумя устойчивыми состояниями (материал намагничен или размагничен, заряд есть или нет, отверстие есть или нет и т.д.). В результате обеспечивается высокая надежность, помехоустойчивость систем, появляется возможность применять хорошо разработанный аппарат булевой алгебры и существенно упрощается выполнение арифметических операций. Главный недостаток двоичной системы - большое число разрядов при записи больших чисел. Следует отметить, что с точки зрения построения кодов для устройств передачи, хранения и преобразования данных наиболее экономичной является система счисления с основанием 3. При этом произведение количества различных символов в алфавите системы и количества разрядов оказывается минимальным. ЕДИНИЦЫ ИЗМЕРЕНИЯ КОЛИЧЕСТВА ИНФОРМАЦИИ НА СИНТАКСИЧЕСКОМ УРОВНЕ Существуют меры информации синтаксического, семантического и прагматического уровней. В нашем курсе нас будет интересовать прежде всего мера информации синтаксического уровня. На этом уровне содержательная сторона информации не имеет значения. Для измерения информации вводятся два параметра: объем информации (данных) V (объемный подход) и количество информации S (энтропийный подход). При объемном подходе учитывается, что информация (по сути - данные) передается в виде некоторого сообщения, состоящего из совокупности символов какого-либо алфавита. Если количество информации, содержащейся в сообщении из одного символа, принять за единицу, то полное количество информации в сообщении равно количеству символов в нем. В двоичной системе счисления единицей измерения информации является бит (bit – binary digit – двоичный разряд). Тогда сообщение, состоящее из n-разрядного двоичного числа, имеет объем V=n бит. Энтропийный подход к измерению информации основан на том, что факт получения наблюдателем информации о каком-то источнике этой информации связан, вообще говоря, с уменьшением неопределенности (энтропии) состояния источника с позиции наблюдателя. Пусть источник информации может находиться в N различных равновероятных состояниях. В качестве единицы измерения информации принято такое ее количество, которое уменьшает неопределенность знания о состоянии источника в 2 раза. Такая единица носит уже введенное выше название бит. Тогда N 2 I или I log 2 N . Примеры. 1. Бросание четырехгранной пирамиды. N=4, I=2 бита. Бросок кости сообщает наблюдателю количество информации, равное 2 битам. 2. Шахматный пешечный дебют. N=16, I=4 бита – столько информации несет первый ход. Байт – 1 байт равен 2 3 = 8 битам. Слово – 2 взаимосвязанных байта, удвоенное слово- 4 байта, учетверенное слово – 8 байт (64 бита). Кратные байту единицы - Кбайт, Мбайт, Гбайт, Тбайт. ИСТОРИЧЕСКАЯ СПРАВКА Компьютер – это электронное устройство для автоматизации процессов создания, хранения, воспроизведения, обработки и транспортировки данных. Компьютер представляет собой комплекс аппаратного и программного обеспечения. Механические предшественники. «Суммирующие часы» Вильгельма Шикарда(1623 г., Германия). Калькулятор Блеза Паскаля (1642 г., Франция). Калькулятор Готфрида Вильгельма Лейбница (1673 г., Германия). Аналитическая машина Чарльза Бэббиджа (1832 г., Англия). Впервые реализован принцип разделения информации на команды и данные (склад и мельница). Огаста Ада Лавлейс – ей принадлежит идея использования перфорированных карт для программирования вычислительных операций. Вычислительная техника на основе электромагнитных реле. Счетноперфорационные комплексы Г.Холлерита (1887 г.) для обработки результатов переписи населения, универсальные вычислительные машины с программным управлением (модель Z-3 К. Цузе,1941 г., модель MARK-2 Г. Айкена, 1947 г.). Математические основы электронных устройств. Двоичная система Лейбница и математическая логика Джорджа Буля (создатель логической алгебры или булевой алгебры) (первая половина XIX века, Англия). Первая ЭВМ – на электронных лампах (1946 г., США, ENIAC, вес – 30 тонн, 18 тыс. электронных ламп, мощность 140 кВт, размеры: 4 x 30 x 6 м, 5000 операций сложения/с, оперативная память – 600 бит, проработала почти 10 лет). Первая отечественная ЭВМ - на электронных лампах (1950 г., СССР, МЭСМ, 5000 операций сложения/с, оперативная память – 1800 бит). Первый персональный компьютер (1976 г., фирма Apple, частота процессора 1 МГц, оперативная память – 48 Кбайт). Персональный компьютер IBM – IBM PC/XT (1983 г., процессор Intel 8086, частота процессора 10 МГц, оперативная память – 640 Кбайт, НЖМД – 10 Мбайт, НГМД – 360 Кбайт). Информационные революции. В истории цивилизации выделяют несколько информационных революций, в ходе которых существенно менялись средства и способы хранения и распространения информации, доступность информации активной части населения. Первая информационная революция. Около 10 тыс. лет до н.э. Появление языка и членораздельной речи. Вторая информационная революция. Появление письменности. Письменность шумеров – 5 тыс. лет назад, алфавит в Греции – 700 лет до н.э. Третья информационная революция. Изобретение книгопечатания. Первая книга появилась в Китае в конце VII в. Четвертая информационная революция. Связана с широким распространением электрической связи в виде телеграфа, телефона, радио. Началась в конце XIX в. Здесь же надо упомянуть фотографию (1839 г.), фонограф Эдисона (1889 г.) и кино (1895 г.). Вершина этой революции – телевидение (!933 г). Пятая информационная революция. Появление в середине XX в. электронной цифровой вычислительной техники. Предыдущие революции развивали средства хранения и распространения информации. Пятая революция привела к небывалому развитию средств и способов обработки информации. Технические средства ЭВМ. В настоящее время вычислительная техника успешно применяется во всех областях научной и практической деятельности человека. Освоение современных информационных технологий требует от инженерных работников не только знания программных средств в соответствующей проблемной области, но и понимания принципов функционирования ЭВМ, а также четкого представления о назначении и возможностях отдельных технических устройств, применяемых в вычислительной технике. Структурная схема ЭВМ Рассматривается классическая архитектура ЭВМ, базирующаяся на принципах фон Неймана. Центральные устройства Центральный процессор АЛУ Блок регистров Память Блок управления Система ввода - вывода Исх. дан. У-ва ввода ВЗУ У-ва вывода Резуль тат Внешние (периферийные) устройства В составе ЭВМ выделяют центральную (обрабатывающую) часть, к которой относят систему соединенных между собой одного или нескольких процессоров и памяти, и группу разнообразных периферийных (внешних) устройств, реализующих функции ввода - вывода информации. Во вторую группу обычно включают и внешние запоминающие устройства (ВЗУ), предназначенные для хранения больших объемов информации. Взаимосвязь указанных устройств между собой осуществляется посредством специальной системы ввода - вывода, принципы построения и структура которой определяется типом ЭВМ. В частности, в персональных ЭВМ система ввода - вывода организована по принципу единого интерфейса, когда все устройства, в совокупности образующие ЭВМ, подключены к единой магистрали (общей шине). Такая организация позволяет обеспечить минимизацию числа связей и аппаратных средств для обмена информацией между различными устройствами и, как следствие, компактность и экономичность. Основное место в структуре ЭВМ занимает центральный процессор, который непосредственно осуществляет процесс обработки данных и программное управление этим процессом, а также координирует взаимодействие всех устройств. Он расшифровывает и выполняет команды программы, организует обращения к оперативной памяти, в необходимых случаях инициирует работу периферийных устройств, принимает и обрабатывает запросы, поступающие из различных устройств ЭВМ. В составе процессора выделяют арифметико-логическое устройство (АЛУ) и устройство управления. Кроме этого, процессор содержит внутренние регистры, совокупность которых определяет его логическую организацию. АЛУ выполняет арифметические операции с числами и производит логические операции над операндами, под которыми понимаются группы последовательно размещенных байт, представляющие собой данные для машинной команды. В функции устройства управления входит координация работы всех устройств ЭВМ. С этой целью оно вырабатывает и своевременно выдает управляющие сигналы, например на АЛУ для выполнения той или иной операции или на внешнее устройство для обмена информации. Регистры - это отдельно расположенные и отдельно адресуемые элементы памяти фиксированного размера, предназначенные для хранения информации и быстрого доступа к ней. Блок регистров используется для запоминания текущих команд и промежуточных результатов выполняемых операций. Здесь же содержатся сведения о состоянии процессора и других устройств ЭВМ, запросы на прерывание вычислительного процесса и другая подобная информация. Память состоит из запоминающих элементов и предназначена для записи, хранения и считывания данных и программ. Память обычно является адресной. Это значит, что каждой хранимой единице информации (байту, слову) ставится в соответствие специальное число - адрес, определяющий место ее хранения в памяти. Запись или считывание информации осуществляются только при указании ее адреса. Минимальной адресуемой в памяти единицей информации является байт. Любая ЭВМ работает под управлением программы, реализующей в виде последовательности машинных команд алгоритм решения задачи. Под командой понимают совокупность сведений (в виде двоичных кодов), необходимых процессору для выполнения требуемого действия, а именно: сведения о типе операции и адресная информация о местонахождении обрабатываемых данных (операндов) и месте хранения результата. Команда содержит также в явной или неявной форме информацию об адресе следующей команды. Множество реализуемых процессором действий образует систему его команд. Центральные устройства персональных ЭВМ. В персональных ЭВМ функции центрального процессора выполняет микропроцессор (МПр), который представляет собой сверхбольшую интегральную схему, реализованную в едином полупроводниковом кристалле. Производительность ПЭВМ во многом определяется быстродействием МПр. Основными характеристиками МПр, определяющими его производительность, являются: - тактовая частота; - степень интеграции (технологические нормы); - разрядность обрабатываемых данных; - технология обработки Тактовая частота - это частота, с которой МПр выполняет все операции. Большинство элементов ПЭВМ разработано таким образом, чтобы работать синхронно, то есть по определенным сигналам. Эти сигналы задаются электронным устройством, называемым тактовым генератором. Главным элементом этого устройства является кристалл кварца, который при подаче на него электрического напряжения вырабатывает импульсы строго определенной частоты. Обработка информации тем быстрее, чем выше тактовая частота. Применение технологии умножения частоты позволяет повысить скорость работы внутренних блоков МПр. В этом случае говорят о внутренней и внешней тактовой частоте. Первая характеризует скорость обработки данных внутри МПр, а вторая - скорость выполнения операций обмена. Значение внутренней тактовой частоты получается путем умножения внешней частоты на некоторый коэффициент (1,5;2;2,5;3 и т.д.). Степень интеграции определяется размером кристалла и количеством реализованных в нем транзисторов, или, как говорят, технологическими нормами, под которыми понимают минимальные размеры транзисторов. Повышение степени интеграции позволяет МПр работать на более высокой внутренней тактовой частоте за счет более высокой синхронизации сигналов между его функциональными узлами, так как при сокращении расстояния между транзисторами уменьшается задержка передачи сигналов, проходящих по ним. Кроме этого, переход на более “компактную” структуру позволяет снизить энергопотребление и тепловыделение МПр. Внутреняя разрядность или разрядность внутренних регистров определяется количеством бит, одновременно обрабатываемых внутри МПр, а внешняя - количеством бит, которым МПр может обмениваться с другими элементами ЭВМ. Помимо указанных выше факторов производительность МПр зависит от технологии обработки команд и данных. В составе современных МПр имеются несколько исполнительных устройств. Это позволяет одновременно обрабатывать несколько инструкций. Обработка ведется в так называемом конвейерном режиме. Для повышения эффективности заполняемости конвейеров предусмотрен механизм предсказания того, какая инструкция должна обрабатываться следующей. Шины В микропроцессорных системах передача информации между отдельными устройствами осуществляется по шинам. Применение шинной концепции позволяет без значительного усложнения внутренних связей расширять конфигурацию ПЭВМ. Шина - это среда передачи сигналов, к которой могут параллельно подключаться несколько компонентов вычислительной системы. Конструктивно шина может выглядеть как совокупность проводящих дорожек, вытравленных на плате, или иметь вид ленточного кабеля. Помимо этого шина включает в себя специальные электронные схемы, с помощью которых данные выводятся с устройства на шину или снимаются с нее. В зависимости от назначения передаваемой информации в системной шине выделяют шины данных, адреса и управляющую шину. Шину данных образует группа линий, предназначенных для передачи данных между отдельными устройствами ПЭВМ. Число линий в группе называется шириной (разрядностью) шины данных, причем каждая линия служит для переноса одного бита информации. Чем шире шина данных, тем выше потенциальная производительность системы. Если ширина шины меньше разрядности МПр, то говорят о мультиплексной шине. Такие шины применяются для уменьшения числа выводов микросхем, которые соединяются с шиной данных. С помощью другой группы линий осуществляется передача адресной информации. В процессе каждой записи или считывания данных МПр должен сообщать, из какого адреса он хотел бы считать данные или в какой адрес их записать. Для распределения информации, проходящей через шину данных, по определенным адресам памяти и предназначена адресная шина. Ее ширина (разрядность) определяет максимальный объем адресуемой МПр памяти, который составляет 2N, где N - количество адресных линий. Шину управления образуют линии, предназначенные для передачи управляющих сигналов. Основное ее назначение заключается в определении устройств, которые должны участвовать в данный момент в процессе обмена информацией, и блокировке доступа к шине остальных устройств. В первых компьютерах системная шина являлась продолжением (расширением) шины МПр (например i8088) и работала на его тактовой частоте. Когда тактовая частота МПр превысила 10-12 Мгц и число используемых внешних устройств выросло, возникла потребность в настоящей системной шине, которая позволяла бы организовывать обмен информацией между устройствами, скорость работы которых существенно различалась. В основу ее создания положен принцип локальных шин, по каждой из которых производился обмен либо с конкретными «быстрыми» устройствами (память, видеоадаптер), либо с классом «медленных» устройств. Память Персональные ЭВМ используют три вида памяти: постоянную, оперативную и внешнюю. Последняя относится обычно к внешним устройствам. Постоянная память, или постоянное запоминающее устройство (ПЗУ), - это место, где хранится такая информация, которая не должна меняться в ходе выполнения МПр программы. В литературе она обычно фигурирует под аббревиатурой ROM (Read Only Memory), указывающей на то, что обеспечиваются только режимы считывания и хранения. Постоянная память обладает свойством энергонезависимости, то есть способностью сохранять информацию и при отключенном питании. К такой информации относятся наборы программ и данных базовой системы ввода-вывода (BIOS), а именно: программы ввода-вывода, благодаря которым операционная система и прикладные программы могут взаимодействовать с различными устройствами как самого компьютера, так и подключенными к нему, программу тестирования при включении питания компьютера и программу начального загрузчика, необходимую для загрузки операционной системы с соответствующего накопителя. Оперативная память, или оперативное запоминающее устройство (ОЗУ), допускает изменение своего содержимого в ходе выполнения МПр вычислительных операций, так как она предназначена для хранения текущей информации. Этот вид памяти обеспечивает режимы записи, считывания и хранения информации (выполняемых программ, исходных данных). Доступ может осуществляться в любой момент времени к произвольно выбранной ячейке, поэтому оперативную память называют также памятью с произвольной выборкой RAM (Random Access Memory). Для построения запоминающих устройств такого типа применяют микросхемы статической и динамической памяти. В первом случае в качестве элементарной ячейки памяти используется статический триггер, который может находиться либо в возбужденном состоянии, соответствующем запоминанию единицы, либо в сброшенном, означающем хранение нуля. Состояние триггера не изменяется, если в нем не запоминаются новые данные или не прерывается подвод питания. Статический вид памяти обладает высоким быстродействием, но имеет существенный недостаток, который заключается в относительно высоком энергопотреблении. Поэтому статическая память используется в самых ”узких” местах микропроцессорной системы, например для организации кэш-памяти, а для ОЗУ применяют микросхемы динамической памяти.. Каждый бит динамической памяти представляется в виде наличия (или отсутствия) заряда на конденсаторе, образованном в полупроводниковом кристалле. Так как время хранения заряда ограничено (из-за явления стекания заряда), то необходимо периодическое восстановление записанной информации, которое выполняется в циклах регенерации. Регенерация заключается в последовательном считывании содержимого ОЗУ. В процессе считывания данных микросхема ОЗУ обеспечивает их автоматическую перезапись по тем же адресам. В результате во всех конденсаторах, где хранятся единицы, восстанавливаются полные заряды, а где хранятся нули, заряд по-прежнему отсутствует. Операции разрядки-перезарядки занимают определенное время, что отражается на скорости работы динамической памяти. Кэш-память. Большинство элементов, на которых построен МПр, функционируют примерно так же, как и ячейки статической памяти. Поэтому их быстродействие существенно вы- ше, чем элементов RAM. Такая ситуация приводит к существенному снижению производительности системы. Поэтому к шине МПр подключается кэш-память - область сверхоперативной памяти, выполненная на микросхемах статической памяти с временем доступа. Блок информации (программные конструкции, наборы данных) из оперативной памяти считывается сначала в кэш-память и уже из нее считывается процессором. Преимущество такого способа передачи данных заключается в том, что, во-первых, часть обращений к медленному ОЗУ заменяется на обращения к быстрой статической памяти, а во-вторых, информация из кэш-памяти поступает по быстродействующей шине. Помимо описанной выше кэшпамяти, называемой внешней, в состав процессоров, работающих с умножением внешней тактовой частоты, включают еще внутреннюю кэш-память (или кэш-память первого уровня) емкостью 16 и более Кбайт. Так как внутренние функциональные узлы подобных МПр используют умноженную тактовую частоту, а внешняя кэш-память - обычную, то часть информации считывается из внешней во внутреннюю кэш-память. При этом последняя обычно разделена на две секции: для данных и для команд, что позволяет исполнительным устройствам МПр быстрее отыскивать нужную информацию. Взаимодействие центральных и периферийных устройств ПЭВМ Все периферийные устройства должны коммутироваться с центральной частью компьютера таким образом, чтобы вводимые данные могли корректно поступать в МПр, а информация, поступающая на устройства вывода, должна быть предварительно обработана, чтобы соответствовать спецификации этих устройств. Иначе говоря, обмен данными между устройствами возможен только в случае совместимости их интерфейсов. Под интерфейсом понимают совокупность различных характеристик какого-либо устройства, определяющих организацию обмена информацией между ним и МПр. Это электрические и временные параметры, набор управляющих сигналов, протокол обмена данными и конструктивные особенности подключения. В случае несовместимости интерфейсов используют контроллеры, в состав которых входят схемы сопряжения и регистры, используемые для временного хранения передаваемой информации (порты ввода-вывода). В контроллерах ПУ реализованы два интерфейса: системной шины и ПУ. Первый, единый для всех контроллеров ПУ, включает шину данных, шину адреса и линии для передачи управляющих сигналов. Второй определяется спецификой функционирования конкретного ПУ и включает линии для передачи данных и линии для передачи сигналов управления. Данные между контроллером и ПУ могут передаваться в параллельном коде (параллельный интерфейс) и последовательном (последовательный интерфейс ПУ). Термин “последовательный” означает, что связь осуществляется по одиночному проводнику (он может быть электрическим, оптическим, радиочастотным), а биты передаются последовательно, один за другим. Последовательная связь функционирует в асинхронном режиме, то есть при передаче данных специальный синхронизирующий сигнал не используется, и отдельные символы могут передаваться с произвольными временными интервалами - так же, как, например, при вводе данных с клавиатуры. Каждому символу должен предшествовать стандартный стартовый сигнал, а заканчиваться его передача должна “стоповым” сигналом. Назначение стартового сигнала - сообщить принимающему устройству, что следующие 8 бит представляют собой байт данных. Затем передаются один или два стоповых бита, сигнализирующие об окончании его передачи. В принимающем устройстве данные разделяются по появлению стартовых и стоповых сигналов, а не по моменту их передачи. В параллельных портах для одновременной передачи байта данных используются 8 сигнальных линий. При взаимодействии МПр и периферийных устройств важную роль играют прерывания. ПУ вырабатывает специальный сигнал (запроса прерывания) в момент его готовности для обмена данных с МПр. Так как прерывания могут возникать одновременно от различных устройств, то каждое из них имеет свой приоритет. Для управления очередностью и анализа возможностей выполнения прерываний в компьютере предусмотрено специальное устройство - контроллер прерываний. При получении запроса от ПУ по одной из линий управляющей шины контроллер прерываний выдает в МПр сигнал прерывания (если оно должно быть обработано). Последний приостанвливает выполнение текущего задания и запрашивает, на каком устройстве произошло прерывание. Получив по шине данных из контроллера прерываний номер прерывания, МПр использует его как индекс для выборки из таблицы адреса программы - обработчика данного прерывания, под управлением которой осуществляется операция ввода-вывода. После того, как прерывание будет обработано МПр, выполнение текущих операций будет продолжено. Основная программа Программа обработки прерывания Внешние запросы из шины управления МПр Номер Контроллер прерывания прерываний Основная программа С середины 2000 годов для подключения периферийных устройств широко используется интерфейс USB (универсальная последовательная шина). Периферийные устройства, с поддержкой USB при подключении к компьютеру автоматически распознаются системой, и готовы к работе без вмешательства пользователя. Устройства с небольшим энергопотреблением (до 500мА) могут не иметь своего блока питания и запитываться непосредственно от шины USB. USB устраняет проблему ограничения числа подключаемых устройств. При использовании USB с компьютером может одновременно работать до 127 устройств. USB позволяет выполнять "горячее" (оперативное) подключение. При этом не требуется предварительное выключение компьютера, затем подключение устройства, перезагрузка компьютера и настройка установленных периферийных устройств. Для отключения периферийного устройства не требуется выполнять процедуру, обратную описанной. Проще говоря, USB позволяет фактически реализовать все преимущества современной технологии "plug and play" ("включай и работай"). При подключении периферийного устройства вырабатывается аппаратное прерывание и управление получает драйвер контроллера USB , который на сегодняшний день интегрирован во все выпускаемые чипсеты материнских плат. Он опрашивает устройство и получает от него идентификационную информацию, исходя из которой управление передается драйверу, обслуживающему данный тип устройств. Внешние устройства персональных ЭВМ. Клавиатура. Клавиатура представляет собой набор переключателей, объединенных в матрицу. При нажатии на клавишу, контроллер, установленный в самой клавиатуре, определяет координаты нажатой клавиши и в виде скэн-кода и передает их на системную плату. Скэн-код это однобайтное число, представляющее идентификационный номер, присвоенный каждой клавише. На системной плате сигнал поступает в специальный контроллер, к которому подключена клавиатура. Он инициирует соответствующее прерывание, МПр прерыва- ет работу и выполняет специальную программу, анализирующую скэн-код. Программа хранится в ПЗУ. Обработка заключается в преобразовании скэн-кода в код символа (коды ASCII или расширенные коды). В клавиатуре имеется буфер памяти емкостью 16 байт, в который заносятся данные при слишком быстрых или одновременных нажатиях на клавиши. Сканеры. Сканерами называются устройства для анализа исходного изображения (оригинала), его оцифровки и сохранения с целью последующей обработки и вывода. Следует подчеркнуть, что сканер оцифровывает графическую информацию, даже если такой информацией является обычный текст. Распознавание символьной информации производится программным путем с помощью программ оптического распознавания образов (начертания) символов текста. 5 Примерная схема сканера направление сканирования представлена на рисунке. в блок Все элементы, показанные 2 обна схеме, имеют линейный работки размер в направлении, перпендикулярном плоскости 3сигнала 1 чертежа, равный или превышающий ширину полосы сканирования. Источник света 1 через систему зеркал 4 подсвечивает оригинал 4. Схема устройства сканера. Цилиндрическая линза 2 фокусирует изображение в виде узкой линии с переменной по ширине полосы сканирования освещенностью и подает его на специальное устройство 3, которое называется прибором с зарядовой связью (ПЗС). ПЗС представляет собой полупроводниковую микросхему, содержащую множество светочувствительных ячеек, которые преобразуют падающий на них свет в электрические заряды. Величина накопленного в ячейке заряда связана с освещенностью данной ячейки. Чем светлее данная область изображения, тем больший заряд накапливается в соответствующих ячейках ПЗС и наоборот. Величина электрического заряда может меняться непрерывно, т. е. это аналоговая величина. Для преобразования ее в цифровую форму в сканерах используют аналого-цифровые преобразователи. Количество светочувствительных элементов в ПЗС определяет горизонтальную разрешающую способность (разрешение) сканера. Так, например, если в спецификации сканера указано «оптическое разрешение 2500 dрi (точек/дюйм)», то это означает, что ПЭСлинейка способна зафиксировать 2500 пикселов на дюйм в горизонтальном направлении (короткая сторона планшетного сканера).У сканера есть и вертикальная разрешающая способность. При пошаговом перемещении оптического блока по вертикали (вдоль длинной стороны стола сканера), ПЗС-линейка за каждый шаг фиксирует одну строку. Количество строк на один дюйм, зафиксированных по вертикали, называется вертикальным разрешением. Таким образом, число пикселов на дюйм, которое ПЗС-линейка может фиксировать поперек направления перемещения оптического блока (фактически, определяется числом фоточувствительных элементов), является горизонтальным разрешением. Число раз, которое оптический блок останавливается, чтобы ПЗС-линейка могла зафиксировать очередную строку пикселов, является вертикальным разрешением. Именно поэтому в спецификации сканера часто указывается такое значение разрешения, как, например, 600х1200 dрi. Первое число — это горизонтальное разрешение, а второе - вертикальное разрешение. Цветные сканеры отличаются от черно-белых наличием отдельных оптических систем для основных цветов. Манипулятор мышь. Многие действия при работе на ПЭВМ нецелесообразно выполнять только с помощью клавиатуры. Особенностью многих WINDOWS приложений является активное использование манипулятора мышь для указания какого-либо объекта на экране монитора, его передвижения, изменения размеров и других функций. Первый манипулятор «мышь» был создан Дагом Энгельбертом в 1964-м году для перемещения по экрану дисплея курсора и различных объектов. Однако широкого применения он не получил. Только в 1983г. компания Apple начала серийный выпуск персональных компьютеров с интерфейсом, изначально ориентированным на применение собственной оригинальной разработки – мыши. Для IBM-совместимых компьютеров мышь стала применяться с 1990г., когда появилась оболочка WINDOWS 3.0. Почти все мыши снабжены двумя или тремя кнопками, которые программируются для выполнения различных действий. Принцип действия наиболее распространенных оптико-механических манипуляторов показан на рисунке. Покрытый резиной металлический шар 1 при качении без проскальзывания по гладкой поверхности (обычно по специальному коврику для мыши) передает вращение за счет сил трения двум роликам 2 и 4. Оси вращения этих роликов взаимно перпендикулярны, что позволяет раз4 26 ложить угловую скорость вращения 7 3 шара на две составляющие: фронтальную, которая передается на ролик 2 при движении шара в плоскости 2 5 1 чертежа, и боковую, которая передается на ролик 4 при движении перпендикулярно плоскости чертежа. На оси Принцип действия оптикокаждого ролика имеется стробоскопимеханической мыши. ческий диск с одинаковыми отверстиями, расположенными с равным шагом по краю диска. На рис.6 диск на фронтальном ролике обозначен позицией 3, а на боковом - 5. Каждый диск имеет по две оптических системы, состоящих из миниатюрного источника света 6 и фотоприемника 7. Луч света через отверстия в диске попадают на фотоприемник, всякий раз, когда ось луча совмещается с центром отверстия. Ось луча второй оптической системы в этот момент перекрыта диском. На рис. 6 вторая оптическая система для бокового диска и обе системы для фронтального диска не показаны, чтобы не загромождать рисунок. По частоте электрических импульсов, генерируемых фотоприемниками можно определить скорость движения мыши, а по порядку их следования - направление перемещения мыши. Электрические импульсы, вместе с сигналами от нажатия кнопок мыши обрабатываются ее электронной схемой и передаются в компьютер, где с помощью специальной системной программы - драйвера мыши, пересчитываются в линейное перемещение указателя мыши на экране монитора. Принцип работы оптической мыши еще проще – используются только оптические пары, а роль стробоскопических дисков играет рисунок в виде мелкой сетки на коврике, линии которой, прерывая световой поток, позволяют мыши определить параметры своего движения. Монитор. Монитор предназначен для визуального отображения информации на экране электроннолучевой трубки. Любое изображение на экране состоит из множества дискретных точек люминофора, называемых пикселами. Электронный луч периодически сканирует весь экран, образуя на нем близколежащие строки развертки. Этот шаблон называется растром. По мере движения луча по строкам видеосигнал, подаваемый на модулятор, изменяет яркость светового пятна и образует изображение. Принцип формирования растра у цветного монитора такой же, как и у монохромного. В основу получения цветного изображения положены два свойства цветового зрения: трехкомпонентность цветового восприятия. Это означает, что все цвета могут быть получены путем смешения трех световых потоков – красного, зеленого и синего. Цветовой оттенок результирующей смеси зависит только от соотношения интенсивностей смешиваемых цветов. Поэтому для формирования цветного изображения используется метод аддитивного смешения цветов. Пространственное усреднение цвета. Суть заключается в следующем. Если на рисунке имеются близко расположенные цветные детали, то с определенного расстояния мы не можем идентифицировать их цвета. Вся группа будет казаться окрашенной в один цвет, оттенок которого определяется на основании первого свойства. Этот факт позволяет формировать цвет одного пиксела из цветов трех рядом расположенных люминофорных зерен. Таким образом, на экран цветного монитора нанесен люминофор трех основных цветов: красного, зеленого и синего, и имеются 3 электронные пушки, которые должны испускать электроны на соответствующие зерна люминофора. Чтобы электроны попадали в пятна соответствующего цвета, в ЭЛТ устанавливают специальные фокусирующие сетки: теневые маски или апертурные решетки. Основные характеристики мониторов. Размер экрана - расстояние в дюймах или миллиметрах, измеряемое по диагонали ЭЛТ, определяющее ее полезную видимую область. В силу конструктивных особенностей монитора размер экрана несколько меньше фактического размера ЭЛТ. Размер зерна (шаг точек) – расстояние в мм между двумя соседними точками люминофора одного цвета. Эта характеристика при прочих равных условиях определяет четкость изображения. Чем меньше зерно, тем четче изображение. В настоящее время этот размер для различных моделей мониторов располагается в диапазоне от 0,28 до 0,24мм. Разрешение – число точек по горизонтали на число линий (точек) по вертикали. Частота кадров (регенерации) – скорость, с которой происходит воспроизведение кадра или полное обновление экрана в единицу времени. Указывается в Гц. Эта характеристика в совокупности с параметрами видеоадаптера предопределяет мерцание изображения для всех режимов работы монитора. Чем выше частота кадров, тем устойчивее изображение. Поэтому на нижнее значение частоты накладывается ограничение - она не должна быть ниже 85Гц. Полоса пропускания – диапазон частот в МГц, в пределах которого гарантирована устойчивая работа монитора. Полоса пропускания также может быть представлена как быстродействие монитора, с которым он способен воспринять графическую информацию в условиях воспроизведения изображения с максимальным разрешением, и рассчитана по формуле W H max Vmax Fmax , где H max - максимальное разрешение по горизонтали, V max максимальное разрешение по вертикали, Fmax - максимальная частота кадров. Видеоадаптеры. Поддерживает работу монитора специальное устройство, называемое видеоадаптером. Основными его компонентами являются видеоконтроллер, видеопамять и блок цифроаналоговых преобразователей. Видеоконтроллер отвечает за вывод изображения из видеопамяти на экран, регенерацию ее содержимого, формирование сигналов развертки для монитора и обработку запросов МПр. Блок цифро-аналоговых преобразователей служит для преобразования результирующего потока данных, формируемого видеоконтроллером, в уровни интенсивности цвета, подаваемые на монитор. Все современные мониторы используют аналоговый видеосигнал, по- этому возможный диапазон цветности изображения определяется только параметрами этого блока. Большинство преобразователей имеют разрядность 8 бит – по 256 уровней яркости на каждый цвет, что в сумме дает 16,7 млн. цветовых оттенков. Видеопамять служит для хранения изображения. От ее объема зависит максимально возможное полное разрешение видеоадаптера – A*B*C, где А – число точек по горизонтали, В – по вертикали и С – количество возможных цветов каждой точки. Например, для разрешения 640*480*16 достаточно 256 К, для 800*600*256 – 512 К, для 1024*768*65536 – 2 М и т.д. Поскольку для хранения цветов отводится целое число разрядов, количество цветовых оттенков всегда является степенью двойки (16 цветов – 4 разряда на пиксел, 256 – 8 разрядов, 64К – 16 и т.д.). Принтеры. Большинство применяемых принтеров используют растровую графику. Растром в полиграфии называют цветное или черно-белое изображение, состоящее из мельчайших точек красителя, расположенных с постоянным шагом и образующих регулярную структуру. Растровое строение черно-белой газетной иллюстрации видно невооруженным глазом из-за большого шага между точками типографской краски. Чтобы заметить растровое строение высококачественного цветного отпечатка необходимо уже использование лупы с 2-х или лучше 4-х кратным увеличением. Оттенки серого цвета на черно-белых изображениях получаются за счет изменения размеров точек черной типографской краски при неизменном шаге между точками. Чем крупнее точки, тем более темным кажется цвет. На цветных изображениях используется тот же принцип, но растр образуют точки уже не одного цвета, а нескольких основных цветов. Основными цветами называют такой минимальный набор цветов, который может передать при их смешении в разных пропорциях всю цветовую гамму, включая белый и черный. Примером может служить сочетание голубого (Cyan), пурпурного (Magenta) и желтого (Yellow) цветов. К этой палитре обычно добавляют черный (BlacK) цвет для усиления насыщенности изображения. Рассмотрим три наиболее распространенные технологии получения изображения на бумаге. Матричные принтеры. Изображение получается как совокупность точек, образующихся на бумаге как следы от удара по красящей ленте иголок печатающей головки. Количество иголок в печатающей головке может быть разным, но наибольшее распространение 9 получили головки с 9 и 24 иглами. При 7 8 их одновременном ударе на бумаге отпечатывается матрица с элементами в виде точек, из которых и строится изображение. На рисунке показан принцип действия матричной печати. Бумага 1 протягивается между подающим резиновым валиком 2 и прижимным валиком 9. Кра3 сящая лента 3 на рисунке показана своим 2 2 1 4 5 6 поперечным сечением. Чтобы не загро2 мождать рисунок, на нем показана толь Принцип действия матричного ко одна игла, а ее размеры сильно увелипринтера. чены. Игла 8 удерживается возвратной пружиной 7, магнитный сердечник 6 при этом входит в катушку электромагнита 5. При подаче импульсного напряжения определенной полярности на обмотку катушки, в ней возникает магнитное поле, взаимодействующее с магнитным полем сердечника и выталкивающее его из катушки вместе с иглой, которая ударяет по бумаге через красящую ленту. Головка движется с малым шагом в направлении перпендикулярном плоскости рисунка, печатая следующий элемент изображения на строке, до тех пор, пока не будет распечатана вся строка. Далее вал 2 проворачивается на требуемый угол и печатается следующая строка. Принтеры, поддерживающие цветную печать, снабжены цветной красящей лентой 3 и механизмом вертикального перемещения ленты, с тем, чтобы под иглами головки находился участок ленты требуемого цвета. Матричные принтеры обеспечивают невысокие затраты на печать при среднем качестве вывода символьных данных и низком качестве графической информации. Струйные принтеры. В одно и то же время независимо друг от друга HP и Canon разработали технологию термической печати с помощью чернил. Они вывели на рынок свои разработки под марками IncJet — термоструйная (НР) и BubbleJet — пузырьковоструйная (Canon). Несмотря на то, что скорость и качество печати с тех пор существенно выросли, а все современные принтеры печатают теперь в цвете, основополагающие принципы печати с течением времени почти не изменились. Наряду с упомянутыми термоструйными технологиями используется и еще одна механическая технология печати, основанная на применении пьеэоэлементов. Ее можно встретить лишь в принтерах фирмы Epson. Современный струйный принтер работает следующим образом: шаговый мотор протягивает через принтер бумагу; одновременно с этим поперек листа в горизонтальном направлении движется печатающая головка, приводимая в движение тем же шаговым мотором. Через микроотверстия, которые называются соплами, на бумагу выпрыскиваются чернила. В результате согласованного движения бумаги и печатающей головки, в нужное время и в нужное место «выстреливающей» строго определенное количество капель, на бумаге возникает изображение. Рассмотрим, чем отличается термическая печать от пьезоэлектрической. При термической печати чернила из сопла выталкиваются за счет быстрого нагревания чернил. Для этого в канале каждого сопла имеется термоэлемент (резистор) размером примерно 30х30 мкм. Когда к нему прикладывается напряжение, он моментально разогревается до температуры примерно 300°С. Это приводит к возникновению парового пузырька в канале сопла и скачкообразному повышению давления в нем, которое можно сравнить с микровзрывом. Он-то и выбрасывает из сопла каплю чернил. После того как паровой пузырек вытолкнул каплю из сопла, она со скоростью 54 км/ч устремляется на бумагу. В этот момент напряжение перестает подаваться на термоэлемент, в канале сопла возникает разрежение, которое засасывает очередную порцию чернил, выстреливаемую в следующий момент. Весь процесс — от прикладывания напряжения к термоэлементу до засасывания очередной порции чернил и готовности к следующему «выстрелу» — длится менее 80 микросекунд. Величина этого промежутка и определяет скорость печати головки, то есть максимальное количество капель, выдаваемых ею за единицу времени. В 1984 году, появились первые принтеры Epson на пьезоэлементах. Электромеханические печатающие головки на пьезоэлементах имеют сложную конструкцию и требуют больших затрат при изготовлении, чем термоструйные, производство которых из кремниевых пластин обходится намного дешевле. Впрочем, эти затраты оправдываются большим сроком эксплуатации. Сегодня практически только Epson производит принтеры с печатающими головками на пьезокристаллах. Они не нагревают чернила, следовательно, внутри сопел не образуется «нагар», как это происходит при термической печати. Фактически пьезоголовку можно сравнить с миниатюрным механическим насосом. Из самого названия становится понятно, что главную роль в печатающей головке данного типа играют пьезокристаллы. Они имеют свойство деформироваться при прикладывании к ним электрического напряжения. Механическая деформация кристалла используется для создания в сопле давления, необходимого для выталкивания чернил. В каждое сопло устанавливается пьезокристалл в форме диска. В зависимости от полярности (плюс или минус) приложенного напряжения этот диск изгибается либо в одном, либо в другом направлении. При этом пьезокристалл давит на мембрану, которая, в свою очередь, выталкивает из сопла чернила. Процесс деформации длится всего пять микросекунд, что позволяет добиться очень высокой скорострельности» печатающей головки и производительности принтера в целом. Лазерные принтеры. В отличие от струйных принтеров, принимающих и печатающих изображение построчно, лазерный принтер предварительно готовит к печати сразу всю страницу. Вот почему он должен иметь оперативную память большого объема. Когда вы посылаете на печать рисунок, он сначала «переводится» на нужный язык, используемый принтером. Затем принтер преобразовывает полученные данные в растровое изображение, и выводит на печать. За перенос тонера на бумагу отвечает светочувствительный барабан (фотобарабан), поверхность которого покрыта слоем специального материала, например селеном. Предварительно при помощи коротрона или вала первичной зарядки он заряжается отрицательным зарядом. Чтобы обеспечить первичный заряд фотобарабана, к коротрону прикладывается высокое напряжение, в результате чего вокруг него возникает мощное поле, сообщающее заряд. Использование вместо коротронов вала первичной зарядки позволяет исключить необходимость создания полей высокого напряжения, что предотвращает возникновение ядовитого озона. Такое решение снижает срок службы фотобарабана, поскольку вал зарядки должен входить с ним в контакт, тем самым изнашивая поверхность. Селен обладает следующей особенностью: там, куда попадает луч света, рисующий изображение, заряд нейтрализуется, причем граница между заряженными и нейтрализованными участками остается достаточно резкой. Источниками излучения являются светодиоды, или лазер, который направляет свой луч на фотобарабан через призму и систему зеркал, таким образом формируя изображение. Тонер, используемый в лазерных принтерах, содержит частички железа и также имеет отрицательный заряд. Он переносится на фотобарабан магнитным валиком и прилипает только к нейтрализованным участкам, как бы проявляя невидимое изображение. Для того чтобы изображение перенеслось на бумагу, она должна иметь положительный заряд. Его сообщает листу бумаги заряжающий вал, находящийся под напряжением. После этого при вращении фотобарабана на положительно заряженный лист бумаги переносится отрицательно заряженный тонер и формируется изображение. Однако процесс печати еще не завершен, так как тонер не закреплен на листе. Процесс фиксации происходит в блоке термофиксации, где бумага подвергается кратковременному нагреву до температуры около 200°С. При этом смолы, содержащиеся в тонере, расплавляются и надежно прилипают к листу. Тончайшие волоски, через которые проходит бумага на выходе из принтера, снимают с нее остаточный заряд и нейтрализуют листы, чтобы они не слипались друг с другом. Цветные лазерные принтеры имеют конструкцию (несмотря на некоторое сходство) намного сложнее, чем черно-белые. Разница заключается в том, что цветной принтер работает с четырьмя цветами, а это значит, что для каждого из них должен быть как минимум один картридж. Соответственно фотобарабан или лента переноса освещаются четырежды по одному разу для каждого цвета. Внешние запоминающие устройства. Внешние запоминающие устройства (ВЗУ) определяют один из основных ресурсов компьютера - объем внешней памяти для длительного хранения программного обеспечения и данных. Поскольку практически вся информация хранится и накапливается в этих устройствах, то их называют накопителями. К основным характеристикам ВЗУ обычно относят: 1. максимальный объем хранимой информации; 2. скорость передачи информации; 3. среднее или максимальное время доступа. Все эти характеристики во многом определяются одной – плотностью записи информации на магнитном носителе. Накопители на жестких и гибких магнитных дисках. Первая в истории дисковая система хранения данных - RАМАС (Random Ассеss Меthоd of Ассоunting and Control) - была анонсирована IВМ 13 сентября 1956 года. На 50 дисках диаметром 24 дюйма можно было хранить 5 Мб данных! Время доступа составляло 1с. Принцип действия накопителей на магнитных дисках (НМД) основан на магнитной записи - воспроизведении сигнала на магнитном носителе. Накопитель на жестких магнитных дисках - это пакет дисков (1-5), которые представляют собой керамические, стеклянные или алюминиевые (чаще всего) пластины, на которые нанесен слой ферромагнетика (феррит бария, изотропный оксид бария, сплавы хрома, кобальт и т.п.). Любой ферромагнетик отличается тем, что, попав во внешнее магнитное поле, намагничивается и становится магнитом. Если учесть, что магнитное поле имеет полярность, соответствующую направлению движения тока, то, подавая на головку то положительное, то отрицательное напряжение, можно создавать точечные участки с магнитными полями различной полярности (домены), которые будут соответствовать единицам или нулям. Запись данных на жесткий диск компьютера осуществляется следующим образом. Контроллер жесткого диска получает с системной шины очередную порцию байт и делит их на отдельные биты. Биты записываются последовательно путем подачи на головку чтения-записи положительного (для 1) или отрицательного (для 0) напряжения, в результате чего на диске появляются намагниченные зоны той или иной полярности. Обратная операция — чтение. При чтении головка отключается от внешнего питания, а проносящиеся с большой скоростью мимо нее магнитные домены в точном соответствии с законом Фарадея возбуждают в ней слабый положительный или отрицательный ток, который интерпретируется контроллером жесткого диска или как единица, или как ноль. Дальше контроллер пакует последовательность единиц и нулей в группы и передает на шину порциями по 16 бит (IDE-шина – 16-битная). На рисунке представлена упрощенная кинематическая схема механической части НЖМД. В герметичном металлическом корпусе (на рис. не показан) с большой скоростью вращается пакет дисков 1. Головки чтения - записи 2 закреплены на подвижном позиционере 3, который вращается вокруг оси 5. Балансир 4 обеспечивает динамическую балансировку коромысла с головками, необходимую для минимизации времени перемещения головок. Кроме того, балансир является частью электромагнитной системы точного позиционирования головок, которая обеспечивает их расположение на треА буемом цилиндре - совокупности пространства на всех дисках, доступного для чтения - записи без перемещения 2 головок. 3 Цилиндр — условный термин. На са1 мом деле никаких цилиндров, как реальных физических объектов, не су1 Вид А 5 ществует. Существуют только дорожки. Дорожка диска (track) — это про2 4 сто определенного радиуса окружность, состоящая из расположенных на одинаковом расстоянии друг возле друга магнитных доменов. У 3,5— Схема устройства НЖМД. дюймовой дискеты 80 дорожек, у жесткого диска во много раз больше. Как получаются дорожки? В дисководе 3,5— дюймовой дискеты это делается следующим образом. Блок головок (а их у дискетного дисковода— две) перемещается так называемым шаговым двигателем, расстояние между шагами строго фиксированное. Эти шаги и определяют дорожки дискеты. С жестким диском все сложнее. Один из критериев оценки жесткого диска — поверхностная плотность записи, которая определяется путем перемножения двух величин количества дорожек на дюйм (Тгасk Рег Inch — ТРI) и количества битов (магнитных доменов) на дюйм дорожки (Вits Рег Inch — ВРI) — и выражается в Мбит/дюйм2 или Гбит/дюйм2. TPI современных дисков так велика (порядка 30 тыс. дорожек на дюйм и больше, то есть дорожки расположены очень близко друг от друга), что позиционирование головок над поверхностью диска при помощи шагового двигателя практически невозможно. Для наведения головки на конкретную дорожку применяется другой способ — механизм обратной связи, заключающийся в том, что в какой-то области диска записана специальная информация (сервокоды) о номерах дорожек. Существуют различные варианты реализации этого механизма. Например, «вспомогательный клин», когда сервокоды записаны в специальных «клиньях», как бы врезанных в дорожки. Наиболее быстрый способ построения обратной связи - «специализированный диск», когда поверхность одного из дисков полностью отдается под сервокоды. В этом случае одна из головок постоянно сообщает контроллеру информацию о том, какая дорожка под ней находится. Дорожки дисков, из которых состоит “пакет”, помещенных в блок головок и цилиндров (Head Disk Assembly - HDA), имеют свои номера, и все дорожки с одинаковым номером называются цилиндром. Головки чтения / записи также нумеруются; нумерация начинается с самой нижней. Например, блок, в котором смонтированы четыре диска, имеет восемь головок — по две для каждого диска (для нижней и верхней сторон). Нижняя головка самого нижнего диска имеет номер 0, верхняя головка этого же диска — номер 1, нижняя головка следующего диска имеет номер 2 и т. д. Верхняя головка самого верхнего диска будет иметь номер 7, а если в этом блоке используется система обратной связи со «специализированным диском», то эта головка будет называться сервоголовкой, поскольку будет обслуживать поверхность с записанными сервокодами. Сервокоды записываются в заводских условиях, и если они будут каким-либо образом повреждены, это приведет к невосстановимой потере соответствующих дорожек. Каждая дорожка диска разбивается на сектора. Опять же для простоты рас смотрим 3,5— дюймовую дискету. Если мысленно разбить ее исходящими из центра лучами на 18 равных сегментов, то тем самым каждая дорожка окажется поделенной на 18 равных частей, которые называются секторами. Емкость одного сектора — величина постоянная. Все диски всех компьютеров имеют полезную емкость одного сектора, равную 512 байт. Реальная емкость одного сектора несколько больше, чем 512 байт, поскольку программа форматирования в начале каждого сектора записывает его заголовок, или префикс (header или prefix), а в конце — прицеп, или суффикс (trailer или suffix). Префикс используется для того, чтобы головка точно определяла начало сектора и его номер, а суффикс — для хранения контрольной суммы, позволяющей проверять целостность данных в секторе. Общая размерность сектора вместе с заголовком и прицепом (которые создаются при форматировании) равна 571 байт. Следует отметить, что сектора являются элементарными ячейками хранения данных. Приводы CD и DVD. Первоначально приводы CD служили только для чтения информации, записанной на сменных компактдисках. Их аббревиатура (CD-ROM) взята по аналогии с обозначением части памяти компьютера, доступной только для чтения информации. Первые компакт-диски создавались для цифровой записи музыкальных произведений. Это обстоятельство определило такие важные характеристики компакт-дисков, как их размер, метод кодирования данных, использование единой спиральной дорожки и скорость вращения, которые должны обеспечивать скорость передачи данных около 150 Кбайт/с для получения качественного стереозвучания. Это число и принято за “единичную” (1x) скорость. Если время звучания аудиокомпакт-диска, который создавался в расчете на запись 9-й симфонии Бетховена длительностью 72-73 минуты, “перевести” в байты, то получится примерно 640 Мбайт (150*72*60/1024=640). Компакт-диск представляет собой диск диаметром 120 мм, выполненный из прозрачной пластмассы (поликарбоната) с тонким промежуточным слоем зеркально отражающего свет материала (алюминия). Цифровая информация на мастер-диске наносится за один технологический сеанс и в последствии изменена быть не может. Для записи используется лазер, луч которого выжигает в зеркальном слое отдельные участки (питы), которые соответствуют логическим 0, и оставляет нетронутыми участки, соответствующие 1. Ширина впадин составляет 0,83 мкм, а шаг дорожки – 1,6 мкм. С мастер-диска делают матрицу, которую затем используют для тиражирования дисков. Считывание информации осуществляется также при помощи лазерного луча (меньшей мощности), который либо отражается от зеркальных участков и регистрируется фотодетектором, либо, попадая во впадины, рассеивается. Приводы CD-ROM монтируются в отсек стандартного размера на передней панели системного блока. Своего собственного контроллера они не имеют и подключаются к общему с НЖМД интерфейсному кабелю. Обработка данных производится программным путем с помощью соответствующего драйвера. Помимо обычных компакт-дисков используются однократно записываемые (CD-R) и перезаписываемые (CD-RW) компакт-диски. В первом случае на поликарбонатную основу наносится активный записываемый слой. В настоящее время для его изготовления используются лишь два материала: красители цианин и фталоцианин. Следующий слой является отражающим и, как правило, он выполняется из золота или серебра, т.к. у этих материалов теплопроводность ниже чем у алюминия. При записи CD-R краситель меняет свои свойства (темнеет) под воздействием лазерного луча, что и позволяет записать информацию. Впоследствии считывающее устройство может различать более и менее темные участки на поверхности диска, читая таким образом информацию. Технология записи CD-RW аналогична технологии получения перезаписываемых DVD (см. ниже). В последние годы в компьютерную технику стали внедряться цифровые универсальные диски – DVD (Digital Versatile Disk). Обеспечивая единый способ хранения фильмов, звукозаписей и компьютерных данных, технология DVD относится к следующему поколению технологии хранения информации на оптических компакт-дисках и в будущем, повидимому, станет общепринятым стандартом. DVD-диски получают по такой же, но несколько модифицированной, лазерной технологии. Главная особенность DVD заключается в их большой емкости (4,7 - 17 Гб). Такие цифры достигаются за счет нескольких факторов. Во-первых, в приводах DVD применяется лазер с меньшей длиной волны (вместо 780нм – 650 или 635 нм). Это дает возможность получать (и использовать) углубления меньшего размера (0,4 мкм) и меньший шаг дорожки (0,74 мкм). Получаемая поверхностная плотность записи информации позволяет располагать на одной стороне как минимум 4,7 Гб информации (DVD-5). Во-вторых, у DVD поверх основного отражающего слоя может находиться второй – полупрозрачный. Данные записываются на оба слоя. Работая на одной частоте, лазер считывает информацию с полупрозрачного слоя, работая на другой - получает данные с нижнего. В результате емкость одностороннего двухслойного возрастает до 8,5 Гб (DVD-10). В спецификациях DVD предусматривается возможность создания и использования двухсторонних дисков (DVD-10) и (DVD-18). Двусторонний диск изготавливается просто: т.к. толщина одностороннего DVD может составлять 0,6 мм, два диска соединяют тыльными сторонами. Максимальная емкость такого диска может достигать 17 Гб (DVD-18). Перезаписываемые DVD состоят из нескольких слоев: нижней пластины из поликарбоната, двух диэлектрических слоев, между которыми находится слой данных и отражателя. Слой данных, так называемый Phase-Change-материал (Ag-In-Sb-Te-легирование), под воздействием высокой температуры изменяет свое состояние от аморфного (плохо отражающего) до кристаллического (хорошо отражающего). При записи лазерный луч разогревает точечное пространство на Phase-Change-материале до температуры выше точки плавления (500 – 700С). При остывании эта область будет находиться в аморфном состоянии. Если же слой данных нагреть только до 200С, то он снова перейдет в кристаллическое состояние. Различая участки с разными коэффициентами отражения, можно считывать данные бит за битом. Если же перевести весь слой данных в кристаллическое состояние, то вся информация будет стерта. Оба диэлектрических слоя служат в качестве охлаждающего материала и предотвращают испарение. Благодаря хорошему отводу тепла после каждого импульса лазера быстро устанавливается аморфное состояние, что важно для обеспечения высокой скорости записи данных. Компьютер как программируемая система. Понятие ресурса. Понятие вычислительной системы и информационно-вычислительной системы. Работа компьютера возможна только в том случае, если существует программа, состоящая из последовательности команд процессора, описывающая последовательность действий, необходимых для достижения результата. При этом программа должна быть доступна процессору, следовательно, она должна находиться в оперативной памяти, и процессору должен быть известен адрес первой команды программы. Каким образом программа может оказаться в оперативной памяти? Она может быть записана туда с периферийного устройства, либо находиться в памяти постоянно. В зависимости от типа компьютера процесс начальной загрузки компьютера может выполняться поразному. Рассмотрим последовательность действий для типового персонального компьютера. При включении компьютера в процессоре автоматически устанавливается адрес первой команды в программе, записанной в той части оперативной памяти, информация в которой не меняется никогда, даже при выключении компьютера. Такая память называется ПЗУ- постоянное запоминающее устройство, адреса этой памяти являются частью адресов оперативной памяти. Программа, записанная в ПЗУ, предназначена для начальной инициализации компьютера и загрузки других программ с внешних устройств ввода-вывода. Она записывается с помощью специальных технических средств на заводе-изготовителе и называется BIOS. (Рис.1) Записывая на внешние устройства различные программы можно обеспечить разные виды работ одного и того же компьютера без внесения в него каких бы то изменений оборудования. Чаще всего первая программа, которая загружается с внешних устройств, предназначена для организации среды выполнения программ по требованию пользователя компьютера. Такая программа называется операционной системой. Вместо операционной системы может быть загружена любая другая программа, например, программа установки операционной системы. Эта программа служит для записи операционной системы на диск с какого-нибудь другого устройства (обычно, оптического диска) и ее настройки для управления конкретным компьютером. На один и тот же компьютер могу быть установлены различные операционные системы и даже несколько различных операционных систем. В этом случае при загрузке пользователь выбирает, какая именно операционная система будет загружена. Операционная система организует взаимодействие пользователя с компьютером, обеспечивает загрузку и выполнение одной или нескольких программ, указанных пользователем, и обеспечивает доступ этих программ к внешним устройствам, памяти и данным. Все эти элементы, а также сами выполняемые программы называются ресурсами, а сама операционная система предназначена для управления этими ресурсами. Все ресурсы можно разделить на технические и информационные. Существует две группы задач, предназначенных для решения на компьютере – выполнение большого объема вычислений и доступ к хранящейся на внешних устройствах информации больших объемов. Совокупность технических и программных средств для решения задач первой группы называют вычислительной системой, а для решения задач второй группы – информационно-вычислительной системой. Различия между этими системами заключаются в характеристиках технических средств и наборах алгоритмов выполняемых программ, в том числе и алгоритмов операционной системы. 1. Информационные ресурсы ИВС. Понятие файла и файловой системы. Файл — поименованная совокупность байтов. Файловая система — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Все виды информации в компьютере и на внешних устройствах представлены в форме двоичных чисел. Перевод символьной, графической и другой информации в форму двоичных чисел называется кодированием. Двоичные числа кодов могут иметь различный размер, однако минимально адресуемым является 8-ми разрядное двоичное число, называемое байтом. Для удобства использования байты группируются. Например, все байты кодов символов какого-то документа. Такие группы байтов образуют единицы хранения. Размещенные на внешних устройствах эти группы называются файлами. Файлом называется поименованная совокупность байт. Сами файлы могут быть сгруппированы по каким-либо признакам, например, все файлы операционной системы или все документы по проекту и размещены в отдельных папках. Папка представляет собой файл, содержимое которого описывает находящиеся в этой папке файлы. Папка, как и любой файл, имеет свое имя и так же, как и любой файл, может быть указана в какойлибо другой папке. Таким образом, образуется некоторая структура хранения (Рис.2). Для доступа к файлам, их поиску, чтению, записи и других операций используют некоторый набор программ, входящих в состав операционной системы. Помимо файлов для работы этих программ может быть необходима специальная информация, в которой описываются характеристики и состояние внешнего устройства. Совокупность этих программ, информация и характеристиках и состоянии внешних устройств, а также файлы с их организацией на внешнем устройстве называют файловой системой. В зависимости от методов организации хранения файлов, методов доступа к ним и физических характеристик внешних устройств существует множество файловых систем. Каждая файловая система имеет свои характеристики и ограничения. Так, например, в раз- личных файловых системах имена файлов могут иметь различные ограничения на длину имени, виды символов, из которых может составляться имя, количество имен одного и того же файла и т.д. А в зависимости от типа внешнего устройства мы можем по разному получать доступ к тому или иному файлу. В любой файловой системе все файлы могут делиться на обычные файлы, файлы-каталоги (папки) и специальные файлы. Специальными файлами называются файлы, связанные или ассоциируемые с устройствами, например, клавиатурой. На самой клавиатуре никаких файлов хранить нельзя, но в виде файла можно читать последовательность символов, вводимых с нее. Так как в файлах может храниться информация различной природы (тексты, рисунки, музыка, программы и т.д.), то желательно как-то различать файлы с разным типом информации. Для этого кроме имени файла используется расширение имени, которое может занимать от 0 до 3 байт. Существует набор «стандартных» расширений – txt, doc, exe, jpg и т.д., которые предполагают вполне определенные действия при попытке доступа к файлу. Например, если мы обращаемся к файлу с расширением «exe», операционная система предполагает, что в таком файле хранится программа и пытается выполнить все действия, необходимые для выполнения этой программы. При обращении к файлу «txt» операционная система считает, что в файле находится текстовая информация и запускает программу работы с текстовыми файлами, чтобы с помощью этой программы произвести обработку указанного файла. Для каждого расширения файла может быть указана своя программа обработки этого файла. Кроме имени и расширения у каждого файла существует еще несколько характеристик, предназначенных для разных целей. Например, все файлы имеют характеристику «Дата создания», которая используется, если мы просим файловую систему найти все файлы, созданные в какой-то конкретный день или какой-то диапазон дат. А характеристика «Только для чтения» не позволяет случайно внести изменения в файл. Доступ к файлам на внешних устройствах происходит существенно медленнее, чем доступ к байтам в оперативной памяти компьютера. Для снижения негативных последствий данного факта применяются специальные методы и средства, которые называются опережающим чтением, кэшированием и буферизацией. Опережающее чтение производится при первом обращении к файлу. Сама обратившаяся к файлу программа может не содержать в данный момент времени команд чтения информации из файла, а файловая система сама читает порцию информации из файла в надежде, что в ближайшее время такая команда в программе появится, т.е. это программный способ оптимизации доступа к файлам. Кэширование представляет собой процесс, когда при чтении информации с внешнего устройства в специальную память устройства читается не только запрошенная информация, ни и весь физический блок хранения информации на устройстве, несмотря на то что в этом блоке может присутствовать информации не только затребованного файла, но и других файлов. При дальнейшем обращении к данным файла информация устройством берется не с медленного устройства, а из памяти кэша, если таковая там присутствует, что уменьшает время доступа. Таким образом, кэш является физической оптимизацией доступа к информации. Буферизация представляет собой процесс, при котором в оперативную память читаются или заносятся программой несколько последовательных порций информации файла. Каждая порция информации размещается в своей области памяти, называемой буфером. Совокупность буферов образуют буферный пул. В процессе работы содержимое буфера может быть изменено на новую порцию информации по мере необходимости. Таким образом, буферизация является программным способом оптимизации доступа. 2. Интерфейс — совокупность средств, методов и правил взаимодействия между элементами системы. Интерфейсы взаимодействия ИВС. Пользовательский интерфейс. Сетевой интерфейс. Передача информации от источника к потребителю в вычислительных системах осуществляется в соответствии с некоторыми наборами правил. Для разных пар источников и потребителей информации существует свой набор таких правил. Совокупность средств, методов и правил взаимодействия между элементами системы называют интерфейсом. Чаще всего производители стремятся к тому, чтобы реализовать элементы системы с взаимодействием по какому-то из стандартных интерфейсов, чтобы при подключении элемента не возникало проблем обмена информацией в существующей системе. Такими стандарными интерфейсами являются, например, интерфейс общей шины, интерфейс последовательного или параллельного порта, USB-интерфейс и т.д. Помимо интерфейса между техническими средствами компьютера существует также интерфейс взаимодействия пользователя компьютера с работающими на нем программами. Принципиально различаются два вида пользовательского интерфейса – консольный и графический. Консольный интерфейс предусматривает такой способ взаимодействия пользователя с компьютером, при котором пользователь вводит информацию как бы с печатной машинки. Графический интерфейс более богат на способы взаимодействия. Он включает в себя не только ввод команд и данных, но и выбор варианта из возможных, предложенных программой, графический ввод информации, наглядное отображение результатов своего воздействия на работу программы и т.д. Сами результаты работы программы могут быть представлены не только в форме чисел и сообщений, но и форме графиков, диаграмм, показаний графических приборов и т.п. Особым видом интерфейса является сетевой интерфейс, позволяющий организовать взаимодействие подсоединенных к сети компьютеров. 3. Алгоритм — точный набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время. Понятие программы. Программа - термин, в переводе означающий «предписание», т.е. предварительное описание предстоящих событий или действий. Компьютерная программа — последовательность инструкций, предназначенная для исполнения устройством управления вычислительной машины. Программа — данные, предназначенные для управления конкретными компонентами системы обработки информации в целях реализации определенного алгоритма. Языки программирования. Как мы уже говорили, компьютер является программно управляемой системой. Выполняемые компьютером программы должны точно описывать последовательность действий, необходимых для решения конкретной задачи. Разработка любой программы начинается с разработки алгоритма решения соответствующей задачи. Алгоритм — точный набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время. Таким образом, алгоритм должен обладать свойствами однозначности, достижимости и конечности. Описание алгоритма должно выполняться на языке, понятном разработчику алгоритма и позволяющем сделать алгоритм наглядным для его анализа и понимания другими разработчиками. Разговорный язык не подходит для этих целей, т.к. в нем присутствует неопределенность и двусмысленность. Существует два вида средств для разработки алгоритмов – языковые и графические (Рис.3). Под языковыми средствами понимается некоторый формальный язык, каждое предложение которого однозначно интерпретируется и может быть выполнено многократно с одинаковым результатом. Графические средства представляют собой набор графических изображений стандартно возможных действий с правилами соединения этих изображений и возможностью описания объектов воздействия и операций. Такие описания алгоритмов называют блок-схемами. Как и любое графическое изображение, блок-схемы более информативны и проще для восприятия, чем алгорит- мы, написанные на формальном языке (или псевдоязыке). Алгоритмы используются для разработки программ. Программа — данные, предназначенные для управления конкретными компонентами системы обработки информации в целях реализации определенного алгоритма. Она должна представлять собой последовательность инструкций, предназначенная для исполнения процессором компьютера. Однако, написание программы в формате команд процессора является занятием достаточно трудоемким и привязывает программу к компьютеру, процессор которого содержит именно такой набор команд. Для повышения производительности разработчиков программ и обеспечения переносимости программ с компьютера с одной системой команд на компьютер с другой системой команд были разработаны специальные языки для написания программ по алгоритмам – алгоритмические языки программирования. При этом программа, написанная на алгоритмическом языке, может быть автоматически переведена на язык команд процессора с помощью специальной программы – компилятора, а сам процесс преобразования в этом случае называется компиляцией. В принципе, преобразование программы, написанной на алгоритмическом языке, возможно в любой другой формальный язык, который не обязательно должен быть языком команд процессора. Такой процесс называется трансляцией, а программа, выполняющая трансляцию – транслятором. С помощью транслятора становится возможным написание отдельных частей программы на разных алгоритмических языках с последующей трансляцией этих частей в какой-то один промежуточный язык и последующей компиляцией всех частей в язык команд процессора. Наконец, существует еще один метод, с помощью которого может быть выполнена работа написанной нами программы – симуляция и эмуляция. Симуляция предполагает воспроизведение поведения программы. Симулироваться может как текст программы на языке программирования высокого уровня программирования, так и текст программы на языке инструкций процессора. Эмуляция предполагает точное моделирование поведения не только программы, но и всей системы. Это позволяет выполнять программы, написанные для одной системы, в другой системе. Например, программы, написанные для мобильных телефонов, могут отлаживаться на обычном персональном компьютере. Существует множество алгоритмических языков программирования. Это определяется множеством сфер применения компьютеров и, как следствие, множеством классов решаемых на компьютере задач. Среди этого множества можно отметить такие языки, как: Fortran (Formula translator), ориентированный на написание программ, решающих научные или вычислительные задачи; COBOL, предназначенный для разработки бизнес-приложений; Pascal, язык общего назначения; С, являющийся стандартным процедурным языком программирования. Существенным упрощением разработки программ является наличие библиотек стандартных программ. Эти библиотеки можно разделить на системные и прикладные. К системным библиотекам относятся такие библиотеки, в которых содержатся стандартные программы для выполнения работы с устройствами и файлами, программы работы с памятью, т.е. те стандартные программы, которые работают с ресурсами системы. Прикладные библиотеки обычно включают в себя реализацию различных математических вычислений: интегрирование, статистическая обработка, различные преобразования и т.п. Особое место занимают библиотеки, в состав которых входят программы, предназначенные для организации интерфейса между программой и пользователем, а также библиотеки построения графических изображений. Библиотеки могу быть встроены в состав компилятора или подключаться в процессе компиляции или связывания (линковки), а также подключаться к программе в процессе ее выполнения – динамические библиотеки. Наличие библиотек позволяет сократить время разработки программ за счет повторного использования ранее написанных программ, реализующих необходимые нам функции. Таким образом, любая программа может находиться в нескольких формах представления: в форме алгоритма, программы на алгоритмическом языке программирования, программы на промежуточном языке программирования и программы на языке команд процессора. 4. Программное обеспечение компьютера. Типовой состав программного обеспечения ИВС. Набор программ, записанных на компьютере, составляет программное обеспечение данного компьютера (Рис.4). Все программы при этом можно разделить на: системное программное обеспечение и прикладные программы. К системному программному обеспечению относятся: операционная система, программы тестирования компьютера и периферийных устройств, программы обслуживания вычислительной системы (системы резервного копирования информации, программы дефрагментации дискового пространства и т.п.). Прикладные программы предназначены для решения конкретных задач и представляет собой довольно обширную группу. В зависимости от назначения компьютера в эту группу могут входить, например, программы автоматизации управления предприятием или системы бухгалтерского учета, программы для проектирования и дизайна изделий и конструкций или программы обработки текстов и верстки полиграфической продукции, программы, моделирующие различные физические процессы, или программы, имитирующие реакцию на управление транспортными средствами. Отдельную группу составляет программное обеспечение, предназначенное для разработки программ – инструментальные средства. К ним относятся все программы, предназначенные для поддержки и автоматизации разработки программного обеспечения: компиляторы, трансляторы, средства тестирования и отладки, средства разработки и анализа алгоритмов, системы поддержки версий, библиотеки стандартных программ и т.п. Часть программ из всего программного обеспечения компьютера начинает выполняться автоматически при загрузке компьютера, часть начинает выполняться автоматически по заранее заданному расписанию. Начало работы третьих программ инициирует пользователь компьютера, операционная система или какая-то другая программа, работающая на данном компьютере или на компьютере сети. В зависимости от назначения компьютера состав его программного обеспечения может быть различным. При этом чаще всего в составе программного обеспечения присутствуют операционная система, набор прикладных программ для выполнения задач и набора вспомогательных программ, необходимых для выполнения типовых работ (тестирование компьютера и его внешних устройств, архивация информации и т.п.). 5. Системное программное обеспечение. Операционные системы. Операционная система — комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой стороны — предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений. Это определение применимо к большинству современных ОС общего назначения. Основным элементом системного программного обеспечения является операционная система. Наиболее популярными на данный момент времени являются операционные системы семейства Microsoft Windows и операционные системы класса UNIX, особенно Linux и MacOS. Эти ОС относятся к классу универсальных операционных систем разделения времени. Практически все реализации операционных систем перечисленных систем поставляются в виде специально подготовленных для установки на жесткий диск компьютера специально подготовленных наборов программ, включающих в себя специальную программу установки операционной системы. Помимо самой операционной системы, в набо- ры включаются также: программы, предназначенные для работы с текстовыми и мультимедийными файлами (изображения, звук, видео); программы для работы в сети (браузер, почтовая программа и т.п.); простейшие офисные программы (калькулятор, календарь, заметки и т.п.), а также утилиты поддержки работы системы. Все операционные системы по их применению можно разделить на системы разделения времени, системы пакетной обработки и системы реального времени. Кроме того, они могут быть универсальными и специализированными. Системы разделения времени предназначены для выполнения программ под управлением пользователя. К ним относятся все перечисленные выше системы. Системы пакетной обработки ориентированы, прежде всего, на выполнение программ с большим количеством вычислений. Такие системы предназначены для работы на высокопроизводительных компьютерах. К таким системам можно отнести Solaris, VMS, серверные решения UNIX и Microsoft. Системы реального времени предназначены для использования в системах управления физическими объектами. К таким системам относятся RTOS, NUCLEUS, QNX, OS-9 и другие. Особым классом операционных систем являются встраиваемые операционные системы. Они используются в таких устройствах как мобильные телефоны, коммуникаторы, планшетные устройства. К ним относятся Palm OS, Windows Mobile, Symbain OS, Android, Maemo и другие. 6. Пользовательское программное обеспечение. Основным применением вычислительных систем является автоматизация труда человека. В настоящее время сложно найти такую область деятельности человека, где не нашли бы применения вычислительные системы. Для каждого вида деятельности человека разработаны и продолжают разрабатываться новые программы. Рассмотрим, например, программы, предназначенные для автоматизации труда инженера. Для выполнения инженерных расчетов может быть использован пакет Mathcad или ANSYS. Кроме того, существует огромное количество специализированных программ для разных видов инженерных расчетов. Для конструирования можно использовать CADсистемы: AutoCAD, P CAD, SolidWorks и т.д. Для изготовления документации могут быть использованы офисные системы, например, Microsoft Office. Рис.1 Рис.2 Рис.3 Рис.4 Базы данных Основные понятия и определения Термин «база данных» (database) был введен в обиход в области вычислительной техники примерно в 1962 году. Этот термин страдает от обилия различных интерпретаций, например, «База данных - это самодокументированное собрание интегрирорванных данных». «База данных - это централизованное хранилище данных, обеспечивающее хранение, доступ, первичную обработку и поиск информации». «База данных – это совокупность связанных данных, организованных по определенным правилам, предусматривающим общие принципы описания, хранения и манипулирования, независимая от прикладных программ». Система управления базами данных (СУБД) - приложение, обеспечивающее создание, хранение, обновление и поиск информации в базах данных. СУБД осуществляют взаимодействие между базой данных и пользователями системы, а также между базой данных и прикладными программами, реализующими определенные функции обработки данных. «Базой данных» часто упрощённо или ошибочно называют СУБД. Нужно различать набор данных (собственно базу данных) и программное обеспечение, предназначенное для организации и ведения баз данных (СУБД). Система баз данных (или банк данных в отечественной терминологии) - совокупность одной или нескольких баз данных и комплекса информационных, программных и технических средств, обеспечивающих накопление, обновление, корректировку и многоаспектное использование данных в интересах пользователей. Термин «база данных» может быть понят только в контексте СУБД путем перечисления основных правил (или требований), которым должны подчиняться базы данных, чтобы называться базами данных. Выполнение этих требований возлагается на СУБД. Самодокументированность. База данных должна иметь словарь данных – специальное отведенное место в базе данных, которое используется для хранения информации о самой базе данных. Словарь данных может содержать информацию: об архитектуре базы данных, о хранимых процедурах, о пользовательских привилегиях, и др. Независимость данных от программ. Структура данных должна быть независима от программ, использующих эти данные, чтобы данные можно было добавлять или перестраивать без изменения программ. Целостность данных. В общем случае целостность данных означает корректность данных и их непротиворечивость. Для обеспечения целостности накладывают ограничения целостности. В частности, эти ограничения могут иметь вид логических выражений, значения которых всегда должны быть «истина». Если значение хотя бы одного логического выражения ограничения целостности данных принимает значение «ложь», то имеет место быть нарушение целостности данных. Ограничения такого вида иногда называют бизнесправилами. Примеры ограничений: вес детали должен быть положительным; цвет детали должен быть «Красный», «Синий» или «Зеленый»; возраст родителей не может быть меньше возраста их биологического ребенка. Целостность транзакций. В повседневной практике транзакцией называют банковскую операцию, состоящую в переводе денежных средств с одного счета на другой. В базах данных под транзакцией понимается неделимая с точки зрения воздействия на базу данных последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации), приводящая к одному из двух возможных результатов: либо последовательность выполняется, если все операторы правильные, либо вся транзакция откатывается, если хотя бы один оператор не может быть успешно выполнен. Обработка транзакций гарантирует целостность информации в базе данных. Таким образом, транзакция переводит базу данных из одного целостного состояния в другое. Поддержание механизма транзакций – показатель уровня развитости СУБД. Корректное поддержание транзакций одновременно является основой обеспечения целостности базы данных. Термин транзакционность означает, что СУБД сама обеспечивает проверку выполнения всей последовательности взаимосвязанных операций и восстанавливает исходное состояние в случае ошибки на одной из промежуточных стадий. Изолированность. Основу изолированности в многопользовательских системах, где с одной базой данных параллельно могут работать несколько пользователей или прикладных программ, также составляют транзакции. Одна из основных задач СУБД – обеспечение изолированности, т.е. создание такого режима функционирования, при котором каждому пользователю казалось бы, что база данных доступна только ему. Такую задачу СУБД принято называть параллелизмом транзакций. Поддержание журнала аудита или журналирование. Все операции, выполняемые в СУБД, должны регистрироваться (или записываться) на физическом и логическом уровне в терминах событий, происходящих в базе данных. Для каждого изменения в структурах хранилища заводится отдельная запись, описывающая изменяемую структуру и собственно изменение. Это выполняется способом, позволяющим повторить изменение или, при необходимости, отменить изменение и вернуть все в исходное состояние. Записи хранятся в специальном файле, который называется журналом транзакций. Восстановление. Восстановление представляет собой процесс воспроизведения в базе данных изменений, описанных в записях журнала, или возврат базы данных к состоянию до этих изменений. Воспроизведение записей журнала называется фазой REDO (или наката) восстановления. Обращение изменений записей журнала называется фазой UNDO (или отката) восстановления. Другими словами, процедура восстановления обеспечиваете для транзакции и всех соответствующих записей журнала либо полное воспроизведение, либо полную отмену. Восстановление принимает простую форму в случае отмены отдельной транзакции, когда она откатывается, и база данных не испытывает никаких последствий. Более сложную форму имеет восстановление в случае сбоя, когда выходит из строя сервер базы данных (по какой бы то ни было причине), и журнал транзакций необходимо восстановить с целью возврата базы данных в состояние, согласованное с точки зрения транзакций. Это означает, что для всех транзакций, зафиксированных на момент сбоя, необходимо выполнить накат, чтобы результаты этих транзакций были отражены в базе данных. А для всех незавершенных на момент сбоя транзакций необходимо выполнить откат, чтобы результаты этих транзакций не были записаны в базу данных. Безопасность данных. Защита данных от несанкционированной случайной или намеренной модификации, разрушения или раскрытия. Поддержка языков баз данных. Для работы с базами данных используются специальные языки, называемые языками баз данных. В ранних СУБД (иерархических и сетевых) поддерживалось несколько специализированных по своим функциям языков. В современных СУБД (реляционных) поддерживается язык SQL (Structured Query Language), содержащий все необходимые средства для работы с базами данных, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс. Масштабируемость. Производительность. К основным функциям СУБД относятся: Непосредственное управление данными во внешней и оперативной памяти и обеспечение эффективного доступа к данным в процессе решения задач. Поддержание целостности данных и управление транзакциями. Ведение системного журнала изменений в базе данных, что обеспечивает восстановление базы данных после технического или программного сбоя. Реализация поддержки языка описания данных и языка запросов к данным. Обеспечение безопасности данных. Обеспечение параллельного доступа к данным нескольких пользователей. Обычно современная СУБД содержит следующие компоненты: ядро, которое отвечает за управление данными во внешней и оперативной памяти и журналирование, процессор языка базы данных, обеспечивающий оптимизацию запросов и создание, как правило, машинно-независимого исполняемого внутреннего кода, подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД, сервисные программы (внешние утилиты), обеспечивающие ряд дополнительных возможностей по обслуживанию информационной системы. Классификация СУБД по типу модели данных: Дореляционные o Инвертированные списки (файлы) o Иерархичекие o Сетевые Реляционные Постреляционные o Объектно-реляционные o o o Объектно-ориентированные Многомерные Прочие (NoSQL) Реляционная модель данных Основоположником теории реляционных баз данных является британский учёный Эдгар Кодд, который в 1970 году опубликовал первую работу по реляционной модели данных. Наиболее распространенная трактовка реляционной модели данных принадлежит Кристоферу Дейту. Согласно Дейту, реляционная модель состоит из трех частей: структурной, целостностной и манипуляционной. Структурная часть реляционной модели описывает, из каких объектов состоит реляционная модель. Постулируется, что основной структурой данных, используемой в реляционной модели, являются нормализованные «n-арные» отношения. Основными понятиями структурной части реляционной модели являются тип данных, домен, атрибут, схема отношения, схема базы данных, кортеж, отношение, потенциальный, первичный и альтернативные ключи, реляционная база данных. Понятие типа данных в реляционной модели полностью адекватно понятию типа данных в языках программирования. Понятие домена можно считать уточнением типа данных. Домен можно рассматривать как подмножество значений некоторого типа данных, имеющих определенный смысл. Домен характеризуется следующими свойствами: домен имеет уникальное имя (в пределах базы данных), домен определен на некотором типе данных или на другом домене, домен может иметь некоторое логическое условие, позволяющее описать подмножество данных, допустимых для данного домена, домен несет определенную смысловую нагрузку. Говорят, что домен отражает семантику, определенную предметной областью. Может быть несколько доменов, совпадающих как подмножества, но несущие различный смысл. Основное значение доменов состоит в том, что домены ограничивают сравнения. Некорректно, с логической точки зрения, сравнивать значения из различных доменов, даже если они имеют одинаковый тип. Понятие домена помогает правильно моделировать предметную область. Не все домены обладают логическим условием, ограничивающим возможные значения домена. В таком случае множество возможных значений домена совпадает с множеством возможных значений типа данных. Атрибут отношения – это пара вида <имя_атрибута, имя_домена >. Имена атрибутов должны быть уникальны в пределах отношения. Часто имена атрибутов отношения совпадают с именами соответствующих доменов. Схема отношения – это именованное множество упорядоченных пар <имя_атрибута, имя_домена>. Степенью или «арностью» схемы отношения является мощность этого множества. Схема базы данных в реляционной модели – это множество именованных схем отношений. Понятие схемы отношения близко к понятию структурного типа в языках программирования (например, record в языке Pascal или struct в языке C). Кортеж, соответствующий данной схеме отношения, – это множество упорядоченных пар <имя_атрибута, значение_атрибута>, которое содержит одно вхождение каждого име- ни атрибута, принадлежащего схеме отношения. Значение атрибута должно быть допустимым значением домена, на котором определен данный атрибут. Степень или «арность» кортежа совпадает с «арностью» соответствующей схемы отношения. Отношение, определенное на множестве из n доменов (не обязательно различных), содержит две части: заголовок (схему отношения) и тело (множество из m кортежей). Значения n и m называются соответственно степенью и кардинальностью отношения. Отношения обладают следующими свойствами. В отношении нет одинаковых кортежей. Действительно, тело отношения есть множество кортежей и, как всякое множество, не может содержать неразличимые элементы. Кортежи не упорядочены (сверху вниз). Причина следующая – тело отношения есть множество, а множество не упорядочено. Атрибуты не упорядочены (слева направо). Т.к. каждый атрибут имеет уникальное имя в пределах отношения, то порядок атрибутов не имеет значения. В таблицах в отличие от отношений столбцы упорядочены. Каждый кортеж содержит ровно одно значение для каждого атрибута. Отношение, удовлетворяющее этому свойству, называется нормализованным или представленным в первой нормальной форме (1NF). Все значения атрибутов атомарны, т. е. не обладают структурой. Трактовка этого свойства в последнее время претерпела существенные изменения. Исторически в большинстве публикаций по базам данных считалось недопустимым использовать атрибуты со структурированными значениями. (А в большинстве изданий это считается таковым и поныне.) В настоящее время принимается следующая точка зрения: тип данных атрибута может быть произвольным, а, следовательно, возможно существование отношения с атрибутами, значениями которых также являются отношения. Именно так в некоторых постреляционных базах данных реализована работа со сколь угодно сложными типами данных, создаваемых пользователями. В реляционной модели каждый кортеж любого отношения должен отличатся от любого другого кортежа этого отношения (т.е. любое отношение должно обладать уникальным ключом). Непустое подмножество множества атрибутов схемы отношения будет потенциальным ключом тогда и только тогда, когда оно будет обладать свойствами уникальности (в отношении нет двух различных кортежей с одинаковыми значениями потенциального ключа) и неизбыточности (никакое из собственных подмножеств множества потенциального ключа не обладает свойством уникальности). В реляционной модели по традиции один из потенциальных ключей должен быть выбран в качестве первичного ключа, а все остальные потенциальные ключи будут называться альтернативными. Реляционная база данных – это набор отношений, имена которых совпадают с именами схем отношений в схеме базы данных. В целостностной части реляционной модели фиксируются два базовых требования целостности, которые должны выполняться для любых отношений в любых реляционных базах данных. Это целостность сущностей и ссылочная целостность (или целостность внешних ключей). Простой объект реального мира представляется в реляционной модели как кортеж некоторого отношения. Требование целостности сущностей заключается в следующем: каждый кортеж любого отношения должен отличатся от любого другого кортежа этого отношения (т.е. любое отношение должно обладать потенциальным ключом). Вполне очевидно, что если данное требование не соблюдается (т.е. кортежи в рамках одного отношения не уникальны), то в базе данных может храниться противоречивая информация об одном и том же объекте. Поддержание целостности сущностей обеспечивается средствами СУБД. Это осуществляется с помощью двух ограничений: 1) при добавлении записей в таблицу проверяется уникальность их первичных ключей, 2) не позволяется изменение значений атрибутов, входящих в первичный ключ. Сложные объекты реального мира представляются в реляционной модели данных в виде кортежей нескольких нормализованных отношений, связанных между собой. При этом 1) связи между данными отношениями описываются в терминах функциональных зависимостей, 2) для отражения функциональных зависимостей между кортежами разных отношений используется дублирование первичного ключа одного отношения (родительского) в другое (дочернее). Атрибуты, представляющие собой копии ключей родительских отношений, называются внешними ключами. Внешний ключ в отношении R2 – это непустое подмножество множества атрибутов FK этого отношения, такое, что: a) существует отношение R1 (причем отношения R1 и R2 необязательно различны) с потенциальным ключом CK; b) каждое значение внешнего ключа FK в текущем значении отношения R2 обязательно совпадает со значением ключа CK некоторого кортежа в текущем значении отношения R1. Требование ссылочной целостности состоит в следующем: для каждого значения внешнего ключа, появляющегося в дочернем отношении, в родительском отношении должен найтись кортеж с таким же значением первичного ключа. Как правило, поддержание ссылочной целостности также возлагается на СУБД. Например, она может не позволить пользователю добавить запись, содержащую внешний ключ с несуществующим (неопределенным) значением. Манипуляционная часть реляционной модели описывает два эквивалентных способа манипулирования реляционными данными – реляционную алгебру и реляционное исчисление. Принципиальное различие между реляционной алгеброй и реляционным исчислением заключается в следующем: реляционная алгебра в явном виде предоставляет набор операций, а реляционное исчисление представляет систему обозначений для определения требуемого отношения в терминах данных отношений. Формулировка запроса в терминах реляционной алгебры носит предписывающий характер, а в терминах реляционного исчисления – описательный характер. Говоря неформально, реляционная алгебра носит процедурный характер (пусть на очень высоком уровне), а реляционное исчисление – непроцедурный характер. Реляционная алгебра является основным компонентом реляционной модели, опубликованной Коддом, и состоит из восьми операторов, составляющих две группы по четыре оператора: 1) Традиционные операции над множествами: объединение (UNION), пересечение (INTERSECT), разность (MINUS) и декартово произведение (TIMES). Все операции модифицированы, с учетом того, что их операндами являются отношения, а не произвольные множества. 2) Специальные реляционные операции: ограничение (WHERE) , проекция (PROJECT), соединение (JOIN) и деление (DIVIDE BY). Результат выполнения любой операции реляционной алгебры над отношениями также является отношением. Эта особенность называется свойством реляционной замкнутости. Утверждается, что поскольку реляционная алгебра является замкнутой, то в реляционных выражениях можно использовать вложенные выражения сколь угодно сложной структуры. Если рассматривать свойство реляционной замкнутости строго, то каждая реляционная операция должна быть определена таким образом, чтобы выдавать результат с надлежащим типом отношения (в частности, с соответствующим набором атрибутов или заголовком). Для достижения этой цели вводится новый оператор переименование (RENAME), предназначенный для переименования атрибутов в определенном отношении. В качестве основы для последующих обсуждений рассмотрим упрощенный синтаксис выражений реляционной алгебры в форме БНФ. реляционное_выражение ::= унарное_выражение | бинарное_выражение унарное_выражение ::= переименование | ограничение | проекция переименование ::= терм RENAME имя_атрибута AS имя_атрибута терм ::= имя_отношения | ( реляционное_выражение ) ограничение ::= терм WHERE логическое_выражение проекция ::= терм | терм [ список_имен_атрибутов ] бинарное_выражение ::= проекция бинарная_операция реляционное_выражение бинарная_операция :: = UNION | INТERSECT | MINUS | TIМES | JOIN | DIVIDEBY По приведенной грамматике можно сделать следующие замечания. 1) Реляционные операторы UNION, INTERSECT и MINUS требуют, чтобы отношения были совместимыми по типу, т. е. имели идентичные заголовки. 2) Легко проверить, что операторы UNION, INTERSECT, TIMES и JOIN ассоциативны и коммутативны. 3) Если отношения A и B не имеют общих атрибутов, то операция соединения A JOIN B эквивалентна операции A TIMES B, т. е. в таком случае соединение вырождается в декартово произведение. Такое соединение называют естественным. 4) Другой допустимый синтаксис для синтаксической категории переименования таков: ( терм RENAМE список-переименований ). Здесь каждый из элементов списка переименований представляет собой выражение имя_атрибута AS имя_атрибута. 5) Несмотря на большие возможности, предоставляемые операторами реляционной алгебры, существует несколько типов запросов, которые нельзя выразить этими средствами. Для таких случаев необходимо использовать процедурные расширения реляционных языков. В алгебре Кодда не все операторы являются независимыми, т. е. некоторые из реляционных операторов могут быть выражены через другие реляционные операторы. Оператор естественного соединения по атрибуту Y определяется через оператор декартового произведения и оператор ограничения: A JOIN B = ((A TIMES (B RENAME Y AS Y1)) WHERE Y=Y1)[X, Y, Z] Оператор пересечения выражается через вычитание следующим образом: A INTERSECT B = A MINUS (A MINUS B) Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом: A DIVIDEBY B = A[X] MINUS ((A[X] TIMES B) MINUS A)[X] Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, ограничение, проекция) являются примитивными операторами – их нельзя выразить друг через друга. В качестве примера рассмотрим запросы на языке реляционной алгебры для схемы базы данных «Поставщики и детали», представленной следующими схемами отношений: S(Sno: integer, Sname: string, Status: integer, City: string) P(Pno: integer, Pname: string, Color: string, Weight: real, City: string) SP(Sno: integer, Pno: integer, Qty: integer) В данном примере имена доменов представлены именами типов, имена типов отделяются от имен атрибутов двоеточием, первичные ключи выделены подчеркиванием, а имена внешних ключей схемы отношения SP (ПОСТАВКА) совпадают с именами первичных ключей схем отношений S (ПОСТАВЩИК) и P (ДЕТАЛЬ). 1) Получить имена поставщиков, которые поставляют деталь под номером 2. ( ( SP JOIN S ) WНEPE Рno = 2 ) [ Sname ] 2) Получить имена поставщиков, которые поставляют по крайней мере одну красную деталь. ( ( ( Р WНERE Color = 'Красный' ) JOIN SP) [ Sno ] JOIN S ) [ Sname ] Другая формулировка того же запроса: ( ( ( Р WНERE Color = 'Красный' ) [ Рno ] JOIN SP ) JOIN S ) [ Sname ] Этот пример подчеркивает одно важное обстоятельство: возможность сформулировать один и тот же запрос несколькими способами. 3) Получить имена поставщиков, которые поставляют все детали. ( ( SP [ Sno, Рno] DIVIDE BY Р [ Рno ] JOIN S ) [ Sname ] 4) Получить номера поставщиков, поставляющих по крайней мере все те детали, которые поставляет поставщик под номером 2. SP [ Sno, Рno ] DIVIDE ВY ( SP WНEPE Sno = 2 ) [ Рno ] 5) Получить все пары номеров поставщиков, размещенных в одном городе ( ( ( S RENAМE Sno AS FirstSno ) [ FirstSno, City ] JOIN ( S RENAМE Sno AS SecondSno ) [ SecondSno , City ] ) WНEPE FirstSno < SecondSno ) [ FirstSno, SecondSno ] 6) Получить имена поставщиков, которые не поставляют деталь под номером 2. ((S[ Sno ] MINUS (SP WНEPE Рno = 2 ) [ Sno ] ) JOIN S ) [Sname] Вычислительные возможности реляционной алгебры можно увеличить путем введения дополнительных операторов. Реляционное исчисление основано на разделе математической логики, который называется исчислением предикатов. Реляционное исчисление существует в двух формах: исчисление кортежей и исчисление доменов. Основное различие между ними состоит в том, что переменные исчисления кортежей являются переменными кортежей (они изменяются на отношении, а их значения являются кортежами), в то время как переменные исчисления доменов являются переменными доменов (они изменяются на доменах, а их значения являются скалярами). Упрощенный синтаксис выражений исчисления кортежей в форме БНФ имеет вид. объявление-кортежной-переменной ::= RANGE OF переменная IS список-областей область ::= отношение | реляционное-выражение реляционное-выражение ::= (список-целевых-элементов)[WHERE wff] целевой-элемент ::= переменная | переменная.атрибут [AS атрибут] wff ::= условие | NOT wff | условие AND wff | условие OR wff | IF условие THEN wff | EXISTS переменная (wff) | FORALL переменная (wff) | (wff) условие ::= (wff) | компаранд операция-отношения компаранд По приведенной грамматике можно сделать следующие замечания. 1) Квадратные скобки здесь указывают на компоненты, которые по умолчанию могут быть опущены. 2) Категории отношение, атрибут и переменная – это идентификаторы (т. е. имена). 3) Реляционное выражение содержит заключенный в скобки список целевых элементов и выражение WHERE, содержащее формулу wff («правильно построенную формулу»). Такая формула wff составляется из кванторов (EXISTS и FORALL), свободных и связанных переменных, констант, операторов сравнения, логических (булевых) операторов и скобок. Каждая свободная переменная, которая встречается в формуле wff, должна быть также перечислена в списке целевых элементов. 4) Категория условие представляет или формулу wff, заключенную в скобки, или простое скалярное сравнение, где каждый компаранд оператора сравнения – это либо скалярная константа, либо значение атрибута в форме переменная.атрибут. Пусть кортежная переменная T определяются следующим образом: RANGE OF T IS R1, R2, ..., Rn Тогда отношения R1, R2, ..., Rn должны быть совместимы по типу т. е. они должны иметь идентичные заголовки, и кортежная переменная T изменяется на объединении этих отношений, т. е. её значение в любое заданное время будет некоторым текущим кортежем, по крайней мере одного из этих отношений. Примеры объявлений кортежных переменных. RANGE OF SX IS S RANGE OF SPX IS SP RANGE OF SY IS (SX) WHERE SX.City = 'Смоленск', (SX) WHERE EXISTS SPX (SPX.Sno = SX.Sno AND SPX.Pno = 1) Здесь переменная кортежа SY может принимать значения из множества кортежей S для поставщиков, которые или размещены в Смоленске, или поставляют деталь под номером 1, или и то и другое. Для сравнения с реляционной алгеброй рассмотрим некоторые запросы на языке исчисления кортежей, которые соответствуют рассмотренным ранее. 1) Получить имена поставщиков, которые поставляют деталь под номером 2. SX.Sname WНERE EXISTS SPX ( SPX.Sno = SX.Sno AND SPX.Pno = 2 ) 2) Получить имена поставщиков, которые поставляют по крайней мере одну красную деталь. SX.Sname WНERE EXISTS SPX ( SX.Sno = SPX.Sno AND EXISTS РХ ( РХ.Рno = SPX.Рno AND PX.Color = 'Красный' ) ) 3) Получить имена поставщиков, которые поставляют все детали. SX.Sname WНERE FORALL РХ ( EXISTS SPX ( SPX.Sno = SX.Sno AND SPX.Pno = РХ.Рno )) Как и в случае реляционной алгебры, вычислительные возможности реляционного исчисления можно расширить, включив новую категорию – скалярные выражения, в которых операнды могут быть константами, ссылками на атрибуты и (или) ссылками на итоговые функции. Ранее утверждалось, что реляционная алгебра и реляционное исчисление в своей основе эквивалентны. С помощью алгоритма, называемого «алгоритмом редукции Кодда», можно любое выражение исчисления преобразовать в семантически эквивалентное выражение алгебры. Из существования алгоритма преобразования Кодда следует, что реляционная алгебра обладает реляционной полнотой, т. е. не уступает по возможностям алгебре. Реляционную полноту рассматривают как основную меру выразительной силы языков баз данных вообще. В частности, так как исчисление и алгебра реляционно полные, то они могут служить базисом для проектирования языков, не уступающих им по выразительности. Проектирование реляционных баз данных При проектировании базы данных решаются две основные проблемы: Каким образом отобразить объекты предметной области в абстрактные объекты модели данных, чтобы это отображение не противоречило семантике предметной области, и было, по возможности, лучшим (эффективным, удобным и т. д.)? Часто эту проблему называют проблемой логического проектирования баз данных. Как обеспечить эффективность выполнения запросов к базе данных? Эту проблему обычно называют проблемой физического проектирования баз данных. В случае реляционных баз данных нет общих рецептов по части физического проектирования. Здесь слишком много зависит от используемой СУБД. Поэтому ограничимся только существенными вопросами логического проектирования реляционных баз данных. Более того, не будем касаться определения ограничений целостности общего вида, а ограничимся ограничениями первичного и внешнего ключей. Будем считать, что проблема проектирования реляционной базы данных состоит в обоснованном принятии решений о том, из каких отношений должна состоять базы данных, и какие атрибуты должны быть у этих отношений. Классический подход к проектированию реляционных баз данных заключается в том, что сначала предметная область представляется в виде одного или нескольких отношений, а далее осуществляется процесс нормализации схем отношений, причем каждая следующая нормальная форма обладает свойствами лучшими, чем предыдущая. Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений. Примером набора ограничений является ограничение первой нормальной формы – значения всех атрибутов отношения атомарны. Поскольку требование первой нормальной формы является базовым требованием классической реляционной модели данных, будем считать, что исходный набор отношений уже соответствует этому требованию. В теории реляционных баз данных обычно выделяется следующая последовательность нормальных форм: первая нормальная форма (1NF); вторая нормальная форма (2NF); третья нормальная форма (3NF); нормальная форма Бойса-Кодда (BCNF); четвертая нормальная форма (4NF); пятая нормальная форма, или нормальная форма проекции-соединения (5NF или PJ/NF). Основные свойства нормальных форм такие: каждая следующая нормальная форма в некотором смысле лучше предыдущей; при переходе к следующей нормальной форме свойства предыдущих нормальных свойств сохраняются. Процесс проектирования реляционной базы данных на основе метода нормализации преследует две основные цели: избежать избыточности хранения данных; устранить аномалии обновления отношений. Эти цели являются актуальными для информационных систем оперативной обработки транзакций (On-Line Transaction Processing – OLTP), которым свойственны частые обновления базы данных, и потому аномалии обновления могут сильно вредить эффективности приложения. В информационных системах оперативной аналитической обработки (OnLine Analytical Processing – OLAP), в частности, в системах поддержки принятия решений, базы данных в основном используются для выборки данных. Поэтому аномалиями обновления можно пренебречь. Из этого не следует, что принципы нормализации непригодны при проектировании баз данных OLAP-приложений. Даже если схема такой базы данных должна быть денормализована по соображениям эффективности, то чтобы получить правильную денормализованную схему, нужно сначала понять, как выглядит нормализованная схема. В основе метода нормализации лежит декомпозиция отношения, находящегося в предыдущей нормальной форме, в два или более отношения, удовлетворяющих требованиям следующей нормальной формы. Считаются правильными такие декомпозиции отношения, которые обратимы, т. е. имеется возможность собрать исходное отношение из декомпозированных отношений без потери информации. Наиболее важные на практике нормальные формы отношений основываются на фундаментальном в теории реляционных баз данных понятии функциональной зависимости. Пусть R – это отношение, а Х и Y - произвольные подмножества множества атрибутов отношения R. Тогда Y функционально зависит от Х, что в символическом виде записывает- ся как X -> Y в том и только в том случае, если каждому значению X соответствует в точности одно значение Y. Представляют интерес такие функциональные зависимости, которые выполняются для всех возможных значений соответствующего отношения. Такие зависимости могут рассматриваться как инварианты, или ограничения целостности отношения. Функциональная зависимость X -> Y называется полной, если атрибут Y не зависит функционально от любого точного подмножества X. Функциональная зависимость X ->Y называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости X -> Z и Z -> Y и отсутствует функциональная зависимость Z -> X. Неключевым атрибутом называется любой атрибут отношения, не входящий в состав потенциального ключа (в частности, первичного). Отношение R находится во второй нормальной форме (2NF) в том и только в том случае, когда находится в 1NF, и каждый неключевой атрибут полностью зависит от первичного ключа. Отношение R находится в третьей нормальной форме (3NF) в том и только в том случае, если находится в 2NF и каждый неключевой атрибут нетранзитивно зависит от первичного ключа. На практике третья нормальная форма схем отношений достаточна в большинстве случаев, и приведением к третьей нормальной форме процесс проектирования реляционной базы данных обычно заканчивается. Однако иногда полезно продолжить процесс нормализации. Семантическое моделирование данных Реляционная модель данных достаточна для моделирования предметных областей. Однако, проявляется ограниченность реляционной модели данных в следующих аспектах: Модель не предоставляет достаточных средств для представления смысла данных. Для многих приложений трудно моделировать предметную область на основе плоских таблиц. Хотя весь процесс проектирования происходит на основе учета зависимостей, реляционная модель не предоставляет каких-либо средств для представления этих зависимостей. Несмотря на то, что процесс проектирования начинается с выделения некоторых существенных для приложения объектов предметной области («сущностей») и выявления связей между этими сущностями, реляционная модель данных не предлагает какого-либо аппарата для разделения сущностей и связей. Указанные ограничения вызвали к жизни направление семантических (концептуальных, инфологических) моделей данных. Любая развитая семантическая модель данных, как и реляционная модель, включает структурную, манипуляционную и целостную части. Главным назначением семантических моделей является обеспечение возможности выражения семантики данных. На практике семантическое моделирование используется на первой стадии проектирования базы данных. При этом в терминах семантической модели производится концептуальная схема базы данных, которая затем a) Либо вручную преобразуется к реляционной (или какой-либо другой) схеме. b) Либо реализуется автоматизированная компиляция концептуальной схемы в реляционную. c) Либо происходит работа с базой данных в семантической модели, т.е. под управлением СУБД, основанных на семантических моделях данных. (Третья возможность еще не вышла за пределы исследовательских и экспериментальных проектов.) Наиболее известным представителем класса семантических моделей предметной области является модель «сущность-связь» или ER-модель, предложенная Питером Ченом в 1976 году ER-модель обычно представляется в графической форме, либо с использованием оригинальной нотации П. Чена, называемой ER-диаграмма, либо с использованием других графических нотаций. На практике понятия ER-модель и ER-диаграмма часто не различают, хотя для визуализации ER-моделей предложены и другие графические нотации. Основными понятиями ER-модели являются сущность, связь и атрибут (свойство). Сущность - это реальный или представляемый объект, информация о котором должна сохраняться и быть доступна. В диаграммах ER-модели сущность представляется в виде прямоугольника, содержащего имя сущности. При этом имя сущности - это имя типа, а не некоторого конкретного экземпляра этого типа. Для большей выразительности и лучшего понимания имя сущности может сопровождаться примерами конкретных объектов этого типа. Каждый экземпляр сущности должен быть отличим от любого другого экземпляра той же сущности (это требование в некотором роде аналогично требованию отсутствия кортежей-дубликатов в реляционных таблицах). Сущности подразделяются на сильные и слабые. Сильные сущности существуют сами по себе, а существование слабых сущностей зависит от существования сильных. Связь - это ассоциация, устанавливаемая между сущностями. Эта ассоциация может существовать между разными сущностями или между сущностью и ей же самой (рекурсивная связь). Сущности, включенные в связь, называются ее участниками, а количество участников связи называется ее степенью. Участие сущности в связи может быть как полным, так и частичным. Связи в ER-модели могут иметь тип «один к одному», «один ко многим», «многие ко многим». Именно тип связи «многие ко многим» является единственным типом, представляющим истинную связь, поскольку это единственным тип связи, который требует для своего представления отдельного отношения. Связи типа «один к одному» и «один ко многим» всегда могут быть представлены с помощью механизма внешнего ключа, помещаемого в одно из отношений. Свойством сущности (и связи) является любая деталь, которая служит для уточнения, идентификации, классификации, числовой характеристики или выражения состояния сущности (или связи). Значения свойств каждого типа извлекаются из соответствующего множества значений, которое в реляционной терминологии называется доменом. Свойства могут быть простыми или составными, ключевыми, однозначными или многозначными, опущенными (т. е. «неизвестными» или «непредставленными»), базовыми или производными. Более сложными элементами ER-модели являются подтипы и супертипы сущностей. Как в языках программирования с развитыми типовыми системами (например, в языках объектно-ориентированного программирования), вводится возможность наследования типа сущности, исходя из одного или нескольких супертипов. На ER-диаграммах множества сущностей изображаются в виде прямоугольников, множества отношений изображаются в виде ромбов. Слабый тип сущности изображают в виде прямоугольника с двойным контуром. Слабый тип связи изображают в виде ромба с двойным контуром. Если сущность участвует в отношении, они связаны линией. Тип связи с частичным участием изображают двойной линией. Вид типа связи обозначается над линиями в виде соответствующих надписей возле типов сущностей. Например, если это вид бинарной связи «один ко многим», то делают надписи 1, n (или m), соответственно, возле соответствующих типов сущностей. Атрибуты изображаются в виде овалов и связываются линией с одним отношением или с одной сущностью. Именование сущности обычно выражается уникальным существительным, именование связи обычно выражается глаголом, именование атрибута обычно выражается существительным. Неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности, являются ключом сущности. Существует множество инструментов для работы с ER-моделями, вот некоторые из них: Microsoft Visio, ERwin, Oracle Designer, PowerDesigner, Rational Rose. В справочниках приводятся сведения о 25 таких инструментах. Получение реляционной схемы из ER-схемы осуществляется с помощью следующей пошаговой процедуры. Шаг 1. Каждая простая сущность превращается в таблицу. Простая сущность - сущность, не являющаяся подтипом и не имеющая подтипов. Имя сущности становится именем таблицы. Шаг 2. Каждый свойство (атрибут) становится возможным столбцом с тем же именем; может выбираться более точный формат. Столбцы, соответствующие необязательным ат- рибутам, могут содержать неопределенные значения; столбцы, соответствующие обязательным атрибутам, - не могут. Шаг 3. Компоненты уникального идентификатора сущности превращаются в первичный ключ таблицы. Если имеется несколько возможных уникальных идентификаторов, выбирается наиболее используемый. Если в состав уникального идентификатора входят связи, к числу столбцов первичного ключа добавляется копия уникального идентификатора сущности, находящейся на дальнем конце связи (этот процесс может продолжаться рекурсивно). Для именования этих столбцов используются имена концов связей и/или имена сущностей. Шаг 4. Связи «многие к одному» (и «один к одному») становятся внешними ключами. Т.е. делается копия уникального идентификатора с конца связи «один», и соответствующие столбцы составляют внешний ключ. Необязательные связи соответствуют столбцам, допускающим неопределенные значения; обязательные связи - столбцам, не допускающим неопределенные значения. Шаг 5. Индексы создаются для первичного ключа (уникальный индекс), внешних ключей и тех атрибутов, на которых предполагается в основном базировать запросы. Шаг 6. Если в концептуальной схеме присутствовали подтипы, то возможны два способа: a) все подтипы в одной таблице, b) для каждого подтипа - отдельная таблица. Язык реляционных баз данных SQL Из рассмотрения реляционной модели известно, что двумя фундаментальными языками запросов к реляционным базам данных являются языки реляционной алгебры и реляционного исчисления. При всей своей строгости и теоретической обоснованности, эти языки не стали стандартными языками реляционных СУБД. Юридическим и фактическим стандартом стал язык SQL (Structured Query Language – «язык структурированных запросов»). SQL представляет собой некоторую комбинацию реляционного исчисления кортежей и реляционной алгебры, и был разработан в середине 70-х годов в компании IBM в рамках проекта экспериментальной реляционной СУБД System R. Деятельность по стандартизации SQL началась практически одновременно с появлением его первых коммерческих реализаций. В 1986 г. был принят стандарт ANSI, а в 1987 г. Этот стандарт был одобрен международной организацией по стандартизации (ISO). Время от времени выпускается пересмотренная версия этого стандарта; наиболее свежее обновление было выпущено в 2008 г. Формальное название стандарта SQL – ISO/IEC 9075 «Database Language SQL». Несмотря на наличие международного стандарта, многие производители СУБД вносят изменения в язык SQL, тем самым отступая от стандарта. В результате у разных производителей СУБД в ходу разные диалекты SQL, в общем случае между собой несовместимые. В настоящее время проблема совместимости решается так: описание языка имеет модульную структуру, основная часть стандарта вынесена в раздел «SQL/Foundation», все остальные выведены в отдельные модули, остался только один уровень совместимости – «Core», что означает поддержку этой основной части. Поддержка остальных возможностей оставлена на усмотрение производителей СУБД. При всех своих изменениях, SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных. В тоже время, современные СУБД предоставляют пользователю развитые средства визуального построения запросов. Хотя SQL и задумывался как средство работы конечного пользователя, в конце концов, он стал настолько сложным, что превратился в инструмент профессионального программиста. Все операторы, составляющие основу SQL с момента его появления, можно разделить на следующие группы: операторы определения данных (Data Definition Language – DDL) o CREATE создает объект базы данных o ALTER изменяет объект o DROP удаляет объект операторы манипуляции данными (Data Manipulation Language – DML) o SELECT считывает данные, удовлетворяющие заданным условиям o INSERT добавляет новые данные o UPDATE изменяет существующие данные o DELETE удаляет данные операторы определения доступа к данным (Data Control Language – DCL) o GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом o REVOKE отзывает ранее выданные разрешения o DENY задает запрет, имеющий приоритет над разрешением операторы управления транзакциями (Transaction Control Language – TCL) o COMMIT применяет транзакцию. o ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции. o SAVEPOINT делит транзакцию на более мелкие участки. Не вдаваясь в детали синтаксиса, в качестве примера приведем сценарий создания базы данных «Поставщики и детали», схема которой была рассмотрена ранее. USE master IF DB_ID (N'Поставщики и детали') IS NOT NULL DROP DATABASE [Поставщики и детали] GO CREATE DATABASE [Поставщики и детали] GO USE [Поставщики и детали] CREATE TABLE S ( Sno INT IDENTITY(1,1) NOT NULL, Sname VARCHAR(20) NOT NULL, Status INT, City VARCHAR(15) ) CREATE TABLE P ( Pno INT IDENTITY(1,1) NOT NULL, Pname VARCHAR(20) NOT NULL, Color CHAR(10), Weight REAL, City VARCHAR(15) ) CREATE TABLE SP ( Sno INT NOT NULL, Pno INT NOT NULL, Qty INT ) ALTER TABLE S ADD CONSTRAINT CONSTRAINT ALTER TABLE P ADD CONSTRAINT ALTER TABLE SP ADD CONSTRAINT CONSTRAINT CONSTRAINT PK_S PRIMARY KEY (Sno), UK_S UNIQUE (Sname) PK_P PRIMARY KEY (Pno) PK_SP PRIMARY KEY (Sno, Pno), FK_SP_S FOREIGN KEY (Sno) REFERENCES S (Sno), FK_SP_P FOREIGN KEY (Pno) REFERENCES P (Pno) К приведенному сценарию можно дать следующие комментарии. 1) Сценарий написан на диалекте SQL компании Microsoft (для Microsoft SQL Server), известном под названием Transact-SQL (T-SQL). 2) Сценарии состоит из трех пакетов. Конец пакета отмечается командой GO. 3) Специальная команда USE меняет контекст на указанную базу данных. 4) Если идентификационный номер базы данных «Поставщики и детали» не NULL, то такая база данных уже существует и ее надо предварительно уничтожить. Для этой цели в начале сценария используется оператор IF. 5) Свойство IDENTITY используется для получения автоматически увеличивающегося идентификационного номера поставщика и детали. 6) Операторы CREATE TABLE и ALTER TABLE, включат в себя такие ограничения целостности, как ограничение целостности NULL, ограничение первичного ключа (PRIMARY КЕУ), ограничение уникальности (UNIQUE), ограничение внешнего ключа (FOREIGN КЕУ). 7) Сценарий можно расширить, добавив значения по умолчанию (DEFUULT), ограничения общего вида (CHECK) и команды импорта файла данных в таблицы базы данных (BULK INSERT). Среди других перечисленных операторов наибольшее значение для конечного пользователя имеет оператор SELECT, который извлекает строки из базы данных и позволяет делать выборку одной или нескольких строк или столбцов из одной или нескольких таблиц. Полный синтаксис инструкции SELECT сложен, однако основные предложения можно вкратце описать следующим образом: [ WITH общее_табличное_выражение] SELECT [ DISTINCT | ALL ] [ TOP выражение [ PERCENT ] ] { * | список_выбора } [ INTO новая_таблица ] [ FROM список_табличных_источников ] [ WHERE условие_поиска ] [ GROUP BY group_by_выражение ] [ HAVING условие_поиска ] [ ORDER BY order_by_выражение [ ASC | DESC ] ] Предложения, составляющие оператор SELECT, имеют следующий смысл: WITH задает временно именованный результирующий набор, который используется для организации рекурсивного запроса. SELECT определяет столбцы, возвращаемые запросом. DISTINCT указывает на то, что только уникальные строки могут появляться в результирующем наборе. ALL указывает на то, что в результирующем наборе могут появляться дублирующиеся строки. ALL применяется по умолчанию. TOP указывает на то, что только заданное число или процент строк будет возвращен из результирующего набора. * указывает на то, что все столбцы из всех таблицв предложении FROM должны быть возвращены. INTO создает новую таблицу и вставляет в нее строки результата выполнения запроса. FROM указывает таблицы или табличные выражения, которые используются в операторе SELECT. WHERE определяет условия поиска строк, возвращаемых запросом. GROUP BY задает группы, в которые должны быть помещены строки вывода. HAVING определяет условие поиска для группы. ORDER BY указывает порядок сортировки для столбцов, возвращаемых оператором SELECT. Из перечисленных предложений оператора SELECT наиболее часто используются SELECT, FROM и WHERE. Если исключить все опции предложения SELECT, то получается такая простая конструкция: SELECT { * | список_выбора } FROM список_табличных_источников WHERE условие_поиска Не углубляясь в детали синтаксиса даже такой простой конструкции, рассмотрим несколько примеров, раскрывающих наиболее важные моменты. Примеры в точности соответствуют тем, которые рассматривались в разделе реляционной алгебры. 1) Получить имена поставщиков, которые поставляют деталь под номером 2. SELECT DISTINCT S.Sname FROM S WHERE EXISTS ( SELECT * FROM SP WHERE SP.Sno = S.Sno AND SP.Pno = 2) 2) Получить имена поставщиков, которые поставляют, по крайней мере, одну красную деталь. SELECT DISTINCT S.Sname FROM S WHERE S.Sno IN ( SELECT SP.Sno FROM SP WHERE SP.Pno IN ( SELECT P.Pno FROM P WHERE P.Color = 'Красный')) 3) Получить имена поставщиков, которые поставляют все типы деталей. SELECT DISTINCT S.Sname FROM S WHERE NOT EXISTS (SELECT * FROM P WHERE NOT EXISTS (SELECT * FROM SP WHERE SP.Sno = S.Sno AND SP.Pno = P.Pno)) 4) Получить номера поставщиков, поставляющих, по крайней мере, все те детали, которые поставляет поставщик под номером 2. 5) Получить все пары номеров поставщиков, размещенных в одном городе SELECT A.Sno AS SA, B.Sno AS SB FROM S AS A, S AS B WHERE A.City = B.City AND A.Sno < B.Sno 6) Получить имена поставщиков, которые не поставляют деталь под номером 2. SELECT DISTINCT S.Sname FROM S WHERE NOT EXISTS (SELECT * FROM SP WHERE SP.Sno = S.Sno AND SP.Pno = 2)