Текст
                    Б.В. Соболь, А.Б. Галин,
Ю.В. Панов, Е.В. Рашидова,
Ы.Н. Садовой
ВЫСШЕЕ
ОБРАЗОВАНИЕ
ИНФОРМАТИКА


Высшее образование Б.В. Соболь, А.Б. Галин, Ю.В. Панов, Е.В. Рашидова, Н.Н. Садовой Информатика Учебник Издание третье, дополненное и переработанное Ростов-на-Дону «Феникс» 2007
УДК 004(075.8) ББК 32.81я73. КТК21 И 74 Рецензенты: кафедра «Информационные системы в строительстве» РГСУ, доктор технических наук, профессор РГУ А. В. Аграновский И 74 Информатика : учебник/ Б.В. Соболь [и др.]-Изд. 3-е, дополн. и перераб. — Ростов н/Д: Феникс, 2007. — 446 [1] с.-(Высшее образование). ISBN 978-5-222-12081-1 В учебнике представлены все разделы информатики, определяющие современный уровень подготовки специалистов в системе высшего образования. По своему содержанию учебник полностью соответствует требованиям государственных образовательных стандартов для широкого спектра специальностей высших учебных заведений. Адресован преподавателям и студентам высших учебных заведений, слушателям институтов повышения квалификации, пользователям, а также широкому кругу читателей. УДК 004(075.8) ISBN 978-5-222-12081-1 ББК 32.81я73 © Соболь Б.В., Галин А.Б., Панов Ю.В., Рашидова Е.В., Садовой Н.Н., 2007 © Оформление, изд-во «Феникс», 2007
предисловие Широкое использование информационных технологий во всех сферах человеческой деятельности является одним из основных признаков цивилизованного общества. Мировая история не знает никакой другой отрасли науки и технологий, развивающейся столь стремительными темпами. Трудно представить себе современного специалиста, не владеющего основными навыками работы с компьютером. Эти процессы находят свое отражение и в системе высшего образования. В 90-е годы в нашей стране появился и интенсивно развивается широкий спектр специальностей, связанных с информационными технологиями. Вместе с этим информатика заняла свое достойное место среди базовых дисциплин и стала неотъемлемой компонентой учебных планов всех без исключения специальностей высших учебных заведений. Уникальность этой науки обусловлена и еще одним очень важным обстоятельством. В настоящее время информационные технологии проникли практически во все общенаучные и специальные дисциплины, стали привычным инструментарием как в учебной, научной, так и практической деятельности. По замыслу авторов новый учебник по информатике, во-первых, по содержанию и форме изложения является актуальным. Авторы не стремятся к детальному и исчерпывающему изложению технических характеристик и возможностей всех аппаратных средств и программных продуктов. Вместе с тем в книге отражены не только все основные принципы и положения информатики как науки, но и современные аспекты и тенденции развития информационных технологий. Во-вторых, содержание книги соответствует основным положениям государственных образовательных стандартов по информатике. Это позволяет использовать ее в качестве основного учебника по этой дисциплине студентам подавляющего большинства специальностей, за исключением тех, кто специализируется в этой области. В-третьих, что не менее важно, новый учебник по информатике в отличие от многих своих собратьев является компактным. Авторы уверены, 3
что последнее обстоятельство создаст дополнительные удобства для студентов и преподавателей, пользующихся этой книгой. Содержание учебника — это, в основном, теоретический материал по всем разделам изучаемой дисциплины, или несколько расширенный вариант лекционного курса по информатике для студентов всех специальностей (за исключением профилирующих) Донского государственного технического университета. Отдельным изданием в ближайшее время выйдет «Практикум по информатике», основой которого является комплекс лабораторных и практических занятий, сопровождающих учебный курс. Мы надеемся, что новая книга по информатике не только поможет вам лучше понять, успешно освоить эту науку, но и полюбить ее, сделать неотъемлемой частью жизни и профессиональной деятельности. Авторы
СПИCOK СОКРАЩЕНИЙ ABM — аналоговая вычислительная машина АЛУ — арифметико-логическое устройство АО — аппаратное обеспечение АПС — аппаратно-программные средства АЦП — аналогово-цифровой преобразователь БД — база данных БИС — большая интегральная схема ВЗУ — внешнее запоминающее устройство ГВС — глобальные вычислительные сети ДНФ — дизъюнктивная нормальная форма ЖКИ — жидкокристаллические индикаторы ИС — информационная система КНФ — конъюнктивная нормальная форма КС — компьютерная система ЛВС — локальные вычислительные сети НСД — несанкционированный доступ ОЗУ — оперативное запоминающее устройство ООП — объектно-ориентированное проектирование ОС — операционная система ПЗУ — постоянное запоминающее устройство ПО — программное обеспечение ППЗУ — перепрограммируемые ПЗУ ППО — прикладное программное обеспечение ППП — пакет прикладных программ РОН — регистры общего назначения СА — сетевой адаптер САУ — система автоматического управления СБИС — сверхбольшая интегральная схема 5
СВТ — средства вычислительной техники СУБД — система управления базой данных ФС — файловая система ФСА — функциональная структура алгоритма ЦАП — цифро-аналоговый преобразователь ЦВМ — цифровая вычислительная машина ЦП — центральный процессор ЭВМ — электронная вычислительная машина ЭЛТ — электронно-лучевая трубка AGP (Accelerated Graphics Port) — локальная шина видеоконтроллера CASE (Computer-Aided Software Engineering) — автоматизированные системы проектирования программных средств CD (Compact Disk) — оптический компакт-диск CD-R (CD-Recodable) — оптический компакт-диск с однократной записью CD-RW (CD-Rewritable) — оптический компакт-диск с многократной записью CISC (Complex Instruction Set Computer) — полная система команд переменной длины CMYK — модель представления светоотражающих графических объектов DDE (Dynamic Data Exchange) — динамический обмен данных DDoS (Distributed DoS) — DoS атака, проводимая в определенное время DoS (Deny-of-Service) — атака на отказ в обслуживании DOS (Disk Operating System) — дисковая операционная система dpi (dots per inch) — количество точек на дюйм DRAM (Dynamic RAM) — ОЗУ динамического типа DVD (Digital Versatile Disk) — компакт-диск с высокой плотностью записи 6
FRAM (Ferroelectric RAM) — ферроэлектрическая память с произвольным доступом HTML (Hyper Text Markup Language) — универсальный язык разметки гипертекста HTTP (Hypertext Transfer Protocol) — протокол передачи гипертекста IP (Internet Protocol) — маршрутный протокол Интернет ISO (International Organization for Standardization) — Международная организация по стандартизации LCD (Liquid Crystal Display) — жидкокристаллические индикаторы LEP (Light Emission Plastics) — самоизлучающие мониторы MS (MicroSoft) Майкрософт — фирма-производитель программного обеспечения OLE (Object Linking and Embedding) — принцип внедрения и связывания объектов OMT(Object Modeling Technique) — технология объектного моделирования OOSE (Object-Oriented Software Engineering) — объектно-ориентированная разработка программного обеспечения OSI (Model of Open System Interconnections) — модель взаимодействия открытых систем PC (Personal Computer) — персональный компьютер PCI (Peripheral Component Interconnect) — общая шина настольных компьютеров PCMCIA (Personal Computer Memory Card International Association) — общая шина переносных компьютеров PDP (Plasma Display Panels) — плазменные мониторы PL/1 (Programming Language One) — язык программирования (ПЛ/1) PPM (Page Per Minute) — количество страниц в минуту RAM (Random Access Memory) — память со свободным доступом 7
RGB (Red Green Blue) — модель представления светоизлучающих графических объектов RISC (Reduced Instruction Set Computer) — сокращенный набор команд фиксированной длины ROM (Read Only Memory) — память только для чтения SMTP (Simple Mail Transfer Protocol) — простой протокол пересылки почты SRAM (Static RAM) — ОЗУ статического типа STP (Shielded Twisted Pair) — экранированная витая пара TFT (Thin Film Transistor) — жидкокристаллический экран с тонкопленочным транзистором TCP (Transmission Control Protocol) — транспортный протокол Интернет UML (Unified Modeling Language) — унифицированный язык моделирования URL (Uniform Resource Locator) — унифицированный указатель ресурса UTP (Unshielded Twisted Pair) — неэкранированная витая пара WYSIWYG (What You See Is What You Get) — принцип «что видишь (на экране), то и получишь (при печати на листе)» WWW (World Wide Web ) — Всемирная паутина
1. Информации, информатика, информационные технологии В жизни современного человека слово «информация» очень распространено и часто используется в разных контекстах. Информацией обычно называют любые сведения, которые кого-либо интересуют, которые мы получаем или передаем. Например, мы говорим: «В результате научных исследований нами получена информация о...» или «Из книг мы информированы о...», «По телевидению была передана информация о...». Фундаментальной чертой цивилизации является рост производства и потребления информации во всех отраслях человеческой деятельности. Вся жизнь человека, так или иначе, связана с получением, накоплением, обработкой, передачей информации. Практически в любой деятельности человека: в процессе чтения книг, просмотра телепередач, в разговоре — мы постоянно получаем и обрабатываем информацию. Начиная с XVII в. объем научной информации удваивался, примерно, каждые 20 лет, в настоящее время он удваивается в 5—6 лет и тенденция ускорения сохраняется. Одной из важнейших проблем человечества наших дней является лавинообразный рост потока информации в любой отрасли жизнедеятельности. Подсчитано, что современный специалист должен тратить около 80 % своего рабочего времени, чтобы уследить за всеми новыми работами в его области деятельности. Увеличение объема используемой человеком информации и растущий спрос на нее обусловили появление отрасли знания, связанной с автоматизацией обработки информации, — информатики. Далее мы дадим более точное определение понятию «информация», а также расскажем о предмете и задачах информатики, покажем ее большое прикладное значение и в связи с этим расскажем об информационных технологиях. 9
1.1. Информации 1.1.1. Понятие информации Термин информация используется во многих науках и во многих сферах человеческой деятельности. Он происходит от латинского слова «informatio», что означает «сведения, разъяснения, изложение». Несмотря на привычность этого термина, строгого и общепринятого определения не существует. В рамках рассматриваемой нами науки «информация» является первичным и, следовательно, неопределимым понятием, подобно понятиям «точка» в математике, «тело» в механике, «поле» в физике. Несмотря на то, что этому понятию невозможно дать строгое определение, имеется возможность описать его через проявляемые свойства и мы попытаемся это сделать. Как известно, в материальном мире все физические объекты, окружающие нас, являются либо телами, либо полями. Физические объекты, взаимодействуя друг с другом, порождают сигналы различных типов. В общем случае любой сигнал — это изменяющийся во времени физический процесс. Такой процесс может содержать различные характеристики. Характеристика, которая используется для представления данных, называется параметром сигнала. Если параметр сигнала принимает ряд последовательных значений и их конечное число, то сигнал называется дискретным. Если параметр сигнала — непрерывная во времени функция, то сигнал называется непрерывным. В свою очередь, сигналы могут порождать в физических телах изменения свойств. Это явление называется регистрацией сигналов. Сигналы, зарегистрированные на материальном носителе, называются данными. Существует большое количество физических методов регистрации сигналов на материальных носителях. Это могут быть механические воздействия, перемещения, изменения формы или магнитных, электрических, оптических параметров, химического состава, кристаллической структуры. В соответствии с методами регистрации, данные могут храниться и транспортироваться на различных носителях. Наиболее часто используемый и привычный носитель — бумага; сигналы регистрируются путем изменения ее оптических свойств. Сигналы могут быть зарегистрированы и путем изменения 10
магнитных свойств полимерной ленты с нанесенным ферромагнитным покрытием, как это делается в магнитофонных записях, и путем изменения химических свойств в фотографии. Данные несут информацию о событии, но не являются самой информацией, так как одни и те же данные могут восприниматься (отображаться или еще говорят интерпретироваться) в сознании разных людей совершенно по-разному. Например, текст, написанный на русском языке (т.е. данные), даст различную информацию человеку, знающему алфавит и язык, и человеку, не знающему их. Чтобы получить информацию, имея данные, необходимо к ним применить методы, которые преобразуют данные в понятия, воспринимаемые человеческим сознанием. Методы, в свою очередь, тоже различны. Например, человек, знающий русский язык, применяет адекватный метод, читая русский текст. Соответственно, человек, не знающий русского языка и алфавита, применяет неадекватный метод, пытаясь понять русский текст. Таком образом, можно считать, что информация — это продукт взаимодействия данных и адекватных методов. Из вышесказанного следует, что информация не является статическим объектом, она появляется и существует в момент слияния методов и данных, все прочее время она находится в форме данных. Момент слияния данных и методов называется информационным процессом (рис. 1.1). Сигналы Регистрация сигналов физический процесс Данные Методы Информация Рис. 1.1. Формирование информации Человек воспринимает первичные данные различными органами чувств (их у нас пять — зрение, слух, осязание, обоняние, вкус), и на их основе сознанием могут быть построены вторичные абстрактные (смысловые, семантические) данные. Таким образом, первичная информация может существовать в виде 11 Тела, поля
рисунков, фотографий, звуковых, вкусовых ощущений, запахов, а вторичная — в виде чисел, символов, текстов, чертежей, радиоволн, магнитных записей. 1.1.2. Свойства информации Понятие «информация», как уже было сказано ранее, используется многими научными дисциплинами, имеет большое количество разнообразных свойств, но каждая дисциплина обращает внимание на те свойства информации, которые ей наиболее важны. В рамках нашего рассмотрения наиболее важными являются такие свойства, как дуализм, полнота, достоверность, адекватность, доступность, актуальность. Рассмотрим их подробнее. Дуализм информации характеризует ее двойственность. С одной стороны, информация объективна в силу объективности данных, с другой — субъективна, в силу субъективности применяемых методов. Иными словами, методы могут вносить в большей или меньшей степени субъективный фактор и таким образом влиять на информацию в целом. Например, два человека читают одну и ту же книгу и получают подчас весьма разную информацию, хотя прочитанный текст, т.е. данные, были одинаковы. Более объективная информация применяет методы с меньшим субъективным элементом. Полнота информации характеризует степень достаточности данных для принятия решения или создания новых данных на основе имеющихся. Неполный набор данных оставляет большую долю неопределенности, т.е. большое число вариантов выбора, а это потребует применения дополнительных методов, например, экспертных оценок, бросание жребия и т.п. Избыточный набор данных затрудняет доступ к нужным данным, создает повышенный информационный шум, что также вызывает необходимость дополнительных методов, например, фильтрацию, сортировку. И неполный и избыточный наборы затрудняют получение информации и принятие адекватного решения. Достоверность информации — это свойство, характеризующее степень соответствия информации реальному объекту с необходимой точностью. При работе с неполным набором данных достоверность 12
информации может характеризоваться вероятностью, например, можно сказать, что при бросании монеты с вероятностью 50 % выпадет герб. Адекватность информации выражает степень соответствия создаваемого с помощью информации образа реальному объекту, процессу, явлению. Полная адекватность достигается редко, так как обычно приходится работать с не самым полным набором данных, т.е. присутствует неопределенность, затрудняющая принятие адекватного решения. Получение адекватной информации также затрудняется при недоступности адекватных методов. Доступность информации — это возможность получения информации при необходимости. Доступность складывается из двух составляющих: из доступности данных и доступности методов. Отсутствие хотя бы одного дает неадекватную информацию. Актуальность информации. Информация существует во времени, так как существуют во времени все информационные процессы. Информация, актуальная сегодня, может стать совершенно ненужной по истечении некоторого времени. Например, программа телепередач на нынешнюю неделю будет неактуальна для многих телезрителей на следующей неделе. 1.1.3. Понятие количество информации Свойство полноты информации негласно предполагает, что имеется возможность измерять количество информации. Какое количество информации содержится в данной книге, какое количество информации в популярной песенке? Что содержит больше информации: роман «Война и мир» или сообщение, полученное в письме от товарища? Ответы на подобные вопросы не просты и не однозначны, так как во всякой информации присутствует субъективная компонента. А возможно ли вообще объективно измерить количество информации? Важнейшим результатом теории информации является вывод о том, что в определенных, весьма широких условиях, можно, пренебрегая качественными особенностями информации, выразить ее количество числом, а следовательно, сравнивать количество информации, содержащейся в различных группах данных. 13
Количеством информации называют числовую характеристику информации, отражающую ту степень неопределенности, которая исчезает после получения информации. Рассмотрим пример: дома осенним утром, старушка предположила, что могут быть осадки, а могут и не быть, а если будут, то в форме снега или в форме дождя, т.е. «бабушка надвое сказала — то ли будет, то ли нет, то ли дождик, то ли снег». Затем, выглянув в окно, увидела пасмурное небо и с большой вероятностью предположила — осадки будут, т.е., получив информацию, снизила количество вариантов выбора. Далее, взглянув на наружный термометр, она увидела, что температура отрицательная, значит, осадки следует ожидать в виде снега. Таким образом, получив последние данные о температуре, бабушка получила полную информацию о предстоящей погоде и исключила все, кроме одного, варианты выбора. Приведенный пример показывает, что понятия «информация», «неопределенность», «возможность выбора» тесно связаны. Получаемая информация уменьшает число возможных вариантов выбора (т.е. неопределенность), а полная информация не оставляет вариантов вообще. За единицу информации принимается один бит (англ. bit — binary digit — двоичная цифра). Это количество информации, при котором неопределенность, т.е. количество вариантов выбора, уменьшается вдвое или, другими словами, это ответ на вопрос, требующий односложного разрешения — да или нет. Бит — слишком мелкая единица измерения информации. На практике чаще применяются более крупные единицы, например, байт, являющийся последовательностью из восьми бит. Именно восемь битов, или один байт, используется для того, чтобы закодировать символы алфавита, клавиши клавиатуры компьютера. Один байт также является минимальной единицей адресуемой памяти компьютера, т.е. обратиться в память можно к байту, а не биту. Широко используются еще более крупные производные единицы информации: 1 Килобайт (Кбайт) = 1024 байт = 210 байт, 1 Мегабайт (Мбайт) = 1024 Кбайт = 220 байт, 1 Гигабайт (Гбайт) = 1024 Мбайт = 230 байт, 1 Терабайт (Тбайт) = 1024 Гбайт = 240 байт. 14
За единицу информации можно было бы выбрать количество информации, необходимое для различения, например, десяти равновероятных сообщений. Это будет не двоичная (бит), а десятичная (дит) единица информации. Но данная единица используется редко в компьютерной технике, что связано с аппаратными особенностями компьютеров. 1.1.4. Информационные процессы Получение информации тесно связано с информационными процессами, поэтому имеет смысл рассмотреть отдельно их виды. Сбор данных — это деятельность субъекта по накоплению данных с целью обеспечения достаточной полноты. Соединяясь с адекватными методами, данные рождают информацию, способную помочь в принятии решения. Например, интересуясь ценой товара, его потребительскими свойствами, мы собираем информацию для того, чтобы принять решение: покупать или не покупать его. Передача данных — это процесс обмена данными. Предполагается, что существует источник информации, канал связи, приемник информации, и между ними приняты соглашения о порядке обмена данными, эти соглашения называются протоколами обмена. Например, в обычной беседе между двумя людьми негласно принимается соглашение, не перебивать друг друга во время разговора. Хранение данных — это поддержание данных в форме, постоянно готовой к выдаче их потребителю. Одни и те же данные могут быть востребованы не однажды, поэтому разрабатывается способ их хранения (обычно на материальных носителях) и методы доступа к ним по запросу потребителя. Обработка данных — это процесс преобразования информации от исходной ее формы до определенного результата. Сбор, накопление, хранение информации часто не являются конечной целью информационного процесса. Чаще всего первичные данные привлекаются для решения какой-либо проблемы, затем они преобразуются шаг за шагом в соответствии с алгоритмом решения задачи до получения выходных данных, которые после анализа пользователем предоставляют необходимую информацию. 15
1.1.5. Информация в жизни человечества Как мы уже выяснили, человечество со дня своего выделения из животного мира значительную часть своего времени и внимания уделяло информационным процессам. На первых этапах носителем данных была память, и информация от одного человека к другому передавалась устно. Этот способ передачи информации был ненадежен и подвержен большим искажениям, ввиду естественного свойства памяти утрачивать редко используемые данные. По мере развития цивилизации, объемы информации, которые необходимо было накапливать и передавать, росли, и человеческой памяти стало не хватать — появилась письменность. Это великое изобретение было сделано шумерами около шести тысяч лет назад. Оно позволило наряду с простыми записями счетов, векселей, рецептов записывать наблюдения за звездным небом, за погодой, за природой. Изменился смысл информационных сообщений. Появилась возможность обобщать, сопоставлять, переосмысливать ранее сохраненные сведения. Это же в свою очередь дало толчок развитию истории, литературы, точным наукам и в конечном итоге изменило общественную жизнь. Изобретение письменности характеризует первую информационную революцию. Дальнейшее накопление человечеством информации привело к увеличению числа людей, пользовавшихся ею, но письменные труды одного человека могли быть достоянием небольшого окружения. Возникшее противоречие было разрешено созданием печатного станка. Эта веха в истории цивилизации характеризуется как вторая информационная революция (началась в XVI в.). Доступ к информации перестал быть делом отдельных лиц, появилась возможность многократно увеличить объем обмена информацией, что привело к большим изменениям в науке, культуре и общественной жизни. Третья информационная революция связывается с открытием электричества и появлением (в конце XIX в.) на его основе новых средств коммуникации — телефона, телеграфа, радио. Возможности накопления информации для тех времен стали поистине безграничными, а скорость обмена очень высокой. К середине XX в. появились быстрые технологические процессы, управлять которыми человек не успевал. Проблема управления 16
техническими объектами могла решаться только с помощью универсальных автоматов, собирающих, обрабатывающих данные и выдающих решение в форме управляющих команд. Ныне эти автоматы называются компьютерами. Бурно развивавшаяся наука и промышленность привели к росту информационных ресурсов в геометрической прогрессии, что породило проблемы доступа к большим объемам информации. Наше время отмечается как четвертая информационная революция. Пользователями информации стали миллионы людей. Появились дешевые компьютеры, доступные миллионам пользователей. Компьютеры стали мультимедийными, т.е. они обрабатывают различные виды информации: звуковую, графическую, видео и др. Это, в свою очередь, дало толчок к широчайшему использованию компьютеров в различных областях науки, техники, производства, быта. Средства связи получили повсеместное распространение, а компьютеры для совместного участия в информационном процессе соединяются в компьютерные сети. Появилась всемирная компьютерная сеть Интернет, услугами которой пользуется значительная часть населения планеты, оперативно получая и обмениваясь данными, т.е. формируется единое мировое информационное пространство. В настоящее время круг людей, занимающихся обработкой информации, вырос до небывалых размеров, а скорость обмена стала просто фантастической, компьютеры применяются практически во всех областях жизни людей. На наших глазах появляется информационное общество, где акцент внимания и значимости смещается с традиционных видов ресурсов (материальные, финансовые, энергетические и пр.) на информационный ресурс, который, хотя всегда существовал, но не рассматривался ни как экономическая, ни как иная категория. Информационные ресурсы — это отдельные документы и массивы документов в библиотеках, архивах, фондах, банках данных, информационных системах и других хранилищах. Иными словами, информационные ресурсы — это знания, подготовленные людьми для социального использования в обществе и зафиксированные на материальных носителях. Информационные ресурсы страны, региона, организации все чаще рассматриваются как стратегические ресурсы, аналогичные по значимости запасам сырья, энергии, ископаемых и прочим ресурсам. 17
Развитие мировых информационных ресурсов позволило: • превратить деятельность по оказанию информационных услуг в глобальную человеческую деятельность; • сформировать мировой и внутригосударственный рынок информационных услуг; • повысить обоснованность и оперативность принимаемых решений в фирмах, банках, биржах, промышленности, торговле и др. за счет своевременного использования необходимой информации. 1.2. Предмет и структура информатики Термин информатика получил распространение с середины 80-х гг. прошлого века. Он состоит из корня inform — «информация» и суффикса matics — «наука о...». Таким образом, информатика — это наука об информации. В англоязычных странах термин не прижился, информатика там называется Computer Science — наука о компьютерах. Информатика — молодая, быстро развивающаяся наука, поэтому строгого и точного определения ее предмета пока не сформулировано. В одних источниках информатика определяется как наука, изучающая алгоритмы, т.е. процедуры, позволяющие за конечное число шагов преобразовать исходные данные в конечный результат, в других — на первый план выставляется изучение компьютерных технологий. Наиболее устоявшимися посылками в определении предмета информатики в настоящее время являются указания на изучение информационных процессов (т.е. сбора, хранения, обработки, передачи данных) с применением компьютерных технологий. При таком подходе наиболее точным, по нашему мнению, является следующее определение: Информатика — это наука, изучающая: • методы реализации информационных процессов средствами вычислительной техники (СВТ); • состав, структуру, общие принципы функционирования СВТ; • принципы управления СВТ. Из определения следует, что информатика — прикладная наука, использующая научные достижения многих наук. Кроме того, информатика — практическая наука, которая не только занимается описа- 18
тельным изучением перечисленных вопросов, но и во многих случаях предлагает способы их решения. В этом смысле информатика технологична и часто смыкается с информационными технологиями. Методы реализации информационных процессов находятся на стыке информатики с теорией информации, статистикой, теорией кодирования, математической логикой, документоведением и т.д. В этом разделе изучаются вопросы: • представление различных типов данных (числа, символы, текст, звук, графика, видео и т.д.) в виде, удобном для обработки СВТ (кодирование данных); • форматы представления данных (предполагается, что одни и те же данные могут быть представлены разными способами); • теоретические проблемы сжатия данных; • структуры данных, т.е. способы хранения с целью удобного доступа к данным. В изучении состава, структуры, принципов функционирования средств вычислительной техники используются научные положения из электроники, автоматики, кибернетики. В целом этот раздел информатики известен как аппаратное обеспечение (АО) информационных процессов. В этом разделе изучаются: • основы построения элементов цифровых устройств; • основные принципы функционирования цифровых вычислительных устройств; • архитектура СВТ — основные принципы функционирования систем, предназначенных для автоматической обработки данных; • приборы и аппараты, составляющие аппаратную конфигурацию вычислительных систем; • приборы и аппараты, составляющие аппаратную конфигурацию компьютерных сетей. В разработке методов управления средствами вычислительной техники (а средствами цифровой вычислительной техники управляют программы, указывающие последовательность действий, которые должно выполнить СВТ) используют научные положения из теории алгоритмов, логики, теории графов, лингвистики, теории игр. Этот раздел информатики известен как программное обеспечение (ПО) СВТ. В этом разделе изучаются: • средства взаимодействия аппаратного и программного обеспечения; 19
• средства взаимодействия человека с аппаратным и программным обеспечением, объединяемые понятием интерфейс; • программное обеспечение СВТ (ПО). Обобщая сказанное, можно предложить следующую структурную схему (рис. 1.2): ИНФОРМАТИКА Информационные процессы Теория кодирования. Теория информации. Теория графов. Теория множеств. Логика и др. Кодирование данных. Форматы данных. Сжатие данных. Структуры данных и др. Аппаратное обеспечение Логика. Электроника. Автоматика. Кибернетика и др. Синтез цифровых устройств. Архитектура СВТ. Аппараты и приборы вычислительных систем. Аппараты и приборы компьютерных сетей Программное обеспечение Теория алгоритмов. Логика. Теория графов. Теория игр. Лингвистика и др. Интерфейсы. Вспомогательные программы. Системы программирования. Прикладные программные продукты Рис. 1.2. Структура информатики В настоящей главе будут подробно рассмотрены некоторые проблемы представления данных различных типов: числовых, символьных, звуковых, графических. Также будут рассмотрены некоторые структуры, позволяющие хранить данные с возможностью удобного доступа к ним. Вторая глава посвящена аппаратному обеспечению информационных процессов. В ней рассматриваются вопросы синтеза цифро- 20
вых устройств, устройство электронно-вычислительных машин, устройство отдельных элементов аппаратного обеспечения. Третья составляющая информатики — программное обеспечение — неоднородна и имеет сложную структуру, включающую несколько уровней: системный, служебный, инструментальный, прикладной. На низшем уровне находятся комплексы программ, осуществляющих интерфейсные функции (посреднические между человеком и компьютером, аппаратным и программным обеспечением, между одновременно работающими программами), т.е. распределения различных ресурсов компьютера. Программы этого уровня называются системными. Любые пользовательские программы запускаются под управлением комплексов программ, называемых операционными системами. Следующий уровень — это служебное программное обеспечение. Программы этого уровня называются утилитами, выполняют различные вспомогательные функции. Это могут быть диагностические программы, используемые при обслуживании различных устройств (гибкого и жесткого диска), тестовые программы, представляющие комплекс программ технического обслуживания, архиваторы, антивирусы и т.п. Служебные программы, как правило, работают под управлением операционной системы (хотя могут и непосредственно обращаться к аппаратному обеспечению), поэтому они рассматриваются как более высокий уровень. В некоторых классификациях системный и служебный уровни объединяются в один класс — системного программного обеспечения (см. главу 3). Инструментальное программное обеспечение представляет комплексы программ для создания других программ. Процесс создания новых программ на языке машинных команд очень сложен и кропотлив, поэтому он низкопроизводителен. На практике большинство программ составляется на формальных языках программирования, которые более близки к математическому, следовательно, проще и производительней в работе, а перевод программ на язык машинных кодов осуществляет компьютер посредством инструментального программного обеспечения. Программы инструментального программного обеспечения управляются системными программами, поэтому они относятся к более высокому уровню. Прикладное программное обеспечение — самый большой по объему класс программ, это программы конечного пользователя. В чет- 21
от вертой главе будет дано подробное описание и классификация программ, входящих в этот класс. Пока же скажем, что в мире существует около шести тысяч различных профессий, тысячи различных увлечений и большинство из них в настоящее время имеет какие-либо свои прикладные программные продукты. Прикладное программное обеспечение также управляется системными программами, и имеет более высокий уровень. Обобщая сказанное, можно предложить следующую структуру программного обеспечения (рис. 1.3). ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Системное программное обеспечение Операционные системы — Драйверы Дисковые утилиты Архиваторы Антивирусы Комплекс программ техобслуживания и диагностики Прикладное программное обеспечение Программы - обработчики текста Электронные таблицы СУБД Переводчики Игры Развлечения и др. Профессиональные ППО Инструментальное программное обеспечение — Трансляторы Редакторы программного кода Отладчики Редакторы связей Системы быстрой разработки программных приложений (RAD) Рис. 1.3. Классификация программного обеспечения Предложенная классификация программного обеспечения является в большой мере условной, так как в настоящее время программ- 22
ные продукты многих фирм стали объединять в себе программные элементы из разных классов. Например, операционная система Windows, являясь комплексом системных программ, в своем составе содержит блок служебных программ (дефрагментация, проверка, очистка диска и др.), а также текстовый процессор WordPad, графический редактор Paint, которые принадлежат классу прикладных программ. 1.3. Представление (кодирование) данных Чтобы работать с данными различных видов, необходимо унифицировать форму их представления, а это можно сделать с помощью кодирования. Кодированием мы занимаемся довольно часто, например, человек мыслит весьма расплывчатыми понятиями, и, чтобы донести мысль от одного человека к другому, применяется язык. Язык — это система кодирования понятий. Чтобы записать слова языка, применяется опять же кодирование — азбука. Проблемами универсального кодирования занимаются различные области науки, техники, культуры. Вспомним, что чертежи, ноты, математические выкладки являются тоже некоторым кодированием различных информационных объектов. Аналогично, универсальная система кодирования требуется для того, чтобы большое количество различных видов информации можно было бы обработать на компьютере. Подготовка данных для обработки на компьютере (представление данных) в информатике имеет свою специфику, связанную с электроникой. Например, мы хотим проводить расчеты на компьютере. При этом нам придется закодировать цифры, которыми записаны числа. На первый взгляд, представляется вполне естественным кодировать цифру ноль состоянием электронной схемы, где напряжение на некотором элементе будет равно 0 вольт, цифру единица — 1 вольт, двойку — 2 вольт и т.д., девятку — 9 вольт. Для записи каждого разряда числа в этом случае потребуется элемент электронной схемы, имеющий десять состояний. Однако элементная база электронных схем имеет разброс параметров, что может привести к появлению напряжения, скажем, 3,5 вольт, а оно может быть истолкова- 23
но и как тройка и как четверка, т.е. потребуется на уровне электронных схем «объяснить» компьютеру, где заканчивается тройка, а где начинается четверка. Кроме того, придется создавать весьма непростые электронные элементы для производства арифметических операций с числами, т.е. на схемном уровне должны быть созданы таблица умножения — 10 х 10 = 100 схем и таблица сложения — тоже 100 схем. Для электроники 40-х гг. (время, когда появились первые вычислительные машины) это была непосильная задача. Еще сложнее выглядела бы задача обработки текстов, ведь русский алфавит содержит 33 буквы. Очевидно, такой путь построения вычислительных систем не состоятелен. В то же время весьма просто реализовались электронные схемы с двумя устойчивыми состояниями: есть ток — 1, нет тока — 0, есть электрическое (магнитное) поле — 1, нет — 0. Взгляды создателей вычислительной техники были обращены на двоичное кодирование как универсальную форму представления данных для дальнейшей обработки их средствами вычислительной техники. Предполагается, что данные располагаются в некоторых ячейках, представляющих упорядоченную совокупность из двоичных разрядов, а каждый разряд может временно содержать одно из состояний — 0 или 1. Тогда группой из двух двоичных разрядов (двух бит) можно закодировать 22 = 4 различные комбинации кодов (00, 01, 10, 11); аналогично, три бита дадут 23 = 8 комбинаций, восемь бит или 1 байт — 28 = 256 и т.д. Итак, внутренняя азбука компьютера очень бедна, содержит всего два символа: 0, 1, поэтому и возникает проблема представления всего многообразия типов данных — чисел, текстов, звуков, графических изображений, видео и др. — только этими двумя символами, с целью дальнейшей обработки средствами вычислительной техники. Вопросы представления некоторых типов данных мы рассмотрим в последующих параграфах. 1.3.1. Представление чисел в двоичном коде Существуют различные способы записи чисел, например: можно записать число в виде текста — сто двадцать три; римской системе счисления — CXXIII; арабской — 123. 24
Системы счисления Совокупность приемов записи и наименования чисел называется системой счисления. Числа записываются с помощью символов, и по количеству символов, используемых для записи числа, системы счисления подразделяются на позиционные и непозиционные. Если для записи числа используется бесконечное множество символов, то система счисления называется непозиционной. Примером непозиционной системы счисления может служить римская. Например, для записи числа один используется буква I, два и три выглядят как совокупности символов II, III, но для записи числа пять выбирается новый символ V, шесть — VI, десять — вводится символ X, сто — С, тысяча — М и т.д. Бесконечный ряд чисел потребует бесконечного числа символов для записи чисел. Кроме того, такой способ записи чисел приводит к очень сложным правилам арифметики. Позиционные системы счисления для записи чисел используют ограниченный набор символов, называемых цифрами, и величина числа зависит не только от набора цифр, но и от того, в какой последовательности записаны цифры, т.е. от позиции, занимаемой цифрой, например, 125 и 215. Количество цифр, используемых для записи числа, называется основанием системы счисления, в дальнейшем его обозначим q. В повседневной жизни мы пользуемся десятичной позиционной системой счисления, q = 10, т.е. используется 10 цифр: 0 1 2 3 4 5 6 7 8 9. Рассмотрим правила записи чисел в позиционной десятичной системе счисления. Числа от 0 до 9 записываются цифрами, для записи следующего числа цифры не существует, поэтому вместо 9 пишут 0, но левее нуля образуется еще один разряд, называемый старшим, где записывается (прибавляется) 1, в результате получается 10. Затем пойдут числа 11, 12, но на 19 опять младший разряд заполнится и мы его снова заменим на 0, а старший разряд увеличим на 1, получим 20. Далее по аналогии 30, 40 ... 90, 91, 92 ... до 99. Здесь заполненными оказываются два разряда сразу; чтобы получить следующее число, мы заменяем оба на 0, а в старшем разряде, теперь уже третьем, поставим 1 (т.е. получим число 100) и т.д. Очевидно, что, используя конечное число цифр, можно записать любое сколь угод- 25
но большое число. Заметим также, что производство арифметических действий в десятичной системе счисления весьма просто. Число в позиционной системе счисления с основанием q может быть представлено в виде полинома по степеням q. Например, в десятичной системе мы имеем число а в общем виде это правило запишется так: Здесь X(q) — запись числа в системе счисления с основанием q; х. — натуральные числа меньше q, т.е. цифры; п — число разрадов целой части; m — число разрядов дробной части. Записывая слева направо цифры числа, мы получим закодированную запись числа в q-ичной системе счисления: В информатике, вследствие применения электронных средств вычислительной техники, большое значение имеет двоичная система счисления, q = 2. На ранних этапах развития вычислительной техники арифметические операции с действительными числами производились в двоичной системе ввиду простоты их реализации в электронных схемах вычислительных машин. Например, таблица сложения и таблица умножения будут иметь по четыре правила: 0 + 0 = 0 0+1 = 1 1+0=1 1 + 1 = 10 0x0 = 0 0x1=0 1x0 = 0 1x1 = 1 А значит, для реализации поразрядной арифметики в компьютере потребуются вместо двух таблиц по сто правил в десятичной системе счисления две таблицы по четыре правила в двоичной. Соответственно на аппаратном уровне вместо двухсот электронных схем — восемь. Но запись числа в двоичной системе счисления длиннее записи 26
того же числа в десятичной системе счисления в log2 10 раз (примерно в 3,3 раза). Это громоздко и не удобно для использования, так как обычно человек может одновременно воспринять не более пяти- семи единиц информации, т.е. удобно будет пользоваться такими системами счисления, в которых наиболее часто используемые числа (от единиц до тысяч) записывались бы одной-четырьмя цифрами. Как это будет показано далее, перевод числа, записанного в двоичной системе счисления, в восьмеричную и шестнадцатеричную очень сильно упрощается по сравнению с переводом из десятичной в двоичную. Запись же чисел в них в три раза короче для восьмеричной и в четыре для шестнадцатеричной системы, чем в двоичной, но длины чисел в десятичной, восьмеричной и шестнадцатеричной системах счисления будут различаться ненамного. Поэтому, наряду с двоичной системой счисления, в информатике имеют хождение восьмеричная и шестнадцатеричная системы счисления. Восьмеричная система счисления имеет восемь цифр: 0 1 2 3 4 5 6 7. Шестнадцатеричная — шестнадцать, причем первые 10 цифр совпадают по написанию с цифрами десятичной системы счисления, а для обозначения оставшихся шести цифр применяются большие латинские буквы, т.е. для шестнадцатеричной системы счисления получим набор цифр: 0123456789ABCDEF. Если из контекста не ясно, к какой системе счисления относится запись, то основание системы записывается после числа в виде нижнего индекса. Например, одно и то же число 231, записанное в десятичной системе, запишется в двоичной, восьмеричной и шестнадцатеричной системах счисления следующим образом: 231(10)= 11100111(2)=347(8)=Е7(16). Запишем начало натурального ряда в десятичной, двоичной, восьмеричной и шестнадцатеричной системах счисления. Десятичная 0 1 2 3 4 5 Двоичная 0 1 10 И 100 101 Восьмеричная 0 1 2 3 4 5 Шестнадцатеричная 0 1 2 3 4 5 27
ш Десятичная 6 7 8 9 10 11 12 13 14 15 16 17 Двоичная 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 Восьмеричная 6 7 10 И 12 13 14 15 16 17 20 21 Шестнадца- теричная 6 7 8 9 А В С D Е F 10 И Преобразование чисел из одной системы счисления в другую Так как десятичная система для нас удобна и привычна, все арифметические действия мы делаем в ней, и преобразование чисел из произвольной недесятичной (q 10) системы в десятичную удобно выполнять на основе разложения по степеням q, например: 11100111(2)= 1 х27+ 1 х26 + 1 х25 + Ох 24 + Ox 23 + 1 х 22 + + 1 х 21 + 1 х 2°= 128 + 64 + 32 + 4 + 2 + 1 = 231(10), или 347(8)= 3 х 82+ 4 х 81 + 7 х 8°= 3 х 64 + 4x8 + 7 = 231(10). Преобразование из десятичной в прочие системы счисления проводится с помощью правил умножения и деления. При этом целая и дробная части переводятся отдельно. Рассмотрим алгоритм на примере перевода десятичного числа 231 в двоичную систему (совершенно аналогичен перевод из десятичной системы в любую q-ичную). Разделим число на два (основание системы): нацело 231 : 2 = 115 и остаток 1, т.е. можно записать 231 = 115x21+ 1 х20. Число 115 (такой двоичной цифры нет) тоже может быть раз- 28
делено нацело на 2, т.е. 115 : 2 = 57 и остаток 1. По аналогии запишем 231 = (57 х 2 + 1) х 2 + 1 = 57 х 22+ 1 х I1 + 1 х 2°; аналогично продолжим процесс дальше: 57 : 2 = 28, остаток 1; 231 = ((28 х2+1)х2+1)х2+1 = 28х х 23 + 1 х 22 + 1 х 21 + 1 х 2°. 28 : 2 = 14, остаток 0; 231 = (((14 х 2 + 0) х 2 +1) х 2 + 1)х2 + + 1 = 14 х 24 + 1 х 22 + 1 х 21 + 1 х 2°. 14 : 2 = 7, остаток 0; 231=((((7 х 2 + 0) х 2 + 0) х 2 + 1) х 2 + 1)х х2+ 1 =7х25+ 1 х22+ 1 х2Ч 1 х 2°. 7:2 = 3, остаток 1; 231 = (((((3 х2 + 1)х2 + 0)х2 + 0)х2 + + 1)х2+ 1)х2 + 1 = 3х26+ 1 х25+ 1 х22+ 1 х 21 + 1 х 2°. 3:2= 1; остаток 1; далее процесс продолжать нельзя, так как 1 не делится нацело на 2. 231 = ((((((1 х2+1)х2+1)х2 + 0)х2 + 0)х2+1)х2+1)х х 2 + 1 = 1 х 27 + 1 х 26 + 1 х 25 + 1 х 22 + 1 х 21 + 1 х 2°. Таким образом, последовательное деление нацело позволяет разложить число по степеням двойки, а это в краткой записи и есть двоичное изображение числа. 231 = 1 х 27 + 1 х 26 + 1 х 25 + 0 х 24 + 0 х 23 + 1 х 22 + 1 х 21 + + 1x2°= 11100111(2). Эти выкладки можно сократить, записав процесс деления следующим образом: 231(10)=11100111(2) 29
Читая частное и остатки от деления в порядке, обратном получению, получим двоичную запись числа. Такой способ перевода чисел называется правилом (алгоритмом) последовательного деления, очевидно, что он применим для любого основания. Для дробных чисел правило последовательного деления заменяется правилом последовательного умножения, которое также рассмотрим на примере. Переведем 0,8125 из десятичной системы в двоичную систему счисления. Умножим его на 2, т.е. 0,8125 х 2 = 1,625 или 0,8125 = (1 + 0,625) х х 2"1 = 1 х2-' + 0,625х2"1. Аналогично 0,625 = (1 + 0,25) х 2~1 или 0,8125 = 1 х 2~] + (1 + 0,25) х 21 х 2"1 = 1 х 2~] + 1 х 2~2 + + 0,25 х 2"2, но 0,25 = 0,5 х 2~\ 0,8125 = 1 х 2-1 + (1 + 0,5 х 2~1) х 2Л х 2~х = 1 х 2"1 + 1 х 2~2 + + 0,5 х 2-3 , но 0,5 = 1 х 2"1. 0,8125 = 1 х 2-1 + 1 х 2~2+ 1 х 2~] х 2~ъ = 1 х 2"1 + 1 х 2~2+ 1 х 2~\ В итоге получаем, что 0,8125(10) =1x2"'+ 1х2"2+ 1х2~4 = = 0,1101(2. Сокращая выкладки, получим правило (алгоритм) последовательного умножения; 0 1 1 0 1 8125 2 625 2 250 2 5 2 0 Попутно заметим, что в десятичной системе счисления правильная дробь переводится в десятичную дробь в конечном виде только в том случае, если ее знаменатель в качестве множителей имеет толь- 30
к ко степени двоек и пятерок, т.е. дробь имеет вид m n . Все же остальные дроби переводятся в бесконечные периодические дроби. Аналогично в двоичной системе счисления конечный вид получают дроби, где в знаменателе только степени двойки, т.е. большинство десятичных конечных дробей в двоичной системе счисления будут бесконечными периодическими дробями. Если ведутся приближенные вычисления, то последний разряд является сомнительным, и для обеспечения в приближенных вычислениях одинаковой точности в двоичной и десятичной записях числа без бесконечных дробей, достаточно взять число двоичных разрядов в (log210 ~ 3,3) 4 раза больше, чем десятичных. Между двоичной системой счисления, с одной стороны, и восьмеричной и шестнадцатеричной (заметим, 8 и 16 — есть третья и четвертая степени двойки) — с другой, существует связь, позволяющая легко переводить числа из одной системы в другую. Рассмотрим на примере: 231,8125(|0)= 11100111,1101(2)= 1 х 27+ 1 х 26 + 1 х 25 + 1 х 22 + + 1 х 2' + 1 х 2°+ 1 х 21 + 1 х 2"2+1 х 2Л Для перевода в шестнадцатеричную систему счисления сгруппируем целую и дробную части в группы по четыре члена и вынесем в каждой группе за скобки множители, кратные 24. Получим: (1 х 23 + 1 х 22 + 1 х 21 + 0 х 2°) х 24 + (1 х 23 + 1 х 22 + 1 х 2» + + 1 х 2°) + (1 х 23 + 1 х 22 + 0 х 2" + 1 х 2°) х 2"4= (1 х 23 + 1 х 22 + + 1 х 21 + 0) х 16' + (1 х 22 + 1 х 2' + 1 х 2°) х 16° + (1 х 23 + 1 х 22 + + 0 х 21 + 1 х 2°) х 16-' = 14 х 16' + 7 х 16° + 13 х 16"1 = E7.D(I6) Резюмируя, заключаем: для того, чтобы перевести число из двоичной системы в шестнадцатеричную, надо от десятичной запятой вправо и влево выделить группы по четыре цифры (они называются тетрадами), и каждую группу независимо от других перевести в одну шестнадцатеричную цифру. Аналогичное правило для восьмеричной системы читатель выведет сам. 31
Представление чисел в двоичном коде Представление чисел в памяти компьютера имеет специфическую особенность, связанную с тем, что в памяти компьютера они должны располагаться в байтах — минимальных по размеру адресуемых (т.е. к ним возможно обращение) ячейках памяти. Очевидно, адресом числа следует считать адрес первого байта. В байте может содержаться произвольный код из восьми двоичных разрядов, и задача представления состоит в том, чтобы указать правила, как в одном или нескольких байтах записать число. Действительное число многообразно в своих «потребительских свойствах». Числа могут быть целые точные, дробные точные, рациональные, иррациональные, дробные приближенные, числа могут быть положительными и отрицательными. Числа могут быть «карликами», например, масса атома, «гигантами», например, масса Земли, реальными, например, количество студентов в группе, возраст, рост. И каждое из перечисленных чисел потребует для оптимального представления в памяти свое количество байтов. Очевидно, единого оптимального представления для всех действительных чисел создать невозможно, поэтому создатели вычислительных систем пошли по пути разделения единого по сути множества чисел на типы (например, целые в диапазоне от ... до ..., приближенные с плавающей точкой с количеством значащих цифр ... и т.д.). Для каждого в отдельности типа создается собственный способ представления. Целые числа. Целые положительные числа от 0 до 255 можно представить непосредственно в двоичной системе счисления (двоичном коде). Такие числа будут занимать один байт в памяти компьютера. Число 0 1 2 3 • • • 255 Двоичный код числа 0000 0000 0000 0001 0000 0010 0000 0011 • • • 1111 1111 32
В такой форме представления легко реализуется на компьютерах двоичная арифметика. Если нужны и отрицательные числа, то знак числа может быть закодирован отдельным битом, обычно это старший бит; ноль интерпретируется как плюс, единица как минус. В таком случае одним байтом может быть закодированы целые числа в интервале от —127 до +127, причем двоичная арифметика будет несколько усложнена, так как в этом случае существуют два кода, изображающих число ноль 0000 0000 и 1000 0000, и в компьютерах на аппаратном уровне это потребуется предусмотреть. Рассмотренный способ представления целых чисел называется прямым кодом. Положение с отрицательными числами несколько упрощается, если использовать, так называемый, дополнительный код. В дополнительном коде положительные числа совпадают с положительными числами в прямом коде, отрицательные же числа получаются в результате вычитания из 1 0000 0000 соответствующего положительного числа. Например, число —3 получит код 1 0000 0000 0000 0011 1111 1101 В дополнительном коде хорошо реализуется арифметика, так как каждый последующий код получается из предыдущего прибавлением единицы с точностью до бита в девятом разряде. Например, 5-3 = 5 + (-3). 0000 0101 1111 1101 I 0000 0010, т.е., отбрасывая подчеркнутый старший разряд, получим 2. Аналогично целые числа от 0 да 65536 и целые числа от —32768 до 32767 в двоичной (шестнадцатеричной) системе счисления представляются в двухбайтовых ячейках. Существуют представления целых чисел и в четырехбайтовых ячейках. Действительные числа. Действительные числа в математике представляются конечными или бесконечными дробями, т.е. точность представления чисел не ограничена. Однако в компьютерах числа хранятся в регистрах и ячейках памяти, которые представляют собой последовательность байтов с ограниченным количеством разря- 2. Информатика 33
дов. Следовательно, бесконечные или очень длинные числа усекаются до некоторой длины и в компьютерном представлении выступают как приближенные. В большинстве систем программирования в написании действительных чисел целая и дробная части разделяются не запятой, а точкой. Для представления действительных чисел, как очень маленьких, так и очень больших, удобно использовать форму записи чисел в виде произведения X = m • qp, где m — мантисса числа; q — основание системы счисления; р — целое число, называемое порядком. Такой способ записи чисел называется представлением числа с плавающей точкой. То есть число 4235,25 может быть записано в одном из видов: 4235,25 = 423,525-10* = 42,3525-102 = 4,23525-103 = 0,423525-104. Очевидно, такое представление не однозначно. Если мантисса 1 / q < |m| < q (0,1 < |m| < 1 для десятичной системы счисления), то представление числа становится однозначным, а такая форма называется нормализованной. Если «плавающая» точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведенных под мантиссу, обеспечивается запись максимального количества значащих цифр числа, т.е. максимальная точность. Действительные числа в компьютерах различных типов записываются по-разному, тем не менее существует несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру. Рассмотрим на примере числа, занимающего 4 байта. 32 31 30 24 23 22 21 Знак мантиссы 34 Смещенный порядок Мантисса 2
Первый бит двоичного представления используется для кодирования знака мантиссы. Следующая группа бит кодирует порядок числа, а оставшиеся биты кодируют абсолютную величину мантиссы. Длины порядка и мантиссы фиксируются. Порядок числа может быть как положительным, так и отрицательным. Чтобы отразить это в двоичной форме, величина порядка представляется в виде суммы истинного порядка и константы, равной абсолютной величине максимального по модулю отрицательного порядка, называемой смещением. Например, если порядок может принимать значения от —128 до 127 (8 бит), тогда, выбрав в качестве смещения 128, можно представить диапазон значений порядка от 0 (-128+128, порядок + смещение) до 255 (127+128), Так как мантисса нормализованного числа всегда начинается с нуля, некоторые схемы представления его лишь подразумевают, используя лишний разряд для повышения точности представления мантиссы. Использование смещенной формы позволяет производить операции над порядками как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел. Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, пред ставимого в компьютере при заданном формате. Вещественные числа в памяти компьютера, в зависимости от требуемой точности (количества разрядов мантиссы) и диапазона значений (количества разрядов порядка), занимают от четырех до десяти байтов. Например, четырехбайтовое вещественное число имеет 23 разряда мантиссы (что соответствует точности числа 7—8 десятичных знаков) и 8 разрядов порядка (обеспечивающих диапазон значений 10±38). Если вещественное число занимает десять байтов, то мантиссе отводится 65 разрядов, а порядку — 14 разрядов. Это обеспечивает точность 19—20 десятичных знаков мантиссы и диапазон значений 10±4931. Понятие типа данных. Как уже говорилось, минимально адресуемой единицей памяти является байт, но представление числа требует большего объема. Очевидно, такие числа займут группу байт, а 35
адресом числа будет адрес первого байта группы. Следовательно, произвольно взятый из памяти байт ничего нам не скажет о том, частью какого информационного объекта он является — целого числа, числа с плавающей запятой или команды. Резюмируя вышесказанное, можно сделать вывод, что кроме задачи представления данных в двоичном коде, параллельно решается обратная задача — задача интерпретации кодов, т.е. как из кодов восстановить первоначальные данные. Для представления основных видов информации (числа целые, числа с плавающей запятой, символы, звук и т.д.) в системах программирования используют специального вида абстракции — типы данных. Каждый тип данных определяет логическую структуру представления и интерпретации для соответствующих данных. В дальнейшем для каждого типа данных будут определены и соответствующие ему операции обработки. 1.3.2. Представление символьный и текстовых данных в двоичном коде Для передачи информации между собой люди используют знаки и символы. Начав с простейших условных жестов, человек создал целый мир знаков, где главным средством общения стал язык (т.е. речь и письменность). Слово есть минимальная первичная единица языка, представляющая собой специальный набор символов и служащая для наименования понятий, предметов, действий и т.п. Следующим по сложности элементом языка является предложение — конструкция, выражающая законченную мысль. На основе предложений строится текст. Текст (от лат. textus — ткань, соединение) - высказывание, выходящее за рамки предложения и представляющее собой единое и целое, наделенное внутренней структурой и организацией в соответствии с правилами языка. С появлением вычислительных машин стала задача представления в цифровой форме нечисловых величин, и в первую очередь — символов, слов, предложений и текста. Символы. Для представления символов в числовой форме был предложен метод кодирования, получивший в дальнейшем широкое распространение и для других видов представления нечисловых дан- 36
ных (звуков, изображений и др.). Кодом называется уникальное беззнаковое целое двоичное число, поставленное в соответствие некоторому символу. Под алфавитом компьютерной системы понимают совокупность вводимых и отображаемых символов. Алфавит компьютерной системы включает в себя арабские цифры, буквы латинского алфавита, знаки препинания, специальные символы и знаки, буквы национального алфавита, символы псевдографики — растры, прямоугольники, одинарные и двойные рамки, стрелки. Первоначально для хранения кода одного символа отвели 1 байт (8 битов), что позволяло закодировать алфавит из 256 различных символов. Система, в которой каждому символу алфавита поставлен в соответствие уникальный код, называется кодовой таблицей. Разные производители средств вычислительной техники создавали для одного и того же алфавита символов свои кодовые таблицы. Это приводило к тому, что символы, набранные с помощью одной таблицы кодов, отображались неверно при использовании другой таблицы. Для решения проблемы многообразия кодовых таблиц в 1981 г. Институт стандартизации США принял стандарт кодовой таблицы, получившей название ASCII (American Standard Code of Information Interchange — американский стандартный код информационного обмена). Эту таблицу использовали программные продукты, работающие под управлением операционной системы MS-DOS, разработанной компанией Microsoft по заказу крупной фирмы — производителя персональных компьютеров IBM (International Business Machine). Широкое распространение персональных компьютеров фирмы IBM привело к тому, что стандарт ASCII приобрел статус международного. В таблице ASCII содержится 256 символов и их кодов. Таблица состоит из двух частей: основной и расширенной. Основная часть (символы с кодами от 0 до 127 включительно) является базовой, она в соответствии с принятым стандартом не может быть изменена. В нее вошли: управляющие символы (им соответствуют коды с 1 по 31), арабские цифры, буквы латинского алфавита, знаки препинания, специальные символы (табл. 1.1). Расширенная часть (символы с кодами от 128 до 255) отдана национальным алфавитам, символам псевдографики и некоторым специальным символам. В соответствии с утвержденными стандар- 37
Тоблица 1.1. Базовая часть тоблицы кодов ASCII Код 32 33 34 35 36 37 38 39 40 41 42 43 пробел 1 • щш н $ % & » ( ) ■Ж -•" Коя 44 45 46 47 48 49 50 51 52 53 54 55 » / 0 1 2 3 4 5 6 7 Код 56 57 58 59 60 61 62 63 64 65 66 67 8 9 * • * < — > ? ■ @ 11 В С Код 68 69 70 71 72 73 74 75 76 77 78 79 D Е F G Н I J К L М N 0 Код 80 81 82 83 84 85 86 87 88 89 90 91 Р 0 R S Т и V w X V Z [ Код 92 93 94 95 96 97 98 99 100 101 102 103 \ ] •л. ~ a Ь с d е f g Код 104 105 106 107 108 109 110 111 112 113 114 115 h 1 • 3 к 1 m п о Р q г s Код 116 117 118 119 120 121 122 123 124 125 126 127 t и V W X У Z { 1 1 } ^"ш- й тами эта часть таблицы изменяется в зависимости от национального алфавита той страны, где она используется, и способа кодирования. Именно поэтому, при наименовании программ, документов и других объектов желательно использовать латинские буквы, содержащиеся в основной, неизменяемой части таблицы, так как русскоязычные имена при несоответствии таблиц кодирования будут неверно отображаться. Например, операционная система Windows поддерживает большое число расширенных таблиц для различных национальных алфавитов. В России наиболее распространенной кодовой таблицей алфавита русского языка является «латиница Windows 1251» (табл. 1.2). В качестве другого примера рассмотрим расширенную таблицу «ГОСТ—альтернативная» (табл. 1.3), на смену которой пришла «латиница Windows 1251». Во многих странах Азии 256 кодов явно не хватило для кодирования их национальных алфавитов. В 1991 г. производители программных продуктов и организации, утверждающие стандарты, пришли к соглашению о выработке единого стандарта. Этот стандарт построен по 16 битной схеме кодирования и получил название UNICODE. Он позволяет закодировать 216= 65536 символов, которых достаточно для кодирования всех национальных алфавитов в одной таблице. Так как каждый символ этой кодировки занимает два байта (вместо одного, как раньше), все текстовые документы, пред- 38
Таблииа 1.2. Расширенная таблица «латинииа Windows 1251» Код 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 Символ ъ г 1 t 11 • • ■ t t € %0 Jb < ьь ft ъ и Код 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 Символ ? • • И » • — — D ТМ гь > ЬЬ К h и Код 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 Символ У у J п г1 i i § Ё © е « -I ® if Код 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 Chmboj а ± I i Г Я Я • ё № е » i s s Т Код 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 Симво; А Б В Г д Е Ж 3 И Й к л м н о п Код 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 Chmboj Р С т У ф X Ц ч ш Щ ъ ы ь э ю я Код 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 Симво; a б в г Д е ж 3 и й к л м н о п Код 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 Симво. Р С т У Ф X Ц ч ш Щ ъ ы ь э ю я Таблииа 1.3. Расширенная таблица «ГОСТ-альтернативная» Код 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 А И Р Ш a И X 1 IL JL Т Р Ш Ё о Код 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 Б Й С щ б Й it'll' 1 г т с щ е • Код 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 В К Т Ъ в к 1 1 I т г т ъ е ■ Код 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 Г Л У Ы г п 1 1 I 1 и ы е S Код 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 Д М Ф Ь д м J — t ■ ф ь I W Код 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 Е М К 3 е н 1 + i= i X э • • 1 D Код 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 Ж 0 Ц ю ж о ] 1 Y s Ц Ю 9 ■ Код 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 3 П Ч Я 3 п 1 } i ч я н 39
ставленные в UNICODE, стали длиннее в два раза. Современный уровень технических средств нивелирует этот недостаток UNICODE. Текстовые строки. Текстовая (символьная) строка — это конечная последовательность символов. Это может быть осмысленный текст или произвольный набор, короткое слово или целая книга. Длина символьной строки — это количество символов в ней. Записывается в память символьная строка двумя способами: либо число, обозначающее длину текста, затем текст, либо текст, затем — разделитель строк. Текстовые документы. Текстовые документы используются для хранения и обмена данными, но сплошной, не разбитый на логические фрагменты текст воспринимается тяжело. Структурирование теста достигается форматированием — специфическим расположением текста при подготовке его к печати. Для анализа структуры текста были разработаны языки разметки, которые устанавливают текстовые метки (маркеры или теги), используемые для обозначения частей документа, записывают вместе с основным текстом в текстовом формате. Программы, анализирующие текст, структурируют его, считывая теги. 1.3.3. Предстовление звуковых данных в двоичном коде Звук — это упругая продольная волна в воздушной среде. Чтобы ее представить в виде, читаемом компьютером, необходимо выполнить следующие преобразования (рис. 1.4.). Звуковой сигнал преобразовать в электрический аналог звука с помощью микрофона. Электрический аналог получается в непрерывной форме и не пригоден для обработки на цифровом компьютере. Чтобы перевести сигнал в цифровой код, надо пропустить его через аналого-цифровой преобразователь (АЦП). При воспроизведении происходит обратное преобразование — цифро-аналоговое (через ЦАП). Позже будет показано, что конструктивно АЦП и ЦАП находятся в звуковой карте компьютера. Во время оцифровки сигнал дискретизируется по времени и по уровню (рис. 1.5.). Дискретизация по времени выполняется следующим образом: весь период времени Т разбивается на малые 40
Упругая волна в воздушной среде Токовый аналог звука Дискретизация двоичного кода КОМПЬЮТЕР Обработка кода Рис. 1.4. Схема обработки звукового сигнала Рис. 1.5. Схема дискретизации звукового сигнала интервалы времени At, точками t,, t2, ... tn. Предполагается, что в течение интервала At уровень сигнала изменяется незначительно и может с некоторым допущением считаться постоянным. Величина v = 1/At называется частотой дискретизации. Она измеряется в герцах (Гц) — количество измерений в течение секунды. 41
Дискретизация по уровню называется квантованием и выполняется так: область изменения сигнала от самого малого значения X . min до самого большого значения Хтах разбивается на N равных квантов, промежутков величиной АХ = (X - X )/N. у max mm7' Точками Х„ Х„ ... X . X. = X . + ДХ • (i - 1). 1' 2' n I min х ' Каждый квант связывается с его порядковым номером, т.е. целым числом, которое легко может быть представлено в двоичной системе счисления. Если сигнал после дискретизации по времени (напомним, его принимаем за постоянную величину) попадает в промежуток X, < X < X, то ему в соответствие ставится код i. Возникают две задачи: — первая', как часто по времени надо измерять сигнал, — вторая', с какой точностью надо измерять сигнал, чтобы получить при воспроизведении звук удовлетворительного качества. Ответ на первую задачу дает теорема Найквиста, которая утверждает, что, если сигнал оцифрован с частотой v, то высшая «слышимая» частота будет не более v/2. Вторая задача решается подбором числа уровней так, чтобы звук не имел высокого уровня шума и «электронного» оттенка звучания (точнее, это характеризуется уровнем нелинейных искажений). Попутно заметим, что число уровней берется как 2П. Чтобы измерение занимало целое число байт; v выбирают п = 8 или п = 16, т.е. каждое измерение занимает один или два байта. Высокое качество воспроизведения получается в формате лазерного аудиодиска при следующих параметрах оцифровки: частота дискретизации — 44,1 кгц, квантование — 16 бит, т.е. Ах = (Xmax— Xmi)/ 216. Таким образом, 1 с стереозвука займет 2 байт • 44100байт/с • • 2 кан * 1 с = 176 400 байт дисковой памяти. Качество звука при этом получается очень высоким. Для телефонных переговоров удовлетворительное качество получается при частоте дискретизации 8 кгц и частоте квантования 255 уровней, т.е. 1 байт, при этом 1 с звуковой записи займет на диске 1 байт • 8000 байт/с • 1 с = 8000 байт. 42
1.3.4. Представление графических даннын в двоичном коде Есть два основных способа представления изображений. Первый — графические объекты создаются как совокупности линий, векторов, точек — называется векторной графикой. Второй — графические объекты формируются в виде множества точек (пикселей) разных цветов и разных яркостей, распределенных по строкам и столбцам, — называется растровой графикой. Модель RGB. Чтобы оцифровать цвет, его необходимо измерить. Немецкий ученый Грасман сформулировал три закона смешения цветов: 1) закон трехмерности — любой цвет может быть представлен комбинацией трех основных цветов; 2) закон непрерывности — к любому цвету можно подобрать бесконечно близкий; 3) закон аддитивности — цвет смеси зависит только от цвета составляющих. За основные три цвета приняты красный (Red), зеленый (Green), синий (Blue). В модели RGB любой цвет получается в результате сложения основных цветов. Каждый составляющий цвет при этом характеризуется своей яркостью, поэтому модель называется аддитивной. Эта схема применяется для создания графических образов в устройствах, излучающих свет, — мониторах, телевизорах. Модель CMYK. В полиграфических системах напечатанный на бумаге графический объект сам не излучает световых волн. Изображение формируется на основе отраженной волны от окрашенных поверхностей. Окрашенные поверхности, на которые падает белый свет (т.е. сумма всех цветов), должны поглотить (т.е. вычесть) все составляющие цвета, кроме того, цвет которой мы видим. Цвет поверхности можно получить красителями, которые поглощают, а не излучают. Например, если мы видим зеленое дерево, то это означает, что из падающего белого цвета, т.е. суммы красного, зеленого, синего, поглощены красный и синий, а зеленый отражен. Цвета красителей должны быть дополняющими: голубой (Cyan = В + G), дополняющий красного; пурпурный (Magenta = R + В), дополняющий зеленого; желтый (Yellow = R + G), дополняющий синего. 43
Но так как цветные красители по отражающим свойствам не одинаковы, то для повышения контрастности применяется еще черный (black). Модель CMYK названа по первым буквам слов Cyan, Magenta, Yellow и последней букве слова black. Так как цвета вычитаются, модель называется субстрактивной. Оцифровка изображения. При оцифровке изображение с помощью объектива проецируется на светочувствительную матрицу т строк и п столбцов, называемую растром. Каждый элемент матрицы — мельчайшая точка, при цветном изображении состоящая из трех светочувствительных (т.е. регистрирующих яркость) датчиков красного, зеленого, желтого цвета. Далее оцифровывается яркость каждой точки по каждому цвету последовательно по всем строкам растра. Если для кодирования яркости каждой точки использовать по одному байту (8 бит) на каждый из трех цветов (всего 3 • 8 = 24 бита), то система обеспечит представление 224« 16,7 млн распознаваемых цветов, что близко цветовосприятию человеческого зрения. Режим представления цветной графики двоичным кодом из 24 разрядов называется полноцветным или True Color. Очевидно, графические данные, также как и звуковые, занимают очень большие объемы на носителях. Например, скромный по современным меркам экран монитора имеет растр 800 х 600 точек, изображение, представленное в режиме True Color, займет 800 х 600 х 3 = 1 440 000 байт. В случае, когда не требуется высокое качество отображения цвета, применяют режим High Color> который кодирует одну точку растра двумя байтами (16 разрядов дают 216 ~ 65,5 тысячи цветов). Режим, который при кодировании одной точки растра использует один байт, называется индексным, в нем различаются 256 цветов. Этого недостаточно, чтобы передать весь диапазон цветов. Код каждой точки при этом выражает собственно не цвет, а некоторый номер цвета (индекс) из таблицы цветов, называемой палитрой. Палитра должна прикладываться к файлам с графическими данными и используется при воспроизведении изображения. 1.3.5. Понятие сжатия информации Еще одна проблема, тесно связанная с моделями представления информации, — сжатие информации. При хранении и передаче данных по каналам связи объем ин- 44
формации является основным параметром. Поэтому проблема представления дополняется проблемой сжатия, т.е. плотной упаковкой информации. Разработаны и применяются два типа алгоритмов сжатия: сжатие с изменением структуры данных (оно происходит без потери данных) и сжатие с частичной потерей данных. Алгоритмы первого типа предусматривают две операции: сжатие информации для хранения, передачи и восстановление данных точно в исходном виде, когда их требуется использовать. Такой тип сжатия применяется, например, для хранения текстов (наиболее известны алгоритмы Хаффмена и Лемпеля-Зива). Алгоритмы второго типа не позволяют полностью восстановить оригинал и применяются для хранения графики или звука; для текстов, чисел или программ они неприменимы. 1.4. Структуры данных Работа с большим количеством данных автоматизируется проще, когда данные упорядочены. Для упорядочивания данных применяют следующие структуры: линейные (списки), табличные, иерархические (дерево). Линейная структура. Линейная структура данных (или список) — это упорядоченная структура, в которой адрес данного однозначно определяется его номером (индексом). Примером линейной структуры может быть список учебной группы или дома, стоящие на одной улице. В списках, как правило, новый элемент начинается с новой строки. Если элементы располагаются в строчку, нужно внести разделительный знак между элементами. Поиск осуществляется по разделителям (чтобы найти, например, десятый элемент, надо отсчитать девять разделителей). Если элементы списка одной длины, структура называется вектором данных, разделители не требуются. При длине одного элемента — d, зная номер элемента — п, его начало определяется соотношением d (n— 1). Табличная структура данных. Табличная структура данных — это упорядоченная структура, в которой адрес данного однозначно определяется двумя числами — номером строки и номером столбца, на пересечении которых находится ячейка с искомым элементом. 45
Если элементы располагаются в строчку, нужно внести два разделительных знака — разделительный знак между элементами строки и разделительный знак между строками. Поиск, аналогично линейной структуре, осуществляется по разделителям. Если элементы таблицы одной длины, структура называется матрицей данных, разделители в ней не требуются. При длине одного элемента — d, зная номер строки — m и номер столбца n, a также строк и столбцов М, N, найдем адрес его начала: d [N(m - 1) + (n - 1)]. Таблица может быть и трехмерная, тогда три числа характеризуют положение элемента и требуются три типа разделителей, а может быть и п-мерная. Иерархическая структура. Нерегулярные данные, которые трудно представляются в виде списка или таблицы, могут быть представлены в иерархической структуре, в которой адрес каждого элемента определяется путем (маршрутом доступа), идущим от вершины структуры к данному элементу. Иерархическую структуру образуют, например, почтовые адреса (рис. 1.6). Краснодарский край Семикаракорский район Ворошиловский Россия Ростовская область Ставропольский край Ростов Красносулинский Белокалитвинский район район Большая Садовая Буденновский Рис. 1.6. Пример иерархической структуры данных Адрес одного из домов, расположенных, к примеру, на улице Большая Садовая, может выглядеть следующим образом: Россия\Ростовская область\Ростов\ул. Большая Садовая\д. 1. 46
Линейная и табличная структуры более просты, чем иерархическая структура, но если в линейной структуре появляется новый элемент, то упорядоченность сбивается. Например, если в списке студентов появляется новый человек, то расположенный по алфавиту список нарушается. В иерархической структуре введение нового элемента не нарушает структуры дерева, недостатком ее является трудоемкость записи адреса и сложность упорядочения. 1.5. Хранение данных Для устройств обработки данных, к которым относится и компьютер, большое значение имеет организация метода хранения информации на внешних носителях, позволяющих сохранять данные энергонезависимо. Способ хранения данных на таких носителях должен обеспечивать их целостность, доступность и защищенность. В настоящее время наиболее популярными внешними носителями являются диски. На одном диске помещается информация, объем которой может измеряться триллионами байтов. В этом случае эффективный способ хранения особенно важен. Разработчики программного обеспечения предложили оригинальный способ организации хранения информации: в виде файлов. Под файлом понимается именованная область носителя, содержащая данные произвольной длины и воспринимаемая компьютерной системой как единое целое. Имя файла имеет особое значение, оно сопоставлено адресу размещения файла на носителе. Носитель имеет служебную таблицу, в каждой строке которой записано имя файла и адрес его местонахождения на носителе. Эта таблица используется специальной программой, которая называется файловой сие- темой. Для доступа к данным она получает имя файла, находит по таблице его местоположение на носителе и возвращает содержимое файла. Как правило, процесс обработки информации сопровождается ее последующим сохранением. Для этого компьютерная программа объединяет какой-либо блок обрабатываемых данных в единое целое, снабжает его именем и передает файловой системе для записи на внешний носитель. Имя файла состоит из некоторого набора символов и для боль- 47
шинства файловых систем может содержать до 256 знаков. Имя файла может быть дополнено расширением, которое определяет тип информации, хранящейся в файле. Расширение содержит от одного до трех символов и отделяется от имени точкой. Большинство программ при создании файла автоматически добавляют к имени свое уникальное расширение, которое помогает им в дальнейшем опознавать «свои» файлы. Например, файлы, созданные программой Microsoft Word, имеют расширение .doc, расширение .xls добавляет программа Microsoft Excel. Кроме имени, файловая система, создавая файл, снабжает его дополнительной информацией: датой и временем создания (или модификации), размером сохраненных данных, правами доступа к информации, хранящейся в нем. Эта информация называется атрибутами файла и предоставляет возможности файловой системе оперативно работать с файлами. Файл в числовом виде хранит информацию разных типов, например, текстовую, звуковую, графическую и т.д. Программа, создающая файл, размещает информацию в нем таким образом, чтобы при дальнейшей работе с файлом записанные данные можно было распознать и правильно извлечь. Способ представления данных в файле называется форматом файла. Формат определяет внутреннюю организацию информации, хранимой в файле. Открывая файл, прикладная программа проверяет его формат. Если он соответствует распознаваемым ею форматам, информация, хранящаяся в файле, извлекается в удобном для работы виде. Современные операционные системы автоматически распознают формат файла и самостоятельно запускают работающую с ним прикладную программу. Имеется возможность определять формат файла, не исследуя его структуры. Для этого используется его расширение. Анализируя расширение, операционная система определяет тип и структуру файла. Многие форматы файлов стандартизированы и используются соответствующими программными приложениями, работающими под управлением различных операционных систем. Как было уже сказано, задачу централизованного управления данными решает файловая система. Она выполняет функции распределения внешней памяти, отображения имен файлов в соответствующие адреса и обеспечения доступа к данным. Для удобства работы файлы объединяют в группы, их имена рас- 48
полагают в файле специального вида, называемом каталогом или папкой. Каталоги образуют иерархическую (древовидную) структуру. Каталоги, размещенные на вершине иерархии, называются каталогами первого уровня. Каталоги первого уровня могут содержать каталоги второго уровня и т.д. Каждый каталог содержит описание файлов или каталогов следующего уровня иерархии. Так же как и файлу, каталогу задается имя и атрибуты, позволяющие файловой системе манипулировать им: создавать, удалять, перемещать, добавлять в него файлы, каталоги и т.д. 1.6. Математические основы информатики Как было отмечено ранее, информатика — прикладная наука, находящаяся на стыке многих наук. Вместе с тем она опирается на спектр разделов такой фундаментальной науки, как математика. Наиболее важное прикладное значение для информатики имеют булева алгебра, используемая в разработке алгоритмов программ и в синтезе цифровых устройств, теория множеств и теория графов, используемые в описании различных структур. 1.6.1. Алгебра высказываний (булева алгебра) Основные понятия Основное понятие булевой алгебры — выказывание. Под простым высказыванием понимается повествовательное предложение, о котором можно сказать, истинно оно или ложно (третьего не дано). Высказывания обозначаются латинскими буквами и могут принимать одно из двух значений: ЛОЖЬ (обозначим 0) или ИСТИНА (обозначим 1). Например, содержание высказывания А: «дважды два равно четырем» истинно А = 1, а высказывание В: «три больше пяти» всегда есть ЛОЖЬ. В дальнейшем нас не будет интересовать содержательная часть высказываний, а только их истинность. Два высказывания А и В называются равносильными, если они имеют одинаковые значения истинности, записывается А = В. 49
Логические операиии Сложное высказывание можно построить из простых с помощью логических операций: отрицания, конъюнкции, дизъюнкции, импликации и логических выражений, представляющих собой комбинации логических операций. Рассмотрим их подробней. Операцией отрицания А называют высказывание А (или -А, говорят не А), которое истинно тогда, когда А ложно, и ложно тогда, когда А истинно. Например, если событие А состоит в том, что «завтра будет снег», то А «завтра НЕ будет снега», истинность одного утверждения автоматически означает ложность второго. Отрицание — унарная (т.е. для одного операнда) логическая операция. Ей соответствует языковая конструкция, использующая частицу НЕ. Это правило можно записать в виде следующей таблицы: А 0 1 А 1 0 Такая таблица называется таблицей истинности. Конъюнкцией (логическим умножением) двух высказываний А и В является новое высказывание С, которое истинно только тогда, когда истинны оба высказывания, записывается С = А л В или С = А & В (при этом говорят С равно А и В). Примером такой операции может быть следующая: пусть высказывание А состоит в том, что «высота шкафа меньше высоты двери», событие В «ширина шкафа меньше ширины двери», событие С «шкаф можно внести в дверь, если ширина шкафа меньше ширины двери И высота шкафа меньше высоты двери», т.е. данная операция применяется, если два высказывания связываются союзом И. Таблица истинности этой операции, как следует из определения, имеет вид А 0 0 1 1 В 0 1 0 1 А&В 0 0 0 1 50
Дизъюнкцией (логическим сложением) двух высказываний А и В является новое высказывание С, которое истинно, если истинно хотя бы одно высказывание. Записывается С = A v В (при этом говорят: С равно А ИЛИ В). Пример такой операции следующий: пусть высказывание А состоит в том, что «студент может добираться домой на автобусе», событие В «студент может добираться домой на троллейбусе», событие С «студент добрался домой на автобусе ИЛИ троллейбусе», т.е. данная операция применяется, если два высказывания связываются союзом ИЛИ. Таблица истинности такой операции следующая: А 0 0 1 1 В 0 1 0 1 AvB 0 1 1 1 Импликацией двух высказываний А (А называется посылкой) и В (В называется заключением) является новое высказывание С, которое ложно только тогда, когда посылка истинна, а заключение ложно, записывается С = А —> В (при этом говорят: из А следует В). Примером такой операции может быть любое рассуждение типа: если произошло событие А, то произойдет событие В, «если идет дождь, то на небе тучи». Очевидно, операция не симметрична, т.е. из В —> А не всегда истинно, в нашем примере «если на небе тучи, то идет дождь» не всегда истинно. Таблица истинности импликации следующая: А 0 0 1 1 В 0 1 0 1 А->В 1 1 0 1 Импликация имеет следующие свойства: А-»В*В -> А А->А= 1 51
0->А= 1 1 -» А = А А-» 1 = 1 А-» 0 = А Эквиваленцией двух высказываний А и В является новое высказывание С, которое истинно только тогда, когда оба высказывания имеют одинаковые значения истинности, записывается С = А <-» В (.С = А = В). Примером такой операции может быть любое высказывание типа: событие А равносильно событию В. Таблица истинности: А 0 0 1 1 В 0 1 0 1 А«->В 1 0 0 1 Эквиваленция имеет следующие свойства: А <-» В = В <-» А А<-> В = В <-> А А*-» 1 =А А<-»0 = А Логические Выражения. ПоряЭок логический операиий С помощью логических операций из простых высказываний (логических переменных и констант) можно построить логические выражения, которые также называются булевскими функциями. Например, С = (( A v В) -> В) v А. Чтобы избежать большого количества скобок в булевских функциях, принято следующее соглашение о старшинстве операций. Первыми выполняются операции в скобках, затем операции в следующем порядке: отрицание, конъюнкция и дизъюнкция слева направо, импликация, эквиваленция. 52
Зависимости межЭу логическими опероииоми Операции не являются независимыми; одни из них могут быть выражены через другие. Можно доказать с помощью таблиц истинности следующие равносильности: 1. А = А закон двойного отрицания 2. А&В = В&А коммутативный закон для конъюнкции 3. AvB = BvA коммутативный закон для дизъюнкции 4. (А & В) & С = А & (В & С) ассоциативный закон для конъюнкции 5. (AvB)vC = Av(BvC) ассоциативный закон для дизъюнкции 6. А & (В v С) = (А & В) v (А & С) дистрибутивные законы 7. A v (В & С) = (A v В) & (A v С) 8. А&В = A v В законы де Моргана 9. AvB = А & В 10. А & А = А закон идемпотенции для конъюнкции 11. A v A = А закон идемпотенции для дизъюнкции 12. А & 1 = А закон единицы для конъюнкции 13. А & 0 = 0 закон нуля для конъюнкции 14. A v 1 = 1 закон единицы для дизъюнкции 15. A v 0 = А закон нуля для дизъюнкции 16. A v А = 1 закон исключения третьего 17. А & А = 0 закон противоречия 18. А -> В = A v В 19. А <-» В = (А -> В) & (В -> А) = ( A v В) & ( A v В ) = = (A&B)v(A & В) 20. A v (А & В) = А законы поглощения 21. А & (A v В) = А 53
22. А&(А vB) = A&B 23. Av (A & В) = Av В Одну и ту же зависимость между логическими переменными можно выразить различными формулами. Поэтому важно иметь возможность приводить формулы с помощью эквивалентных преобразований к некоторому стандартному виду. Существует несколько стандартных форм, к которым приводятся логические выражения с помощью эквивалентных преобразований (формул 1—23). Первая из них — дизъюнктивная нормальная форма (ДНФ), имеет вид Al v A2 v ... v An, где каждое из составляющих высказываний есть конъюнкция простых высказываний и их отрицаний, например: В = ( А1 & А2 & A3) v (А4 & А5). Вторая — конъюнктивная нормальная форма (КНФ), имеет вид А1 л А2 а ... a An, где каждое из составляющих есть дизъюнкция простых высказываний и их отрицаний, например: В = ( Al v А2 v A3) & (А4 v А5) & А6. Табличное и алгебраическое з^Эание булеВскин срункиий Задать булевскую функцию можно, определяя ее значения для всех наборов значений аргументов. Каждый аргумент может иметь два значения: 0 и 1, следовательно, п аргументов могут принимать 2П различных наборов. Пусть, например, булевская функция имеет три аргумента: X,, Х2, Х3. Общее число наборов 23 = 8; зададим таблицу истинности функции, указав для каждого набора значение функции. № 1 2 3 4 5 6 7 8 X, 0 0 0 0 1 1 1 1 х? 0 0 1 1 0 0 1 1 Х3 0 1 0 1 0 1 0 1 F 0 1 0 1 0 1 0 1 54
Для составления алгебраической формы по результатам таблицы сделаем следующее. В комбинациях, где функция принимает значение 1, единицу заменим именем функции, а нуль — именем с отрицанием (т.е. комбинации 0 0 1 поставим в соответствие выражение Xj &Х2&Х3), все элементы соединим знаками дизъюнкции, для рассматриваемого примера получим F(X,, Х^ Х3) = (XY &Х2 &X3) v v (ХХ&Х2&Х3) v (X,&X2&X3) v (Х,&Х2&Х3). Как нетрудно заметить, построенная функция удовлетворяет заданной таблице истинности. Функция представляет дизъюнктивную нормальную форму. Кроме того, заметим, что в каждую группу дизъюнкций входят все аргументы функции. Такая ДНФ называется совершенной, а каждая группа дизъюнкций называется коституентой единицы. Аналогично, для комбинаций, где функция принимает значение нуля, можно построить алгебраическую форму F(X,,X2,X3) = = (X,vX2vX3) & (X,vX^vX3) & (X^vXjVXj) & (XjV^vXj), которая также удовлетворяет заданной таблице истинности и представляет собой конъюнктивную нормальную форму, в данном случае совершенную. Каждая конъюнкция называется конституентой нуля. В главе 2 будет показано, как, основываясь на булевой алгебре, создаются цифровые устройства. 1.6.2. Элементы теории множеств Множеством называется любое объединение определенных вполне различимых объектов; их может и не быть вообще. Можно говорить о множестве точек на отрезке [0,1], множестве студентов в группе, множестве снежных дней в июле на экваторе, т.е. множество образуют любые объекты, объединенные по любому признаку. Объекты, составляющие множество, называются элементами множества. Множество, не имеющее ни одного элемента, называется пустым, оно обозначается 0. Множество, состоящее из конечного числа элементов, называется конечным, в противном случае — бесконечным. Задать множество можно перечислением его элементов. Например, множество образованное из п элементов а,, а2, ..., ап, обозначается А = {а,, а2, ..., ап}; пишется а е А (говорится «элемент а при- 55
надлежит множеству А»), если а является элементом множества А, в противном случае a g A. Задать множество можно также, указав общее свойство для всех его и только его элементов. Например, множество точек равноудаленных от концов отрезка. Два множества считаются равными, если состоят из одних и тех же элементов; записывается этот факт А = В. Множество А, называется подмножеством А (записывается А,сА), если все элементы множества А1 являются элементами А. Для множеств определены следующие операции: объединение, пересечение, дополнение. Объединением множеств А и В (записывается AuB) называется множество, состоящее из элементов как одного, так и второго множества. Например, А и В — множества точек, принадлежащих некоторым двум кругам, имеющим общие точки, тогда объединением AuB будет фигура, состоящая из общих точек. Пересечением множеств А и В (записывается АпВ) называется множество, состоящее из элементов, принадлежащих как одному, так и второму множеству одновременно. Дополнением множества А до В называется множество, состоящее из элементов множества В, не принадлежащих А. Дополнение обозначается А = В-А (рис. 1.7). Рис. 1.7. Операции надмножествами 56
1.6.3. Элементы теории графов Основные понятия Граф задается парой множеств: множества Е, называемого множеством вершин, и множества U, называемого множеством ребер. Ребро u g U есть пара (е., е.), где е., е. g Е , указывающая, между какими двумя вершинами проведено ребро. Говорят, что ребро ug U инцидентно вершинам е., е.. Если порядок ребер не имеет значения, т.е. и = (е., е.) = (е., е.), то ребро называется неориентированным или просто ребром, если же порядок имеет значение, то ребро и = (е., е.) называется ориентированным ребром или дугой. Вершина е. — называется началом дуги, е. — конец дуги. Граф, содержащий хотя бы одну дугу, называется ориентированным графом или орграфом. Граф G(E,U) называется конечным, если множество Е вершин конечно. Граф G(E,U), у которого любые две вершины соединены ребром, называется полным. Если хотя бы две вершины соединены несколькими ребрами, то такой граф называется мулътиграфом. Две вершины е., e.G E называются смежными, если они соединены ребром. Число ребер, инцидентных данной вершине е., называется локальной степенью этой вершины р(е.). Число ребер г графа G(E,U) определяется выражением г = ~У.Р(е{), где п — количество вершин в графе. 2 ы Рассмотрим граф, изображенный на рис. 1.8. Рис. 1.8. Ориентированный граф 57
Множество вершин графа состоит из пяти элементов: Е = {1, 2, 3, 4, 5}, а множество ребер U = {(1, 2), (1, 4), (1, 5), (2, 3), (3, 4), (5, 3)}. Ребро (5, 3) — является ориентированным ребром или дугой. Число ребер в графе определяется по значению локальных степеней для каждой вершины: р(1) = 3; р(2) = 2; р(3) = 3; р(4) = 2; р(5) = 2; р = (3 + 2 + 3 + + 2 + 2) / 2 = 6. Важным в теории графов является понятие части графа G(E,U), который обозначается G'(E',U') с G(E,U). Множества вершин и ребер части графа являются подмножествами вершин и ребер исходного графа Е'сЕ U' с U. Многие задачи на графах состоят в определении частей графа с заданными свойствами. Часть графа G'(E',U') с G(E,U) называется подграфом графа G(E,U), если Е' с Е , а подмножество U'cU образовано только ребрами, инцидентными вершинам множества Е'. Полным графом называется граф G(E,U), у которого каждая вершина ее Е соединена ребрами с остальными вершинами (рис. 1.9). Рис. 1.9. Полный граф 58
Связанность грофоВ Маршрутом графа G называется последовательность ребер S = = (и., и7, ... и ), в которой каждые два соседних ребра имеют общую вершину, т.е. u,= (e,, e2); и2 = (е2, е3); ... un= (en, еп+1). Не исключено, что одно и то же ребро может встречаться несколько раз на одном маршруте. Две вершины е. и е. называются связанными, если существует мар- шрут из е. в е.. Компонентой связности графа называется подмножество его вершин с инцидентными им ребрами, такое, что любая вершина связана с любой другой вершиной маршрута. Например, из графа на рис. 1.10 можно выделить следующие две компоненты связанности, показанные сплошной линией. Рис. 1.10. Компоненты связанности графа Простой цепью, или простым путем, называется маршрут, в котором ни одно ребро ire повторяется дважды. Элементарной цепью или элементарным путем называется маршрут, в котором ни одна вершина не повторяется дважды. Циклом в графе называется маршрут, у которого начальная вершина совпадает с конечной. Например, следующий граф имеет цикл S = (1, 2, 3, 5, 4, 1) (рис. 1.11). 59
Рис. 1.11. Цикл в графе Цикл, проходящий по всем ребрам графа только один раз, называется эйлеровым циклом. В теории графов доказывается теорема, определяющая, содержит ли граф эйлеров цикл. Оказывается, конечный граф содержит эйлеров цикл тогда и только тогда, когда он связан, и все его локальные степени вершин четные. Важной прикладной задачей теории графов является задача поиска в графе цикла, проходящего через каждую вершину только один раз. Такие циклы называются гамильтоновыми циклами. Весьма важным является связанный граф, не имеющий циклов, он называется деревом. В дереве любые две вершины связаны единственным путем. Вершина называется концевой, если ей инцидентно не более одного ребра; одна из концевых вершин может быть выбрана в качестве корня. ЗоЭоние графа Граф может задаваться в виде рисунка, аналитически, в виде матрицы. Выше приводилось задание графа в виде рисунка. Аналитическое задание состоит в задании элементов множества вершин Е = {ер е2, ... еп} и множества ребер U = {up u2, ... um}. Для выполнения различного рода формальных преобразований над фафами удобно использовать их матричные задания. Матрица А размерностью пхп называется матрицей смежности графа G(E,U), если ее элементы образованы по правилу: элемент матрицы а.= т, если вершины ей е. соединены т ребрами, и а..= 0, если эти верши- 60
ны не связаны ребрами. Матрица смежности, имеет число строк и столбцов, равное количеству вершин графа. Матрица А размерностью n x m называется матрицей инцидентности графа G(E,U), если ее элементы образованы по правилу: элемент матрицы Ь.. = 1, если вершина е. инцидентна ребру и. и Ь.. = 0 в противном случае. Так как каждое ребро инцидентно двум вершинам, то в каждой строке этой матрицы ровно два ненулевых элемента. Построим матрицы смежности и инцидентности для графа, изображенного на рис. 1.12. Рис. 1.12. Пример графа Матрица смежности будет состоять из пяти строк и пяти столбцов. 1 2 3 4 5 1 0 1 0 1 0 2 1 0 1 1 0 3 0 1 0 0 1 4 1 1 0 0 1 5 0 5 1 1 0 Матрица инцидентности будет состоять из пяти строк и шести столбцов. 1 2 3 4 5 а 1 1 0 0 0 b 1 0 0 1 0 с 0 1 1 0 0 d 0 0 1 0 1 е 0 1 0 1 0 f 0 0 0 1 1 61
2. Технические средство реализации информационный процессов 2.1. Представление информации В технических устройствах В основу любого устройства, предназначенного для преобразования или хранения информации, должен быть положен принцип ее представления, то есть ее физический носитель. Известны, например, механические устройства, в которых информация представляется углами поворота или перемещения объектов относительно друг друга. Так как автоматизация процесса обработки информации всегда являлась важной задачей для дальнейшего прогресса промышленности и науки, предлагались устройства, принцип представления информации в которых зависел от уровня развития техники: механические устройства с ручным, а затем с паровым приводом, электромеханические, электрические устройства и, наконец, электронные устройства. Последние получили широкое распространение и за 30-40 лет вытеснили устройства других типов. Исключение составляют случаи, когда преобразование информации требует наличия движущихся объектов, например, лентопротяжные или дисковые механизмы памяти больших объемов, исполнительные механизмы и приводы и некоторые другие. Преимущество использования электронных устройств обусловлено многими факторами, главными из которых являются удобство преобразования и передачи электрических сигналов, малая инерционность электронных устройств и, следовательно, их высокое быстродействие. Вычислительные устройства, использующие непрерывную форму представления информации, называются аналоговыми вычислительными машинами (АВМ). Вычислительные устройства, использующие дискретную форму представления, называются цифровыми вычислительными машинами (ЦВМ). В настоящее время устройства, использующие непрерывный спо- 62
соб представления информации, вытесняются более прогрессивными цифровыми устройствами, даже из таких традиционно «аналоговых» областей, как телевидение и телефония. Что касается непосредственно вычислительных систем, то их развитие, начавшееся преимущественно с АВМ, постепенно перешло к ЦВМ и к середине 70-х гг. прошлого столетия ЦВМ полностью вытеснили АВМ. В дальнейшем мы будем рассматривать только вычислительные устройства с дискретным представлением информации, поэтому здесь остановимся несколько подробнее на принципе построения и полезных свойствах АВМ. АВМ имели блочную структуру, т.е. представляли собой систему связанных между собой базовых элементов. Связи между базовыми элементами, их состав и количество изменялись для каждой задачи, решаемой на АВМ. В качестве базового элемента использовался операционный усилитель, схема которого показана на рис. 2.1. Он состоит из усилителя, входных элементов (Е1, ..., Ея) и элемента обратной связи (Еос). В качестве элементов используются радиоэлектронные компоненты: резисторы, конденсаторы, индуктивности. В зависимости от типов элементов, базовый элемент может производить сложение, интегрирование, дифференцирование и некоторые другие операции над входными напряжениями (UbxI, ..., ивхя), результат операции снимается в виде выходного напряжения (ивых). Основными достоинствами АВМ являлись простота аппаратной реализации и высокая скорость получения решения. Основным же недостатком являлась низкая точность результата, так как радиоэлектронные компоненты, подвергаясь воздействиям внешней среды, изменяли свои параметры, что и влияло на точность решения. 63
ЦВМ имеют гораздо более высокую сложность аппаратной и программной реализации. Информация в них имеет определенные границы представления, т.е. точность представления информации конечна. Для расширения границ представления необходимо увеличивать аппаратную часть или увеличивать время обработки. Основными достоинствами ЦВМ, а в дальнейшем — компьютерных систем (КС) являются: • гарантированная точность результата, зависящая только от границ представления данных; • универсальность — способность обрабатывать данные любыми методами, представляемыми последовательностью простых арифметических и логических операций; • возможность реализации большого числа известных численных математических методов решения задач. 2.2. Базовая система элементов компьютерным систем Компьютерые системы (КС) используют естественное представление чисел в позиционной системе счисления, поэтому при построении базовых элементов очень большое значение имеет выбор основания системы счисления. Как уже говорилось выше (см. главу 1), для построения цифровых устройств была выбрана двоичная система счисления. Одним из преимуществ двоичного представления являлось и то, что для проектирования устройств можно было использовать мощный аппарат алгебры логики — булевых функций. При построении функциональных узлов КС используются элементы, которые реализуют базовую систему логических функций. Одним из таких базовых наборов является набор из трех функций: дизъюнкции (логическое ИЛИ), конъюнкции (логическое И) и отрицание (логическое НЕ). На рис. 2.2 показаны условные обозначения и значения выходного сигнала в зависимости от входных сигналов. Ноль изображается на диаграммах низким значением сигнала, а единица — высоким. Используя эти базовые элементы, строятся все функциональные узлы ЦВМ. 64
а) элемент «логическое ИЛИ» б) элемент «логическое И» в) элемент «логическое НЕ» Рис. 2.2. Базовая система логических элементов цифровых устройств 3. Информатика 65
2.3. Функциональные узлы компьютерных систем 2.3.1. Элемент памяти Основой любого компьютера является ячейка памяти, которая может хранить данные или команды. Основой любой ячейки памяти является функциональное устройство, которое может по команде принять или выдать один двоичный бит, а, главное, сохранять его сколь угодно долго. Такое устройство называется триггер, или защелка. Оно строится на основе базового набора логических схем. На рис. 2.3 показана схема триггера. Он собран на четырех логических элементах: два элемента «логическое НЕ» (схемы 1 и 2) и два элемента «логическое И-НЕ» (схемы 3 и 4). Два последних элемента представляют собой комбинацию логических элементов «логическое И» и «логическое НЕ». Такой элемент на входе выполняет операцию логического умножения, результат которой инвертируется на выходе логическим отрицанием. Триггер имеет два выхода Q и Q . Сигнал на выходе Q соответствует значению, хранящемуся в триггере. Вы- R Рис. 2.3. Схема триггера в состоянии хранения бита информации 66
ход Q используется при необходимости получить инверсное значение сигнала. Входы S и R предназначены для записи в триггер одного бита со значением ноль или единица. Рассмотрим состояние триггера во время хранения бита. Пусть в триггер записан ноль (на выходе Q низкий уровень сигнала). Единица на выходе схемы 4 и единица на выходе схемы 1 поддерживают состояние выхода схемы 3 в состоянии нуля (1л1 = 0). В свою очередь, ноль на выходе схемы 3 поддерживает единицу на выходе схемы 4 (0 л 1 = 1). Такое состояние может поддерживаться триггером бесконечно долго. Для записи в триггер единицы подадим на вход S единицу (рис. 2.4). На выходе схемы 1 получится ноль, который обеспечит на выходе схемы 3 единицу. С выхода схемы 3 единица поступит на вход схемы 4, на выходе которой значение изменится на ноль (1 л 1 = 0). Этот ноль на входе схемы 3 будет поддерживать сигнал на ее выходе в состоянии единицы. Теперь можно снять единичный сигнал на входе 5, на выходе схемы 3 все равно будет высокий уровень. Т.е. триггер сохраняет записанную в него единицу. Единичный сигнал на входе S необходимо удерживать некоторое время, пока на выходе схемы 4 не появится нулевой сигнал. Затем вновь на входе S устанавливается нулевой сигнал, но триггер поддерживает единичный сиг- Рис. 2.4. Запись в триггер единицы 67
нал на выходе Q, т.е. сохраняет записанную в него единицу. Точно так же, подав единичный сигнал на вход R, можно записать в триггер ноль. Условное обозначение триггера показано на рис. 2.5. Рис. 2.5. Условное обозначение триггера 2.3.2. Регистры Триггер служит основой для построения функциональных узлов, способных хранить двоичные числа, осуществлять их синхронную параллельную передачу и запись, а также выполнять с ними некоторые специальные операции. Такие функциональные узлы называются регистрами. Регистр представляет собой набор триггеров, число которых определяет разрядность регистра. Разрядность регистра кратна восьми битам: 8-, 16-, 32-, 64-разрядные регистры. Кроме этого в состав регистра входят схемы управления его работой. На рис. 2.6 приведена схема регистра хранения. Регистр содержит п триггеров, образующих п разрядов. Перед записью информации регистр обнуляется подачей единичного сигнала на вход «Сброс». Запись информации в регистр производится синхронно подачей единичного сигнала «Запись». Этот сигнал открывает входные вентили (схемы «логическое И»), и на тех входах хг.. хп, где присутствует единичный сигнал, произойдет запись единицы. Чтение информации из регистра также про- 68
изводится синхронно, подачей сигнала «Чтение» на выходные вентили. Обычно регистры содержат дополнительные схемы, позволяющие организовать такие операции, как сдвиг информации (регистры сдвига) и подсчет поступающих единичных сигналов (регистры счетчики). 0 0 0 «Запись» «Сброс» «Чтение» Рис. 2.6. n-разрядный регистр хранения с синхронной записью и чтением 2.3.3. Устройства обработки информации Для обработки информации компьютер должен иметь устройство, выполняющее основные арифметические и логические операции над числовыми данными. Такие устройства называются арифметико-логическими устройствами (АЛУ). В основе АЛУ лежит устройство, реализующее арифметическую операцию сложения двух 69
ШйИРШвЩй целых чисел. Остальные арифметические операции реализуются с помощью представления чисел в специальном дополнительном коде. Сумматор АЛУ представляет собой многоразрядное устройство, каждый разряд которого представляет собой схему на логических элементах, выполняющих суммирование двух одноразрядных двоичных чисел с учетом переноса из предыдущего младшего разряда. Результатом является сумма входных величин и перенос в следующий старший разряд. Такое функциональное устройство называется одноразрядным, полным сумматором. Его условное обозначение показано на рис. 2.7. Рис. 2.7. Условное обозначение полного одноразрядного сумматора Рассмотренные выше функциональные элементы являются основными при построении схем компьютерных систем. 2.4. Принцип автоматической обработки информации вычислительным устройством Основным отличием вычислительной машины от таких счетных устройств, как счеты, арифмометр, калькулятор, заключается в том, что вся последовательность команд на вычисление предварительно записывается в память вычислительной машины и выполняется последовательно автоматически. Впервые принцип вычислительной машины с автоматическим выполнением команд предложил американский ученый фон Нейман. Он описал основные узлы, которые 70
должна содержать такая машина. Этот принцип получил название фон-неймановской вычислительной машины. Большинство современных КС в настоящее время построено именно по этому принципу. Машина фон Неймана состояла из памяти, представлявшей собой набор регистров, АЛУ, устройства ввода-вывода и устройства управления (рис. 2.8). Рис. 2.8. Машина фон Неймана Устройство ввода передавало команды и данные в АЛУ, откуда они записывались в память. Все команды, совокупность которых называется программой, записываются в память в соседние ячейки по возрастанию их адресов, а данные, которые требуют обработки,— в ячейки с произвольными адресами. Последняя команда программы — это обязательно команда остановки работы. Каждая команда содержит код операции, которую необходимо выполнить, и адреса ячеек, в которых находятся данные, обрабатываемые этой командой. Устройство управления содержит специальный регистр, который называется «Счетчик команд». После загрузки программы и данных в 71
память в счетчик команд записывается адрес первой команды программы. После чего вычислительная машина переходит в режим автоматического выполнения программы. Устройство управления считывает из памяти содержимое ячейки памяти, адрес которой находится в счетчике команд, и помещает его в специальное устройство — «Регистр команд». Регистр команд хранил команду во время ее исполнения. Устройство управления расшифровывает тип операции команды, считывает из памяти данные, адреса которых указаны в команде, и приступает к ее выполнению. Для каждой команды устройство управления имеет свой алгоритм обработки, который заключается в выработке управляющих сигналов для всех остальных устройств машины. Этот алгоритм мог быть реализован на основе комбинационных логических схем или с помощью специальной внутренней памяти, куда эти алгоритмы были записаны в виде микрокоманд, объединенных в микропрограммы. Выполнение микропрограммы происходит по тому же принципу, что и программы в основной памяти, т.е. по принципу фон Неймана. Каждая микрокоманда содержит набор управляющих сигналов для устройств машины. Отметим, что устройства управления выполнением команд процессоров в современных компьютерных системах также строятся по принципу комбинационных схем или микропрограммных автоматов, в соответствии с чем делятся на RISC и CISC процессоры, о которых будет рассказано ниже. Микропрограмма выполнения любой команды обязательно содержит сигналы, изменяющие содержимого счетчика команд на единицу. Таким образом, после завершения выполнения очередной команды, счетчик команд указывал на следующую ячейку памяти, в которой находилась следующая команда программы. Устройство управления читает команду, адрес которой находится в счетчике команд, помещает ее в регистр команд и т.д. Этот процесс продолжается до тех пор, пока очередная исполняемая команда не оказывается командой останова исполнения программы. Интересно отметить, что и команды, и данные, находящиеся в памяти, представляют собой целочисленные двоичные наборы. Отличить команду от данных устройство управления не может, поэтому, если программист забыл закончить программу командой останова, устройство управления читает следующие ячейки памяти, в которых уже нет команд программы, и пытается интерпретировать их как команды. 72
Особым случаем можно считать команды безусловного или условного перехода, когда требуется выполнить команду, не следующую по порядку за текущей, а отстоящую от данной на какое-то количество адресов. В этом случае команда перехода содержит адрес ячейки, куда требуется передать управление. Этот адрес записывается устройством управления непосредственно в счетчик команд и происходит переход на соответствующую команду программы. 2.5. Поколения цифровых устройств обработки информации В период развития цифровых технологий были разработаны компьютеры самых разных типов. Многие из них давно забыты, но другие оказали сильное влияние на развитие современных вычислительных систем. Здесь мы дадим краткий обзор некоторых этапов развития вычислительных машин, чтобы показать, как человеческая мысль пришла к современному пониманию компьютерных технологий. Устройства, облегчающие счет или запоминание его результатов, известны давно, но нас будут интересовать только устройства для вычислений, которые автоматически выполняют заложенные в них программы. Поэтому мы не рассматриваем здесь такие устройства, как счеты, механические арифмометры и электронные калькуляторы. Первая счетная машина с хранимой программой была построена французским ученым Блезом Паскалем в 1642 г. Она была механической с ручным приводом и могла выполнять операции сложения и вычитания. Немецкий математик Готфрид Лейбниц в 1672 г. построил механическую машину, которая могла делать также операции умножения и деления. Впервые машину, работающую по программе, разработал в 1834 г. английский ученый Чарльз Бэббидж. Она содержала запоминающее устройство, вычислительное устройство, устройство ввода с перфокарт и печатающее устройство. Команды считывались с перфокарты и выполняли считывание данных из памяти в вычислительное устройство и запись в память результатов вычислений. Все устройства машины Бэббиджа, включая память, были механическими и содержали тысячи шестеренок, при изготовлении которых требовалась точность, недоступная в XIX в. Машина реализовала любые 73
программы, записанные на перфокарте, поэтому впервые для написания таких программ потребовался программист. Первым программистом была англичанка Ада Ловлейс, в честь которой уже в наше время был назван язык программирования Ada. В XX в. начала развиваться электроника и ее возможности немедленно взяли на вооружение разработчики вычислительных машин. С построения вычислительных машин, базовая система элементов которых была построена на электронных компонентах, начинается отсчет поколений цифровых вычислительных машин. Отметим, что деление периода развития цифровой техники на этапы связано, в основном, с переводом базовой системы элементов на новые технологии производства электронных компонентов. Первое поколение - электронные ломпы (1945-1955 гг.) В основе базовой системы элементов этого поколения компьютеров лежали электронные лампы. Их использование определяло и достоинства и недостатки цифровых устройств. Электронные лампы обеспечивали высокую скорость переключения логических элементов, что увеличивало скорость вычисления по сравнению с попытками создать вычислительную машину, базовый элемент которой был построен на основе электромеханического реле. Электронные лампы были достаточно долговечны и обеспечивали надежную работу компьютера. К сожалению, недостатков у ламповых компьютеров тоже было достаточно. Электронные лампы работали с напряжениями в десятки вольт и расходовали много энергии, кроме того, размер электронных ламп, по современным понятиям микроэлектроники, был огромным — несколько десятков кубических сантиметров. Для построения вычислительной машины нужны были тысячи логических элементов, поэтому размер ламповых вычислительных машин по занимаемой площади составлял десятки квадратных метров, а потребляемая мощность колебалась в пределах от единиц до десятков и даже сотен киловатт. Такая мощность приводила к перегреванию ламп, которые были размешены довольно компактно, и ставила задачу эффективного охлаждения электронных компонентов машины. Скорость обработки информации в ламповых машинах колебалась от нескольких сотен до нескольких тысяч операций в секунду. 74
Второе поколение - транзисторы (1955-1965 гг.) Полупроводниковые приборы — транзисторы были изобретены в 1948 г. Они отличались от электронных ламп малыми размерами, низким напряжением питания и малой потребляемой мощностью. Все эти достоинства полупроводниковых приборов произвели революцию в радиоэлектронной промышленности. Стали появляться миниатюрные приемо-передающие радио- и телеустройства, появилась возможность встраивать управляющие устройства непосредственно в объекты управления и т.д. Новая элементная база для компьютеров на основе транзисторов произвела революцию и в производстве компьютеров. Значительное уменьшение габаритов, снижение потребляемой мощности и стоимости позволило создавать архитектуры компьютера с большими функциональными возможностями, резко повысить быстродействие компьютеров до сотен тысяч и даже миллионов операций в секунду. Увеличение производительности обеспечивалось как за счет более высокой скорости работы транзисторов по сравнению с электронными лампами, так и путем введения в состав вычислительной машины нескольких обрабатывающих устройств, работающих параллельно. Площадь, требуемая для размещения компьютера, снизилась до нескольких квадратных метров, предпринимались попытки изготавливать и настольные варианты. Снижение стоимости увеличило число потенциальных пользователей компьютеров. Появились крупные фирмы по производству компьютеров широкого назначения: International Business Machines (IBM), Control Data Corporation (CDC), Digital Equipment Corporation (DEC) и др. Следует отметить компьютер PDP-8 фирмы DEC — первого мини- компьютера с общей шиной, оказавшего большое влияние на развитие архитектур персональных компьютеров. Третье поколение - интегральные схемы (1965-1980 гг.) Полупроводниковые элементы и другие электронные компоненты выпускались электронной промышленностью в виде отдельных элементов. Так, полупроводниковый кристалл, на котором размещался транзистор, заключался в специальный металлический или пластмассовый корпус. Требование уменьшения габаритов электронных 75
устройств привело к тому, что сначала полупроводниковые приборы стали производиться в бескорпусном исполнении, а затем в 1958 г. была предпринята попытка разместить в одном полупроводниковом кристалле все компоненты одного функционального узла. Так появились интегральные схемы (ИС), которые позволили резко уменьшить размеры полупроводниковых схем и снизить потребляемую мощность. На основе ИС строились мини-ЭВМ, которые выполнялись в виде одной стойки и периферийных устройств. Мощность, потребляемая компьютером на ИС, уменьшилась до сотен ватт. Увеличение быстродействия узлов, построенных на ИС, позволило довести быстродействие компьютеров до десятков миллионов операций в секунду Электронная промышленность приступила к массовому производству электронных компонентов на ИС, что позволило снизить их стоимость и резко уменьшить стоимость аппаратной составляющей компьютеров. Уменьшение стоимости привело к разработке и практической реализации мощных вычислительных систем, использующих параллельную обработку: многопроцессорные и конвейерные вычислители. Четвертое поколение - сверхбольшие интегральные схемы (с 1980 гг.) Микроминиатюризация электронных устройств привела к появлению новой отрасли промышленности — микроэлектроники, которая относится к области высоких технологий. Используя последние научно-технические достижения физики, химии, кристаллографии, материаловедения и даже космонавтики (в невесомости можно получить полупроводниковые кристаллы очень высокой чистоты), добились размещения на одном кристалле размером несколько квадратных миллиметров сначала сотен, затем тысяч и, наконец, миллионов транзисторов и других электронных компонентов. Теперь полупроводниковая схема содержала уже не набор нескольких логических элементов, из которых строились затем функциональные узлы компьютера, а целиком функциональные узлы и, в первую очередь процессор, который, учитывая его размеры, получил название микропроцессор, устройства управления внешними устройствами — контроллеры внешних устройств. Такие интегральные схемы получили название сначала больших интегральных схем (БИС), а затем и сверхбольших интегральных схем (СБИС). 76
Итогом такого бурного развития микроэлектроники стало появление одноплатных ЭВМ, где на одной плате, размером несколько десятков квадратных сантиметров, размещались несколько СБИС, содержащих все функциональные блоки компьютера. Одноплатные компьютеры встраивались в различные промышленные, медицинские и бытовые приборы для оперативной обработки информации и управления. Стоимость одноплатных компьютеров так упала, что появилась возможность их приобретения отдельными людьми. Такой возможностью воспользовались английские инженеры Стив Джобс и Стив Возняк. Используя выпускаемые промышленностью функциональные узлы: плата микро-ЭВМ с процессором и памятью, клавиатура, дисплей, они собрали дешевую настольную вычислительную машину — мыкрокомпьютер. Его привлекательность для непрофессиональных пользователей заключалась в том, что это было готовое к употреблению устройство, содержащее все необходимое оборудование и программное обеспечение для работы. Этот микрокомпьютер получил название Apple и стал первым в мире персональным компьютером. Персональными компьютерами, которые получили большое распространение на компьютерном рынке, заинтересовалась крупная компания, занимавшаяся выпуском мощных вычислительных систем — IBM, и решила наладить выпуск своей модели персонального компьютера. Совместно с фирмой Intel, разработавшей микропроцессорный комплект, и фирмой Microsoft, которая оснастила компьютер операционной системой MS DOS, IBM создала персональный компьютер IBM PC. Значительный потенциал фирмы IBM позволил в короткие сроки произвести огромное количество таких компьютеров. Их привлекательная для покупателей цена и некоторые новшества, например, больший, по сравнению с выпускавшимися в то время персональными компьютерами других фирм, объем оперативной памяти, позволили компьютеру IBM PC стать самой популярной «персоналкой» в мире. Дальнейшая классификация вычислительных систем по их принадлежности к различным поколениям весьма условна. В настоящее время элементная база микропроцессорных систем активно развивается, но в ее основе по-прежнему лежат СБИС. Некоторые специалисты выделяют пятое, шестое и последующие поколения как усовершенствование микроэлектронных технологий. Другие рассматривают последующие поколения как изменение структур обработки команд и данных внутри микропроцессора. 77
2.6. Архитектуры вычислительных систем сосредоточенной обработки информации Современный компьютер состоит из нескольких функциональных узлов: процессор, память, контроллеры устройств и т.д. Каждый узел представляет собой сложное электронное устройство, в состав которого могут входить миллионы логических элементов. Для лучшего понимания принципа работы каждого узла и компьютера в целом вводится понятие уровней представления компьютера. Цифровой логический уровень — уровень логических схем базовой системы элементов. Микроархитектурный уровень — уровень организации обработки информации внутри функционального узла. Сюда относятся регистры различного назначения, устройство обработки поступающих команд, устройство преобразования данных, устройство управления. Командный уровень — набор функциональных узлов и связи между ними, система команд и данных, передаваемых между устройствами. Набор блоков, связей между ними, типов данных и операций каждого уровня называется архитектурой уровня. Архитектура командного уровня называется обычно компьютерной архитектурой или компьютерной организацией. В этом разделе мы рассмотрим различные компьютерные архитектуры. Архитектуры других уровней будут рассмотрены в следующих разделах. 2.6.1. Архитектуры с фиксированным набором устройств Компьютерами с сосредоточенной обработкой называются такие вычислительные системы, у которых одно или несколько обрабатывающих устройств (процессоров) расположены компактно и используют для обмена информацией внутренние шины передачи данных. Компьютеры первого и второго поколения имели архитектуру закрытого типа с ограниченным набором внешнего оборудования. Такая архитектура характерна для компьютеров, базовая система логических элементов которых построена на дискретных электронных компонентах (электронных лампах, транзисторах). Введение любого дополнительного функционального блока в такие архитектуры был 78
от сопряжен с увеличением потребляемой мощности, занимаемой площади и резко увеличивал стоимость всей системы. Поэтому компьютер, выполненный по этой архитектуре, не имел возможности подключения дополнительных устройств, не предусмотренных разработчиком. Укрупненная схема такой компьютерной архитектуры приведена на рис. 2.9. Оперативная память хранит команды и данные исполняемых программ, АЛУ обеспечивает не только числовую обработку, но и участвует в процессе ввода-вывода информации, осуществляя ее занесение в оперативную память. Канал ввода/вывода представляет собой специализированное устройство, работающее по командам, подаваемым устройством управления. Канал допускает подключение определенного числа внешних устройств. Устройство управления обеспечивает выполнение команд программы и управляет всеми узлами системы. Канал ввода/вывода Устройство управления АЛУ и регистры ввода/вывода Буферные регистры Оперативная память Рис. 2.9. Архитектура компьютера закрытого типа 79
Компьютеры такой архитектуры эффективны при решении чисто вычислительных задач. Они плохо приспособлены для реализации компьютерных технологий, требующих подключения дополнительных внешних устройств и высокой скорости обмена с ними информацией. 2.6.2. Вычислительные системы с открытой орхитектурой В начале 70-х гг. фирмой DEC {Digital Equipment Corporation) был предложен компьютер совершенно иной архитектуры. Эта архитектура позволяла свободно подключать любые периферийные устройства, что сразу же заинтересовало разработчиков систем управления различными техническими системами, так как обеспечивало свободное подключение к компьютеру любого числа датчиков и исполнительных механизмов. Главным нововведением являлось подключение всех устройств, независимо от их назначения, к общей шине передачи информации. Подключение устройств к шине осуществлялось в Центральный процессор Запоминающее устройство Устройство отображения Клавиатура Контроллер Другие устройства Контроллер Контроллер Общая шина Рис. 2.10. Архитектура компьютера открытого типа соответствии со стандартом шины. Стандарт шины являлся свободно распространяемым документом, что позволяло фирмам— производителям периферийного оборудования разрабатывать контроллеры для подключения своих устройств к шинам различных стандартов. Архитектура компьютера открытого типа, основанная на использовании общей шины, приведена на рис. 2.10. Общее управление всей системой осуществляет центральный процессор. Он управляет общей шиной, выделяя время другим устройствам для обмена информацией. Запоминающее устройство хранит исполняемые программы и 80
данные и согласовано уровнями своих сигналов с уровнями сигналов самой шины. Внешние устройства, уровни сигналов которых отличаются от уровней сигналов шины, подключаются к ней через специальное устройство — контроллер. Контроллер согласовывает сигналы устройства с сигналами шины и осуществляет управление устройством по командам, поступающим от центрального процессора. Контроллер подключается к шине специальными устройствами — портами ввода-вывода. Каждый порт имеет свой номер, и обращение к нему процессора происходит, также как и к ячейке памяти, по этому номеру. Процессор имеет специальные линии управления, сигнал на которых определяет, обращается ли процессор к ячейке памяти или к порту ввода-вывода контроллера внешнего устройства. Несмотря на преимущества, предоставляемые архитектурой с общей шиной, она имеет и серьезный недостаток, который проявлялся все больше при повышении производительности внешних устройств и возрастании потоков обмена информацией между ними. К общей шине подключены устройства с разными объемами и скоростью обмена, в связи с чем «медленные» устройства задерживали работу «быстрых». Дальнейшее повышение производительности компьютера было найдено во введении дополнительной локальной шины, к которой подключались «быстрые» устройства. Архитектура компьютера с общей и локальной шинами приведена на рис. 2.11. Центральный процессор Контроллер шины Запоминающее устройство Устройство отображения Клавиатура Контроллер Контроллер Локальная шина Контроллер Устройство Другие устройст ва Контроллер Общая шина Рис. 2.11. Архитектура компьютера с общей и локальной шиной 81
Контроллер шины анализирует адреса портов, передаваемые процессором, и передает их контроллеру подключенному к общей или локальной шине. Конструктивно контроллер каждого устройства размещается на общей плате с центральным процессором и запоминающим устройством или, если устройство не является стандартно входящим в состав компьютера, на специальной плате, вставляемой в специальные разъемы на общей плате — слоты расширения. Дальнейшее развитие микроэлектроники позволило размещать несколько функциональных узлов компьютера и контроллеры стандартных устройств в одной микросхеме СБИС. Это сократило количество микросхем на общей плате и дало возможность ввести две дополнительные локальные шины для подключения запоминающего устройства и устройства отображения, которые имеют наибольший объем обмена с центральным процессором и между собой. Хотя архитектура компьютера осталась прежней, структура современного персонального компьютера имеет вид, представленный на рис. 2.12. Центральный процессор Видеоконтроллер Локальная шина Центральный контроллер Локальная шина Контроллер Другие устройства Запоминающее устройство Общая шина Функциональный контроллер Выходы контроллеров для подключения стандартных внешних устройств Рис. 2.12. Структура персонального компьютера 82
Центральный контроллер играет роль коммутатора, распределяющего потоки информации между процессором, памятью, устройством отображения и остальными узлами компьютера. Кроме этого в состав микросхемы центрального контроллера включены устройства, которые поддерживают работу компьютера. К ним относятся системный таймер; устройство прямого доступа к памяти, которое обеспечивает обмен данными между внешними устройствами и памятью в периоды, когда это не требуется процессору; устройство обработки прерываний, которое обеспечивает быструю реакцию процессора на запросы внешних устройств, имеющих данные для передачи. Функциональный контроллер — это СБИС, которая содержит контроллеры для подключения стандартных внешних устройств, таких как клавиатура, мышь, принтер, модем и т.д. Часто в состав этого контроллера входит такое устройство, как аудиокарта, позволяющая получить на внешних динамиках высококачественный звук при прослушивании музыкальных и речевых файлов. Для подключения специфических устройств часть общей шины, соединяющая центральный и функциональный контроллеры, имеет слоты расширения для установки плат контроллеров. 2.6.3. Архитектуры многопроцессорных вычислительных систем Персональные компьютеры позволяют реализовать многие компьютерные технологии, начиная от работы в Интернете, и кончая построением анимационных трехмерных сцен. Однако существуют задачи, объем вычислений которых превышает возможности персонального компьютера. Для их решений применяются компьютеры с гораздо более высоким быстродействием. Для получения высокого быстродействия на существующей элементной базе используются архитектуры, в которых процесс обработки распараллеливается и выполняется одновременно на нескольких обрабатывающих устройствах Существует три основных подхода к построению архитектур таких компьютеров: многопроцессорные, магистральные и матричные архитектуры. Архитектура простых многопроцессорных систем выполняется по схеме с общей шиной. Два или более процессоров и один или несколько модулей памяти размещены на общей шине. Каждый про- 83
цессор, для обмена с памятью, проверяет, свободна ли шина, и, если она свободна, он занимает ее. Если шина занята, процессор ждет, пока она освободится. При увеличении числа процессоров производительность системы будет ограничена пропускной способностью шины. Чтобы решить эту проблему, каждый процессор снабжается собственной локальной памятью (рис. 2.13), куда помещаются тексты исполняемых программ и локальные переменные, обрабатываемые данным процессором. Общее запоминающее устройство используется для хранения общих переменных и общего системного программного обеспечения. При такой организации нагрузка на общую шину значительно снижается. Локальное запоминающее устройство Локальное запоминающее устройство Процессор Процессор Периферийный процессор Контроллер Внешние устройства Общее запоминающее устройство Общая шина Контроллер Внешние устройства Рис. 2.13. Архитектура многопроцессорной вычислительной системы с общей шиной Один из процессоров выделяется для управления всей системой. Он распределяет задания на исполнение программ между процессорами и управляет работой общей шины. Периферийный процессор осуществляет обслуживание внешних устройств при вводе и выводе информации из общей памяти. Он 84
может быть того же типа, что и остальные процессоры, но обычно устанавливается специализированный процессор, предназначенный для выполнения операций управления внешними устройствами. Магистральный принцип является самым распространенным при построении высокопроизводительных вычислительных систем. Процессор такой системы имеет несколько функциональных обрабатывающих устройств, выполняющих арифметические и логические операции, и быструю регистровую память для хранения обрабатываемых данных. Данные, считанные из памяти, размещаются в регистрах и из них загружаются в обрабатывающие устройства. Результаты вычислений помещаются в регистры и используются как исходные данные для дальнейших вычислений. Таким образом, получается конвейер преобразования данных: регистры — обрабатывающие устройства — регистры — ... . Архитектура магистрального суперкомпьютера приведена на рис. 2.14. Число функциональных устройств здесь равно шести («Сложение», «Умножение» и т.д.), однако в реальных системах их количество может быть иным. Устройство пла- Регистры для хранения обрабатываемых данных Сложение Умножение Деление Логика Индекс Сдвиг Общее запоминающее устройство Периферийный процессор Внешние устройства Устройство планирования последовател ьности выполнения команд Контроллер Внешние устройства Рис. 2.14. Архитектура магистрального суперкомпьютера 85 Контроллер
нирования последовательности выполнения команд распределяет данные, хранящиеся в регистрах, на функциональные устройства и производит запись результатов снова в регистры. Конечные результаты вычислений записываются в общее запоминающее устройство. В матричной вычислительной системе процессоры объединяются в матрицу процессорных элементов. В качестве процессорных элементов могут использоваться универсальные процессоры, имеющие собственное устройство управления, или вычислители, содержащие только АЛУ и выполняющие команды внешнего устройства управления. Каждый процессорный элемент снабжен локальной памятью, хранящей обрабатываемые процессором данные, но при необходимости процессорный элемент может производить обмен со своими соседями или с общим запоминающим устройством. В первом случае, программы и данные нескольких задач или независимых частей одной задачи загружаются в локальную память процессоров и выполняются параллельно. Во втором варианте все процессорные элементы одновременно выполняют одну и ту же команду, поступающую от устройства обработки команд на все процессорные элементы, но над разными данными, хранящимися в локальной памяти каждого процессорного элемента. Вариант архитектуры с общим управлением показан на рис. 2.15. Обмен данными с периферийными устройствами выполняется через периферийный процессор, подключенный к общему запоминающему устройству. 2.6.4. Классификация компьютеров по сферам применения Наиболее часто при выборе компьютера для той или иной сферы применения используется такая характеристика, как производительность, под которой понимается время, затрачиваемое компьютером для решения той или иной задачи. Понятие «производительность» определяет и некоторые другие характеристики компьютера, такие, например, как объем оперативной памяти. Вполне естественно, что компьютер с высокой скоростью обработки должен снабжаться большим объемом оперативной памяти, так как иначе его производительность будет ограничена- необходимостью подкачки информации из более медленной внешней памяти. Можно считать, что производительность является некоторой интегрированной харак- 86
Матрица процессорных элементов Общее запоминающее устройство Периферийный процессор Контроллер Устройство обработки команд Внешние устройства Контроллер Внешние устройства Рис. 2.15. Архитектура матричной вычислительной системы с общим управлением теристикой, определяющей общую вычислительную мощность компьютера, и, соответственно, области его применения. По производительности компьютеры можно условно разбить на три класса: суперкомпьютеры; мэйнфреймы; микрокомпьютеры. Суперкомпьютеры — компьютеры с производительностью свыше 100 млн операций в секунду. Применяются для решения таких задач, как моделирование физических процессов, гидрометеорология, кос- 87
мические исследования и других задач, которые требуют огромных объемов вычислений. Выполняются обычно по многопроцессорной архитектуре, имеют большой набор внешних устройств, и, как правило, выпускаются небольшими партиями для конкретной задачи или конкретного заказчика. Обычно важность решаемой задачи такова, что основным параметром суперкомпьютера является его высокая производительность, а такие параметры, как стоимость, размеры или вес, не являются определяющими. Мэйнфреймы — компьютеры с производительностью от 10 до 100 млн операций в секунду Они используются для решения таких задач, как хранение, поиск и обработка больших массивов данных, построение трехмерной анимационной графики, создание рекламных роликов, выполняют роль узлов глобальной сети, используемой торговыми или компьютерными фирмами с большим потоком запросов. Выполняются по многопроцессорной архитектуре с общей шиной и небольшим числом мощных процессоров. Конструктивно выполняются в виде одной стойки или в настольном варианте. Стоимость мэйнфреймов колеблется от тридцати до трехсот тысяч долларов. Микрокомпьютеры — компактные компьютеры универсального назначения, в том числе и для бытовых целей, имеющие производительность до 10 млн. операций в секунду. Микрокомпьютеры, или персональные компьютеры, можно классифицировать по конструктивным особенностям: стационарные (настольные) и переносные. Переносные компьютеры, в свою очередь, можно разделить на портативные (laptop), блокноты {notebook) и карманные {Palmtop). Портативные компьютеры по размеру близки к обычному портфелю, они, в настоящее время, уступают место более компактным. Блокноты по размеру близки к книге крупного формата и имеют массу около 3 кг. Такие компьютеры имеют встроенные аккумуляторы, позволяющие работать без сетевого напряжения. В настоящее время имеются полноцветные жидкокристаллические мониторы, не уступающие по качеству мониторам стационарных компьютеров. Карманные компьютеры в настоящее время являются самыми маленькими персональными компьютерами. Они не имеют внешней памяти на магнитных дисках, она заменена на энергонезависимую электронную память. Эта память может перезаписываться при помощи линии связи с настольным компьютером. Карманный компьютер можно использовать как словарь-переводчик или записную книгу. 88
2.7. Функциональная организация персонального компьютера 2.7.1. Центральный процессор Центральный процессор (ЦП) — функционально-законченное программно-управляемое устройство обработки информации, выполненное на одной или нескольких СБИС. В современных персональных компьютерах разных фирм применяются процессоры двух основных архитектур: • полная система команд переменной длины — Complex Instruction Set Computer (CISC); • сокращенный набор команд фиксированной длины — Reduced Instruction Set Computer (RISC). Весь ряд процессоров фирмы Intel, устанавливаемых в персональные компьютеры IBM, имеют архитектуру CISC, а процессоры Motorola, используемые фирмой Apple для своих персональных компьютеров, имеют архитектуру RISC. Обе архитектуры имеют свои преимущества и недостатки. Так CISC-процессоры имеют обширный набор команд (до 400), из которых программист может выбрать команду, наиболее подходящую ему в данном случае. Недостатком этой архитектуры является то, что большой набор команд усложняет внутреннее устройство управления процессором, увеличивает время исполнения команды на микропрограммном уровне. Команды имеют различную длину и время исполнения. RISC-архитектура имеет ограниченный набор команд и каждая команда выполняется за один такт работы процессора. Небольшое число команд упрощает устройство управления процессора. К недостаткам RISC-архитектуры можно отнести то, что если требуемой команды в наборе нет, программист вынужден реализовать ее с помощью нескольких команд из имеющегося набора, увеличивая размер программного кода. Упрощенная схема процессора, отражающая основные особенности архитектуры микроуровня, приведена на рис. 2.16. Наиболее 89 Управление и синхронизация Счетчик команд Управление выборкой очередной микрокомандь Регистры общего назначения АЛУ Внутренняя шина ПЗУ микрокоманд Дешифратор команд Буфер команд шина шина шина адреса данных управ- ления Рис. 2.16. Архитектура процессора сложным функциональным устройством процессора является устройство управления выполнением команд. Оно содержит: • буфер команд, который хранит одну или несколько очередных команд программы; читает следующие команды из запоминающего устройства, пока выполняется очередная команда, уменьшая время ее выборки из памяти; • дешифратор команд расшифровывает код операции очередной команды и преобразует его в адрес начала микропрограммы, которая реализует исполнение команды; • управление выборкой очередной микрокоманды представляет собой небольшой процессор, работающий по принципу фон Неймана, имеет свой счетчик микрокоманд, который автоматически выбирает очередную микрокоманду из ПЗУ микрокоманд; • постоянное запоминающее устройство (ПЗУ) микрокоманд — это запоминающее устройство, в которое информация записывается однократно и затем может только считываться; отличительной особенностью ПЗУ является то, что записанная в него информация сохраняется сколь угодно долго и не требует постоянного питающего напряжения. 90 Контроллер шины
Поступивший от дешифратора команд адрес записывается в счетчик микрокоманд устройства выборки, и начинается процесс обработки последовательности микрокоманд. Каждый разряд микрокоманды связан с одним управляющим входом какого-либо функционального устройства. Так, например, управляющие входы регистра хранения «Сброс», «Запись», «Чтение» соединены с соответствующими разрядами микрокоманды. Общее число разрядов микрокоманды может составлять от нескольких сотен до нескольких тысяч и равно общему числу управляющих входов всех функциональных устройств процессора. Часть разрядов микрокоманды подается на устройство управления выборкой очередной микрокоманды и используется для организации условных переходов и циклов, так как алгоритмы обработки команд могут быть достаточно сложными. Выборка очередной микрокоманды осуществляется через определенный интервал времени, который, в свою очередь, зависит от времени выполнения предыдущей микрокоманды. Частота, с которой осуществляется выборка микрокоманд, называется тактовой частотой процессора. Тактовая частота является важной характеристикой процессора, так как определяет скорость выполнения процессором команд, и, в конечном итоге, быстродействие процессора. Арифметико-логическое устройство (АЛУ) предназначено для выполнения арифметических и логических операций преобразования информации. Функционально АЛУ состоит из нескольких специальных регистров, полноразрядного сумматора и схем местного управления. Регистры общего назначения (РОН) используются для временного хранения операндов исполняемой команды и результатов вычислений, а также хранят адреса ячеек памяти или портов ввода-вывода для команд, обращающихся к памяти и внешним устройствам. Необходимо отметить, что если операнды команды хранятся в РОН, то время выполнения команды значительно сокращается. Одна из причин, почему программисты иногда обращаются к программированию на языке машинных команд, это наиболее полное использование РОН для получения максимального быстродействия при выполнении программ, критичных по времени. Рассмотрим кратко характеристики процессоров, используемых в современных ПК типа IBM PC. Процессоры для этих ПК выпус- 91
кают многие фирмы, но законодателем моды здесь является фирма Intel. Ее последней разработкой является процессор Intel Core, выпуск которого начат в начале 2006 г. К основным особенностям архитектуры Intel Core можно отнести следующие: — имеется специальный внутренний КЭШ размером 2 Мбайта; — добавлена арбитражная шина, которая уменьшает нагрузку системной шины; — внутренняя микроархитектура процессора базируется на двух ядрах — параллельно работающих конвейерах команд {суперскалярная архитектура), которые исполняют сразу несколько команд в 12 разных фазах обработки (чтение, дешифрация, загрузка операндов, исполнение и т.д.). Конвейеры заканчиваются двумя АЛУ: АЛУ, работающим на удвоенной частоте процессора для коротких арифметических и логических команд, и АЛУ для выполнения медленных команд; — введено управление питанием ядра, которое включает в себя блок температурного контроля, способный управлять отдельно питанием каждого ядра. Фирма Intel поставляет упрощенные варианты процессоров Pentium 4 под названием Celeron, который в два раза дешевле базового варианта процессора. Однако следует отметить, что последние модели процессора Celeron ни в чем не уступают «старшему брату» и даже в некоторых случаях превосходят его. Фирма AMD {Advanced Micro Devices) выпускает процессоры, совместимые по системе команд с Intel Pentium 4 — Athlon (K7). Этот процессор выполнен по суперскалярной архитектуре с тремя конвейерами команд, работающими параллельно и способными обрабатывать до девяти инструкций за один цикл работы процессора. Тестирование процессора К7 и его сравнение с Pentium 4 показывает, что К7 не уступает ему и даже превосходит его в некоторых случаях. Стоимость процессора Athlon на 20—30 % дешевле процессора Intel. Процессор К7 требует для своей работы собственной шины, несовместимой с шиной процессора Pentium 4. Поэтому замена одного типа процессора другим требует и замены системной платы, на которой расположен набор микросхем основных функциональных устройств ПК. 92
2.7.2. Оперативное запоминающее устройство Другим важным функциональным узлом компьютера является запоминающее устройство, или память. Память, в которой хранятся исполняемые программы и данные, называется оперативным запоминающим устройством (ОЗУ), или RAM (Random Access Memory) — памятью со свободным доступом. ОЗУ позволяет записывать и считывать информацию из ячейки, обращаясь к ней по ее номеру или адресу. Ячейка памяти имеет стандартное число двоичных разрядов. В настоящее время стандартный размер ячейки ОЗУ равняется одному байту. Информация в ОЗУ сохраняется все время, пока на схемы памяти подается питание, т.е. она является энергозависимой. Существует два вида ОЗУ, отличающиеся техническими характеристиками: динамическое ОЗУ, или DRAM (Dynamic RAM), и статическое ОЗУ, или SRAM (Static RAM). Разряд динамического ОЗУ построен на одном транзисторе и конденсаторе, наличие или отсутствие заряда на котором определяет значение, записанное в данном бите. При записи или чтении информации из такой ячейки требуется время для накопления (стекания) заряда на конденсаторе. Поэтому быстродействие динамического ОЗУ на порядок ниже, чем у статического ОЗУ, разряд которого представляет собой триггер на четырех или шести транзисторах. Однако из-за большего числа элементов на один разряд в одну СБИС статического ОЗУ помещается гораздо меньше элементов, чем у динамического ОЗУ. Например, современные СБИС динамических ОЗУ способны хранить 256—1024 Мбайт информации, а схемы статических ОЗУ только 256—512 Кбайт. Кроме этого статические ОЗУ более энергоемки и значительно дороже. Обычно, в качестве оперативной или видеопамяти используется динамическое ОЗУ. Статическое ОЗУ используется в качестве небольшой буферной сверхбыстродействующей памяти. В кэш-память из динамической памяти заносятся команды и данные, которые процессор будет выполнять в данный момент. Скорость работы ОЗУ ниже, чем быстродействие процессора, поэтому применяются различные методы для повышения ее производительности. Одним из способов увеличения быстродействия динамического ОЗУ является размещение в одном корпусе микросхемы СБИС нескольких модулей памяти с чередованием адресов. Байт 93
с нулевым адресом находится в первом модуле, байт с первым адресом во втором модуле, байт со вторым адресом в первом модуле и т.д. Поскольку обращение к памяти состоит из нескольких этапов: установка адреса, выбор ячейки, чтение, восстановление, то эти этапы можно совместить во времени для разных модулей. Другим способом увеличения быстродействия является чтение из памяти содержимого ячейки с заданным адресом и нескольких ячеек, расположенных рядом. Они сохраняются в специальных регистрах — защелках. Если следующий адрес указывает на одну из уже считанных ячеек, то ее содержимое читается из защелки. Несмотря на разработку новых типов схем динамических ОЗУ, снижающую время обращения к ним, это время все еще остается значительным и сдерживает дальнейшее увеличение производительности процессора. Для уменьшения влияния времени обращения процессора к ОЗУ и увеличения производительности компьютера дополнительно устанавливается сверхбыстродействующая буферная память, выполненная на микросхемах статической памяти. Эта память называется кэш-памятью (от англ. cache — запас). Время обращения к данным в кэш-памяти на порядок ниже, чем у ОЗУ, и сравнимо со скоростью работы самого процессора. Запись в кэш-память осуществляется параллельно с запросом процессора к ОЗУ. Данные, выбираемые процессором, одновременно копируются и в кэш-память. Если процессор повторно обратится к тем же данным, то они будут считаны уже из кэш-памяти. Такая же операция происходит и при записи процессором данных в память. Они записываются в кэш-память, а затем в интервалы, когда шина свободна, переписываются в ОЗУ. Современные процессоры имеют встроенную кэш-память, которая находится внутри процессора, кроме этого есть кэш-память и на системной плате. Чтобы их различать, кэш-память делится на уровни. На кристалле самого процессора находится кэш-память первого уровня, она имеет объем порядка 16—128 Кбайт и самую высокую скорость обмена данными. В корпусе процессора, но на отдельном кристалле находится кэшпамять второго уровня, которая имеет объем порядка 256 Кбайт — 4 Мбайта. И, наконец, кэш-память третьего уровня расположена на системной плате, ее объем может составлять 2—24 Мбайта. Управление записью и считыванием данных в кэш-память выполняется автоматически. Когда кэш-память полностью заполняет- 94
ся, то для записи последующих данных устройство управления кэшпамяти по специальному алгоритму автоматически удаляет те данные, которые реже всего использовались процессором на текущий момент. Использование процессором кэш-памяти увеличивает производительность процессора, особенно в тех случаях, когда происходит по-следовательное преобразование относительно небольшого числа данных, которые постоянно во время преобразования хранятся в кэш-памяти. В одном адресном пространстве с ОЗУ находится специальная память, предназначенная для постоянного хранения таких программ, как тестирование и начальная загрузка компьютера, управление внешними устройствами. Она является энергонезависимой, т.е. сохраняет записанную информацию при отсутствии напряжения питания. Такая память называется постоянным запоминающим устройством (ПЗУ) или ROM (Read Only Memory). Постоянные запоминающие устройства можно разделить по способу записи в них информации на следующие категории: — ПЗУ, программируемые однократно. Программируются при изготовлении и не позволяют изменять записанную в них информацию. — Перепрограммируемые ПЗУ (ППЗУ). Позволяют перепрограммировать их многократно. Стирание хранящейся в ППЗУ информации осуществляется или засветкой полупроводникового кристалла ультрафиолетовым излучением, или электрическим сигналом повышенной мощности, для этого в корпусе микросхемы предусматривается специальное окно, закрытое кварцевым стеклом. 2.7.3. Внутренние шины передачи информации Общая шина, наряду с центральным процессором и запоминающим устройством, во многом определяет производительность работы компьютера, так как обеспечивает обмен информацией между функциональными узлами. Общая шина делится на три отдельные шины по типу передаваемой информации: шина адреса, шина данных, шина управления. Каждая шина характеризуется шириной — числом параллельных проводников для передачи информации. Другим важным параметром шины является тактовая частота шины — это час- 95
тота, на которой работает контроллер шины при формировании циклов передачи информации. Шина адреса предназначена для передачи адреса ячейки памяти или порта ввода-вывода. Ширина шины адреса определяет максимальное количество ячеек, которое она может напрямую адресовать. Если ширина шины адреса равна я, то количество адресуемой памяти равно 2Л. Шина данных предназначена для передачи команд и данных, и ее ширина во многом определяет информационную пропускную способность общей шины. В современных компьютерах ширина шины данных составляет 32—64. Шина управления включает в себя все линии, которые обеспечивают работу общей шины. Ее ширина зависит от типа шины и определяется алгоритмом ее работы или, как говорят, протоколом работы шины. Протокол работы шины состоит из нескольких циклов и выполняется контроллером шины, расположенным внутри процессора (рис. 2.16), или отдельным контроллером шины (рис. 2.12). Приведем примерный протокол работы системной шины. Первый такт работы шины инициируется процессором, когда ему требуется произвести обмен информации с каким-либо устройством. Процессор выставляет на шину адреса адрес порта внешнего устройства или ячейки памяти и устанавливает управляющие сигналы, показывающие, какой тип обмена и с каким устройством или памятью он собирается произвести. На втором такте работы процессор ожидает от устройства сигнала о его готовности к приему или передаче информации. Второй такт может повторяться бесконечное число раз, пока не будет получен сигнал о готовности устройства. На третьем такте процессор выставляет на шину данных передаваемую информацию при записи или открывает шину данных для приема информации. На четвертом такте происходит обмен информацией, и работа протокола передачи заканчивается. Несмотря на то, что производители компьютеров постоянно предлагают новые варианты протоколов работы общих шин, которые обеспечивают более высокую производительность операций обмена информацией, ее пропускная способность оказывается недостаточной для обеспечения данными таких высокопроизводительных функциональных узлов, как центральный процессор, и некоторых внешних устройств, таких, например, как видеоподсистема с высо- 96
ким качеством отображения. Поэтому разработчики предлагают включать в состав компьютера дополнительные шины, связывающих напрямую центральный процессор и отдельные наиболее быстродействующие устройства. Такие шины получили название локальных шин. На рис. 2.12 локальные шины используются для подключения к процессору запоминающего устройства и видеоконтроллера. Ниже приведены обозначения и основные характеристики общих и локальных шин, применяемых в персональных компьютерах фирмы IBM. Общая шина PCI (Peripheral Component Interconnect) применяется в настольных компьютерах, в настоящее время используются модификации PCI 2.1—3.0, PCI 64/66, PCI-X. Тактовая частота контроллера этой шины 33,33 МГц или 66,66 МГц. Ширина шины 32 или 64 бита, шина мультиплексированная (адрес и данные передаются по одним и тем же линиям). Пиковая пропускная способность шины 533 Мбайт/С. Общая шина PCMCIA (Personal Computer Memory Card International Association) применяется в переносных компьютерах класса ноутбук и имеет параметры, сравнимые с параметрами шины PCI. Локальная шина для подключения видеоконтроллера AGP (Accelerated Graphics Port) позволяет организовать непосредственную связь видеоконтроллера и оперативного запоминающего устройства. Она ориентирована на массовую передачу видеоданных. Имеет конвейерную организацию выполнения операций чтения/записи, что позволяет избежать задержек при обращении к модулям памяти. За один такт работы может передать два, четыре или восемь блоков данных, в зависимости от установленного режима работы. При установке режима параллельной передачи восьми блоков обеспечивает пиковую скорость передачи 2112 Мбайт/С. В настоящее время для увеличения производительности видеосистемы разработана новая более быстрая и прогрессивная шина PCI Express. 2.7.4. Внешние запоминающие устройства В отличие от оперативного запоминающего устройства, внешние запоминающие устройства (ВЗУ) обладают большим объемом сохраняемой информации и являются энергонезависимыми. Наибольшее распространение в настоящее время получили дисковые ВЗУ, которые, в зависимости от типа носителя, можно разделить на магнитные, оптические и смешанные. 4. Информагика 97
Накопители но магнитных дисках Магнитные диски в качестве запоминающей среды используют магнитные материалы со специальными свойствами, позволяющими фиксировать два состояния. Информация на магнитные диски записывается и считывается магнитной головкой, которая перемещается радиально с фиксированным шагом, а сам диск при этом вращается вокруг своей оси. Головка считывает или записывает информацию, расположенную на концентрической окружности, которая называется дорожкой или треком. Количество дорожек на диске определяется шагом перемещения головки я зависит от технических характеристик привода диска и качества самого диска. За один оборот диска может быть считана информация с одной дорожки. Общее время доступа к информации на диске складывается из времени перемещения головки на нужную дорожку и времени одного оборота диска. Каждая дорожка дополнительно разбивается на ряд участков — секторов. Сектор содержит минимальный блок информации, который может быть записан или считан с диска. Чтение и запись на диск осуществляется блоками, поэтому дисководы называют блочными устройствами. Физическая структура диска определяется количеством дорожек и числом секторов на каждой дорожке. Она задается при форматировании диска, которое выполняется специальными программами и должно быть проведено перед первым использованием диска для записи информации. Кроме физической структуры диска, говорят еще о логической структуре диска. Логическая структура определяется файловой системой, которая реализована на диске и зависит от операционной системы компьютера, на котором используется данный диск. Логическая структура подразумевает выделение некоторого количества секторов для выполнения служебных функций размещения файлов и каталогов на диске. Дисководы магнитных дисков делятся на дисководы для сменных носителей (дискет) и дисководы жестких дисков (винчестеры), которые устанавливаются в системном блоке компьютера. Сменные магнитные диски изготавливаются на основе гибкого синтетического материала, на который с обеих сторон нанесен слой магнитного материала. Такие гибкие диски имеют объем хранимой информации 1,44—2,88 Мбайт. Все сменные носители на дисках, в том числе и 98
рассмотренные далее оптические диски, характеризуются своим диаметром, или форм-фактором. Наибольшее распространение получили гибкие магнитные диски с форм-фактором 3,5 дюйма. Но существуют диски с форм-фактором 5,25 дюйма и 1,8 дюйма. Кроме гибких дисков широкое распространение получили сменные магнитные носители типа ZIP. Использование более совершенной системы позиционирования головок системы привода позволило увеличить плотность записи, и довести его для диска с форм-фактором 3,5 дюйма до 250 Мбайт. К сожалению, диски ZIP несовместимы с обычными гибкими дисками и для их использования приходится устанавливать специальный привод ZIP. Основа жесткого диска изготавливается из сплавов алюминия или керамики, на который наносится магнитный слой. Жесткость диска позволяет увеличить плотность записи, по сравнению с гибким диском. Несколько жестких дисков надеваются на одну общую ось и представляют собой пакет дисков. Такие пакеты позволяют резко увеличить объем информации, хранящейся на одном дисководе жесткого диска. В настоящее время используются дисководы с объемом 120—750 Гбайт, и эти значения постоянно увеличиваются. Накопители на оптических дисках Оптический компакт-диск {Compact Disk {CD)), который был предложен в 1982 г. фирмами Philips и Sony первоначально для записи звуковой информации, произвел переворот и в компьютерной технике, так как идеально подходил для записи цифровой информации больших объемов на сменном носителе. Объем информации, записанной на компакт-диске, составляет 600—700 Мбайт. К достоинствам компакт-диска можно отнести и его относительную дешевизну в массовом производстве, высокую надежность и долговечность, нечувствительность к загрязнению и воздействию магнитных полей. Запись на компакт-диск при промышленном производстве производится в несколько этапов. Сначала с использованием мощного инфракрасного лазера в стеклянном контрольном диске выжигаются отверстия диаметром 0,8 микрон. По контрольному диску изготавливается шаблон с выступами в тех местах, где лазер прожег отверстия. В шаблон вводится жидкая смола (поликарбонат), и получают диск с таким же набором впадин, что и отверстий в контрольном диске. Со стороны впадин на диск напыляется тонкий слой 99
алюминия, который затем покрывается лаком, защищающим его от царапин. При воспроизведении лазерный диод небольшой мощности освещает диск со стороны, противоположной нанесенному слою алюминия, который является отражателем светового луча лазера, а впадины превращаются в выступы. Впадины на диске имеют глубину, равную четверти длины волны лазера, из-за чего фотодиод, принимающий отраженный свет лазера, получает света от выступа меньше, чем от площадки. Впадины и площадки записываются на диск по спирали. Запись начинается от центра диска и занимает приблизительно 32 мм диска. Спираль проходит 22 188 оборотов вокруг диска, ее общая длина составляет 5600 М. На всем протяжении спирали скорость записи остается постоянной, поэтому специальное устройство при воспроизведении следит за постоянством линейной скорости, изменяя значение угловой скорости вращения диска. Так, на внутренней стороне скорость равна 530 оборотов в минуту, а на внешней стороне скорость падает до 200 оборотов в минуту, при этом линейная скорость остается постоянной, равной 1,2 М/С. В середине 90-х гг. появились устройства, устанавливаемые непосредственно на компьютере и позволяющие производить однократную запись информации на компакт-диск. Для таких устройств выпускают специальные компакт-диски, которые получили название CD-Recodable (CD-R). Отражающим слоем у них служит тонкий слой позолоты. Между слоем позолоты и слоем поликарбамидной смолы вводится слой красителя. На диске без записи этот слой красителя бесцветен, но под воздействием лазерного луча краситель темнеет, образуя пятна, которые при воспроизведении воспринимаются как выступы. Позднее появились компакт-диски с возможностью перезаписи — CD-ReWritable (CD-RW). На этих дисках слой красителя может находиться в двух состояниях: кристаллическом и аморфном. Эти два состояния имеют разную отражательную способность. Лазер устройства имеет три уровня мощности. При записи мощность лазерного диода повышается и расплавляет слой красителя, переводя его в аморфное состояние с низкой отражательной способностью, что соответствует выступу (запись информации). При средней мощности краситель плавится и переходит в кристаллическое состояние с вы- 100
сокой отражательной способностью (стирание информации). Низкая мощность лазера используется для считывания информации. Дальнейшее развитие технологий производства компакт-дисков привело к созданию дисков с высокой плотностью записи — цифровой универсальный диск Digital Versatile Disk (DVD). Впадины на них имеют меньший диаметр (0,4 микрона), а спираль размещается с плотностью 0,74 микрона между дорожками (вместо 1,6 микрон у CD). Это позволило увеличить объем информации на диске до 4,7 Гбайт. Дальнейшее увеличение объема информации обеспечивается применением двусторонних DVD. Флэш-память К недостаткам дисковой памяти можно отнести наличие механических движущихся компонентов, имеющих малую надежность, и большую потребляемую мощность при записи и считывании. Появление большого числа цифровых устройств, таких как МРЗ-плееры, цифровые фото- и видеокамеры, карманные компьютеры, потребовало разработки миниатюрных устройств внешней памяти, которые обладали бы малой энергоемкостью, небольшими размерами, значительной емкостью и обеспечивали бы совместимость с персональными компьютерами. Первые промышленные образцы такой памяти появились в 1994 г. Новый тип памяти получил название флэш-память (Flash- memory). Флэш-память представляет собой микросхему перепрограммируемого постоянного запоминающего устройства (ППЗУ) с неограниченным числом циклов перезаписи. В ППЗУ флэш-памяти использован новый принцип записи и считывания, отличный от того, который используется в известных схемах ППЗУ. Кристалл схемы флэш-памяти состоит из трех слоев. Средний слой, имеющий толщину порядка 1,5 нм, изготовлен из ферроэлектрического материала. Две крайние пластины представляют собой матрицу проводников для подачи напряжения на средний слой. При подаче напряжения, на пересечении проводников, возникает напряжение, достаточное для изменения направления магнитного момента атомов его кристаллической решетки, расположенной под местом пересечения проводников. Направление магнитного поля сохраняется и после снятия внешнего электрического поля. Изменение направления маг- 101
нитного поля ферроэлектрика изменяет сопротивления этого участка слоя. При считывании, на один крайний слой подается напряжение, а на втором слое замеряется напряжение, прошедшее через фер- роэлектрик, которое будет иметь разное значение для участков с разным направлением магнитного момента. Такой тип флэш-памяти получил название FRAM (ферроэлектрическая память с произвольным доступом). Конструктивно флэш-память выполняется в виде отдельного блока, содержащего микросхему флэш-памяти и контроллер, для подключения к одному из стандартных входов компьютера. Размеры этого блока 40 х 16x7 мм. Флэш-память, используемая в других цифровых устройствах, имеет иные размеры и конструктивное оформление. В настоящее время объем флэш-памяти достигает нескольких Гбайт, скорость записи и считывания составляют десятки Мбайт/с. 2.7.5. Внешние устройства Видеотерминалы Видеотерминалы предназначены для оперативного отображения текстовой и графической информации в целях визуального восприятия ее пользователем. Видеотерминал состоит из видеомонитора {дисплея) и видеоконтроллера. Для персональных компьютеров используются мониторы следующих типов: • на основе электроннолучевой трубки (ЭЛТ); • на основе жидкокристаллических индикаторов (ЖКИ, LCD — Liquid Crystal Display); • плазменные мониторы (PDP — Plasma Display Panels); • электролюминесцентные мониторы (FED — Field Emission Display); • самоизлучающие мониторы (LEP — Light Emission Plastics). Основными характеристиками мониторов являются следующие. Размер экрана монитора, который задается обычно величиной его диагонали в дюймах. Домашние персональные компьютеры оснащаются мониторами с размерами 15 или 17 дюймов, а для профессиональной работы, требующей отображения мелких деталей, используются мониторы с размерами 21 и 22 дюйма. 102
Еще одна важная характеристика монитора — разрешающая способность, которая определяется числом пикселей (световых точек) по горизонтали и вертикали. Стандартные значения разрешающей способности современных мониторов следующие: 800x600, 1024x768, 1800x1440, 2048x1536 и др. Значение разрешающей способности определяет качество изображения на экране. Рабочая частота кадровой развертки определяет скорость смены кадров изображения, она влияет на утомляемость глаз при продолжительной работе на компьютере. Чем выше частота кадровой развертки, тем меньше утомляемость глаз. Частота смены кадров во многом зависит от разрешающей способности экрана: чем выше разрешающая способность, тем меньше частота смены кадров, например, при разрешении 800x600 максимальная частота смены кадров может составить 120 Гц, а при разрешении 1600x1200 — 67 Гц. На разрешающую способность монитора и качество изображения влияет объем видеопамяти. Современные видеоконтроллеры для хранения цвета каждого пикселя расходуют до 4 байт памяти, для чего необходимо иметь объем видеопамяти от 32 до 128 Мбайт. Больший объем видеопамяти позволяет устанавливать более высокий режим разрешения и большее число цветов для каждого пикселя. Мониторы на основе ЭЛТ используют электроннолучевые трубки, применяемые в обычных телевизионных приемниках, и устройства, формирующего на экране точки (пиксели). Луч, двигающийся горизонтально, периодически засвечивает люминофор экрана, который под действием потока электронов начинает светиться, образуя точку. Для цветных мониторов засветка каждой точки осуществляется тремя лучами, вызывающими свечение люминофора соответствующего цвета — красного, зеленого и синего. Цвет точки создается смешением этих трех основных цветов и зависит от интенсивности каждого электронного луча. Цветной монитор может отображать до 16 млн оттенков в каждой точке. Мониторы на жидкокристаллических индикаторах представляют собой плоские панели. Эти мониторы используют специальную прозрачную жидкость, которая при определенных напряженностях электростатического поля кристаллизуется, при этом изменяется ее прозрачность и коэффициент преломления световых лучей. Эти эффекты используются для формирования изображения. Конструктивно такой монитор выполнен в виде двух электропроводящих стеклянных пла- 103
стан, между которыми помещен слой кристаллизующейся жидкости. Для создания электростатического поля стеклянная пластина покрыта матрицей прозрачных проводников, а пиксель формируется на пересечении вертикального и горизонтального проводника. Иногда на пересечении проводников ставят активный управляющий элемент — транзистор. Такие экраны, которые получили название TFT-экра- нов (Thin Film Transistor — тонкопленочный транзистор), имеют лучшую яркость и предоставляют возможность смотреть на экран даже с отклонением до 45° от вертикали. Этот показатель отличает TFT- экраны от экранов с пассивной матрицей, которые обеспечивали качество изображения только при фронтальном наблюдении. В плазменных мониторах изображение формируется светом, выделяемым при газовом разряде в каждом пикселе экрана. Конструктивно плазменная панель состоит из трех стеклянных пластин, на две из которых нанесены тонкие прозрачные проводники: на одну вертикально, на другую — горизонтально. Между ними находится третья пластина, в которой в местах пересечения проводников двух первых пластин имеются сквозные отверстия. Эти отверстия при сборке заполняются инертным газом: неоном или аргоном, они и образуют пиксели. Плазма газового разряда, возникающая при подаче высокочастотного напряжения на вертикальный и горизонтальный проводники, излучает свет в ультрафиолетовом диапазоне, который вызывает свечение люминофора. Каждый пиксель представляет собой миниатюрную лампу дневного света. Высокая яркость и контрастность, отсутствие дрожания изображения, а также большой угол отклонения от нормали, при котором изображение сохраняет высокое качество, являются большими преимуществами таких мониторов. К недостаткам можно отнести недостаточную пока разрешающую способность и достаточно быстрое (пять лет при офисном использовании) ухудшение качества люминофора. Пока такие мониторы используются только для конференций и презентаций. Электролюминесцентные мониторы состоят из двух пластин, с ортогонально нанесенными на них прозрачными проводниками. На одну из пластин нанесен слой люминофора, который начинает светиться при подаче напряжения на проводники в точке их пересечения, образуя пиксель. Самоизлучающие мониторы используют матрицу пикселей, построенную на основе полупроводникового материала, излучающего свет 104
при подаче на него напряжения (светодиод). На сегодняшний день имеются монохромные самоизлучающие дисплеи с желтым свечением, но они уступают по сроку службы LCD мониторам. Удалось создать органический проводник, имеющий широкий спектр излучения. На основе этого материала планируется создать полноразмерный цветной самоизлучающий монитор. Достоинства таких мониторов заключаются в том, что они обеспечивают 180-градусный обзор, работают при низком напряжении питания и имеют малый вес. Устройство ручного ввода информации Клавиатура. Клавиатурой называется устройство для ручного ввода информации в компьютер. Современные типы клавиатур различаются, в основном, принципом формирования сигнала при нажатии клавиши. Наиболее распространенные клавиатуры имеют под каждой клавишей купол, выполненный из специальной резины, который прогибается при нажатии клавиши и замыкает контакты проводящим слоем, расположенным на куполе. У некоторых клавиатур под каждой клавишей находится магнит, который при нажатии перемещается и проходит через катушку, наводя в ней ток самоиндукции. Среди современных типов клавиатур можно отметить беспроводную клавиатуру, в которой передача информации в компьютер происходит с помощью датчика инфракрасного излучения, аналогично пультам управления различной бытовой техники. Такая клавиатура позволяет работать в любом удобном для пользователя месте помещения, не привязываясь к расположению системного блока. Можно также отметить гибкую резиновую клавиатуру, которая работает бесшумно, защищена от механических и химических разрушающих воздействий, очень тонкая и может быть свернута в виде цилиндра. Клавиатурный процессор, который обрабатывает сигналы от клавиатуры, определяет номер клавиши, которая была нажата, так называемый скан-код, а сервисные программы операционной системы уже определяют, какой именно символ или команда были введены. Такой подход позволяет сопоставлять каждой клавише больше одного символа. Так, например, алфавитные клавиши клавиатуры ассоциируются с четырьмя различными символами: строчными и прописными символами латинского и национального алфавита. Точно так же происходит и с управляющими клавишами. При нажатии клавиши 105
клавиатурный процессор посылает в специальный буфер клавиатуры, расположенный в оперативной памяти, скан-код клавиши, состоящий из двух байт: байта собственно скан-кода и байта, определяющего какие дополнительные управляющие клавиши при этом удерживались нажатыми. К управляющим клавишам относятся клавиши Ctrl, Alt, Shift, которые еще и различаются по месту расположения: левые и правые, а также их комбинации. Сервисная программа читает из буфера клавиатуры эти два байта и передает их в программу, которая решает, какой именно символ или управляющий сигнал необходимо отобразить. Такой подход к обработке нажатий клавиш значительно расширяет возможности клавиатуры при задании управляющих комбинаций клавиш или при смене национального алфавита. Специальная программа в операционной системе Windows, например, позволяет изменить целиком раскладку клавиш или национальный алфавит, или значения отдельных клавиш. Клавиатурный процессор предоставляет пользователю еще одну интересную возможность: ввода символа, который не отображен на клавиатуре. Для этого на малой цифровой клавиатуре (она расположена слева) набирается десятичный код требуемого символа при одновременном удерживании клавиши Alt. Таким образом можно ввести символ псевдографики или управляющий символ, отсутствующий на клавиатуре. Манипулятор типа «мышь». В качестве дополнительных устройств для ручного ввода информации наиболее широко используются устройства графического ввода типа «мышь» и устройства для ввода информации в игровые программы — джойстики. Манипулятор «мышь» представляет, особенно для начинающих пользователей, необходимое средство для работы с компьютером. Современные графические операционные системы предоставляют пользователю графические объекты, размещенные на экране дисплея, и обращение к ним производится с помощью движущегося по экрану специального значка — курсора, обычно имеющего вид стрелки, который позволяет активизировать объект, не задумываясь о командах, которые при этом выполняются. Профессиональные пользователи активизируют работу объектов командами с клавиатуры, так как это ускоряет работу и не требует перемещения рук от клавиатуры. Но и профессионалы пользуются мышью, например, работая в графических редакторах или создавая приложения в визуальных сре- 106
дах программирования. Мышь используется и в некоторых игровых программах. Мышь представляет собой электронно-механическое устройство, внешний вид которой и принцип действия весьма разнообразны. Например, в портативных компьютерах мышь вмонтирована в его корпус и представляет собой площадку с сенсорами, которые отслеживают движения пальца по площадке и силу его давления и перемещают курсор по экрану или, при более сильном нажатии, выполняют команду. Такие устройства получили названия трекпоинты или трекпады. Но наиболее популярные типы мыши, применяемые в настольных компьютерах, имеют вид небольшой коробочки, сверху которой находятся две кнопки управления командами мыши и колесико скроллинга, применяемого для прокрутки информации в некоторых приложениях. На нижней части находится механическое или электронное устройство, отслеживающее перемещение мыши по поверхности. Механическое устройство состоит из резинового шарика, вращающегося, при перемещении мыши, и двух роликов, расположенных под прямым углом друг к другу. Ролики, в свою очередь, вращают колесики с прорезями. Свет от светодиода через прорезь попадает на фотодиод, который отсчитывает число прорезей и направление их прохождения, преобразуя их в вертикальную и горизонтальную составляющие движения. Эти сигналы поступают в компьютер, и сервисная программа, управляющая курсором мыши, перемещает курсор на экране в требуемом направлении. Эта же программа отслеживает нажатие левой и правой кнопки и число их нажатий за определенный промежуток времени. Программа способна отследить любое количество нажатий от одного до тридцати двух тысяч, однако на практике используется только одиночный или двойной щелчок кнопки. Электронные устройства перемещения используют принцип обработки отраженных световых импульсов от поверхности, по которой перемещается мышь. Такие устройства значительно надежнее механических. Выпускаются мыши, передающие информацию в компьютер по инфракрасному каналу. У таких мышей отсутствует «хвостик», связывающий ее с компьютером, из-за которого она и получила свое имя. Джойстик. Манипулятор типа джойстик является основным устройством для управления многочисленными компьютерными игра- 107
ми. Хотя большинство игровых программ допускают управление от клавиатуры, джойстики обеспечивают больший контроль над игрой и значительно полнее передают реальную игровую ситуацию, связанную с работой авиационных, автомобильных и иных имитаторов движения. Для истинных фанатов игр выпускают джойстики, похожие на реальные органы управления объектом: штурвалы, педали, рули и даже целые кабины. Простейший джойстик представляет собой основание с укрепленной на ней подвижной рукояткой, на которой размещены четыре кнопки и двухпозиционный курок. Отклонение рукоятки может осуществляться во все стороны и имитирует штурвал самолета или рычаг управления танком. Функции всех кнопок и положения рукоятки программируются и для разных игр могут иметь разные действия. Некоторые дорогие модели имеют механизм обратной связи игры с рукояткой джойстика, при этом рукоятка оказывает некоторое сопротивление перемещению, имитируя сопротивление среды, в котором перемещается объект. Для подключения джойстика к компьютеру используется стандартный вход, размещаемый обычно на разъеме звуковой карты, или другой стандартный вход компьютера. Устройства печати Существует несколько типов устройств, обеспечивающих получение твердой копии электронного документа на бумаге или другом материале. Наибольшее распространение получили два типа таких устройств: принтеры и плоттеры. Печатающие устройства (принтеры) — это устройства вывода данных из компьютера, формирующие поточечное изображение копии документов на бумаге или ином аналогичном материале, например, прозрачной пленке, применяемой для размножения документов типографским способом. Принтеры весьма разнообразны по принципу действия и качеству воспроизведения изображения, по размеру бумаги, на которой они могут его воспроизводить, а также возможности печати цветных или только черно-белых изображений и скорости печати. Основной характеристикой принтера, определяющей качество получаемого бумажного документа, является разрешающая способность, измеряющаяся числом элементарных точек (dots), которые помещаются на одном дюйме — dots per inch (dpi). Чем выше разре- 108
шающая способность, тем точнее воспроизводятся детали изображения. Современные принтеры обеспечивают разрешение от 200 до 2880 dpi. Еще одной важной характеристикой является производительность принтера, которая измеряется количеством страниц, изготовляемых принтером в минуту — page per minute (ppm). Обычно производительность указывается для страниц формата А4. Матричные принтеры. Изображение в матричных принтерах формируется из точек, которые получаются путем удара тонкой иглы по красящей ленте, прижимаемой в момент удара к бумаге. Иглы, число которых составляет от 9 до 24, объединены в головке и размещены в ней вертикально в один ряд. Каждая игла управляется отдельным магнитом, а головка движется горизонтально вдоль листа. Таким образом, за один проход головки получается полоса, высота которой в точках равна числу игл в головке. Скорость матричных принтеров не высока и составляет около 2 ppm. Разрешающая способность составляет 200—360 dpi. Достоинством матрдчных принтеров является низкая стоимость расходных материалов (красящей ленты) и возможность печати одновременно нескольких копий документа. К недостаткам относится низкая скорость печати и шум при печати. Струйные принтеры. В нашей стране это в настоящее время наиболее распространенный тип принтера. Печатающая головка струйного принтера вместо иголок содержит тонкие трубочки — сопла, через которые на бумагу выбрасываются мельчайшие дозированные капли красителя. Число сопел в головке составляет от 12 до 64. Струйные принтеры выполняют и цветную печать. При цветной печати цветная точка получается смешением в заданных пропорциях красителей трех основных цветов: голубого, пурпурного и желтого, выстреливаемого из трех сопел. Качество цветной печати получается очень высокое и практически неотличимо от типографского. К достоинствам струйных принтеров можно отнести: высокое разрешение, которое зависит от числа сопел в головке и составляет от 300 до 1200 dpi; высокая скорость печати (до 10 ppm); бесшумность работы. Основными недостатками является высокая стоимость расходных материалов и возможность засыхания красителя в сопле, что заставляет преждевременно заменять весь печатающий блок. Иногда, при нанесении большого объема красителя, бумага коробится. 109
Лазерные принтеры. Лазерные принтеры обеспечивают наиболее качественную печать с наивысшим разрешением и скоростью. Изображение в них формируется в несколько этапов. На первом этапе происходит засветка узким прерывистым световым лучом от лазерного диода барабана, на который нанесен тонкий слой материала, электролизующегося под действием света. На втором этапе барабан посыпается мелкодисперсионным красящим порошком, который налипает на барабан в точках засветки, а лишний порошок удаляется. Третий этап состоит в прокатывании барабана с налипшим на него порошком по бумаге, в результате чего краситель переходит на бумагу. На последнем этапе происходит термическая обработка бумаги. Она нагревается до 200°С, в результате порошок расплавляется и, проникая в структуру бумаги, закрепляется на ней. Лазерные принтеры могут обеспечить печать цветного изображения. Оно получается нанесением на барабан порошков разных цветов. К достоинствам лазерных принтеров можно отнести высокое качество печати, высокую скорость печати (до 40 ррт), а также низкую себестоимость копии и бесшумность в работе. Плоттеры. Плоттеры, или графопостроители, используются, в основном, для вывода графической информации — чертежи, схемы, диаграммы и т.п. Основное достоинство плоттеров заключается в том, что они предназначены для получения изображения на бумаге большого формата, например, AL Плоттеры делятся на два больших класса: векторные и растровые. В векторных плоттерах пишущий узел перемещается относительно бумаги сразу по вертикали и горизонтали, вычерчивая на бумаге непрерывные кривые в любом направлении. В растровых плоттерах пишущий узел перемещается относительно бумаги только в одном направлении, и изображение формируется строка за строкой из последовательности точек. Векторные плоттеры используют для рисования узел, который называется пером. В качестве пера используются перья с чернилами, фибровые и пластиковые стержни (фломастеры), карандашные грифели и мелки или шариковые узлы однократного и многоразового действия. Перьевые плоттеры обеспечивают высокое качество как однотонных, так и цветных изображений, но имеют невысокую скорость работы. Постепенно перьевые и шариковые узлы плоттеров вытесняются струйными узлами, которые аналогичны узлам струй- 110
ных принтеров. Для получения очень высокого качества печати электростатические плоттеры используют специальную бумагу, на которой создается потенциальный электростатический рельеф изображения. На бумагу наносится слой красителя, осаждающийся только на рельеф. Растровые плоттеры могут иметь струйный или лазерный пишущий узел. Их основное отличие от принтеров с подобным принципом работы состоит в ширине обрабатываемого изображения. Разнообразие существующих типов плоттеров и их высокая стоимость требует тщательного анализа при выборе плоттера. Необходимо учесть такие параметры, как качество изображения, возможности использования цветовой палитры, производительность, эксплуатационные расходы, выражающиеся в себестоимости одной копии полученного изображения. Устройство поддержки безбумажных технологий До появления электронных носителей информации основным средством сохранения документов являлась бумага. Перевод бумажных документов в электронные копии позволит сохранять их практически вечно. Кроме того, развитие глобальной сети позволяет обмениваться информацией только в электронном виде. Поэтому устройства, преобразующие бумажные документы в электронные копии и снабженные системами автоматического распознавания текста, являются необходимыми элементами создания систем безбумажной технологии. Наиболее распространенными устройствами для решения задачи перевода бумажных документов в электронные копии являются сканеры. Сканеры весьма разнообразны, и их можно классифицировать по целому ряду признаков. Прежде всего сканеры бывают чёрно-белые и цветные. Черно-белые сканеры могут считывать штриховые и полутоновые изображения. Полутоновые изображения могут иметь до 256 градаций серого цвета. В цветных сканерах сканируемое изображение освещается через вращающийся светофильтр, воспринимающий последовательно три основных цвета, или тремя последовательно зажигаемыми лампами красного, зеленого и голубого цветов. Следующая важная характеристика сканеров — разрешающая спо- 111
собность, измеряющаяся количеством различаемых точек на дюйм изображения, и составляет от 75 до 1600 dpi. Высокое разрешение необходимо для комфортного визуального восприятия. Для нормальной работы программ распознавания образов и, в частности, распознавания текстов, которыми снабжаются сканеры, вполне достаточно разрешающей способности в 300—600 dpi. Для публикации картинок На web-сайтах Интернета достаточно разрешения 80 dpi. Разрешение необходимо выбирать индивидуально для каждого конкретного использования сканируемого изображения. Увеличение разрешения резко увеличивает размер файла, в котором сохраняется изображение, это может вызвать затруднения при его пересылке и хранении. При больших объемах сканирования очень важное значение приобретает скорость сканирования документа. Оно может измеряться в миллиметрах в секунду, но на практике чаще используется количество секунд, затрачиваемое на сканирование одной страницы. Необходимо отметить, что скорость сканирования цветных изображений значительно ниже, чем штриховых черно-белых. Снижается скорость сканирования и при увеличении разрешающей способности сканера. Конструктивно сканеры делятся на четыре типа: рунные, планшетные, роликовые и проекционные. Ручные сканеры перемещаются по изображению вручную. Они выполнены в виде блока с рукояткой, который «прокатывают» по изображению. За один проход сканируется лишь часть изображения, так как ширина сканирования не превышает 105 мм. Все изображение сканируется за несколько проходов. Специальное программное обеспечение, поставляемое вместе со сканерами, позволяет совмещать части отсканированного изображения. Ручные сканеры имеют малые габариты и низкую стоимость и позволяют сканировать изображения любого размера, но могут возникать искажения при совмещении частей изображения. Планшетные сканеры являются наиболее распространенным типом сканера. В них сканирующая головка (линейка светодиодов) движется относительно неподвижного оригинала, который помещается на прозрачное стеклянное основание. Достоинство таких сканеров заключается в том, что с их помощью можно сканировать и листовые и сброшюрованные документы (книги). Скорость сканирования таких сканеров составляет 2—10 с на страницу формата А4. 112
К недостаткам планшетных сканеров можно отнести необходимость ручного позиционирования каждой страницы оригинала. Роликовые сканеры используются для пакетной обработки листовых документов. В них подача очередного листа для сканирования происходит автоматически. Сканирующая головка в таких сканерах неподвижна, а лист оригинала перемещается относительно нее. К недостаткам роликовых сканеров можно отнести проблему выравнивания листов и сложность работы с листами нестандартного размера. Проекционные сканеры отличаются от других типов тем, что оригинал устанавливается в рамку, и сканирование проводится на просвет, как правило, с масштабированием. Устройство оброботки звуковой информации Звуковая карта — это периферийное устройство, которое еще несколько лет назад считалось экзотическим, а теперь стало почти стандартным и включено в состав основного набора микросхем системных плат. Звуковая карта обеспечивает качество записи и воспроизведения звуковой информации не хуже звукового компакт-диска. Имеет 16-битный стереофонический цифро-аналоговый и аналого- цифровой преобразователи для записи и воспроизведения звуковой информации с цифрового или аналогового носителей и микрофона. Поддерживает функции создания звуковых эффектов для игровых программ. Имеет стандартные выходы для подключения акустической системы компьютера и внешних усилителей звуковых частот. Звуковая карта работает в трех основных режимах: создание, запись и воспроизведение звуковых сигналов. В режиме создания звука плата действует как музыкальный инструмент, синтезирующий сложный звуковой сигнал. Для синтеза используются два метода. Первый метод получил название FM-синтеза. FM-синтез осуществляется с помощью специальных генераторов, которые могут изменять частоту и амплитуду тона. Эти генераторы могут моделировать звучание определенного музыкального инструмента. На звуковой плате устанавливаются от 4 до 18 генераторов, которые, соответственно, могут имитировать одновременное звучание 2—9 инструментов. Звук, синтезированный FM-методом, имеет некоторый «металлический» оттенок и не похож на звучание настоящего музыкального инструмента. 113
Второй метод, получивший название WT-синтез, обеспечивает более высокое качество звучания. В основе этого синтеза лежат записанные ранее и хранящиеся в виде файлов образцы звучания музыкальных инструментов (MIDI-файлы). WT-синтезаторы манипулируют записанными образцами, создавая сложные музыкальные образы. Достоинство этого метода не только в высоком качестве синтезированного звука, но и в том, что количество и типы музыкальных инструментов можно расширить, установив на компьютер дополнительные MIDI-файлы. В режиме записи звуковая карта принимает звук от внешнего источника и производит его оцифровку, т.е. преобразует его из аналоговой {непрерывной) формы в цифровую {дискретную) и сохраняет числовые данные в виде файлов на диски. Качество оцифрованного звука во многом зависит от разрядности преобразования и частоты дискретизации. При воспроизведении звуковая карта может принимать оцифрованный или непрерывный сигнал. Для этого карта имеет специальные разъемы для подключения источников непрерывного сигнала, вход для подключения, выход CD-диска и усилитель, позволяющий выводить сигнал на внешние акустические системы. Качество оцифровываемого и воспроизводимого сигнала зависит от таких параметров звуковой карты, как частота дискретизации, которая должна составлять не менее 44 кГц, разрядность оцифрованного сигнала (12—16 бит) и возможность стереофонической записи и воспроизведения. Устройства для соединения компьютеров в сеть Модем. Одной из популярных областей применения персонального компьютера является работа в глобальной сети Internet. К ней компьютер подключается по обычной телефонной или специальной линии с помощью устройства, которое называется модем {МОдулятор + ДЕМодулятор). Цифровые данные, поступающие в модем из компьютера, преобразуются в нем путем модуляции в специальный непрерывный сигнал, который и направляется в линию передачи. Модем- приемник осуществляет обратное преобразование сигнала (демодуляцию) и пересылает восстановленные цифровые данные в свой компьютер. Скорость передачи данных современными модема- 114
ми составляет 33 600 или 56 000 бит/с и зависит от поддерживаемого модемом протокола передачи. Модем конструктивно может быть выполнен как отдельное устройство, подключаемое к компьютеру через один из его стандартных последовательных входов или как внутреннее устройство, размещаемое внутри системного блока компьютера. Развивающиеся цифровые технологии передачи данных, требующие значительно больших скоростей передачи и качества связи, требуют использования цифровых модемов. Цифровые модемы не являются действительно модуляторами-демодуляторами сигналов, так как и на входе, и на выходе имеют импульсный сигнал. Они выпускаются разных модификаций для конкретных цифровых сетей и скорость передатчика составляет от 300 Кбит/с до 2—5 Мбит/с. Выпускаются также сотовые модемы для работы в системе сотовой связи и радиомодемы, которые осуществляют прием и передачу в пределах прямой видимости пары модемов и работают на ультракоротких волнах. Современная телекоммуникационная технология ADSL (Asymmetric digital subscriber lines — «Асимметричная цифровая абонентская линия»), позволяющая передавать данные с высокой скоростью по обычным телефонным линиям, имеет различие скоростей обмена данными в направлениях к абоненту и обратно. Асимметричный тип данной технологии делает ее идеальной для современных приложений, где объем передаваемых данных к абоненту в подавляющем большинстве случаев намного превышает объем данных, идущих от абонента в сторону сети. С помощью технологии ADSL можно вести передачу данных на скорости до 8 Мбит/с в направлении к абоненту и до 1 Мбит/с в обратном направлении. Ее использование не требует прокладки дополнительного кабеля, так как для доступа в сеть используется имеющаяся телефонная линия, причем телефон свободен во время соединения с сетью. Сетевая карта. Если компьютеры объединяются в сеть, для которой прокладывается специальный кабель, то используются специальные платы расширения, вставляемые в слот расширения системной платы. Такие платы называются сетевыми адаптерами или сетевыми картами. Скорость передачи данных по сети через сетевые карты в зависимости от типа применяемой технологии составляет 10 Мбит/С, 100 Мбит/С, 1 Гбит/С и 10 Гбит/С. Сетевая карта имеет свой уникальный адрес, который однозначно определяет адрес локального компьютера в сети. Она преобразу- 115
ет данные, поступающие к ней от компьютера, в специальные пакеты — кадры, пересылает их адресату, т.е. другой сетевой карте, и отвечает за надежную доставку указанному адресату по сети. Так как функции, которые выполняет сетевая карта, достаточно сложны, в ее состав включен специализированный процессор, обеспечивающий высокоскоростную аппаратную поддержку выполнения этих функций. При выборе сетевой карты основным параметром является тип сети, в состав которой будет включен локальный компьютер. Известные стандартные типы локальных сетей, такие как FDDI (Fiber Distributed Data Interface —распределенный волоконный интерфейс данных), Ethernet (эзернет, от лат. aether — эфир) и др., несовместимы между собой, и каждая сетевая карта поддерживает только определенный вид локальной сети. 2.8. Перспективы развития технических средств обработки информации При разработке и создании компьютеров и сопутствующей техники существенный и устойчивый приоритет в последние годы имеют сверхмощные суперкомпьютеры и миниатюрные и сверхминиатюрные компьютеры. Ведутся поисковые работы по созданию компьютеров шестого поколения, базирующихся на распределенной «нейронной» архитектуре, — нейрокомпьютеров. Ближайшие прогнозы по созданию новых функциональных устройств обещают создание микропроцессоров с быстродействием 100 млн операций в секунду; встроенные сетевые и видеоинтерфейсы, плоские крупноформатные дисплеи с разрешающей способностью 1200x1000 пикселей и более; портативные, размером со спичечный коробок, магнитные диски емкостью более 100 Гбайт. В сетевых технологиях предполагается повсеместное внедрение мультиканальных широкополосных радио-, волоконно-оптических и оптических каналов обмена информации в сети компьютеров, которые обеспечат практически неограниченную пропускную способность. Предполагается широкое внедрение средств мультимедиа и, в первую очередь аудио- и видеосредств ввода и вывода информации и возможности общения с компьютером на естественном языке. 116
3. Системное программное обеспечение Между отдельными программами математического или программного обеспечения (ПО) компьютерной системы, как и между ее узлами и блоками, существует тесная взаимосвязь. Такая взаимосвязь обеспечивается распределением ПО между несколькими взаимодействующими уровнями. Каждый вышележащий уровень, опираясь на программное обеспечение нижележащих уровней, повышает функциональность всей системы. Взаимосвязь между уровнями и программами системного ПО можно представить с помощью схемы (рис. 3.1). Эта схема составлена по аналогии со структурной схемой программного обеспечения всей компьютерной системы, рассмотренной в главе 1. СИСТЕМНОЕ ПО Операционные системы Файловые системы Базовое ПО Драйверы устройств Служебные программы Утилиты Антивирусные средства Рис. 3.1. Уровни и программы системного программного обеспечения Базовое ПО в архитектуре компьютера занимает особое положение. С одной стороны, его можно рассматривать как составную часть аппаратных средств, с другой стороны, оно является одним из программных модулей операционной системы. Основу системного ПО составляют программы, входящие в операционные системы (ОС) компьютеров. Задача таких программ — управление работой всех устройств компьютерной системы и организация взаимодействия отдельных процессов, протекающих в 117
компьютере во время выполнения программ. Сюда относятся и программы, обеспечивающие отображение информации на дисплее в удобном для пользователя виде, диалоговые программы для общения на ограниченном естественном языке, а также системы трансляции, переводящие на машинный язык программы, написанные на языках программирования. Другой комплекс программ — служебные. Это различные сервисные программы, используемые при работе или техническом обслуживании компьютера, — редакторы, отладчики, диагностические программы, архиваторы, программы для борьбы с вирусами и другие вспомогательные программы. Данные программы облегчают пользователю взаимодействие с компьютером. К ним примыкают программы, обеспечивающие работу компьютеров в сети. Они реализуют сетевые протоколы обмена информацией между машинами, работу с распределенными базами данных, телеобработку информации. Вся совокупность программ, образующих ту программную среду, в которой работает компьютер и называется системным программным обеспечением. И чем богаче системное ПО, тем продуктивнее становится работа на компьютере. Однако в программную среду, наряду с полезными, могут входить и программы, нарушающие ее работу. Это различные программы для несанкционированного доступа к данным и программам, компьютерные вирусы и другие программные средства, с помощью которых «взламывается» защита программной среды. Рассмотрим более подробно программы, входящие в системное программное обеспечение компьютера. 3.1. Базовое программное обеспечение Базовое ПО, или BIOS, представляет программа, которая отвечает за управление всеми компонентами, установленными на материнской плате. Фактически BIOS является неотъемлемой составляющей системной платы и поэтому может быть отнесена к особой категории компьютерных компонентов, занимающих промежуточное положение между аппаратурой и программным обеспечением. Аббревиатура BIOS расшифровывается как Basic Input/Output System — базовая система ввода/вывода. Раньше в системе IBM PC 118
основным назначением BIOS была поддержка функций ввода-вывода за счет предоставления ОС интерфейса для взаимодействия с аппаратурой. В последнее время ее назначение и функции значительно расширились. Второй важной функцией BIOS является процедура тестирования (POST — Power On Self Test) всего установленного на материнской плате оборудования (за исключением дополнительных плат расширения), проводимая после каждого включения компьютера. В процедуру тестирования входят: • проверка работоспособности системы управления электропитанием; • инициализация системных ресурсов и регистров микросхем; • тестирование оперативной памяти; • подключение клавиатуры; • тестирование портов; • инициализация контроллеров, определение и подключение жестких дисков. В процессе инициализации и тестирования оборудования BIOS сравнивает данные системной конфигурации с информацией, хранящейся в CMOS — специальной энергозависимой памяти, расположенной на системной плате. Хранение данных в CMOS поддерживается специальной батарейкой, а информация обновляется всякий раз при изменении каких-либо настроек BIOS. Именно эта память хранит последние сведения о системных компонентах, текущую дату и время, а также пароль на вход в BIOS или загрузку операционной системы (если он установлен). При выходе из строя, повреждении или удалении батарейки все данные в CMOS-памяти обнуляются. Третьей важной функцией, которую BIOS выполняет со времен IBM PC, является загрузка ОС. Современные BIOS позволяют загружать операционную систему не только с гибкого или жесткого диска, но и с приводов CD-ROM, ZIP, LS-120, SCSI-контроллеров. Определив тип устройства загрузки, BIOS приступает к поиску программы — загрузчика ОС на носителе или переадресует запрос на загрузку на BIOS другого устройства. Когда ответ получен, программа загрузки помещается в оперативную память, откуда и происходит загрузка системной конфигурации и драйверов устройств операционной системы. 119
С появлением процессоров Pentium BIOS стала выполнять еще одну функцию — управление потребляемой мощностью, а с появлением материнских плат форм-фактора (стандартизированный размер) ATX (Advanced Technology extended — расширенная продвинутая технология) — и функцию включения и выключения источника питания в соответствии со спецификацией ACPI (Advanced Configuration and Power Interface — продвинутый интерфейс конфигурирования и управления потребляемой мощностью). Существует также спецификация АРМ (Advanced Power Management — продвинутое управление потребляемой мощностью). Отличие их состоит в том, что ACPI выполняется в основном средствами ОС, а АРМ — средствами BIOS. Фирм, занимающихся разработкой программного обеспечения для BIOS, очень мало. Из наиболее известных можно выделить три: Award Software (Award BIOS), American Megatrends, Inc. (AMI BIOS) и Microid Research (MR BIOS). Но на подавляющем большинстве компьютеров сегодня применяются различные версии BIOS компании Award Software. Пользовательский интерфейс разных версий и разных производителей BIOS может сильно отличаться, но системные вызовы строго стандартизированы. Физически BIOS находится в энергонезависимой перепрограммируемой флэш-памяти, которая вставляется в специальную колодку на материнской плате (на этой микросхеме есть яркая голографичес- кая наклейка с логотипом фирмы — разработчика ПО для BIOS). 3.2. Onepaциoнныe системы 3.2.1. Назначение олераиионной системы Место операционной системы в структуре аппаратно-программных средств (АПС) компьютера показано на рис. 3.2. Нижний уровень структуры составляют интегральные микросхемы, источники питания, дисководы и другие физические устройства. 120
Прикладные программы Интерпретаторы команд Компиляторы Редакторы Операционная система Система команд Функциональные средства Аппаратные средства Рис. 3.2. Структура аппаратно-программных средств компьютера Выше расположен уровень, на котором физические устройства рассматриваются с точки зрения функционально-логических связей. На этом уровне находятся внутренние регистры центрального процессора (ЦП) и арифметыческо-логическое устройство (АЛУ). Операции над данными выполняются в соответствии с тактовой частотой ЦП. В некоторых машинах эти операции осуществляются под управлением специальных средств, называемых микропрограммами, В других — с помощью аппаратуры. Некоторые операции выполняются за один такт работы ЦП, другие требуют нескольких тактов. Все операции составляют систему команд машины, а все данные имеют абсолютные значения адресоб, по которым они хранятся в памяти. Система команд компьютера образует машинный язык. Машинный язык содержит от 50 до 300 команд, по которым осуществляются преобразование, модификация и перемещения данных между устройствами. Управление устройствами на этом уровне осуществляется с помощью загрузки определенных данных в специальные регистры устройств. Например, при программировании ввода/вывода диску можно дать команду чтения, записав в его регистры адрес места на диске, адрес в основной памяти, число байтов для чтения и направление действия (чтение или запись). В действительности диску следует передавать большее количество параметров, а структура операции, возвращаемой диском, достаточно сложна. При этом очень важную роль играют временные соотношения. 121
Операционная система предназначена для того, чтобы скрыть от пользователя все эти сложности. Этот уровень АПС (рис. 3.2) является программным обеспечением, управляющим всеми электронными компонентами компьютера, распределяющим его ресурсы, организующим вычислительный процесс и предоставляющим пользователю удобный интерфейс, избавляющий его от необходимости непосредственного общения с аппаратурой. Действие чтения файла в этом случае становится намного более простым, чем когда нужно заботиться о перемещении головок диска, ждать, пока они установятся на нужное место, и т. д. Над ОС в структуре аппаратно-программных средств компьютера расположены остальные системные программы. Здесь находятся интерпретатор команд, системы окон, компиляторы и редакторы кода. Компиляторы — это ПО, переводящее программу с языка программирования высокого уровня на машинный язык. После этого программа записывается в ОЗУ и затем выполняется. Интерпретаторы — это ПО, переводящее операторы программы на машинный язык по очереди и немедленно выполняющее их. Очень важно понимать, что такие программы не являются частью ОС. Под операционной системой обычно понимается то программное обеспечение, которое запускается в режиме ядра и защищается от вмешательства пользователя с помощью аппаратных средств. А компиляторы и редакторы запускаются в пользователь-ском режиме. Если пользователю не нравится какой-либо компилятор, он может выбрать другой или написать свой собственный, но он не может написать свой собственный обработчик прерываний, являющийся частью операционной системы и защищенный аппаратно от попыток его модифицировать. Во многих ОС есть программы, которые работают в пользовательском режиме. Они помогают операционной системе выполнять специализированные функции. Например, программы, позволяющие пользователям изменять свои пароли. Эти программы не являются частью ОС и запускаются не в режиме ядра, но выполняемые ими функции влияют на работу системы. Такие программы также защищаются от воздействия пользователя. И, наконец, над системными программами (рис. 3.2) расположены прикладные программы. Обычно они покупаются или пишутся пользователем для решения собственных задач — обработки текста, 122
работы с графикой, технических расчетов или создания системы управления базой данных. Операционные системы выполняют две основные функции — расширение возможностей машины и управление ее ресурсами. Как уже упоминалось, архитектура (система команд, организация памяти, ввод/вывод данных и структура шин) компьютера на уровне машинного языка неудобна для работы с программами, особенно при вводе/выводе данных. Так, процедура ввода/вывода данных с гибкого диска выполняется через микросхемы контроллера. Контроллер имеет 16 команд. Каждая задается передачей от 1 до 9 байт в регистр устройства. Это команды чтения и записи данных, перемещения головки диска, форматирования дорожек, инициализации, распознавания, установки в исходное положение и калибровки контроллера и приводов. Основные команды read и write (чтение и запись). Каждая из них требует 13 параметров, которые определяют адрес блока на диске, количество секторов на дорожке, физический режим записи, расстановку промежутков между секторами. Программист при работе с гибким диском должен также постоянно знать, включен двигатель или нет. Если двигатель выключен, его следует включить прежде, чем данные будут прочитаны или записаны. Двигатель не может оставаться включенным слишком долго, так как гибкий диск изнашивается. Поэтому программист вынужден выбирать между длинными задержками во время загрузки и изнашивающимися гибкими дисками. Отсюда ясно, что обыкновенный пользователь не захочет сталкиваться с такими трудностями во время работы с дискетой или жестким диском, процедуры управления которым еще сложнее. Ему нужны простые высокоуровневые операции. В случае работы с дисками типичной операцией является выбор файла из списка файлов, содержащихся на диске. Каждый файл может быть открыт для чтения или записи, прочитан или записан, а потом закрыт. А детали этих операций должны быть скрыты от пользователя. Программа, скрывающая истину об аппаратном обеспечении и представляющая простой список файлов, которые можно читать и записывать, называется операционной системой. Операционная система не только устраняет необходимость работы непосредственно с дисками и предоставляет простой, ориентированный на работу с файлами интерфейс, но и скрывает множество неприятной работы 123
с прерываниями, счетчиками времени, организацией памяти и другими низкоуровневыми элементами. В каждом случае процедура, предлагаемая ОС, намного проще и удобнее в обращении, чем те действия, которые требует выполнить основное оборудование. С точки зрения пользователя ОС выполняет функцию виртуальной машины, с которой проще и легче работать, чем непосредственно с аппаратным обеспечением, составляющим реальный компьютер. А для программ ОС предоставляет ряд возможностей, которые они могут использовать с помощью специальных команд, называемых системными вызовами. Концепция, рассматривающая ОС прежде всего как удобный интерфейс пользователя, — это взгляд сверху вниз. Альтернативный взгляд снизу вверх дает представление об ОС как о механизме управления всеми частями компьютера. Современные компьютеры состоят из процессоров, памяти, дисков, сетевого оборудования, принтеров и огромного количества других устройств. В соответствии со вторым подходом работа ОС заключается в обеспечении организованного и контролируемого распределения процессоров, памяти и устройств ввода/вывода между различными программами, состязающимися за право их использовать. 3.2.2. Виды операционных систем История развития ОС насчитывает уже много лет. Операционные системы появились и развивались в процессе совершенствования аппаратного обеспечения компьютеров, поэтому эти события исторически тесно связаны. Развитие компьютеров привело к появлению огромного количества различных ОС, из которых далеко не все широко известны. На самом верхнем уровне находятся ОС для мэйнфреймов. Эти огромные машины еще можно встретить в больших организациях. Мэйнфреймы отличаются от персональных компьютеров по своим возможностям ввода/вывода. Довольно часто встречаются мэйнфреймы с тысячью дисков и терабайтами данных. Мэйнфреймы выступают в виде мощных web-серверов и серверов крупных предприятий и корпораций. Операционные системы для мэйнфреймов в основном ориентированы на обработку множества одновременных заданий, большинству из которых требуется огромное количество опе- 124
раций ввода-вывода. Обычно они выполняют три вида операций: пакетную обработку, обработку транзакций (групповые операции) и разделение времени. При пакетной обработке выполняются стандартные задания пользователей, работающих в интерактивном режиме. Системы обработки транзакций управляют очень большим количеством запросов, например бронирование авиабилетов. Каждый отдельный запрос невелик, но система должна отвечать на сотни и тысячи запросов в секунду. Системы, работающие в режиме разделения времени, позволяют множеству удаленных пользователей одновременно выполнять свои задания на одной машине, например, работать с большой базой данных. Все эти функции тесно связаны между собой, и операционная система мэйнфрейма выполняет их все. Примером операционной системы для мэйнфрейма является OS/390. Уровнем ниже находятся серверные ОС. Серверы представляют собой или многопроцессорные компьютеры, или даже мэйнфреймы. Эти ОС одновременно обслуживают множество пользователей и позволяют им делить между собой программно-аппаратные ресурсы. Серверы также предоставляют возможность работы с печатающими устройствами, файлами или Internet. У Internet-провайдеров обычно работают несколько серверов для того, чтобы поддерживать одновременный доступ к сети множества клиентов. На серверах хранятся страницы web-сайтов и обрабатываются входящие запросы. UNIX и Windows 2000 являются типичными серверными ОС. Теперь для этой цели стала использоваться и операционная система Linux. Следующую категорию составляют ОС для персональных компьютеров. Их работа заключается в предоставлении удобного интерфейса для одного пользователя. Такие системы широко используются в повседневной работе. Основными ОС в этой категории являются операционные системы платформы Windows, Linux и операционная система компьютера Macintosh. Еще один вид ОС — это системы реального времени. Главным параметром таких систем является время. Например, в системах управления производством компьютеры, работающие в режиме реального времени, собирают данные о промышленном процессе и используют их для управления оборудованием. Такие процессы должны удовлетворять жестким временным требованиям. Если, например, по конвейеру передвигается автомобиль, то каждое действие должно 125
быть осуществлено в строго определенный момент времени. Если сварочный робот сварит шов слишком рано или слишком поздно, то нанесет непоправимый вред изделию. Системы VxWorks и QNX являются операционными системами реального времени. Встроенные операционные системы используются в карманных компьютерах и бытовой технике. Карманный компьютер — это маленький компьютер, помещающийся в кармане и выполняющий небольшой набор функций, например, телефонной книжки и блокнота. Встроенные системы, управляющие работой устройств бытовой техники, не считаются компьютерами, но обладают теми же характеристиками, что и системы реального времени, и при этом имеют особые размер, память и ограничения мощности, что выделяет их в отдельный класс. Примерами таких операционных систем являются PalmOS и Windows CE (Consumer Electronics — бытовая техника). Самые маленькие операционные системы работают на смарт- картах, представляющих собой устройство размером с кредитную карту и содержащих центральный процессор. На такие операционные системы накладываются очень жесткие ограничения по мощности процессора и памяти. Некоторые из них могут управлять только одной операцией, например электронным платежом, но другие ОС выполняют более сложные функции. 3.2.3. Бозовые понятия операционных систем Для операционных систем существует набор базовых понятий, таких как процессы, память и файлы, которые являются самыми важными для понимания общей идеи построения и функционирования ОС. Ключевое понятие ОС — процесс. Процессом называют программу в момент ее выполнения. С каждым процессом связывается его адресное пространство — список адресов в памяти от некоторого минимума до некоторого максимума. По этим адресам процесс может занести информацию и прочесть ее. Адресное пространство содержит саму программу, данные к ней и ее стек. Со всяким процессом связывается некий набор регистров, включая счетчик команд, указатель стека и другие аппаратные ресурсы, а также вся информация, необходимая для запуска программы. Чтобы лучше разобраться в понятии процесса, проведем аналогию с системой, работающей в 126
режиме разделения времени. Предположим, ОС решает остановить работу одного процесса и запустить другой, потому что первый израсходовал отведенную для него часть рабочего времени ЦП. Позже остановленный процесс должен быть запущен снова из того же состояния, в каком его остановили. Следовательно, всю информацию о процессе нужно где-либо сохранить. Так, процесс может иметь несколько одновременно открытых для чтения файлов. Связанный с каждым файлом указатель дает текущую позицию, т.е. номер байта или записи, которые будут прочитаны после повторного запуска процесса. При временном прекращении действия процесса все указатели нужно сохранить так, чтобы команда чтения, выполненная после возобновления процесса, прочла правильные данные. Во многих ОС вся информация о каждом процессе хранится в таблице операционной системы. Эта таблица называется таблицей процессов и представляет собой связанный список структур, по одной на каждый существующий в данный момент процесс. В каждом компьютере есть оперативная память, используемая для хранения исполняемых программ. В простых ОС в конкретный момент времени в памяти может находиться только одна программа. Более сложные системы позволяют одновременно хранить в памяти несколько программ. Для того чтобы они не мешали друг другу, необходим защитный механизм. Этот механизм управляется операционной системой. Другой важный, связанный с памятью вопрос — управление адресным пространством процессов. Обычно под каждый процесс отводится некоторое множество адресов, которые он может использовать. В простейшем случае, когда максимальная величина адресного пространства для процесса меньше оперативной памяти, процесс заполняет свое адресное пространство, и памяти хватает на то, чтобы содержать его целиком. Однако, что произойдет, если адресное пространство процесса окажется больше, чем ОЗУ компьютера, а процесс захочет использовать его целиком? В этом случае используется метод, называемый виртуальной памятью, при котором ОС хранит часть адресов в оперативной памяти, а часть на диске и меняет их местами при необходимости. Управление памятью — важная функция операционной системы. Файловая система — еще одно базовое понятие, поддерживаемое виртуально всеми ОС. Как было установлено, основной функцией 127
операционной системы является маскирование особенностей работы дисков и других устройств и предоставление пользователю понятной и удобной абстрактной модели независимых от устройств файлов. Системные вызовы необходимы для создания, удаления, чтения или записи файлов. Перед тем как прочитать файл, его нужно разместить на диске и открыть, а после прочтения его нужно закрыть. Все эти функции осуществляют системные вызовы. При создании места для хранения файлов ОС использует понятие каталога как способ объединения файлов в группы. Например, студент может иметь по одному каталогу для каждого изучаемого им курса, каталог для электронной почты и каталог для своей домашней web-страницы. Для создания и удаления каталога также необходимы системные вызовы. Они же обеспечивают перемещение существующего файла в каталог и удаление файла из каталога. Содержимое каталога могут составлять файлы или другие каталоги. Эта модель создает структуру — файловую систему. Иерархии процессов и файлов организованы в виде деревьев (рис. 3.3). Иерархия процессов обычно не очень глубока, в ней редко бывает больше трех уровней, тогда как файловая структура достаточно часто имеет четыре, пять и даже больше уровней в глубину. Рис. 3.3. Дерево каталогов 128
Иерархия процессов обычно живет, как правило, несколько минут, иерархия каталогов может существовать годами. Каждый файл в иерархии каталогов можно определить, задав его имя пути, называемое также полным именем файла. Путь начинается из вершины структуры каталогов, называемой корневым каталогом. Такое абсолютное имя пути состоит из списка каталогов, которые нужно пройти от корневого каталога к файлу, с разделением отдельных компонентов. Отдельные компоненты в ОС UNIX разделяются косой чертой /, а в MS-DOS и Windows — обратной косой чертой \. 3.2.4. Процессы и потоки Основным понятием, связанным с операционными системами, является процесс — абстрактное понятие, описывающее работу программы. Все остальное базируется на этом понятии, поэтому очень важно, чтобы студенты получили полное представление о концепции процесса. Процессы Все современные компьютеры могут выполнять одновременно несколько операций. Так, одновременно с запущенной пользователем программой может выполняться чтение с диска и вывод текста на экран монитора или на принтер. В многозадачной системе процессор переключается между программами, предоставляя каждой от десятков до сотен миллисекунд. При этом в каждый конкретный момент времени процессор занят только одной программой, но за секунду он успевает поработать с несколькими программами, создавая у пользователей иллюзию параллельной работы со всеми программами. Иногда в этом случае говорят о псевдопараллелизме, в отличие от настоящего параллелизма в многопроцессорных системах, содержащих несколько процессоров, разделяющих общую память между собой. Производители операционных систем разработали концептуальную модель последовательных процессов, упрощающую наблюдение за работой параллельно идущих процессов. Рассмотрим содержание и применение этой модели. 5. Информатика 129
В модели процесса все функционирующее на компьютере ПО организовано в виде набора последовательных процессов, или просто процессов. Процессом является выполняемая программа вместе с текущими значениями счетчика команд, регистров и переменных. С позиций этой абстрактной модели у каждого процесса есть собственный центральный виртуальный процессор. На самом деле центральный процессор переключается с процесса на процесс, но для лучшего понимания системы проще рассматривать набор процессов, идущих параллельно, чем представлять процессор, переключающийся от программы к программе. Это переключение и называется многозадачностью или мультипрограммированием. Операционной системе нужен способ создания и прерывания процессов по мере необходимости. Обычно при загрузке ОС создаются несколько процессов. Некоторые из них обеспечивают взаимодействие с пользователем и выполняют заданную работу. Остальные процессы являются фоновыми. Они не связаны с конкретными пользователями, но выполняют особые функции. Например, один фоновый процесс может обеспечивать вывод на печать, другой может обрабатывать запросы к web-страницам. Процессы могут создаваться не только в момент загрузки системы. Так, текущий процесс может создать один или несколько новых процессов, при этом текущий процесс выполняет системный запрос на создание нового процесса. Создание новых процессов особенно полезно в тех случаях, когда выполняемую задачу проще всего сформировать как набор связанных, но независимо взаимодействующих процессов. Если необходимо организовать выборку большого количества данных из сети для дальнейшей обработки, удобно создать один процесс для выборки данных и размещения их в буфере, другой — для считывания и обработки данных из буфера. Такая схема даже ускорит обработку данных, если каждый процесс запустить на отдельном процессоре в случае многопроцессорной системы. Как правило, процессы завершаются по мере выполнения своей работы. Так, после окончания компиляции программы компилятор выполняет системный запрос, чтобы сообщить ОС об окончании работы. В текстовых редакторах, браузерах и других программах такого типа есть кнопка или пункт меню, с помощью которых можно завершить процесс. Процесс является независимым объектом со своим счетчиком 130
команд и внутренним состоянием, однако существует необходимость взаимодействия с другими процессами. Например, выходные данные одного процесса могут служить входными данными для другого процесса. Модель процессов упрощает представление о внутреннем поведении системы. Некоторые процессы запускают программы, выполняющие команды, введенные с клавиатуры пользователем. Другие процессы являются частью системы и обрабатывают такие задачи, как выполнение запросов файловой службы, управление запуском диска или магнитного накопителя. Рассмотренный подход описывается моделью, представленной на рис. 3.4. Нижний уровень ОС — это планировщик — небольшая программа. На верхних уровнях расположены процессы. Обработка прерываний и процедуры, связанные с остановкой и запуском процессов, выполняются планировщиком. Вся остальная часть ОС структурирована в виде набора процессов. Процессы 0 1 • • • п-2 Планировщик п-1 Рис. 3.4. Нижний уровень ОС, отвечающий за прерывание и планирование Реализация модели процессов базируется на таблице процессов с одним элементом для каждого процесса. Элемент таблицы содержит информацию о состоянии процесса, счетчике команд, распределении памяти, состоянии открытых файлов, об указателе стека, использовании и распределении ресурсов, а также всю остальную информацию, которую необходимо сохранять при переключении в состояние готовности или блокировки для последующего запуска процесса, как если бы он не останавливался. Потоки В обычных ОС процесс определяется соответствующим адресным пространством и одиночным управляющим потоком. Но часто встречаются ситуации, когда в одном адресном пространстве предпочти- 131
тельно иметь несколько квазипараллельных управляющих процессов. Модель процесса базируется на двух независимых концепциях: группировании ресурсов и выполнении программы. Когда их разделяют, появляется понятие потока. С одной стороны, процесс можно рассматривать как способ объединения родственных ресурсов в одну группу У процесса есть адресное пространство, содержащее программу, данные и другие ресурсы. Ресурсами являются открытые файлы, дочерние процессы, аварийные необработанные сообщения, обработчики сигналов, учетная информация и многое другое. Гораздо проще управлять ресурсами, объединив их в форме процесса. С другой стороны, процесс можно рассматривать как поток исполняемых команд. У потока есть счетчик команд, отслеживающий порядок выполнения действий. У него есть регистры, в которых хранятся текущие переменные. У него есть стек, содержащий протокол выполнения процесса, где на каждую вызванную процедуру отведена отдельная структура. Хотя поток протекает внутри процесса, следует различать концепции потока и процесса. Процессы используются для группирования ресурсов, а потоки являются объектами, поочередно исполняющимися на ЦП. Концепция потоков добавляет к модели процесса возможность одновременного выполнения в одной и той же среде процесса нескольких достаточно независимых программ. Несколько потоков, работающих параллельно в одном процессе, аналогичны нескольким процессам, идущим параллельно на одном компьютере. В первом случае потоки разделяют адресное пространство, открытые файлы и другие ресурсы. Во втором — процессы совместно пользуются физической памятью, дисками, принтерами и другими ресурсами. Потоки обладают некоторыми свойствами процессов, поэтому их иногда называют упрощенными процессами. Термин многопотонность также используется для описания использования нескольких потоков в одном процессе. При запуске многопоточного процесса в системе с одним процессором потоки работают поочередно. Процессор быстро переключается между потоками, создавая впечатление параллельной работы потоков, даже не на очень быстром процессоре. Например, в случае трех потоков в одном процессе все потоки будут работать параллельно. Каждому потоку будет соответствовать виртуальный процессор с 132
быстродействием, равным одной трети быстродействия реального процессора. Почему же потоки так необходимы? Основной причиной является выполнение большинством приложений большого количества действий, некоторые из них могут время от времени блокироваться. Схему программы можно существенно упростить, если разбить приложение на несколько последовательных потоков, запущенных в квазипараллельном режиме. При использовании потоков имеется также возможность совместного применения параллельными объектами одного адресного пространства и всех содержащихся в нем данных. Для некоторых приложений эта возможность является существенной. В таких случаях схема параллельных процессов с разными адресными пространствами не подходит. В пользу потоков работает еще один аргумент — легкость их создания и уничтожения, так как с потоком не связаны никакие ресурсы. В большинстве систем на создание потока уходит примерно в 100 раз меньше времени, чем на создание процесса. Это свойство особенно полезно при необходимости динамического и быстрого изменения числа потоков. Третьим аргументом является производительность. Концепция потоков не дает увеличения производительности, если они ограничены возможностями процессора. Но когда имеется одновременная потребность в выполнении большого объема вычислений и операций ввода-вывода, наличие потоков позволяет совмещать эти процедуры во времени, увеличивая, тем самым, общую скорость работы приложения. Концепция потоков полезна также в системах с несколькими процессорами, где возможен настоящий параллелизм. Необходимость потоков проще продемонстрировать на конкретном примере. Рассмотрим текстовый процессор, который выводит на экран монитора текст в том виде, в котором он будет напечатан. Допустим, что пользователь пишет книгу. С точки зрения автора проще хранить книгу в одном файле, чтобы легче было искать отдельные фрагменты, редактировать и т.п. Представим, что пользователь удалил предложение на первой странице, а затем исправил предложение на 350-й странице документа, в котором 400 страниц. Он дает команду программе перейти на 133
страницу с номером 350. Текстовому процессору придется переформатировать весь документ вплоть до 350-й страницы, поскольку он не знает, где начинается эта страница. Это может занять довольно много времени и вряд ли обрадует пользователя. В данном случае помогут потоки. Пусть текстовый процессор написан в виде двухпоточной программы. Один поток взаимодействует с пользователем, а второй переформатирует документ в фоновом режиме. Как только предложение на первой странице было удалено, интерактивный поток дает команду фоновому потоку переформатировать весь документ. В то время как первый поток продолжает выполнять команды с клавиатуры или мыши, второй поток быстро переформатирует документ. Может случиться, что форматирование будет закончено раньше, чем пользователь захочет перейти к 350-й странице, и тогда команда будет выполнена мгновенно. Можно добавить третий поток. Большинство текстовых процессоров автоматически сохраняет редактируемый текст один раз в несколько минут (время устанавливается пользователем), чтобы в случае аварийного завершения программы, отказа системы или перебоев с питанием пользователь не лишился результатов своей работы. Этим может заниматься третий поток, не отвлекая два оставшихся. 3.2.5. Управление памятью Память представляет собой важный ресурс, требующий тщательного управления, поскольку программы увеличиваются в размерах быстрее, чем память. Память в компьютере имеет иерархическую структуру. Небольшая ее часть представляет собой очень быструю энергозависимую (теряющую информацию при выключении питания) кэш-память. Компьютеры обладают также десятками мегабайт энергозависимой оперативной памяти ОЗУ (RAM, Random Access Memory — память с произвольным доступом) и десятками или сотнями гигабайт медленного энергонезависимого пространства на жестком диске. Одной из задач ОС является координация использования всех этих составляющих памяти. Часть операционной системы, отвечающая за управление памятью, называется модулем управления памятью или менеджером памяти. Менеджер следит за тем, какая часть памяти используется в данный 134
момент, выделяет память процессам и по их завершении освобождает ресурсы, управляет обменом данных между ОЗУ и диском. Системы управления памятью делят на два класса. К первому классу относятся системы, перемещающие процессы между оперативной памятью и диском во время их выполнения, т.е. осуществляющие подкачку процессов целиком (swapping) или постранично (paging). Обычный и постраничный варианты подкачки являются искусственными процессами, вызванными отсутствием достаточного количества оперативной памяти для одновременного хранения всех программ. Ко второму — те, которые этого не делают. Второй класс систем проще. Поскольку ПО растет еще быстрее, чем память, то, вероятно, потребность в эффективном управлении памятью будет существовать всегда. В 80-е гг. использовали системы разделения времени для работы десятков пользователей на машинах VAX с объемом памяти 4 Мбайт. Сейчас рекомендуется для индивидуальной работы в системе Windows 2000 устанавливать на компьютер не менее 64 Мбайт оперативной памяти. Дальнейшее развитие в сторону мультимедийных систем накладывает еще большие требования на размер оперативной памяти. Самая простая схема управления памятью — однозадачная система без подкачки на диск — заключается в том, что в каждый момент времени работает только одна программа, и память разделяется между программами и операционной системой. Когда система организована таким образом, в каждый конкретный момент времени может работать только один процесс. Как только пользователь набирает команду, ОС копирует запрашиваемую программу с диска в память и выполняет ее, а после окончания процесса выводит на экран символ приглашения и ждет новой команды. Получив команду, она загружает новую программу в память, записывая ее поверх предыдущей. Так работают компьютеры с операционной системой MS-DOS. Большинство современных систем позволяет одновременный запуск нескольких процессов. Наличие нескольких процессов, работающих в один и тот же момент времени, означает, что когда один процесс приостановлен в ожидании завершения операции ввода-вывода, другой может использовать центральный процессор. Таким образом, многозадачность увеличивает загрузку процессора. На сетевых серверах всегда одновременно работают несколько процессов (для разных клиентов), но и большинство клиентских машин в наши дни 135
также имеют эту возможность. Самый простой способ достижения многозадачности состоит в разбиении памяти на я, возможно, не равных, разделов. Когда задание поступает в память, оно располагается во входной очереди к наименьшему разделу, достаточно большому для того, чтобы вместить это задание. Так как размер разделов неизменен, то все неиспользуемое работающим процессом пространство в разделе пропадает. Недостаток этого способа заключается в том, что к большому разделу очереди почти не бывает, а к маленьким разделам выстраивается довольно много задач. Небольшие задания должны ждать своей очереди, чтобы попасть в память, несмотря на то, что свободна основная часть памяти. Усовершенствованный способ заключается в организации одной общей очереди для всех разделов. Как только раздел освобождается, задачу, находящуюся ближе к началу очереди и подходящую для выполнения в этом разделе, можно загрузить в него и начать ее обработку. С другой стороны, нежелательно тратить большие разделы на маленькие задачи, поэтому существует другая стратегия. Она заключается в том, что каждый раз после освобождения раздела происходит поиск в очереди наибольшего для этого раздела задания, и именно оно выбирается для обработки. Однако этот алгоритм отстраняет от обработки небольшие задачи, хотя необходимо предоставить для мелких задач лучшее обслуживание. Выходом из положения служит создание хотя бы одного маленького раздела, который позволит выполнять мелкие задания без долгого ожидания освобождения больших разделов. Другой подход предусматривает следующий алгоритм: задачу, которая имеет право быть выбранной для обработки, можно пропустить не более к раз. Когда задача пропускается, к счетчику добавляется единица. Если значение счетчика стало равным к, игнорировать задачу больше нельзя. При использовании многозадачности повышается эффективность загрузки ЦП. Если средний процесс выполняет вычисления только 20 % от времени, которое он находится в памяти, то при обработке пяти процессов ЦП должен быть загружен полностью. Реальная же ситуация предполагает, что все пять процессов никогда не ожидают завершения операции ввода-вывода одновременно. Организация памяти в виде фиксированных разделов проста и эффективна для работы с пакетными системами. До тех пор, пока в памяти может храниться достаточное количество задач для обеспе- 136
чения постоянной занятости ЦП, причин для усложнения алгоритма нет. Однако совсем другая ситуация складывается с системами разделения времени или компьютерами, ориентированными на работу с графикой. Оперативной памяти иногда оказывается недостаточно для того, чтобы разместить все активные процессы, и тогда избыток процессов приходится хранить на диске, а для обработки переносить их в память. Существуют два основных способа управления памятью, зависящие частично от доступного аппаратного обеспечения. Самая простая стратегия, называемая свопингом (swapping) или подкачкой, состоит в том, что каждый процесс полностью переносится в память, работает некоторое время и затем целиком возвращается на диск. Другая стратегия, носящая название виртуальной памяти, позволяет программам работать даже тогда, когда они только частично находятся в оперативной памяти. Работа системы свопинга заключается в следующем. Пусть имеются 4 процесса — А, В, С, D. На начальной стадии в памяти находится только процесс А. Затем с течением времени создаются или загружаются с диска последовательно процессы В и С. В следующий момент процесс А выгружается на диск. Затем появляется процесс D, а процесс В завершается. Наконец, процесс А снова возвращается в память. Распределение памяти изменяется по мере того, как процессы поступают в память и покидают ее. Так как теперь процесс А имеет другое размещение в памяти, его адреса должны быть перенастроены или программно во время загрузки в память, или ап- паратно во время выполнения программы. Основная разница между фиксированными и изменяющимися разделами состоит в том, что во втором случае количество, размещение и размер разделов изменяются динамически по мере поступления и завершения процессов. Здесь нет ограничений, связанных с количеством разделов и их объемом. Это улучшает использование памяти, но значительно усложняет операции размещения процессов, освобождения памяти и отслеживание происходящих изменений. Основная идея виртуальной памяти заключается в том, что объединенный размер программы, данных и стека может превысить количество доступной физической памяти. ОС хранит части программы, использующиеся в настоящий момент в оперативной памяти, 137
остальные — на диске. Например, программа размером 16 Мбайт сможет работать на машине с 4 Мбайт памяти, если тщательно продумать, какие 4 Мбайт должны храниться в памяти в каждый момент времени. При этом части программы, находящиеся на диске и в памяти, будут меняться местами по мере необходимости. Виртуальная память может также работать в многозадачной системе при одновременно находящихся в памяти частях многих программ. Когда программа ждет перемещения в память очередной своей части, она находится в состоянии ввода-вывода и не может работать, поэтому ЦП может быть отдан другому процессу. 3.2.6. Ввод-вывод Одной из важнейших функций ОС является управление устройствами ввода-вывода компьютера. Операционная система дает этим устройствам команды, перехватывает прерывания и обрабатывает ошибки. Она должна обеспечить простой и удобный интерфейс между устройствами и остальной частью системы. Интерфейс должен быть одинаковым для всех устройств с целью достижения независимости от применяемой аппаратуры. Программное обеспечение ввода-вывода составляет существенную часть операционной системы. Устройства ввода-вывода можно разделить на две категории: блочные устройства и символьные устройства. Блочные устройства хранят информацию в виде блоков фиксированного размера, причем у каждого блока имеется свой адрес. Размеры блоков колеблются от 521 до 32 768 байт. Важное свойство блочного устройства состоит в том, что каждый его блок может быть прочитан независимо от остальных блоков. Наиболее распространенными блочными устройствами являются диски. Другой тип устройств ввода-вывода — символьные устройства. Символьное устройство принимает или предоставляет поток неструктурированных символов. Оно не является адресуемым и не выполняет операцию поиска. Принтеры, сетевые адаптеры, мыши и большинство других устройств, не похожих на диски, можно считать символьными устройствами. Такая классификация является условной. Некоторые устройства не попадают ни в одну из категорий. Например, часы не являются 138
блок-адресуемыми. Они не формируют и не принимают символьных потоков. Вся их работа заключается в инициировании прерываний в строго определенные моменты времени. И все же модель блочных и символьных устройств является настолько общей, что может служить основой для достижения независимости программного обеспечения ОС от устройств ввода-вывода. Например, файловая система имеет дело с абстрактными блочными устройствами, а зависимую от устройств часть оставляет программному обеспечению низкого уровня. Устройства ввода-вывода обычно состоят из механической и электронной частей. Механический компонент находится в самом устройстве. Электронный компонент устройства называется контроллером или адаптером. В современных компьютерах контроллеры встраиваются в материнскую плату или располагаются на самом устройстве ввода-вывода. Многие контроллеры способны управлять несколькими идентичными устройствами. Если интерфейс между контроллером и устройством является официальным стандартом ANSI, IEEE или ISO либо фактическим стандартом, то различные производители могут выпускать отдельно устройства и контроллеры, удовлетворяющие данному интерфейсу. Так производятся жесткие диски, соответствующие интерфейсу IDE (Integrated Drive Electronics — встроенный интерфейс накопителей) или SCSI (Small Computer System Interface — системный интерфейс малых компьютеров). Часто интерфейс между устройством и контроллером является интерфейсом низкого уровня. С диска в контроллер поступает последовательный поток битов, начинающийся с заголовка сектора (преамбулы), за которым следует 4096 бит в секторе, и контрольная сумма, называемая кодом исправления ошибок ЕСС (Error Correcting Code). Заголовок сектора записывается на диск во время форматирования. Он содержит номера цилиндра и сектора, размер сектора, коды синхронизации и другую служебную информацию. Работа контроллера заключается в конвертировании последовательного потока битов в блок байтов и коррекцию ошибок. Обычно байтовый блок накапливается в буфере контроллера. Затем проверяется контрольная сумма блока, и если она совпадает с указанной в заголовке сектора, то блок считается принятым без ошибок. После этого блок копируется в оперативную память. Контроллер монитора (видеоадаптер) работает на таком же низ- 139
ком уровне. Он считывает из памяти байты, содержащие символы, которые следует отобразить, и формирует сигналы, используемые для модуляции луча электронной трубки, заставляющие ее выводить изображение на экран. Видеоадаптер формирует сигналы, управляющие горизонтальным и вертикальным возвратом луча. Операционная система только инициализирует контроллер, задавая небольшое количество параметров, таких, как количество пикселов в строке и число строк на экране, а всю работу по управлению передвижениями луча по экрану выполняет контроллер. Ключевая концепция разработки ПО ввода-вывода формулируется как независимость от устройств. Эта концепция означает возможность написания программ, способных получать доступ к любому устройству ввода-вывода без предварительного указания конкретного устройства. Например, программа, читающая данные из входного файла, должна одинаково успешно работать с файлом на дискете, жестком диске или компакт-диске. При этом не должны требоваться какие-либо изменения в программе. В качестве выходного устройства также может быть указан экран, файл на любом диске или принтер. Все проблемы, связанные с отличиями этих устройств, снимает операционная система. Тесно связан с концепцией независимости от устройств принцип единообразного именования. Имя файла или устройства должно быть просто текстовой строкой или целым числом. Оно никак не должно зависеть от физического устройства. Другим важным аспектом ПО ввода-вывода является обработка ошибок. Ошибки должны обрабатываться как можно ближе к аппаратуре. Если контроллер обнаружил ошибку чтения, он должен по возможности исправить эту ошибку сам. Если он не может это сделать, то ошибку должен обработать драйвер устройства. Многие ошибки бывают временными, например ошибки чтения, вызванные пылинками на читающих головках. Такие ошибки исчезают при повторном чтении блока. Только если нижний уровень не может сам справиться с проблемой, о ней следует информировать верхний уровень. Во многих случаях восстановление может осуществляться на нижнем уровне, так, что верхние уровни даже не будут знать о наличии ошибок. Одним из ключевых вопросов является способ переноса дан- 140
ных — синхронный (блокирующий) или асинхронный (управляемый прерываниями). Большинство операций ввода-вывода на физическом уровне являются асинхронными — ЦП запускает перенос данных и переключается на другой процесс, пока не придет прерывание. Еще одним аспектом ПО ввода-вывода является буферизация. Часто данные, поступающие с устройства, не могут быть сохранены там, куда они направлены. Например, когда пакет приходит по сети, ОС не знает, куда его поместить, пока не будет проанализировано его содержимое. Буферизация предполагает копирование данных в больших количествах, что часто является основным фактором снижения производительности операций ввода-вывода. И последним понятием, которое связано с вводом-выводом, является понятие выделенных устройств и устройств коллективного использования. С некоторыми устройствами, такими как диски, может одновременно работать большое количество пользователей. При этом не должно возникать проблем при одновременном открытии на одном и том же диске нескольких файлов. Другие устройства, такие как накопители на магнитной ленте, предоставляются в монопольное пользование. Пока не завершит свою работу один пользователь накопитель не может быть предоставлен другому пользователю. ОС должна уметь управлять как устройствами общего доступа, так и выделенными устройствами. Существуют три различных способа осуществления операций ввода-вывода. Простейший вид ввода-вывода состоит в том, что всю работу выполняет центральный процессор. Этот метод называется программным вводом-выводом. ЦП вводит или выводит каждый байт или слово, находясь в цикле ожидания готовности устройства ввода-вывода. Второй способ представляет собой управляемый прерываниями ввод-вывод, при котором ЦП начинает передачу ввода-вывода для символа или слова, после чего переключается на другой процесс, пока прерывание от устройства не сообщит ему об окончании операции ввода-вывода. Третий способ заключается в использовании прямого доступа к памяти (DMA — Direct Memory Access), при котором отдельная микросхема управляет переносом целого блока данных и инициирует прерывание только после окончания операции переноса блока. 141
3.2.7. Драйверы устройств У контроллера каждого устройства есть набор регистров, используемых для того, чтобы давать управляемому устройству команды и считывать состояние устройства. Число таких регистров и выдаваемые команды зависят от конкретного устройства. Например, программа управления мышью должна получать от мыши информацию о том, насколько далеко она продвинулась по горизонтали и вертикали, а также о нажатых кнопках мыши. Программа управления диском должна знать о секторах, дорожках, цилиндрах, головках, их перемещении и времени установки, двигателях и тому подобных вещах, необходимых для правильной работы диска. Очевидно, что эти программы управления будут сильно различаться. Такая программа управления каждым устройством ввода-вывода, подключенным к компьютеру, называется драйвером устройства. Она обычно пишется производителем и распространяется вместе с устройством. Поскольку для каждой ОС требуются специальные драйверы, производители устройств обычно поставляют драйверы для нескольких наиболее популярных операционных систем. Каждый драйвер устройства поддерживает один тип устройства или, максимум, класс близких устройств. Например, драйвер дисков может поддерживать различные диски, отличающиеся размерами и скоростями. Однако мышь и джойстик отличаются настолько сильно, что обычно требуют использования различных драйверов. Чтобы получить доступ к аппаратной части устройства, т.е. к регистрам контроллера, драйвер устройства должен быть частью ядра операционной системы. Но возможно создать и драйвер, работающий в пространстве пользователя. Это позволило бы изолировать ядро от драйверов, а драйверы друг от друга. При этом была бы устранена основная причина крушения операционных систем: драйверы, содержащие ошибки, сталкивающиеся с ядром тем или иным образом. Но поскольку современные операционные системы предполагают работу драйверов в ядре, рассмотрим именно такую модель. Так как в ОС будут устанавливаться драйверы, выпускаемые другими производителями, необходима архитектура, допускающая подобную установку. Это означает, что должна быть выработана строго определенная модель функций драйвера и его взаимодействия с остальной операционной системой. Драйверы устройств обычно рас- 142
Программа пользователя Остальная часть операционной системы Драйвер принтера Контроллер принтера Принтер Драйвер видеокарты Контроллер видеоадаптера Видеоадаптер Драйвер CD-ROM Контроллер CD-ROM CD-ROM Пространство пользователя Пространство ядра Аппаратура Устройства Рис. 3.5. Логическое расположение драйверов устройств полагаются под остальной частью ОС (рис. 3.5). Операционная система обычно классифицирует драйверы по нескольким категориям в соответствии с типами обслуживаемых ими устройств. К наиболее общим категориям относятся блочные устройства, например, диски, содержащие блоки данных, к которым возможна независимая адресация, и символьные устройства, такие как клавиатуры и принтеры, формирующие или принимающие поток символов. В большинстве операционных систем определены два стандартных интерфейса, один из которых должны поддерживать все блочные драйверы, а второй — все символьные драйверы. Эти интерфейсы включают наборы процедур, которые могут вызываться остальной операционной системой для обращения к драйверу. К этим процедурам относятся, например, процедуры чтения блока или записи символьной строки. Некоторые ОС представляют собой двоичную программу, содержащую в себе все необходимые драйверы. Такая схема в течение многих лет была нормой для ОС UNIX, так как они предназнача- 143
лись для работы в компьютерных центрах, где устройства ввода-вывода менялись редко. При добавлении нового устройства системный администратор просто перекомпилировал ядро с новым драйвером, получая новый двоичный модуль. С появлением персональных компьютеров с их огромным разнообразием устройств ввода-вывода такая модель перестала работать. Далеко не все пользователи могли самостоятельно перекомпилировать и собрать ядро даже при наличии исходных текстов или объектных модулей. Поэтому операционные системы, начиная с MS-DOS, перешли к модели динамической подгрузки драйверов. Различные системы выполняют эту процедуру по-разному. Драйвер устройства выполняет несколько функций: 1) обработку абстрактных запросов чтения и записи независимого от устройств и расположенного над ними программного обеспечения; 2) инициализацию устройства; 3) управление энергопотреблением устройства и регистрацией событий; 4) проверку входных параметров. Если они не удовлетворяют определенным критериям, драйвер возвращает ошибку. В противном случае драйвер преобразует абстрактные термины в конкретные. Например, дисковый драйвер может преобразовывать линейный номер блока в номера головки, дорожки и секторы; 5) проверку использования устройства в данный момент. Если устройство занято, запрос может быть поставлен в очередь. Если устройство свободно, проверяется его состояние. Возможно, требуется включить устройство или запустить двигатель, прежде чем начнется перенос данных. Как только устройство готово, может начинаться собственно управление устройством. Управление устройством подразумевает выдачу ему серии команд. Именно в драйвере и определяется последовательность команд в зависимости от того, что должно быть сделано. Определившись с командами, драйвер начинает записывать их в регистры контроллера устройства. Некоторые контроллеры способны принимать связные списки команд, находящихся в памяти. Они сами считывают и выполняют их без дальнейшей помощи операционной системы. После того как драйвер передал все команды контроллеру, ситуация может развиваться по двум сценариям. Во многих случаях драй- 144
вер устройства должен ждать, пока контроллер не выполнит для него определенную работу, поэтому он блокируется до тех пор, пока прерывание от устройства его не разблокирует. В других случаях операция завершается без задержек и драйверу не нужно блокироваться. Например, для скроллинга экрана в символьном режиме нужно записать лишь несколько байтов в регистры контроллера. Вся операция занимает несколько наносекунд. По завершении выполнения операции драйвер должен проверить, завершилась ли операция без ошибок. Если все в порядке, драйверу, возможно, придется передать данные (например, прочитанный блок) независимому от устройств программному обеспечению. Затем драйвер возвращает некоторую информацию вызывающей программе о завершении операции. Если в очереди находились другие запросы, один из них теперь может быть выбран и запущен, в противном случае драйвер блокируется в ожидании следующего запроса. Драйверам не разрешается обращаться к системным вызовам, но им часто бывает необходимо взаимодействовать с остальным ядром. Для этого драйверам можно вызывать некоторые системные процедуры, например, для выделения им аппаратно фиксированных страниц памяти в качестве буферов, а также для возвращения этих страниц обратно ядру. Кроме того, драйверы пользуются вызовами, управляющими диспетчером памяти, таймерами, контроллером DMA, контроллером прерываний и т. п. Как сделать так, чтобы все устройства ввода-вывода и драйверы выглядели примерно одинаково? Если диски, принтеры, клавиатуры и т. д. требуют различных интерфейсов, то при появлении нового устройства будет требоваться переделка операционной системы, что очень неудобно. Этот вопрос связан с интерфейсом между драйверами устройств и операционной системой. Функции драйверов, доступные системе, отличаются от драйвера к драйверу. Это означает, что функции ядра, необходимые для драйвера, тоже различаются, поэтому взаимодействие с каждым новым драйвером требует больших усилий программистов. Существует принципиально другой подход, при котором у всех драйверов один и тот же интерфейс. При этом значительно легче установить новый драйвер, при условии, что он соответствует стандартному интерфейсу. Программисты, занимающиеся разработкой 145
драйверов, знают, какие функции они должны реализовать и к каким функциям ядра они могут обращаться. На практике же не все устройства являются абсолютно идентичными, но обычно имеется небольшое число типов устройств, достаточно похожих друг на друга. Например, даже у блочных и символьных устройств есть много общих функций. 3.2.8. Файловые системы Всем компьютерным приложениям нужно хранить и получать информацию. Наиболее удобной для доступа к долговременным устройствам хранения информации оказалась система, при которой пользователь назначает для той или иной совокупности данных некоторое имя. Определенный участок диска, занятый информацией, имеющей собственное имя, называется файлом. Часть ОС, работающая с файлами и обеспечивающая хранение данных на дисках и доступ к ним, называется файловой системой (ФС). С точки зрения пользователя наиболее важным аспектом файловой системы является ее внешнее представление, т.е. именование и защита файлов, операции с файлами и т.д. Компьютеру безразлично, какое имя имеет любая программа или документ, так как он получает от ОС инструкцию подобно такой: «прочитай столько-то байт с такого-то места на диске». При этом пользователь не обязан знать, в каком физическом порядке и где именно находятся его данные. Ему достаточно потребовать от ОС прочитать документ или загрузить необходимую программу. Одной из важнейших характеристик ОС, помимо управления памятью, ресурсами компьютера и задачами, является поддержка файловой системы — основного хранилища системной и пользовательской информации. Файлы относятся к абстрактному механизму. Они предоставляют способ сохранить информацию на диске и считывать ее снова по мере необходимости. Пользователю не нужны такие подробности, как способ и место хранения информации, детали работы дисков. Важной характеристикой любого механизма абстракции являются принципы именования управляемых объектов, поэтому вкратце рассмотрим правила именования файлов. 146
Точные правила именования файлов варьируются от системы к системе, но все современные операционные системы поддерживают использование в качестве имен файлов 8-символьные текстовые строки. Так, книга, страница, карандаш являются допустимыми именами файлов. Часто в именах файлов также разрешается использование цифр и специальных символов, поэтому могут применяться и такие имена файлов, как 2 (лучше _2), срочный! и Рис.2-14. Многие файловые системы поддерживают имена файлов длиной до 255 символов. В некоторых ФС различаются прописные и строчные символы, в других, таких как MS-DOS, нет. Операционные системы Windows 95 и Windows 98 используют файловую систему MS-DOS и наследуют многие ее свойства, включая именование файлов. Операционные системы Windows NT и Windows 2000 также поддерживают файловую систему MS-DOS и наследуют ее свойства. Однако у них имеется своя файловая система NTFS, обладающая отличными свойствами. Во многих ОС имя файла может состоять из двух частей, разделенных точкой, например progr.exe. Часть имени файла после точки называется расширением файла и обычно означает тип файла. Так, в MS-DOS имя файла может содержать от 1 до 8 символов плюс через точку расширение от 0 до 3 символов. В некоторых ОС, например в UNIX, расширения файлов являются просто соглашениями, и ОС не заставляет пользователя их строго придерживаться. Так, файл file.txt может быть текстовым файлом, но это скорее памятка пользователю, а не руководство к действию для операционной системы. Система Windows, напротив, знает о расширениях файлов и назначает каждому расширению определенное значение. Пользователи или процессы могут регистрировать расширения в ОС, указывая программу, создающую данное расширение. При двойном щелчке мышью на имени файла запускается программа, назначенная этому расширению, с именем файла в качестве параметра. Например, двойной щелчок мышью на имени file.doc запускает MS Word, который открывает файл file.doc. Обычно пользователям бывает необходимо логически группировать свои файлы, поэтому требуется некий гибкий способ, позволяющий объединять файлы в группы. Следовательно, нужна некая общая иерархия, т.е. дерево каталогов (см. рис. 3.3). При таком подходе каждый пользователь может сам создать себе столько каталогов и 147
подкаталогов, сколько ему нужно, группируя свои файлы естественным образом. В корневом каталоге могут быть также созданы каталоги и подкаталоги, принадлежащие различным пользователям. Возможность создавать произвольное количество подкаталогов является мощным структурирующим инструментом, позволяющим пользователям организовать свою работу По этой причине почти все современные файловые системы организованы подобным образом. При организации ФС в виде дерева каталогов требуется некоторый способ указания файла. Для этого обычно используются два различных метода. В первом случае каждому файлу дается абсолютное имя пути, состоящее из имен всех каталогов от корневого до того, в котором содержится файл, и имени самого файла. Например, путь \user\abc\myfile.doc означает, что корневой каталог содержит каталог user, который, в свою очередь, содержит подкаталог abc, где находится файл myfile.doc. Абсолютные имена путей всегда начинаются от корневого каталога и являются уникальными. Если первым символом имени пути является разделитель, это означает, что путь абсолютный. Применяется и относительное имя пути. Оно используется вместе с понятием текущего каталога. Пользователь может назначить один из каталогов текущим рабочим каталогом. В этом случае все имена путей, не начинающиеся с символа разделителя, считаются относительными и отсчитываются относительно текущего каталога. Например, если текущим каталогом является \user\abc, тогда к файлу с абсолютным путем \user\abc\myfile.doc можно обратиться просто как к myfile.doc. Итак, любая файловая система предназначена для хранения информации о физическом размещении частей файла. В ФС существует минимальная единица информации — кластер, размер которого является нижним пределом размера записываемой на носитель информации в рамках ФС. Не следует путать понятие кластера с понятием сектора, который является минимальной единицей информации со стороны аппаратного обеспечения. От ФС требуется четкое выполнение следующих действий: • определение физического расположения частей файла; • определение наличия свободного места и выделение его для вновь создаваемых файлов. Скорость выполнения этих операций напрямую зависит от самой ФС. Разные файловые системы используют различные механиз- 148
мы для реализации указанных задач и имеют свои преимущества и недостатки. ФС типа FAT (File Allocation Table) представляют собой образ носителя в миниатюре, где детализация ведется до кластерного уровня. Поэтому операция поиска физических координат файла при его большой фрагментации будет затруднительна. ФС FAT16 занимает объем 128 Кб. И это позволяет легко кэшировать ее информацию. Для FAT32 эта величина для больших дисков составит ~ 1 Мб, что еще более затрудняет поиск физических координат фрагменти- рованного файла. Еще хуже обстоит дело с поиском свободного места для больших файлов. Приходится просматривать практически всю таблицу. Быстродействие падает. NTFS (New Technology File System) использует более компактную форму записи, что ускоряет поиск файла. Операции с выделением места проходят быстрее. Ключевое преимущество NTFS — возможность ограничения доступа к файлам и папкам. Важный параметр — размер кластера. Больший размер кластера гарантирует более высокую производительность за счет уменьшения самой ФС. Для NTFS увеличение кластера — болезненная процедура из-за невозможности выполнить дефрагментацию, поскольку большинство таких программ не работает с кластерами, отличными от штатных 4 Кб. Файловые системы Microsoft Windows Рассмотрим основные файловые системы, поддерживаемые Windows — FAT16, FAT32, NTFS, а также системы CDFS и UDF. Каждая файловая система имеет свои достоинства и недостатки. Файловая система FAT 16 начала свое существование еще во времена, предшествующие MS-DOS. Она поддерживается всеми ОС Microsoft для обеспечения совместимости. Ее название File Allocation Table (таблица расположения файлов) отлично отражает физическую организацию файловой системы, к основным характеристикам которой можно отнести то, что максимальный размер поддерживаемого тома HDD или его раздела не превышает 4095 Мбайт. Во времена MS-DOS 4-гигабайтные HDD казались несбыточной мечтой (роскошью были диски 20—40 Мбайт), поэтому такой запас был вполне оправдан. Том, отформатированный для использования FAT16, разделяется на кластеры. Размер кластера по умолчанию зависит от размера 149
тома и может колебаться от 512 б до 64 Кб. Размер кластера может отличаться от значения по умолчанию, но должен иметь одно из значений, предписанных для этой ФС. Не рекомендуется использовать файловую систему FAT 16 на томах больше 511 Мб, так как для небольших файлов дисковое пространство будет использоваться крайне неэффективно: файл размером 1 байт будет занимать 16, 32 или 64 Кб. Независимо от размера кластера файловая система FAT 16 не поддерживается для томов больше 4 Гбайт. На рис. 3.6 показано, как организован том при использовании файловой системы FAT 16. Рис. 3.6. Организация тома в файловой системе FAT16 Единственным отличием корневого каталога от других каталогов является то, что он располагается в определенном месте и имеет фиксированное число вхождений. Так, если число фиксированных вхождений для корневого каталога равно 512 и создано 100 подкаталогов, то в корневом каталоге можно создать не более 412 файлов. Начиная с Windows 95 OSR2, появилась поддержка 32-битной FAT Для систем на базе Windows NT эта файловая система впервые стала поддерживаться в Windows 2000. Если FAT 16 может поддерживать тома объемом до 4 Гб, то FAT32 способна обслуживать тома объемом до 2 Тб. Размер кластера в ЕАТ32 может изменяться от 1 (512 б) до 64 секторов (32 Кб). Для хранения значений кластеров FAT32 требуется 4 б (32 бит, а не 16, как в FAT16). Это означает, в частности, что некоторые файловые утилиты, рассчитанные на FAT16, не могут работать с FAT32. Основным отличием FAT32 от FAT16 является то, что изменился размер логического диска. FAT32 поддерживает тома до 127 Гб. При этом, если при использовании FAT16 с 2-гигабайтными дисками требовался кластер размером в 32 Кб, то в FAT32 кластер размером р 4 Кб подходит для дисков объемом от 512 Мб до 8 Гб. 150
Это приводит к более эффективному использованию дискового пространства — чем меньше кластер, тем меньше места требуется для хранения файла и, как следствие, диск реже становится фрагменти- рованным. При применении FAT32 максимальный размер файла может достигать 4 Гб минус 2 байта. Если при использовании FAT16 максимальное число вхождений в корневой каталог ограничивалось 512, то FAT32 позволяет увеличить это число до 65535. При создании файла с длинным именем Windows создает соответствующее имя в формате 8.3 и одно или более вхождений в каталог для хранения длинного имени (по 13 символов из длинного имени файла на каждое вхождение). Каждое последующее вхождение хранит соответствующую часть имени файла в формате Unicode. Такие вхождения имеют атрибуты идентификатор тома, только чтение, системный и скрытый — набор, который игнорируется MS-DOS. В состав Windows 2000 входит поддержка новой версии файловой системы NTFS, которая, в частности, обеспечивает средства защиты информации, контроль над доступом и ряд других возможностей. Как и при использовании FAT, основной информационной единицей в NTFS является кластер. При формировании файловой системы NTFS программа форматирования создает файл Master File Table (MTF) и другие области для хранения метаданных. Метаданные используются NTFS для реализации файловой структуры. Первые 16 записей в MTF зарезервированы самой NTFS. Местоположение файлов метаданных записано в загрузочном секторе диска. Если первая запись в MTF повреждена, NTFS считывает вторую запись для нахождения копии первой. Полная копия загрузочного сектора располагается в конце тома. В MTF хранятся метаданные, такие как копия первых четырех записей (гарантирует доступ к MTF в случае, если первый сектор поврежден). MTF содержит информацию о томе — метку и номер версии. В MTF находится таблица имен атрибутов и описания, корневой каталог и др. Остальные строки MTF содержат записи для каждого файла и каталога, расположенных на данном томе. Обычно один файл использует одну запись в MTF, но если у файла большой набор атрибутов или он становится слишком фраг- ментированным, то для хранения информации о нем могут потребоваться дополнительные записи. В этом случае первая запись о фай- 151
ле, называемая базовой записью, хранит местоположение других записей. Данные о файлах и каталогах небольшого размера (до 1500 байт) полностью содержатся в первой записи. В Windows 2000 обеспечивается поддержка файловой системы CDFS, отвечающей стандарту ISO 9660, описывающему расположение информации на CD-ROM. Поддерживаются длинные имена файлов в соответствии с ISO 9660. Поддержка файловой системы UDF является одним из новшеств Windows 2000. Universal Disk Format — это файловая система, отвечающая стандарту ISO 13346 и используемая для обмена данными с накопителями CD-ROM и DVD. Сравнение срайлоВын систем ITIicro/oft UUindouu/ Под управлением MS \Yin2000 возможно использование файловых систем FAT16, FAT32, NTFS или их комбинаций. Цифры в названии файловых систем — FAT 16 и FAT32 — указывают на число бит, необходимых для хранения информации о номерах кластеров, используемых файлом. Так, в ЕАТ16 применяется 16-битная адресация и, соответственно, возможно использование до 216 адресов. В Windows 2000 первые четыре бита таблицы расположения файлов FAT32 необходимы для собственных нужд, поэтому в FAT32 число адресов достигает 228. Среди преимуществ FAT16 можно отметить следующие: • файловая система поддерживается ОС MS-DOS, Windows 95, Windows 98, Windows NT, Windows 2000, а также некоторыми ОС UNIX; • существует большое число программ, позволяющих исправлять ошибки в этой файловой системе и восстанавливать данные; • при возникновении проблем с загрузкой с HDD система может быть загружена с системной дискеты; • файловая система достаточно эффективна для томов объемом менее 256 Мб. К недостаткам FAT 16 можно отнести: • не поддерживается резервная копия загрузочного сектора; • в FAT 16 не поддерживается встроенная защита файлов и их сжатие. 152
Среди преимуществ FAT32 важно отметить следующие: • выделение дискового пространства выполняется более эффективно, особенно для дисков большого объема; • корневой каталог в FAT32 представляет собой обычную цепочку кластеров и может находиться в любом месте диска, благодаря этому FAT32 не накладывает никаких ограничений на число элементов в корневом каталоге; • за счет использования кластеров меньшего размера занятое дисковое пространство на 10—15 % меньше, чем под FAT 16. • FAT32 является более надежной файловой системой, в частности, она поддерживает возможность перемещения корневого каталога и использование резервной копии FAT. Основные недостатки FAT32: • размер тома под Win2000 ограничен 32 Гб; • тома недоступны из других ОС — только из Win95 OSR2 и Win98; • не поддерживается резервная копия загрузочного сектора; • не поддерживается встроенная защита файлов и их сжатие. При работе в Windows 2000 рекомендуется отформатировать все разделы HDD под NTFS, за исключением тех конфигураций, когда используется несколько ОС (кроме Windows 2000 и Windows NT). Применение NTFS вместо FAT позволяет использовать функции, доступные в NTFS. К ним, в частности, относятся: • возможность восстановления. Эта возможность встроена в файловую систему. NTFS и гарантирует сохранность данных за счет того, что используются протокол и некоторые алгоритмы восстановления информации; • сжатие информации. Для томов NTFS Windows 2000 поддерживает сжатие отдельных файлов. Такие сжатые файлы могут использоваться Windows-приложениями без предварительной распаковки, которая происходит автоматически при чтении из файла. При закрытии и сохранении файл снова упаковывается; • защита файлов и каталогов. Только на томах NTFS возможно задание атрибутов доступа к файлам и папкам; • файловая система поддерживает резервную копию загрузочного сектора — она располагается в конце тома; • NTFS поддерживает систему шифрования Encrypted File System (EFS), обеспечивающую защиту от неавторизованного доступа к содержимому файлов. 153
К недостаткам NTFS относятся: • NTFS-тома недоступны в MS-DOS, Win95 и Win98; • для томов небольшого объема, содержащих много файлов небольшого размера, возможно снижение производительности по сравнению с FAT. 3.2.9. Рассмотрение конкретных операционных систем В предыдущих разделах были рассмотрены общие принципы операционных систем. В этом разделе мы познакомимся с системами UNIX, Linux и Windows, чтобы увидеть, как эти принципы работают на практике. Начнем рассмотрение примеров с операционной системы UNIX, так как она используется на различных типах компьютеров чаще, чем любая другая ОС. Система UNIX доминирует на рабочих станциях старших моделей и серверах, но она также используется и в ноутбуках и суперкомпьютерах. Система UNIX иллюстрирует множество важных принципов построения ОС, многие из которых были позаимствованы другими операционными системами. Общий обзор системы особенно важен для пользователей, знакомых только с системой Windows, скрывающей от них практически все детали системы. Хотя графические интерфейсы очень удобны, но они не обладают достаточной гибкостью и не дают представление о том, как работает система. Существует множество клонов и версий системы UNIX, но фундаментальные принципы и системные вызовы практически для всех этих систем во многом совпадают. Сходными являются также общие стратегии реализации, алгоритмы и структуры данных. UNIX u Linux История UNIX начиналась в 60-е гг. прошлого столетия, когда сотрудник лаборатории Bell Labs крупнейшей телекоммуникационной компании в мире AT&T Кен Томпсон написал на ассемблере операционную систему, которая в шутку была названа UNICS (UNiplexed Information and Computing Service — примитивная информационная и вычислительная служба). Впоследствии написание этого слова стало короче, превратившись в UNIX. Однако переписывать 154
всю систему на ассемблере заново для каждой новой машины дело трудное, поэтому Томпсон решил переписать UNIX на языке высокого уровня, который он сам специально разработал и назвал языком В. Но язык В оказался слабым, в первую очередь, из-за отсутствия в нем структур данных. Тогда коллега Томпсона Ритчи разработал следующий язык, явившийся преемником языка В, который, естественно, получил название С. Вместе Томпсон и Ритчи переписали UNIX на С. Язык С оказался как раз тем языком, который и был нужен в то время, и он сохраняет лидирующие позиции в области системного программирования до сих пор. За работу по созданию ОС UNIX Ритчи и Томпсону ассоциацией по вычислительной технике АСМ была присуждена престижная премия Тьюринга. Многие университеты старались получить копию системы UNIX. Операционная система UNIX поставлялась с полным комплектом исходных текстов, поэтому владельцы системы могли совершенствовать ее. Новые идеи и усовершенствования системы распространялись быстро. Version 7 (по номеру издания руководства программиста) стала первой переносимой на другие платформы версией операционной системы UNIX. На Version 7 выросло целое поколение студентов, которые содействовали распространению UNIX. К середине 80-х гг. ОС UNIX широко применялась на мини-компьютерах и рабочих станциях различных производителей. Многие компании даже приобрели лицензии на исходные тексты, чтобы производить свои версии системы UNIX. Одной из таких компаний была небольшая начинающая фирма Microsoft, в течение нескольких лет продававшая Version 7 под именем XENIX, пока ее интересы не повернулись в другую сторону. Для того, чтобы система UNIX могла быть гарантированно запущена на любой машине, к концу 80-х при содействии Совета по стандартам Standard Boards при Институте инженеров по электротехнике и электронике ШЕЕ была предпринята попытка объединить варианты системы. В этой работе приняли участие сотни людей из промышленных, академических и правительственных организаций. Коллективное название проекта — POSIX. Первые три буквы этого сокращения означали Portable Operating System — переносимая операционная система. Буквы IX были добавлены, чтобы имя проекта выглядело юниксообразно. Комитет POSIX выработал стандарт, известный как 1003.1. Этот стандарт определяет набор библиотечных 155
процедур, которые должна предоставлять каждая соответствующая данному стандарту система UNIX, таким образом, гарантируя, что эта программа будет работать на любой версии системы, поддерживающей данный стандарт. В 1991 г. финский студент Линус Торвальдс написал еще один клон системы UNIX, который назвал Linux. Это должна была быть полноценная операционная система, со многими функциями, отсутствующими в системе MINIX. Она заимствовала некоторые идеи системы MINIX, начиная со структуры дерева исходных текстов и кончая структурой файловой системы. Однако, в отличие от микроядерной системы MINIX, Linux была монолитной системой, т.е. вся ОС помещалась в ядре. Размер исходного текста приблизительно совпадал с версией MINIX. Функционально первая версия Linux также практически почти не отличалась от MINIX. Операционная система Linux быстро росла в размерах и впоследствии развилась в полноценный клон UNIX с виртуальной памятью, более сложной файловой системой и многими другими добавленными функциями. Она была перенесена на другие платформы и теперь работает на широком спектре машин, как и UNIX. Следующим выпуском системы Linux была версия 1.0, появившаяся в 1994 г. Она включала новую файловую систему, отображение файлов на адресное пространство памяти и совместимое с UNIX сетевое программное обеспечение. Данная версия также включала многие новые драйверы устройств. К этому времени ОС Linux стала достаточно совместимой с UNIX, поэтому в нее было перенесено большое количество программного обеспечения UNIX, что значительно увеличило полезность этой системы. Кроме того, операционная система Linux привлекла большое количество людей, которые начали работу над ее совершенствованием и расширением. Следующая версия — 2.0, вышла в 1996 г. Она включала в себя поддержку 64-разрядной архитектуры, симметричной многозадачности, новых сетевых протоколов и прочих многочисленных функций. Система также содержала внушительную коллекцию различных драйверов устройств. Необычной особенностью Linux является ее бизнес-модель: это свободно распространяющееся программное обеспечение. Ее можно скачать с различных Internet-сайтов, например www.kernel.org. Сис- 156
тема Linux поставляется вместе с лицензией, разработанной Ричардом Столманом, основателем Фонда бесплатно распространяемых программ. Обзор опероиионной системы UNIX Операционная система UNIX представляет собой интерактивную систему, используемую для одновременной поддержки нескольких процессов и нескольких пользователей. В ОС UNIX есть достаточное количество средств, позволяющих программистам и совместно работать, и управлять использованием общей информации. ОС UNIX предназначена для опытных программистов. Это мощная и гибкая система. Она характеризуется небольшим количеством базовых элементов, которые можно комбинировать бесконечным числом способов, чтобы приспособить их для конкретного приложения. Одно из основных правил системы UNIX заключается в том, что каждая программа должна выполнять всего одну функцию, но делать это хорошо. В системе устранена бесполезная избыточность. Например, зачем писать сору, когда достаточно ср? Операционную систему UNIX можно рассматривать в виде пирамиды (рис. 3.7). У основания пирамиды располагается аппаратное обеспечение, состоящее из ЦП, памяти, дисков, терминалов и других устройств. На аппаратном обеспечении работает система UNIX. Ее функция заключается в управлении аппаратным обеспечением и предоставлении всем программам системных вызовов. Эти системные вызовы позволяют программам создавать процессы, файлы и прочие ресурсы и управлять ими. Программы обращаются к системным вызовам, помещая аргументы в регистры ЦП и выполняя команды прерывания для переключения из пользовательского режима в режим ядра и передачи управления операционной системе UNIX. Помимо ОС и библиотеки системных вызовов, все версии UNIX содержат большое количество стандартных программ, некоторые из них описываются стандартом POSIX 1003.2, тогда как другие могут различаться в разных версиях системы. К этим программам относятся командный процессор (оболочка), компиляторы, редакторы, программы обработки текста и утилиты для работы с файлами. Именно эти программы и запускаются пользователем с терминала. Таким образом, существует 3 интерфейса в ОС UNIX: интерфейс 157
Интерфейс пользователя Интерфейс библиотечных функций Интерфейс системных вызовов Пользователи Стандартные обслуживающие программы (оболочка, компиляторы и т.д.) Стандартная библиотека (open, close, read, fork и т.д.) Режим пользователя Операционная система UNIX (управление процессами, памятью, файловая система, ввод-вывод и т.д.) Режим ядра Аппаратное обеспечение (ЦП, память, диски, терминал и 1.д.) Рис. 3.7. Уровни операционной системы UNIX системных вызовов, интерфейс библиотечных функций и интерфейс, образованный набором стандартных обслуживающих программ. Последний интерфейс большинство пользователей считает системой UNIX. В действительности он не имеет практически никакого отношения к самой системе и легко может быть заменен. В некоторых версиях системы, например, этот ориентированный на ввод с клавиатуры интерфейс пользователя был заменен графическим интерфейсом, ориентированным на использование мыши, для чего не потребовалось никаких изменений в самой системе. Именно эта гибкость сделала систему UNIX столь популярной и позволила ей пережить многочисленные изменения технологии, лежащей в ее основе. У многих версий системы UNIX имеется графический интерфейс пользователя, сходный с популярными интерфейсами, применяемыми на компьютерах Macintosh и в системе Windows. Пользовательский интерфейс UNIX состоит не только из оболочки, но также из большого числа стандартных обслуживающих программ, называемых утилитами. Стандарт POSDC 1003.2 определяет синтаксис и семантику около 100 из этих программ. Идея стандартизации этих программ заключается в том, чтобы можно было писать оболочки, которые работали бы на всех системах UNIX. Помимо этих стандартных утилит, существует еще масса прикладных программ, таких как web-браузеры, программы просмотра изображений и т. д. 158
Процессы UNIX очень похожи на последовательные классические процессы, которые были рассмотрены выше. Каждый процесс запускает одну программу и изначально получает один поток управления. У процесса есть один счетчик команд, указывающий на следующую исполняемую команду процессора. Большинство версий UNIX позволяют процессу после того, как он запущен, создавать дополнительные потоки. UNIX представляет собой многозадачную систему, так что несколько независимых процессов могут работать одновременно. У каждого пользователя может быть одновременно несколько активных процессов, так что в большой системе могут одновременно работать сотни и даже тысячи процессов. На большинстве однопользовательских рабочих станций работают десятки фоновых процессов. Они запускаются автоматически при загрузке системы. Файловая система в UNIX — иерархическая, с файлами и каталогами. Все диски монтируются в единое дерево каталогов, начинающееся в одном корне. Отдельные файлы могут быть связаны с любым каталогом дерева. Операционная система Windows Операционные системы корпорации Microsoft можно разделить на три семейства: MS-DOS, Consumer Windows (Windows 95/98/Мё) и Windows NT. История Windows, как и история развития Microsoft, начиналась в 1981 г., когда корпорация IBM создала персональный компьютер IBM PC, оснащенный 16-разрядной однопользовательской операционной системой реального режима с командной строкой MS- DOS 1.0. Эта операционная система поставлялась фирмой Microsoft, известной в те годы как разработчик интерпретатора BASIC. Через два года была выпущена более мощная операционная система MS- DOS 2.0. Она содержала программу обработки командной строки с большим количеством функций, позаимствованных у ОС UNIX. В 1986 г. новый компьютер IBM PC/AT (Advanced Technology — передовая технология) на базе процессора Intel 286 вместе с операционной системой MS-DOS 3.0 фирмы Microsoft. В ОС MS-DOS появилось много новых функций, но она оставалась системой с командной строкой. Затем Microsoft решила добавить к операционной системе MS- DOS графический интерфейс пользователя (оболочку), которую она 159
назвала Windows. Операционные системы Windows 1.0 и Windows 2.0, выпущенные соответственно в 1985 и 1987 гг., были неудачными. Наконец, версия 3.0, выпущенная в 1990 г. для компьютера с процессором Intel 386, и особенно последовавшие за ней версии 3.1 и 3.11 добились большого коммерческого успеха. Ни одна из этих версий не являлась настоящей операционной системой. Это был скорее графический интерфейс поверх MS-DOS, которая продолжала управлять машиной и файловой системой. Все программы работали в одном и том же адресном пространстве, ошибка одной из них могла привести к зависанию всей системы. Выход в 1995 г. Windows 95 не привел к вытеснению системы MS- DOS, хотя почти все ее функции были перенесены в Windows. Как Windows 95, так и новая версия MS-DOS 7.0 содержали большинство особенностей монолитной операционной системы, включая виртуальную память и управление процессами. ОС Windows 95 не была полностью 32-разрядной программой. Она содержала большие куски 16-разрядного ассемблерного кода и продолжала использовать файловую систему MS-DOS, практически со всеми ее ограничениями. Значительное изменение файловой системы заключалось только в добавлении длинных имен файлов к именам формата 8.3, разрешенным в MS-DOS. В Windows 98, вышедшем в 1998 г., MS-DOS все еще присутствовала (версия 7.1) и состояла из 16-разрядного кода. Хотя еще больше функций было переведено из MS-DOS в Windows, а поддержка больших дисковых разделов стала стандартом, по своему строению операционная система Windows 98 не сильно отличалась от Windows 95. Отличие заключалось в интерфейсе пользователя, интегрировавшем в себе Internet и рабочий стол пользователя. В 2000 г. Microsoft выпустила слегка измененную версию Windows 98, названную Windows Me (Windows Millennium Edition — Windows, выпуск тысячелетия). В этой версии были исправлены некоторые ошибки и добавлены новые функции, но под внешней оболочкой скрыта все та же Windows 98. Новые функции включали в себя улучшенную организацию при совместном использовании изображений, музыки и фильмов, основательнее поддерживали работу с домашней сетью и многопользовательские игры. Они также содержали больше функций, относящихся к Internet. Одна новая функция состояла в возможности восстановить прежние настройки компьюте-ра после неверной ус- 160
тановки каких-либо параметров. Например, если пользователь перенастраивал разрешение экрана с 640 х 480 на 1024 х 768, и после этого система переставала работать, то теперь он мог вернуться к последней работающей конфигурации. К концу 80-х гг. корпорация Microsoft осознала, что построение современной 32-разрядной операционной системы поверх 16-разрядной системы MS-DOS является решением, лишенным перспективы. Поэтому была начата работа над созданием совершенно новой 32-разрядной ОС, совместимой с Windows. Эта новая система, названная Windows NT (NT означает New Technology — новая технология), предназначалась для деловых приложений, решающих ответственные задачи, а также для домашнего использования. В это время мэйнфреймы все еще работали на крупный бизнес, поэтому предположение, что компании будут использовать персональные компьютеры для чего-либо важного, выглядело довольно утопично. Но, как показала история, это был правильный выбор. Такие свойства, как безопасность и высокая надежность, отсутствовавшие в прежних версиях Windows, были поставлены в этом проекте во главу угла. Проект оказался успешным. В 1993 г. была выпущена первая версия, названная Windows NT 3.1. Номер версии был выбран так, чтобы он соответствовал номеру версии популярной тогда 16-разрядной Windows 3.1. Microsoft ожидала, что операционная система NT быстро вытеснит Windows 3.1, так как по формальным показателям NT значительно превосходила ее. Первое значительное усовершенствование системы NT было сделано в 1996 г. в версии NT 4.0. Эта система обладала мощностью, безопасностью и надежностью современной операционной системы. Она использовала тот же самый пользовательский интерфейс, что и очень популярная тогда Windows 95. Эта совместимость облегчала пользователям переход с Windows 95 на NT С самого начала операционная система NT разрабатывалась в расчете на переносимость системы на другие платформы, поэтому она была практически полностью написана на С с очень небольшими включениями на ассемблере для обработки прерываний. Следом за NT 4.0 предполагалось выпустить версию NT 5.0. Но в 1999 г. Microsoft изменила ее название на Windows 2000. Это было сделано для того, чтобы найти нейтральное имя как для пользователей Windows 98, так и для пользователей NT При этом Microsoft pac- 6. Информатика 161
считывала иметь единую ОС, построенную на основе надежной 32-разрядной технологии, но использующую интерфейс системы Windows 98. Windows 2000 — это современная операционная система, работающая на настольных ПК старших моделей и серверах. Она унаследовала множество свойств системы NT 4.0 и является полностью 32-разрядной (планируется переход на 64-разрядную) многозадачной системой с индивидуально защищенными процессами. Каждый процесс имеет свое собственное 32-разрядное виртуальное адресное пространство. ОС работает в режиме ядра, тогда как процессы пользователя работают в пользовательском режиме, что обеспечивает полноценную защиту (в отличие от Windows 98). У процессов может быть один или несколько потоков, видимых для операционной системы и управляемых ею. Она удовлетворяет требованиям безопасности уровня С2 МО США для всех файлов, каталогов и процессов, а также других объектов, которые могут использоваться совместно. Наконец, она обладает полной поддержкой симметричных многопроцессорных систем с числом процессоров от 2 до 32. Возможности операционной системы Windows 2000 позволяют использовать ее как основную операционную систему для современных настольных компьютеров и ноутбуков на предприятиях любого типа. При создании этой системы корпорация Microsoft сохранила все полезные свойства Windows 98: технологию plug-and-play, простой и понятный пользовательский интерфейс, широкие возможности управления, и даже улучшила их. Кроме того, их дополнили система безопасности, средства управления и обеспечения надежности, характерные для системы Windows NT. Развертывание системы Windows 2000 как на одном компьютере, так и в рамках Всемирной сети позволяет повысить эффективность использования компьютерных технологий при одновременном снижении общей стоимости владения. В Windows 2000 встроена сертификация драйверов, что гарантирует использование требуемых драйверов и уменьшает риск сбоя оборудования из-за аппаратных конфликтов, а также специальная программа, Microsoft Installer, которая помогает правильно устанавливать, настраивать, сопровождать, обновлять и удалять программы, снижая риск ошибок пользователя и возможность снижения производительности. Еще одно значительное усовершенствование заключается в интернационализации ОС. Операционная система Windows 2000 состоит 162
из единого двоичного кода, работающего во всех странах мира. Для каждой установки системы и даже для каждого пользователя можно выбрать язык, который будет использоваться в системе. Это стало возможным потому, что все пункты меню, строки диалоговых окон, сообщения об ошибках и другие текстовые строки были удалены из ОС и помещены в специальные каталоги, по одному для каждого языка. Windows 2000 использует кодировку Unicode для поддержки языков, не использующих латинский алфавит, таких как русский, греческий, иврит, японский. Windows 2000 поставляется в виде нескольких уровней продукта: Professional, Server, Advanced Server и Datacenter Server. Однако различия между этими версиями незначительны. Во всех версиях используется один и тот же исполняемый двоичный код. При установке системы тип продукта записывается в системном реестре (внутренняя база данных), и во время загрузки ОС проверяет содержимое реестра, определяя версию программного продукта. Все операции с файлами и папками, как и в ОС Windows 98, выполняются с помощью системы окон. Система окон разворачивается от папки Мой компьютер. Диски, представленные в окне этой папки, можно открыть двойным щелчком мыши, а потом разыскать на них любые нужные папки и файлы. Копирование и перемещение файлов и папок из одной папки в другую можно выполнять путем перетаскивания их значков из окна одной папки в окно другой. Для удаления объектов можно использовать перетаскивание на значок Корзины, а можно пользоваться контекстным меню, которое открывается при щелчке правой кнопкой мыши на объекте. Для создания в папке ярлыка документа или программы можно использовать специальное перетаскивание или команду Создать\Ярлык из контекстного меню. Работа с файловой системой в окнах папок не вполне удобна, и для этой цели в ОС предусмотрено более мощное средство — программа Проводник (рис. 3.8). Проводник — служебная программа, относящаяся к категории файловых менеджеров. Она предназначена для навигации по файловой системе компьютера и ее обслуживания. Проводник интегрирован в ОС Windows, и поэтому он работает даже тогда, когда его окно закрыто. Так, если по щелчку правой кнопки мыши вызывается контекстное меню, или объекты перетаскиваются из одного окна в другое, то это результат работы Проводника. 163
Рис. 3.8. Окно программы Проводник Операционная система Windows 2000 обладает широкими возможностями настройки. Цель настройки состоит в создании условий для эффективной работы путем автоматизации операций и создания комфортной рабочей среды. Основные настраиваемые объекты — средства управления и оформления. Средствами настройки являются Панель управления (Пуск\Настройка\Панель управления), представленная на рис. 3.9, контекстные меню объектов Windows и элементы управления диалоговых окон операционной системы и ее приложений. Хотя Windows 2000 является самой большой ОС в мире, она все продолжает расти, ошибки устраняются, а новые функции добавляются. В октябре 2001 г. была представлена Microsoft Windows XP (от слова eXPerience) — новейшая на этот момент версия операционной системы Windows, обладающая широкими возможностями в области коммуникаций и обработки любых видов цифровой информации. По заявлению Билла Гейтса, Windows XP — лучшая из всех ОС, когда- либо созданных корпорацией Microsoft. 164
Рис. 3.9. Панель управления — основное средство настройки Windows В семействе продуктов Windows XP применяется технология Product Activation, представляющая собой новое средство защиты ПО от незаконного копирования, ограничивающее возможное число установок продукта на отдельных компьютерах. Если продукт защищен с помощью этой технологии, то купивший его пользователь должен после установки выполнить дополнительную процедуру активации продукта. В Windows XP появились новые средства обеспечения безопасности, в частности встроенный в ОС брандмауэр подключения к Internet (Internet Connection Firewall). Кроме того, в состав ОС входит Internet Explorer 6, содержащий дополнительные средства защиты персональных данных, передаваемых при посещении Web-узлов. В состав семейства операционных систем Windows XP входят: • Windows XP Home Edition — операционная система, предназначенная в основном для домашних пользователей; • Windows XP Professional — операционная система, предназначенная в основном для установки на рабочих станциях корпоративных пользователей; 165
• Windows XP 64-Bit Edition — 64-разрядная ОС, предназначенная для применения на компьютерах с большим объемом оперативной памяти и процессором семейства Intel Itanium, используемых для задач, требующих больших объемов вычислений и обработки больших объемов данных; • Windows.NET Server — серверная операционная система, является дальнейшим развитием операционных систем Windows 2000. Основными особенностями семейства ОС Windows.NET Server является наличие в их составе платформы Windows.NET Framework, а также поддержка Web-сервисов XML. Windows XP Home Edition предназначена для замены ОС Windows 95, Windows 98 и Windows Me. От них ее отличают черты, характерные для Windows NT и Windows 2000, — архитектура с защищенным ядром и полное разделение процессов, что благоприятно сказывается на надежности этой ОС и позволяет одновременно выполнять приложения, использующие разные версии одних и тех же библиотек без каких-либо конфликтов между ними. Среди полезных приложений, появившихся в Windows XP Home Edition, следует выделить диспетчер задач — Task Manager — в стиле Windows NT/2000, позволяющий снять зависшее приложение или процесс, получить информацию о загрузке процессора и памяти. При работе с файловой системой можно использовать службу индексирования файлов в данном разделе, что позволяет ускорить процесс поиска файлов. Кроме того, поиск можно осуществлять не только на своих жестких дисках, но и в Internet. Эксплуатацию и сопровождение операционной системы упрощают средства динамического обновления самой ОС и драйверов устройств через Internet. На случай неудачного обновления предусмотрена возможность возврата к прежнему состоянию ОС, поэтому теперь можно не заботиться о создании резервных копий реестра. Более интеллектуальной стала справочная система. Теперь она не только сама предлагает помощь при возникновении проблем, но и умеет находить информацию в различных источниках, например на сайте производителя оборудования и в Microsoft Knowledge Base. Windows XP Professional предназначена для части системного ПО, занятого сейчас ОС Windows NT Workstation и Windows 2000 Professional. Она также основана на архитектуре с защищенным ядром и полном разделении процессов. По сравнению с Windows XP 166
Home Edition эта ОС обладает рядом дополнительных возможностей. Windows XP Professional содержит дополнительные средства, которые упрощают ее эксплуатацию на рабочих станциях корпоративных сетей, включающих компьютеры с серверными ОС Microsoft. К ним относятся средства централизованного администрирования, возможность установки групповых политик, дополнительные средства установки и поддержки программного обеспечения, включая поддержку удаленной установки ПО. Операционная система может использовать одновременно два процессора, распределяя задачи между ними, что повышает ее масштабируемость. Помимо средств защиты данных, имеющихся в Windows XP Home Edition, в Windows XP Professional предусмотрена возможность шифрования файлов в разделах с файловой системой NTFS. Кроме того, эта операционная система позволяет ограничить доступ пользователей к некоторым файлам, приложениям и другим ресурсам. Windows XP 64-Bit Edition — 64-разрядная ОС, предназначенная для применения на компьютерах с большим объемом оперативной памяти и процессором семейства Intel Itanium, которые используются для задач, требующих больших объемов вычислений. Эта ОС представляет собой высокопроизводительную платформу для создания нового поколения приложений, основанных на Win64 API. В отличие от 32-разрядных ОС, поддерживающих до 4 Гбайт виртуальной памяти, она позволяет более эффективно обрабатывать большие объемы данных, поддерживая до 16 Гбайт реальной оперативной памяти и до 8 Тбайт виртуальной оперативной памяти. Система оптимизирована для применения с процессором Intel Itanium и использует такие его особенности, как набор инструкций, позволяющий выполнять до 20 операций. Windows XP 64-Bit Edition поддерживает до двух процессоров Intel Itanium. 3.3. Служебные программы Служебные программы (утилиты) — это программы, используемые при работе или техническом обслуживании компьютера для выполнения вспомогательных функций, таких как работа с файлами и каталогами, диагностирование аппаратуры, просмотр и конвертация 167
файлов, оптимизация дискового пространства, восстановление поврежденной информации, антивирусные средства (раздел 8.4.) и другие. Файловые менеджеры С момента появления программы Norton Commander файловые менеджеры стали необходимым приложением на любом компьютере. Многие из них внешне напоминают знаменитого предка, но в плане функциональности ушли далеко вперед. Все они предназначены для разнообразной работы с файлами: копирования, переноса, удаления, редактирования текстовых файлов, гибкого запуска программ. Самыми популярными файл-менеджерами сегодня в России являются Total Commander (бывший Windows Commander) и FAR Manager. По возможностям за ними следует Frigate, который пока еще недостаточно хорошо известен пользователям. Все программы работают под управлением: Windows 98/Me/NT/ 2000/ХР. FAR Manager 1.7. Norton-подобный файл-менеджер, который может работать как в полноэкранном, так и в оконном режимах, поддерживает длинные имена файлов, корректно работает с русскими буквами, а встроенный редактор позволяет переключаться между DOS- и Windows-кодировками, окрашивает имена файлов в соответствии с их расширениями, что очень удобно при работе. Среди возможностей программы — определение размеров каталогов, вызов списка активных задач, передача файлов через FTP-клиент, управление сетевыми и подключенными к ПК принтерами, подсветка синтаксиса в исходных текстах программ, поиск и замена символов одновременно во множестве файлов с применением регулярных выражений, средства переименования групп файлов с возможностью использования сложных составных масок, проверка орфографии при обработке текста в редакторе FAR и многое другое. Программа поддерживает большинство известных архивных форматов и позволяет архивировать и разархивировать, просматривать, редактировать и запускать на выполнение файлы из архивов. В системе предусмотрены развитая система управления горячими клавишами и очень 168
большой набор встроенных функций, которые существенно расширяют возможности FAR Manager, дополняя и модифицируя их. Total Commander 6.03. Если FAR Manager выбирают те пользователи, которые привыкли работать с Norton Commander, то люди, начинавшие с Windows, предпочитают Total Commander (рис. 3.10). Он продолжает добрую традицию двухпанельных файловых менеджеров, но в большей степени ориентирован на Windows-интерфейс. Так же, как и у многих Windows-программ, интерфейс Total Commander легко настраивается, причем отрегулировать можно буквально все: цвета, наборы панелей, цвета для групп файлов, иконки папок и документов. Интерфейс Total Commander позволяет просматривать содержимое носителей с использованием настраиваемых закладок. В итоге в рамках одной панели файл-менеджера можно открыть несколько директорий, каждая из которых будет представлена отдельной закладкой, а при переходе между закладками сохраняется состояние директории. Имеется поддержка архиваторов ZIP, ARJ, LZH, Рис. ЗЛО. Панели файл-менеджера Total Commander 169
GZ, TAR, RAR и АСЕ и встроенный FTP-клиент. Наряду со стандартными возможностями, характерными для данного класса приложений, программа обладает целым рядом особенностей, которые способны существенно ускорить навигацию по дискам и папкам. К таким особенностям относятся: запоминание часто используемых каталогов, история последних посещенных каталогов, быстрый поиск, в том числе внутри файлов, многофункциональные возможности настройки горячих клавиш, удобная панель инструментов с поддержкой drag & drop, удобная работу с комментариями к файлам и папкам и др. Поддержка встроенных функций позволяет реализовать в Total Commander многие полезные возможности, такие как диспетчер задач, редактор реестра, временная панель, управление сервисами, работа с сетевыми папками, карманным компьютером, Linux- разделами и пр. Frigate 3.24. Выпущенный в 2001 г. этот файловый менеджер очень активно развивается. Сегодня его уже можно сравнить с программой Total Commander. Это очень многофункциональный продукт с привычным Windows-интерфейсом. Frigate поддерживает все основные операции работы с файлами и папками, а также умеет работать с 24 графическими форматами (просмотр, слайд-шоу, конвертация), имеет встроенный многофункциональный текстовый редактор, встроенные просмотрщики файлов HTML, DOC, RTF и др. Кроме того, он очень удобен при работе с FTP, имеет множество полезных утилит и поддерживает систему встроенных функций и работу с архивами, а в Windows 2000/XP даже умеет записывать файлы на CD-RW. Уникальная система настроек позволяет полностью настроить внешний вид программы. Стандартная комплектация программы включает: файловый менеджер, поддержку архивов, работу с FTP, текстовый редактор, RTF-редактор, просмотрщик изображений, менеджер свободного места, менеджер автозапуска, встроенные часы и работу с МРЗ. Профессиональная комплектация дополнена модулями для синхронизации директорий, менеджером свободного пространства, менеджерами автозапуска и заметок, встроенными часами, поддержкой встроенных функций для Total Commander и многими другими модуляциями. По сути, Frigate Pro уже больше напоминает не файловый менеджер, а настоящий электронный офис, обеспечивающий работу с мультимедиа, мощные средства организации документов, дополнительные средства и утилиты. 170
Сжатие информации Вследствие неуклонно растущих объемов обрабатываемой информации особое значение приобретает сжатие данных. Избыточность информации предоставляет широкое поле деятельности в этой области. Так, измерение избыточности естественных языков (тех, на которых мы говорим) показывает, что практически 80 % передаваемой с помощью языка информации является избыточной, т.е. лишней. Показатели избыточности разных языков очень близки. Данная цифра примерно определяет теоретические пределы сжатия текстовых файлов. Наличие избыточности допускает переход на иную систему кодирования, которая бы уменьшила ее. Говоря о переходе на коды, которые позволяют уменьшить размер сообщения, вводят понятие коды сжатия. При этом различают понятия сжатие без потерь и сжатие с потерями. Очевидно, что когда мы имеем дело с информацией типа «номер телефона», то сжатие за счет потери части символов не ведет ни к чему хорошему. Однако можно представить целый ряд ситуаций, когда потеря части информации не приводит к потере полезности оставшейся. Сжатие с потерями применяется в основном для графики, звука и видео, т.е. там, где в силу огромных размеров файлов степень сжатия очень важна, и можно пожертвовать деталями, несущественными для восприятия этой информации человеком. Особые возможности для сжатия информации имеются при компрессии видео. В ряде случаев большая часть изображения передается из кадра в кадр без изменений, что позволяет строить алгоритмы сжатия на основе выборочного отслеживания только части «картинки». В частном случае изображение говорящего человека, не меняющего своего положения, может обновляться только в области лица или даже рта, т.е. в той части, где происходят наиболее быстрые изменения от кадра к кадру. Обычно сжатие графики с потерями, обеспечивая очень высокие степени компрессии, практически незаметно для человека. Однако методы сжатия с потерями обладают и рядом недостатков. Первый недостаток заключается в том, что компрессия с потерями применима не для всех случаев анализа графической информации. Например, если в результате сжатия изображения на лице изменится форма родинки (но лицо при этом останется полностью узнаваемо), то эта фотография окажется вполне приемлемой, чтобы послать ее по почте знакомым. Однако если пересылается фотосни- 171
мок легких на медэкспертизу для анализа формы затемнения, то в этом случае искажения недопустимы. Кроме того, в случае машинных методов анализа графической информации результаты кодирования с потерей (незаметные для глаз) могут быть «заметны» для машинного анализатора. Второй недостаток заключается в том, что повторная компрессия и декомпрессия с потерями приводят к эффекту накопления погрешностей. Кодирование без потерь может применяться для сжатия любой информации, поскольку обеспечивает абсолютно точное восстановление данных после кодирования и декодирования. Сжатие без потерь основано на простом принципе преобразования данных из одной группы символов в другую, более компактную. Наиболее известны два алгоритма сжатия без потерь: это кодирование Хаффме- на и LZW-кодирование (по начальным буквам имен создателей Lempel, Ziv, Welch), которые представляют основные подходы при сжатии информации. Принцип кодирования Хаффмена заключается в уменьшении количества битов, используемых для представления часто встречающихся символов, и, соответственно, в увеличении количества битов, используемых для редко встречающихся символов. Метод LZW кодирует строки символов, анализируя входной поток для построения расширенного алфавита, что позволяет использовать дополнительные символы для представления строк обычных символов. Используя, например, вместо 8-битовых ASCII-кодов 9-битовые, получают дополнительные 256 символов. Работа компрессора сводится к построению таблицы, состоящей из строк и соответствующих им кодов. Алгоритм сжатия сводится к следующему: программа прочитывает очередной символ и добавляет его к строке. Если строка уже находится в таблице, чтение продолжается, если нет, данная строка добавляется к таблице строк. Чем больше будет повторяющихся строк, тем сильнее будут сжаты данные. Возвращаясь к примеру с телефоном, можно, проведя упрощенную аналогию, сказать, что, сжимая запись 233 34 44 по LZW-методу, мы придем к введению новых строк — 333 и 444 и, выражая их дополнительными символами, сможем уменьшить длину записи. Все архиваторы используют в какой-либо модификации эти два метода кодирования информации. Самым популярным архиватором является WinZip. Объясняется это тем, что формат ZIP считается мировым стандартом архивирования и имеет самую длительную исто- 172
рию развития. Большинство архивов в Internet также имеют формат ZIP. За ним следуют многими любимый WinRAR и набирающий обороты WinAce. Все эти архиваторы работают под управлением Windows 98/Me/NT/ 2000/XP. WinZip 9.0. Возможностей его вполне достаточно для того, чтобы обеспечить надежное и эффективное архивирование данных. Программа работает в двух режимах: классическом и режиме мастера, рассчитанном на новичков. Она ориентирована преимущественно на ZIP-архивы, но при этом поддерживает и другие популярные архивные форматы. В числе возможностей WinZip — поддержка технологии перетаскивания (drag & drop) и полная интеграция с программами «Мой компьютер» и «Проводник»; создание самораспаковывающихся файлов; поддержка антивирусных программ; отправка архива по электронной почте и пр. А для защиты архива от несанкционированного доступа можно при его создании указать пароль. WinZip 9.0 поддерживает 128- и 256-битовое шифрование АЕС, которое обеспечивает намного большую безопасность, чем традиционно используемый в более ранних версиях архиватора метод шифрования Zip 2.0. Кроме того, WinZip 9.0 позволяет теперь обрабатывать файлы практически неограниченного размера. WinRAR 33 — признанный лидер среди программ-архиваторов по удобству и массовости применения, поддерживающий в настоящее время самый большой набор языков, включая русский. При этом формат RAR в большинстве случаев обеспечивает значительно лучшее сжатие, чем ZIP, особенно в режиме создания непрерывных архивов. Формат RAR оснащен несколькими очень важными функциями, отсутствующими у ZIP, к числу которых, например, можно отнести функцию добавления информации для восстановления, которая позволяет восстановить физически поврежденный файл, и функцию блокировки архивов для предотвращения случайной модификации особенно ценных данных. Формат RAR позволяет обрабатывать файлы практически неограниченного размера и не только предлагает оригинальные и эффективные алгоритмы для сжатия информации различных типов, но и автоматически применяет нужный алгоритм при сжатии файлов. В число его основных особенностей входят: полная поддержка архивов RAR и ZIP; управление архивами других форматов; наличие графической оболочки с поддержкой технологии перетаскивания drag & drop; поддержка метода solid-архивирования, 173
при котором может быть достигнута степень сжатия, на 10—50 % превышающая ту, что дают обычные методы; поддержка многотомных архивов (в формате RAR); создание самораспаковывающихся (SFX) обычных и многотомных архивов; возможность создания и использования томов для восстановления, позволяющих воссоздавать недостающие части многотомных архивов; отправка архива по электронной почте и пр. Для удобства возможно создание избранных папок и архивов. Программа поддерживает два варианта работы: классический и с помощью мастера. В последних версиях предлагаются новые возможности для защиты информации за счет применения 128-битного алгоритма шифрования данных и имен файлов в архиве с использованием алгоритма AES и сохранения данных о правах доступа. Очень удобна появившаяся в одной из последних версий архиватора возможность поиска файлов внутри архивов. Полезна новая команда «Просмотр архива на вирусы», обеспечивающая распаковку архива во временную папку и проверку ее содержимого установленным на компьютере антивирусом. А команда печати позволяет теперь распечатывать как обычные, так и архивированные файлы. WinAce 2.5. Может быть, в будущем этот набирающий популярность архиватор составит конкуренцию WinZip и WinRAR. Главное его достоинство — манипуляция разными форматами архивов. Архиватор обеспечивает сжатие и распаковку многих известных форматов. Он поддерживает технологию перетаскивания (drag & drop); solid-архивирование для формата АСЕ; сжатие рисунков и звука; отправку архивов по электронной почте. Он также предоставляет возможности для создания многотомных архивов в форматах АСЕ, ZIP и CAB, самораспаковывающихся архивов (SFX) АСЕ и ZIP и др. Есть возможность добавления информации для восстановления архива в случае его повреждения. В целом различных настроек и установок в WinAce больше, чем в любом другом архиваторе. Однако в освоении WinAce сложнее, чем WinRAR или WinZip. Программы резервирований данных Самое важное в любой компьютерной системе — это хранящаяся в ней информация. К сожалению, ни надежное оборудование, ни лицензионное ПО не гарантируют стопроцентной сохранности дан- 174
ных. Всегда существует вероятность потери информации. Поэтому нужно не только беречь информацию, но и уметь оперативно восстановить ее в случае необходимости, для чего требуется резервное копирование данных, подразумевающее периодическое создание копий нужной информации. На резервирование файлов вручную путем, например, копирования на CD-RW требуется много времени и терпения — лучше автоматизировать данный процесс с помощью специализированного ПО. В Windows 2000 имеются средства резервного копирования и восстановления данных — Backup And Recovery Tools (Средства архивации и восстановления). В ее состав входит Backup Wizard (Мастер архивации) — служебная программа, облегчающая архивирование и восстановление данных. Однако специализированные программы сторонних производителей во многих случаях предоставляют более удобную и быструю возможность выполнения этих процедур. Общепризнанными лидерами разработки соответствующего ПО являются компании Hewlett-Packard, Computer Associates, Seagate Software, но их продукты требуют сложного администрирования, рассчитаны на корпоративный бизнес и поэтому дороги. Для рядового пользователя лучше выбрать более простые и дешевые программы, например, Handy Backup или BackUp32, которые работают под управлением Windows 9x/NT/2000/ Ме/ХР. Handy Backup 4.1 представляет собой простую и удобную программу для автоматического создания копий документов и данных, которые могут быть сохранены на любом устройстве (как внешнем, так и внутреннем, в том числе и на CD-RW) или отправлены на FTP- сервер, а при необходимости восстановлены. При этом можно сохранять не только отдельные файлы и папки, но и письма из MS Outlook, системный реестр или ICQ-переписку. Программа умеет работать по расписанию, сжимать файлы в ZIP-архивы, поддерживает 128-битное шифрование и синхронизацию данных. BackUp 32 2.0. Основное назначение программы — резервирование данных с возможностью автоматического сжатия как с использованием встроенного, ZIP-совместимого модуля сжатия, так и за счет подключения внешних архиваторов. Поддерживаются циклы удаления устаревших архивов по возрасту архива и по количеству архивов в архивной директории. В числе возможностей программы — присвоение имени архиву в формате даты, посылка в сеть сооб- 175
щений о предстоящей архивации, синхронизация с другой архивной директорией в сети, поддержка нескольких конфигураций и групп конфигураций, выполнение конфигурации один раз в установленное количество дней. Кроме того, возможно подключение плагинов, выполнение команд ОС до и после архивации, поддержка командной строки, архивация на сменный носитель, установка пароля на архивы, создание ВАК-файлов, добавление комментариев и описаний, поддержка списков исключаемых файлов и файлов, не подлежащих сжатию, высокая скорость сжатия, удобный интерфейс и большое количество настроек. Программы записи компакт-дисков Среди продуктов этого класса есть свои фавориты. Это пакеты от Nero (Nero 6 или более ранние версии) и Roxio (Easy Media Creator 7, WinOnCD 6 или более ранние их модификации). Все они универсальны, позволяют записать любой диск на CD или DVD, содержат много дополнительных приложений для обработки разнообразной информации и могут снабдить записанный диск профессиональной наклейкой. Однако существует целый ряд более дешевых и компактных утилит, способных справиться с этой задачей ничуть не хуже своих более дорогих аналогов. Но следует иметь в виду, что многие из огромного количества программ данного направления ориентированы только на создание отдельных видов дисков — аудио-CD, видео-CD и т.п. Все программы работают под управлением Windows 95/ 98/NT 4/ Ме/2000/ХР. Nero по праву считается лучшим универсальным пакетом программ для записи CD- и DVD-дисков, обладает простым и удобным пользовательским интерфейсом, язык которого легко изменить, в том числе и на русский. Пакет работает быстро и стабильно и поддерживает технологию защиты от сбоев. В комплекте с приложением Nero Burning Rom, которое служит непосредственно для записи CD- и DVD-дисков, Nero 6 объединяет целый набор дополнительных программ. В их числе — многофункциональный помощник Nero StartSmart, использование которого позволит создавать новые диски или копии дисков даже неискушенным пользователям. Приложение Nero Vision Express 2 служит для создания видеодисков, записи видео на жесткий диск, кодирования видеоконтента и пр. Приложение 176
Nero Wave Editor 2 применяется для редактирования звука; Nero ImageDrive — эмулятор CD-привода; Nero BackltUp — программа для резервного копирования; Nero Cover — редактор обложек к дискам и ряд других. Nero Burning ROM поддерживает всю гамму пишущих приводов — как классические внутренние приводы CD-R/RW, DVD- R/RW, DVD+R/RW и DVD-RAM, так и внешние приводы IDE, SCSI с интерфейсами USB 2,0 и даже FireWire — и обладает возможностью перезаписи. В качестве источников информации могут выступать как файлы на жестком диске, так и другие компакт-диски. Roxio Easy Media Creator 7 (ранее известная как Easy CD & DVD Creator 6) — это универсальный пакет приложений, позволяющий работать с мультимедийным контентом любых видов: организовывать, редактировать и сохранять на CD или DVD цифровые фотографии, музыку и видео. В состав пакета, наряду с программой для записи CD- или DVD-дисков Easy CD & DVD Creator, входит целая серия других утилит, которые могут обмениваться мультимедиадан- ными между собой и использовать одни и те же файлы в совместной работе. Например, DVD Builder 2.0 позволяет создавать профессиональные DVD, VCD и SVCD с элементами управления (меню, кнопки, главы, фон и т.д.). Утилита AudioCentral необходима для создания музыкальных CD, a Sound Editor позволяет импортировать аналоговые данные с пластинок и видеокассет. Встроенный фоторедактор PhotoSuite 7 Platinum поможет редактировать фотографии с возможностью последующего создания фотоальбома или слайд-шоу а для видеомонтажа потребуется профессиональный редактор VideoWave 7 Pro. В целом, Easy Media Creator 7 позволяет копировать обычные файлы и папки, прослушивать, редактировать и записывать музыкальные коллекции, создавать слайд-шоу и фотоальбомы, интерактивные меню для DVD Video, печатать обложки и наклейки к компакт-дискам. Записанные диски можно защитить от несанкционированного чтения с помощью пароля со 128-битным шифрованием. Кроме того, работа в режиме Backup позволяет создавать резервные копии данных по расписанию, а при записи на CD или DVD больших файлов происходит их автоматическое сжатие. CopyToDVD 3.0.16, заменившая собой ранее известную программу CopyToCD этой же компании, отличается удобным дружественным интерфейсом и позволяет записывать CD-R(W)/DVD^hckh од- 177
ним щелчком мыши. Программа поддерживает CD-R(W)-, DVD- R(W)-, DVD+R(W)- и DVD-RAM-приводы и обладает возможностью перезаписи. Копировать на компакт-диски можно любую информацию: файлы, папки, изображения, музыку, а при записи на DVD — и видеоинформацию. Elbys CloneDVD 2.3 предназначена для создания полностью идентичных копий DVD-фильмов и их записи на DVD-носители. Программа может полностью переписать содержимое диска, что позволяет создавать копии в режиме «один к одному» со всеми меню, субтитрами и т.д. CloneDVD поддерживает работу с большинством существующих приводов и обладает хорошим быстродействием и качеством записи. SureThing CD Labeler 4.0 считается лучшим специализированным прикладным пакетом для подготовки этикеток и обложек для компакт-дисков и позволяет быстро создать профессиональный графический дизайн диска без специальной подготовки и опыта подобной работы. Поддерживает все популярные форматы обложек и этикеток CD, включает множество профессионально подготовленных шаблонов. База шаблонов SureThing CD Labeler содержит свыше тысячи различных фонов, профессиональных фотографий, текстур и градиентов. Кроме того, в библиотеке имеются более 2 тыс. клип-артов и высококачественных изображений специальных знаков, символов и логотипов, принятых в сфере производства CD- и DVD-дисков. Программы просмотра и конвертации Сегодня вся техническая документация поставляется в формате *.pdf. Для работы с этим форматом существует удобная бесплатная утилита Acrobat Reader от компании Adobe. Однако часто необходимо не только просмотреть документ, но и извлечь из него текст и/ или изображение. С этой целью проще всего воспользоваться соответствующей утилитой, например PDF2Word. Кроме того, в настоящее время практически каждый пользователь работает с медиаинформацией, для просмотра которой чаще всего необходим целый набор просмотрщиков: для картинок один, для видео - другой, для прослушивания музыки — третий. Однако все эти программы удобнее заменить на одну универсальную, например на MegaView, которая считается лидером в данном классе ПО, или в 178
качестве альтернативы выбрать какое-нибудь бесплатное приложение, например IrfanView. Все эти программы работают под управлением Windows 98/NT/Me/2000/XP. Adobe Reader 6.0 (известный как Acrobat Reader) — популярная программа для просмотра и печати PDF-документов, которая совершенно необходима, поскольку значительное количество файлов, скачиваемых из Internet, представлены сегодня в формате PDF. Версия 6.0 поддерживает проигрывание встроенных в документы файлов QuickTime, Macromedia Flash, Real и Windows Media, распечатку документов через беспроводные сети и ряд других усовершенствований. PDF2Word 1.3 — удобная и простая утилита, предназначенная для экспорта изображений и текста из PDF-файла в документ Word в формате *.rtf. Для конвертации PDF-файла достаточно его открыть, а результатом по окончании работы PDF2Word станет появление в той же папке копии экспортируемого файла, но уже в формате RTF. MegaView 7.05 позволяет просматривать не только картинки, видео и звук, но и другие файлы, поддерживая в общей сложности свыше 100 различных форматов. Наряду с просмотром файлов в MegaView реализованы многие функции редактирования. Для графики это вращение, масштабирование, добавление текста, применение спецэффектов, удаление эффекта «красных глаз», корректировка фотографий. Редактировать можно не только графику, но и ряд офисных форматов, например DOC и XLS. Кроме того, программа позволяет производить различные операции с файлами (переименовывать, копировать, удалять, архивировать файлы прямо на CD или DVD и др.) и создавать Web-альбомы на основе серии встроенных шаблонов. IrfanView 3.91 — компактная и в то же время мощная утилита для просмотра файлов свыше полусотни графических форматов, а также наиболее распространенных аудио- и видеоформатов. IrfanView обладает множеством достоинств. В программе имеются базовые средства редактирования графики (вращение, масштабирование, работа с палитрой и применение плагинов), можно конвертировать файлы из одного формата в другой, делать скриншоты с экрана и заставки для рабочего стола. В программе также предусмотрены режимы показа слайд-шоу и миниатюр, а также функция вытаскивания иконок 179
из *.ехе- и *.dll-файлов. Кроме того, возможности программы можно значительно расширить за счет серии подключаемых плагинов. Программы сравнения файлов Сравнивать различные модификации файлов пользователям приходится очень часто. Причем выясняется не то, какая версия файла является более свежей, а то, что именно изменилось в файлах в плане содержимого и есть ли файлы-дубликаты. Приходится сравнивать текстовые документы и документы Excel. Многим необходимо разобраться в хранящихся на диске изображениях, пытаясь найти нужную картинку. А есть еще HTML-страницы, PDF-файлы и пр. Самой универсальной в этой области, охватывающей большое количество типов файлов, является программа Compare Suite, выпущенная компанией AKS-LABS в конце 2003 г. Возможностей у нее много, но и стоимость высокая. Поэтому для сравнения XLS-файлов можно воспользоваться дешевой специализированной программой Excel Compare, а для сравнения изображений — программами ImageDupe или ImageDupeless, примерно равнозначными как по цене, так и по возможностям. Все программы работают под управлением Windows 98/NT/Me/2000/XP. Compare Suite 1.0 — удобный инструмент для сравнения файлов и папок с возможностью генерации различных отчетов, отражающих статистические изменения и фиксирующих различия в сравниваемых файлах и папках. С ее помощью можно сравнить как обычные текстовые файлы, так и документы в форматах MS Office, HTML- страницы, PDF-документы и двоичные файлы. Последняя версия программы 1.0.0.12 может сравнивать ZIP-архивы, показывая в отчете различие в количестве файлов в архиве, а также имена файлов с размерами и датой для каждого. Compare Suite работает очень быстро, например Excel-документы в полторы тысячи строк она может сравнить за считанные секунды. Поэтому программа представляет интерес для всех, кому часто приходится заниматься сравнением и анализом файлов и папок, в частности для программистов, системных администраторов, секретарей, юристов и т.п. Excel Compare 1.0 предназначена для сравнения файлов Microsoft Excel, поддерживает все версии Excel и очень удобна для анализа сделанных изменений. Результаты сравнения размещаются на новом 180
созданном листе Excel, который показывает измененные, добавленные и удаленные данные, сохраняя при этом формат оригинала. ImageDupeless 1.5.4.2 предназначена для поиска похожих изображений независимо от их размера, формата, разрешения и т.п. и поддерживает основные графические форматы. Возможна каталогизация размещенных на CD галерей и дальнейшая работа с ними. При этом сравнение вновь поступающих изображений с уже имеющимися в галерее занимает значительно меньше времени, чем полное повторное сканирование галереи. Предусмотрены внутренние средства сравнения, удаления, перемещения и обновления файлов и изменения привязки корневого каталога галереи. ImageDupe 1.2.2.0, предназначенная для поиска дубликатов графических файлов, способна находить одинаковые картинки независимо от их размера и названия. При этом она ищет не только одинаковые изображения, но и просто похожие. ImageDupe крайне проста в работе, поддерживает все основные графические форматы, хорошо настраивается и позволяет определить перед поиском степень подобия изображений. 181
4. Прикладное программное обеспечение Прикладное программное обеспечение (ППО) составляют программы конечного пользователя. Это самый обширный класс программного обеспечения. В настоящее время в большинстве сфер человеческой деятельности разработаны и применяются прикладные программные продукты. Везде, где требуется выполнить большие математические расчеты или производится обработка больших объемов разнообразных данных, или требуется быстрый анализ ситуации с принятием управляющего решения, — компьютеры под управлением прикладного программного обеспечения с успехом заменяют человека. 4.1. Классификация прикладного программного обеспечения ППО, классифицируя по назначению, можно разделить на прикладные программы общего назначения и прикладные программы специального назначения (рис. 4.1). Классификация весьма условна потому, что некоторые типы программ (например, программы, обрабатывающие тексты) имеют своих представителей и в классе общего назначения (редакторы и процессоры) и в классе профессиональных программ (издательские системы). 4.1.1. Прикладное программное обеспечение обшего назначения Прикладное программное обеспечение общего назначения используется для решения наиболее общих задач информационного характера в любой сфере человеческой деятельности. Оно объединяет в себе широко используемые программы большинством пользователей персональных компьютеров, например, текстовые редакторы, электронные таблицы, графические системы, игры, развлечения. 182
Прикладное программное обеспечение (ППО) ППО общего назначения Программы - обработчики текста Текстовые редакторы Текстовые процессоры Электронные таблицы СУБД Графические информационные системы Редакторы векторной графики Редакторы растровой графики Интегрированные системы (офис) Переводчики, игры, развлечения и др. ППО специального назначения Программы - обработчики текста Издательские системы Специализированные текстовые редакторы СУБД информационных систем Интегрированные пакеты специализированные (математические, офисные) Геоинформацион ные системы САПР, АРМ ЛСНИИ и др. Рис. 4.1. Классификация ППО 183
Программы, обрабатывающие тексты. К ним относятся текстовые редакторы, текстовые процессоры. Граница между ними весьма условна. Текстовые редакторы (NotePad — разработка Microsoft), как будет показано ниже, способны выполнять основные функции редактирования: набор, внесение исправлений, сохранение, работа с фрагментами. Текстовые процессоры (Word — разработка Microsoft), кроме того, имеют возможности разнообразного оформления, а некоторые позволяют создавать документы, предназначенные для просмотра не в бумажном виде, а на компьютере (электронные документы). На уровне специального ППО, программы, обрабатывающие тексты, представлены специализированными текстовыми редакторами (MultiEdit — разработка American Cybernetic, TgX) и издательскими системами, которые автоматизируют процесс верстки полиграфических изданий. Издательские системы отличаются расширенными средствами управления взаимодействия текста с параметрами страницы и графическими объектами, но имеют более слабые возможности по автоматизации ввода и редактирования текста. Их целесообразно применять к документам, которые предварительно обработаны в текстовых процессорах и графических редакторах. Электронные таблицы. Основное назначение электронных таблиц — обработка различных типов данных, представляющихся в табличной форме, например, планово-финансовые, бухгалтерские документы, небольшие инженерные расчеты (Excel — разработка Microsoft, Lotus 1-2-3 — разработка Lotus). Основное преимущество электронных таблиц, в сравнении с текстовыми процессорами (где тоже могут вестись таблицы, производиться небольшие вычисления и сортировка), в том, что содержание одних ячеек может меняться автоматически в соответствии с изменением содержания других. Иными словами, ячейки могут быть функционально зависимы. Кроме того, табличные процессоры имеют возможности ведения небольших баз данных и визуализации данных в виде различных таблиц, диаграмм и графиков, т.е. средства ведения таблиц, средства табличных расчетов подкрепляются возможностями создания наглядных отчетов. Они находят широкое применение в бухгалтерском учете, анализе финансовых и торговых рынков, средствах обработки результатов научных и экономических экспериментов, т.е. в автоматизации регулярно повторяемых вычислений больших объемов числовых и текстовых данных, представляющих табличные структуры. 184
Системы управления базами данных (СУБД). Программы этого класса (Access разработка Microsoft) позволяют работать с большими объемами структурированных данных — базами данных (как правило, это табличные структуры). В функции СУБД входит: описание данных, доступ к данным, поиск, отбор данных по определенным критериям. Большинство современных СУБД позволяют создавать небольшие программы обработки данных на встроенных языках, имеют оформительские возможности, позволяющие на основе собранных и обработанных данных создать отчет. Множество СУБД, также как и текстовые процессоры, имеют своих представителей и в ППО общего и в ППО специального назначения. На уровне ППО общего назначения — это настольные СУБД, на уровне специальном — это большие СУБД, составляющие основу информационных систем и позволяющие работать в компьютерных сетях. Графические системы. Это программы, предназначенные для работы с графическими изображениями. К ним относятся редакторы растровой и векторной графики, программы обработки трехмерной графики (ЗD-редакторы). Растровые редакторы для представления изображений используют растры (см. главу 1), т.е. совокупности точек, имеющих свой цвет и яркость. В них удобно обрабатывать фотографии и объекты, имеющие мягкие цветовые переходы. Основа векторного представления — линия (ее уравнение). Векторные редакторы удобны для работы с чертежами и рисованными картинками. Редакторы трехмерной графики используются для создания пространственных графических композиций, позволяют проследить взаимодействия трехмерных объектов между собой и трехмерных объектов с источником света. Интегрированные программные средства. Отдельные программы, являясь мощным средством решения круга прикладных задач, не могут в полной мере удовлетворить пользователя. Например, выборку данных, предоставленную СУБД, бывает удобно обработать с помощью электронных таблиц, результаты, оформленные в виде наглядных таблиц, поместить в отчет, представляющий собой текстовый документ, который был составлен в текстовом процессоре. Для совместной работы нескольких программ требуется и унификация форматов обрабатываемых файлов. Такие программные пакеты называются интегрированными программными средствами. Наиболее распространенный продукт этого класса — пакет MS Office (разра- 185
ботка Microsoft), который кроме текстового процессора MS Word, табличного процессора MS Excel и СУБД MS Access интегрирует в себе такие офисные программные средства, как система разработки презентаций MS Power Point, электронный организатор MS Outlook и др. Программные средства для решения прикладных математических (статистических) задач позволяют производить математические расчеты: решение уравнений и систем уравнений и т.д., некоторые пакеты позволяют производить аналитические (символьные) вычисления: дифференцирование, интегрирование и т.д. Переводчики. Игры. Развлечения. Это класс популярных программ, не требующий больших комментариев. Переводчики обычно работают резидентно, т.е. в любом тексте на иностранном языке можно выделить переводимый фрагмент и после нажатия определенной комбинации клавиш предъявляется окно с переводом или возможные варианты перевода слова. Игры очень распространены, их создано огромное количество. Среди них можно выделить следующие типовые сценарии: игры на опережение (на мастерство), азартные игры, логические игры, обучающие игры. Развлечения — прикладные программы, позволяющие осуществлять просмотр слайдов, прослушивание звуковых файлов, видеофайлов. 4.1.2. Прикладное программное обеспечение спеииального назначения Решает более узкие задачи, а также задачи профессионального характера в различных предметных областях. Информационные системы (ИС), предоставляющие широкие возможности в: • управлении предприятием — это склад, документооборот офиса; • бухгалтерском учете — это системы, имеющие функции текстовых, табличных редакторов и СУБД. Предназначены для автоматизации подготовки начальных бухгалтерских документов предприятия и их учета, регулярных отчетов по итогам производственной, хозяйственной и финансовой деятельности в фор- 186
ме, приемлемой для налоговых органов, внебюджетных фондов и органов статистического учета; • анализе экономической и финансовой деятельности; их используют в банковских и биржевых структурах. Они позволяют контролировать и прогнозировать ситуацию на финансовых, торговых рынках и рынках сырья, выполнять анализ текущих событий, готовить отчеты. Экспертные системы представляют собой дальнейшее развитие систем управления базами данных. Они предназначены для анализа данных, хранящихся в базах знаний. В отличие от СУБД, позволяющих производить операции манипуляции данными, экспертные системы производят логический анализ данных, имеют функции самообучения. Системы автоматизированного проектирования — предназначены для автоматизации процессов конструирования, применяются в машиностроении, строительстве, архитектуре. Они позволяют создавать чертежную документацию, адаптированную в конкретной предметной области, а также имеют справочники, средства проведения расчетов. Профессиональные программные продукты в настоящее время получили широчайшее развитие. Это бухгалтерские системы, автоматизированные системы управления, автоматизированные системы научных исследований и многие другие. 4.2. Текстовые редакторы, процессоры Со времен изобретения письменности текстовые документы используются для хранения и передачи данных. В современном понимании текстовым документом является и короткая записка, и толстая иллюстрированная книга. Важным элементом в текстовых документах является выделение смысловых фрагментов, таких как слово, предложение, абзац, колонтитул, колонцифра, колонки, стили оформления. Кратко опишем их. 187
Символ — это отдельный знак (литера) в тексте, ему в соответствие ставится код; для буквенных символов указывается национальная принадлежность. Словом назовем часть текста между двумя пробелами. Чтобы подчеркнуть важную мысль, высказываемую в тексте, слово или несколько слов могут выделяться шрифтом. Предложение — часть текста между двумя точками. Мелкие структурные элементы разбиваются на предложения. Чтобы передать оттенки настроения в предложениях, используют знаки препинания. Абзац — часть текста между двумя символами перевод строки (в редакторах это соответствует нажатию клавиши Enter). Если документ большой и предназначен для печати, то используются средства структурирования текста: главы, параграфы. Названия их могут выноситься в колонтитулы. Колонтитулы — это надписи, появляющиеся на каждой странице текстового документа вверху или внизу (например, на каждой левой странице книги в колонтитуле может быть название главы, на каждой правой — название параграфа). Номер страницы — это разновидность колонтитула, называемая колонцифрой. В печатных документах вышеописанные приемы оформления текста называются форматированием. Примечание — пояснение к отдельному слову или предложению, размещаемое в нижней части страницы. Сноска — комментарий, содержащий ссылку на другой литературный источник. Кадр — рамка, служащая для размещения текста, рисунка, таблицы; может обтекаться текстом. Стиль — набор способов оформления фрагментов документа. Раздел — отдельная часть документа, в пределах которой можно установить поля, колонтитулы. Научные тексты, как правило, сопровождаются таблицами, формулами, диаграммами. Современные информационные технологии предоставляют возможность создания текстового документа, ориентированного не на печатную страницу, а на просмотр документа с экрана монитора. Такие документы называются электронными, они могут включать в себя кроме текстовых данных, таблиц, диаграмм, фотографий еще и различные анимационные картинки, звуковые файлы, гиперссылки (т.е. ссылки на файл в собственном компьютере или в Интернете). 188
В связи с многообразием возможностей создания и оформления текстовых документов, пользователю предоставляется многообразие программных продуктов по работе с этими документами. Условно их можно разбить на текстовые редакторы и текстовые процессоры. Текстовые редакторы — это программы для создания и редактирования текстовых документов. Редактирование текста — это комплекс операций по внутренней (смысловой) и внешней (оформительской) работе над текстом. Каждый текст можно «кроить», т.е. вырезать из него куски, «склеивать» их, вставлять в рабочий материал части из других текстов, менять их местами и пр. Можно изменять расположение текста на странице, формат шрифта отдельных символов, слов и целых абзацев, вставлять в текст иллюстрации (рисунки, графики, схемы и пр.). Текстовые редакторы обеспечивают основные возможности по подготовке небольших и несложных документов. Сюда входят следующие простые операции: • ввод алфавитно-цифровой информации; • перемещение по набранному тексту; • вставка или удаление символов. А также более сложные операции по работе с блоками (фрагментами) текста: • выделение блока; • удаление блока; • копирование, перемещение, вставка блока; • дополнительные удобства (возможность поиска фрагмента, поиск с заменой, печать документа и т.д.). Большинство текстовых редакторов ориентировано на работу с чисто текстовыми файлами, среди которых могут быть тексты программ, написанные на различных языках, конфигурационные файлы, файлы настройки и др. Ярким представителем таких программных продуктов является MultiEdit (начиная с версий 5.0). Этот текстовый процессор имеет мощную систему контекстной замены, встроенный язык макрокоманд на уровне Visual Basic, средства поддержки внутренней среды, средства помощи при наборе ключевых слов. Текстовые процессоры — это программы, предоставляющие более широкий круг (в сравнении с редакторами) возможностей форматирования (шрифты, таблицы, формулы), создания документов, содержащих данные разных типов (вставка графических, звуковых дан- 189
ных), создания электронных документов. Типичным представителем этой группы является текстовый процессор Word. Существует еще одна отдельная группа текстовых процессоров — это настольные издательские системы. В чем-то они похожи на обычные текстовые процессоры, позволяют набирать и форматировать документ, но, как правило, используются для верстки. Издательские системы имеют широкий спектр читаемых форматов, т.е. возможность работать с файлами, созданными во многих других программах: текстовых, графических, чертежных. Текст легко можно вставить внутрь любого рисунка, и рисунок можно вставить в текст; кроме того, имеются средства для рисования простых фигур внутри самой программы. В цветных изданиях есть возможность поработать с цветовой гаммой, в полиграфии это называют разложением цвета на отдельные составляющие. Следует отметить, что растущие возможности текстовых процессоров постепенно приближают их к издательским системам, и такие процессоры, как Word, в состоянии обеспечить набор и распечатку не очень больших изданий. 4.2.1. Программа Блокнот (flotePad) Общие функции редактирования рассмотрим на примере редактора NotePad (блокнот), программы, встраиваемой в операционные системы серии Windows 9x (разработка Microsoft). Блокнот предназначен для создания небольших, объемом до 50 килобайт, неформатированных текстов. Создаваемые файлы имеют текстовый формат *.txt в кодовой таблице Windows 1251. Перечисленные скромные возможности определяют область применения программы как редактора для создания коротких записок, текстов управляющих и системных файлов. Программа запускается из меню ПУСК ► ПРОГРАММЫ ► СТАНДАРТНЫЕ ► БЛОКНОТ. Набор и редактирование текста. На рабочем поле редактора присутствует вертикальная мигающая черта — курсор. Курсор — это точка ввода текста, т.е. нажатие клавиши на алфавитно-цифровой клавиатуре приводит к появлению литеры слева от курсора. Заполненная строка переводится автоматически в соответствии с размерами страницы. 190
Курсор перемещается клавишами управления курсора или щелчком мыши в точку, где требуется внести исправление. Набор нового текста раздвигает и вставляет новый текст в ранее написанный. Удаление символа слева от курсора производится клавишей Backspace, справа — клавишей del. Если необходимо редактировать несколько слов или предложений, они сначала выделяются как блок, для чего по выделяемому блоку перемещают курсор с нажатой клавишей Shift или перемещают по тексту указатель мыши с нажатой левой кнопкой. При этом выделенный блок отображается белыми символами на черном фоне (говорят «в инверсных цветах»). Затем вызывается контекстное меню (щелчком правой кнопкой мыши) или меню ПРАВКА и выбирается необходимый пункт (рис. 4.2), например, удалить, копировать или вырезать выделенный блок. Рис. 4.2. Окно программы NotePad Копирование блока производится в буфер обмена. Далее, в любом месте, где будет установлен курсор, можно сделать вставку содержимого буфера посредством, например, обращения к контекстному меню. Сохранение документа на диске и доступ к нему, поиск. Всякий раз, создавая документ, следует тут же его сохранить, т.е. обратиться к меню ФАЙЛ ► СОХРАНИТЬ КАК; в дальнейшем, внося изменения в документ, следует обращаться к меню ФАЙЛ ► СОХРАНИТЬ. Оба эти меню вызывают стандартный файлер сохранения (рис 4.3). 191
Рис. 4.3. Окно Сохранение В окне «Папка» (раскрыв список) надо выбрать папку, в ко- торую будет происходить сохранение. В окне «Имя файла» — указать имя файла, затем щелкнуть на кнопке «Сохранить». По мере изменения документа, его следует сохранять вновь со старым именем (меню ФАЙЛ ► СОХРАНИТЬ). По умолчанию сохранение происходит по старому адресу, без вызова диалогового окна. Сохранение документа происходит в файловой системе Windows. Она, как известно, является иерархической структурой, а это дает большие удобства для упорядоченного ведения архива документов. Доступ к документу осуществляется через меню ФАЙЛ ► ОТКРЫТЬ, вызывающий диалоговое окно, аналогичное окну сохранения. При этом необходимо выбрать загружаемый файл и нажать кнопку «Открыть». Меню ПОИСК ► НАЙТИ вызывает окно, в котором можно набрать искомое слово или сочетание слов в окне ОБРАЗЕЦ и указать направление поиска вверх или вниз. Поиск с заменой в «блокноте» отсутствует. 192
Элементы форматирования текста Отдельные части текста в «Блокноте» не форматируются, но имеется возможность отобразить весь текст в одном из перечисленных в меню ПРАВКА ► ШРИФТ шрифтов. Шрифты по способу создания изображения бывают растровые и векторные. Растровый шрифт получается на основе некоторой матрицы пикселей (экранных точек), векторный — на основе координат точек, элементарных векторов, уравнений линий. Набор из четырех основных шрифтов — обычный, курсив, полужирный, полужирный курсив — в совокупности называется гарнитурой шрифта. Каждая гарнитура имеет свое наименование, например, Arial, Times New Roman, Tahoma и другие. Каждой гарнитуре в системной папке Windows\Fonts соответствует один файл для векторного шрифта или несколько файлов (по числу размеров) для растрового шрифта. Растровые шрифты обычно бывают моноширинными, т.е. все буквы одной высоты имеют одинаковую ширину, как в пишущей машинке. Например, русская буква «Щ» и латинская буква «I» будут иметь в написании одинаковую ширину, что не улучшает внешний вид текста. Этот недостаток исправлен в векторных шрифтах, которые обычно являются пропорциональными, т.е. ширина определяется начертанием. На печати текст, выполненный пропорциональными шрифтами, выглядит лучше моноширинных, но выравнивание текста пробелами становится невозможным. Вертикальный размер шрифта (именно он понимается под размером шрифта) измеряется в пунктах, один пункт равен 1/72 дюйма — примерно 0,353 мм. Шрифт размером 10 пунктов, его называют десятый кегль, часто используется в книгах. Четырнадцатым кеглем писала пишущая машинка, и этот размер шрифта часто применяется сейчас при составлении различных документов. Еще одно преимущество векторных шрифтов — это их масштабируемость, т.е. все размеры и формы символов шрифта указанной гарнитуры каждый раз пересчитываются из некоторой единой математической заготовки, которой сообщается вертикальный размер. Печать. Готовый документ можно распечатать на принтере. Для этого предварительно необходимо указать параметры печатной страницы. Меню ФАЙЛ ► МАКЕТ СТРАНИЦЫ. В появившемся диалоговом окне следует указать размер бумажного листа (формат), ориентацию {книжную — текст вдоль страницы 7. Информатика 193
или альбомную — текст поперек страницы), размеры полей, при необходимости колонтитулы, после чего нажать кнопку «Принтер» того же окна. Произойдет печать листа. Если макет страницы не изменяется, то достаточно выполнить команду меню ФАЙЛ ► ПЕЧАТЬ. 4.2.2. Текстовый процессор WordPadI Дальнейшее развитие возможностей текстового редактора получено в текстовом процессоре WordPad, который, также как и «Блокнот», встроен в операционные системы Windows 9X. Запуск его происходит через ПУСК ► ПРОГРАММЫ ► СТАНДАРТНЫЕ ► WordPad. Вид окна его показан на рис. 4.4. Кроме известной строки меню еще введены: • две панели инструментов для быстрого доступа к часто используемым пунктам меню (одна называется стандартная, другая — форматирование); • линейка, позволяющая визуально устанавливать отступы; • строка состояния, дающая дополнительную информацию. Рис. 4.4. Окно программы WordPad На панелях инструментов собраны пиктограммы наиболее часто встречающихся команд меню: создать, открыть, сохранить, пена- тать, копировать и др. Щелчок по пиктограмме равносилен выполнению команды меню, но доступ более удобен. Информацию о на- 194
значении значка можно получить с помощью зависания (всплывающая подсказка). Любой из элементов окна может быть установлен или удален с помощью соответствующих команд из меню ВИД. Попутно заметим, что возможность различными способами (через меню или панель инструментов, или комбинацию клавиш, т.е. «горячие клавиши») выполнить одну и ту же команду, является элементом гибкого интерфейса, а возможность получения всплывающей подсказки — элемент дружественного интерфейса. Форматы срайлоВ сонранения документа Технически сохранение документа происходит аналогично «Блокноту». Созданный в WordPad текстовый документ может быть записан в файл одного из следующих форматов: • текстовый документ MS-DOS в кодировке ASCII CP-866 расширение .txt; • текстовый документ Windows в кодировке Windows-1251 расширение .txt; • документ Word, расширение .doc; • файл RTF, расширение .rtf; • документ Unicode. Многообразие форматов дает возможность совместимости документов, написанных в разных редакторах, и возможность конвертирования (перевода) документа из одного формата в другой при помощи WordPad. Редактирование Все приемы создания, редактирования, сохранения текста, описанные в «Блокноте», применимы и в WordPad. Но создатели WordPad пошли дальше. Они предусмотрели возможность отмены последних действии нажатием кнопки В меню ПРАВКА есть команды поиска текста, подобно «Блокноту», и добавлен поиск с заменой. Форматирование документа WordPad допускает весьма широкие возможности форматирования текста. Это форматирование шрифта, абзацев, маркированных 195
списков, табуляции. Находятся они в пунктах меню ФОРМАТ, и некоторые дублируются на панели инструментов «Форматирование». Форматирование шрифта позволяет форматировать и весь текст (как в «Блокноте»), и абзацы каждый в отдельности, и отдельное слово, и отдельную букву. Меню ФОРМАТ ► ШРИФТ или кнопки панели инструментов предоставляет диалоговое окно выбора гарнитуры и начертания шрифта, размера, атрибутов (зачеркнутый и подчеркнутый), цвета изображаемых букв. Тоже можно сделать, используя кнопки панели «Форматирование». Важно, что при этом соблюдается принцип эквивалентности экранного и печатного изображения. Говорят, что выполняется принцип WYSIWYG (What You See Is What You Get — «что видишь (на экране), то и получишь (при печати на листе)»). Форматирование абзаца дает возможность установить абзацный отступ, он еще называется красная строка, отступы справа и слева. Отступы проще и наглядней устанавливаются простым перетаскиванием движков на линейке (рис. 4.5). Отступ красной строки Перетаскивание за прямоугольник приводит к одновременному движению отступа слева и отступа красной строки Отступ слева Отступ справа Рис. 4.5. Форматирование абзаца Процессор WordPad может использовать как пропорциональные (Arial, Times), так и моноширинные (Courier) шрифты, поэтому выравнивание пробелами нецелесообразно, следовательно, используются различные виды машинного выравнивания: слева, справа по центру. С той же целью используется и табуляция. При форматировании абзаца предварительно выделять его не обязательно, достаточно, чтобы курсор находился в любой точке абзаца. 196
Табуляция используется в тех случаях, когда в тексте требуется сформировать ровные столбцы. Установить позиции табулятора можно разными способами, но проще расставить их непосредственно, щелкая мышью по линейке в местах, где надо установить табулятор. Перемещение курсора от одной позиции табулирования (значок на линейке ) к другой осуществляется нажатием клавиши Tab. Маркеры применяются, когда в тексте требуется поместить маркированный список, но в WordPad имеется только один вид маркера — черная круглая точка •. Перед набором маркированного списка нажимаем кнопку на панели инструментов, после набора каж- дого элемента списка нажимаем Enter. Оформление списка, т.е. установка значка маркера и отступов, производится автоматически. Вставка объектов в текстовый документ WordPad позволяет делать вставки рисунков, формул, звуковых и видеофайлов таблиц Excel, презентаций Power Point и других объектов. Возможность эта основана на технологии внедрения и связывания объектов (OLE — Object Linking and Embedding, разработчик Microsoft), позволяющей создавать комплексные документы из разных типов данных, обеспечивать совместную работу нескольких приложений при подготовке одного документа, копировать и переносить объекты между приложениями. Выполняется операция следующим образом: 1. Меню ВСТАВКА ► ОБЪЕКТ вызывает окно «Вставка Объекта», в котором происходит выбор объекта из списка. 2. Устанавливается переключатель «Создать новый /Создать из файла»; если объект создается из файла, то предоставляется кнопка «Обзор», вызывающая диалоговое окно выбора файла. 3. Одновременно требуется установить галочку в переключателе «Связь», если объект связывается, и не устанавливать ее, если внедряется. 4. Установить галочку в переключателе «В виде значка», если внедренный объект будет раскрываться при нажатии на значок. Внедрение предполагает, что новый файл вольется в основной документ. Связывание предполагает, что в основном документе бу- 197
дет помещена ссылка на связываемый файл. Внедрение создает целостный документ, который увеличивается в размерах (по сравнению со связанным), но допускает его передачу по сетям, тиражирование без оглядки на целостность связей. Связанный документ имеет меньший объем и предоставляет большие удобства для работы нескольких разработчиков над документом в компьютерной сети, так как каждый пользователь видит самую свежую версию тех частей документа, которые выполняют его коллеги. Печать документа Перед печатью документа полезно нажать на кнопку «Предварительный просмотр», которая позволит посмотреть на страницу целиком, и если ее внешний вид в целом нас устраивает, то можно нажать кнопку «Печать», находящуюся на том же окне. 4.2.3. Текстовый процессор Word Текстовый процессор Word сейчас один из самых популярных программных продуктов в мире. Его последние версии представляют мощный программный конгломерат, объединяющий около тысячи различных возможностей по работе с текстовыми и электронными документами. Ранние версии (а именно — до Word 5.0) работали под управлением операционной системы MS-DOS. Начиная с версии Word6.0 был воплощен принцип эквивалентности экранного и печатного изображения WYSIWYG. Седьмая версия (она же Word 95) вышла уже не как самостоятельный программный продукт, а в составе интегрированного пакета программ Microsoft Office офисного назначения. Восьмая версия (Word 8.0 или 97) вышла в составе пакета Microsoft Office 97, была ориентирована на использование кодировки Unicode, там же появились средства по работе с электронными документами. Версия Word 9.0 или Word 2000 (она рассматривается в настоящей книге) входит в состав пакета Microsoft Office 2000. В ней расширены возможности работы в сети, т.е. появились средства работы группы разработчиков, работающих в корпоративной компьютерной сети над одним проектом. 198
Рабочее окно текстового процессора Рабочее окно текстового процессора внешне сходно с рабочим окном WordPad, состоит из строки меню, по умолчанию двух панелей инструментов, а вообще их шестнадцать, рабочего поля, строки состояния. В зависимости от настроек, вид рабочего окна может изменяться. Режимы отображения документов на экране. В меню ВИД имеются команды ОБЫЧНЫЙ, WEB-ДОКУМЕНТА, РАЗМЕТКА СТРАНИЦЫ, СТРУКТУРА, которые устанавливают режим отображения документа. В режиме ОБЫЧНЫЙ (кнопка щ в левом нижнем углу) на экране отображается текст без номеров страниц, колонтитулов, вертикальной линейки и рисунков, выполненных средствами Word. Таким образом, достигается максимальная экономия площади экрана. Режим ОБЫЧНЫЙ удобен в случаях быстрого набора текста на ранних этапах подготовки документа. В режиме WEB-ДОКУМЕНТА |Ц рабочее окно делится на две части: слева размещаются названия глав, одно из названий выделено, справа сам текст выделенной главы. Щелчок по названию главы справа приводит к появлению ее текста справа. Режим удобен при работе с документами с большим объемом. В режиме РАЗМЕТКИ (кнопка Щ в полной мере выполняется принцип WYSIWYG, т.е. на экране отображается страница (ее часть) с колонтитулами, рисунками, полями. Режим удобен для оформления текстового документа. В режиме СТРУКТУРА jg документ отображается с выделением заголовков. Одновременно вызывается панель инструментов СТРУКТУРА, имеющая инструменты для навигации в большом документе и работе с заголовками. Применяется режим в работе над большими документами. В том же меню ВИД есть еще два режима отображения ВО ВЕСЬ ЭКРАН и СХЕМА ДОКУМЕНТА. Режим ВО ВЕСЬ ЭКРАН позволяет временно убрать строку меню, панели инструментов, строку состояния — все кроме текста, тем самым максимально расширить полезную площадь экрана. Режим удобен при чтении большого документа. Режим СХЕМА ДОКУМЕНТА, подобно режиму WEB-ДОКУ- 199
МЕНТ, делит страницу на две части — оглавления и содержания, он удобен для навигации по документу. К отображению на экране имеет отношение пункт «Масштаб» из меню ВИД, позволяющий увеличивать или уменьшать изображения на экране. Меню ФАЙЛ содержит еще два режима, используемые для предварительного просмотра документа — это ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР для печатных документов и ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР WEB-ДОКУМЕНТА для электронных документов. Панели инструментов Меню текстового процессора Word обладает свойством функциональной полноты, т.е. любая команда может быть найдена в главном меню или одном из подменю. Но постоянное обращение к меню и подменю снижает эффективность работы пользователя. Исправляет это положение наличие панелей инструментов. Меню ВИД ► ПАНЕЛИ ИНСТРУМЕНТОВ предоставляет возможность выбора необходимой по роду работ панели инструментов из раскрывающегося списка. Панели инструментов в Word настраиваемые, т.е. любые необходимые для выполняемой работы команды меню, пользователь может разместить в виде пиктограмм в строке меню или на любой из панелей инструментов. Работа с окнами Характерной особенностью Word является мультиоконность (многооконность), т.е. способность одновременно работать с несколькими документами, находящимися в различных окнах (в рамках одного открытого приложения). При вводе и редактировании текста пользователь работает в активном окне, в котором возможен доступ ко всем меню. Команда ОКНО ► УПРОРЯДОЧИТЬ ВСЕ дает возможность расположить окна документов последовательно и переходить из одного окна в другое. Создание, сохранение и редактирование текста в Word Описанные в Блокноте и WordPad средства ввода текста, работы с блоками, сохранения файла применимы и в Word'e. Кроме того, 200
они пополнены рядом возможностей (средства автоматизации ввода, средства работы с формулами, диаграммами, графическими изображениями, рисунками и др.). Создание документа В Word любой документ создается на основе некоторого образца, называемого шаблоном. Шаблон — это именованная совокупность параметров (страниц, абзацев, шрифтов и д.р.) для создания документа, сохраняемая в библиотеке шаблонов. Например, при создании документа по умолчанию (пиктограмма Q на панели инструментов СТАНДАРТНАЯ) автоматически применяется шаблон ОБЫЧНЫЙ, который предполагает: шрифтПтез New Roman, размером 12 пунктов, выравнивание слева, одинарный интервал между строками, запрет висячих строк. Но если создавать документ с помощью меню ФАЙЛ ► СОЗДАТЬ... то откроется многостраничное диалоговое окно «Создание документа», представляющее библиотеку шаблонов. Там хранятся шаблоны различных документов, записок, отчетов, факсов, WEB-страниц и др. Причем отдельные виды шаблонов имеют значок с волшебной палочкой — это Мастера (рис. 4.6). Рис. 4.6. Пиктограммы шаблонов Документ создается так: вызывается шаблон, включается режим замены нажатием клавиши Insert, и по готовому тексту набирается новый, при этом все форматные заготовки заменяемой строки сохраняются. Процесс создания шаблона с помощью Мастера еще проще: вызывается Мастер, а он является программой на языке VBA. Мастер задает ряд вопросов по существу содержания документа без форматирования, по завершении диалога выдается готовый форматированный документ. 201
Сохранение документа Сохранение документа аналогично WordPad, по умолчанию оно производится в папку «МОИ ДОКУМЕНТЫ», но диалоговое окно ввода позволяет легко сохранять файлы и в некоторых других папках: ЖУРНАЛ, РАБОЧИЙ СТОЛ, ИЗБРАННОЕ, WEB-ПАПКИ, их кнопки находятся в левой части диалогового окна. Журнал — это виртуальная папка, в которой запоминаются все файлы и папки, использовавшиеся в последние две недели. Любую из папок можно открыть и поместить туда сохраняемый файл. Избранное — папка для хранения ярлыков Web-страниц. Используется в основном для открытия документов. Web-папки — папки, хранящиеся не на локальном компьютере, а в сети Internet (WWW Web-сервере) или корпоративной сети Intranet. Пополнительные Возможности ВВоЭо текста Текстовый процессор Word, как известно, является многооконным приложением, что создает удобства при одновременной работе с несколькими документами, например, при создании документа на основе нескольких источников. Для этого Word (как и все приложения Windows) использует временную область памяти — Буфер Обмена. В него помещаются перемещаемые и копируемые данные. Обмен данными можно производить между разными приложениями Windows, и эти данные могут быть в текстовом, графическом или смешанном виде. В значительной степени позволяет ускорить ввод текста АВТОЗАМЕНА и АВТОТЕКСТ. С помощью автозамены можно создать сокращения для часто встречающихся в тексте слов и словосочетаний, расшифровывать аббревиатуры или исправлять распространенные ошибки, например, неверно набранное слово «очепятка» — автоматически заменять на «опечатка», сокращение СУБД — на «система управления базой данных», ц. — заменять на слово Word и т.п. Для добавления новой автозамены надо зайти в меню СЕРВИС ► АВТОЗАМЕНА и в поле ввода «Заменить» набрать слово или аббревиатуру, которое следует автоматически заменять в процессе 202
ввода. В поле ввода «На» набрать текст, который будет появляться взамен указанного и щелкнуть по кнопке «Добавить». Автотекст в Word представлен двумя функциями: автозавершением и автотекстом. Автозавершение реализуется, если пользователь набирает четыре буквы из слова, хранящегося в словаре автотекста, возникает всплывающая подсказка с полным текстом фрагмента, а нажатие Enter завершает набор фрагмента. Автотекст можно выбрать из списка ВСТАВКА ► АВТОТЕКСТ Отличия Автотекста: Автотекст позволяет запоминать отформатированные фрагменты текста. Элементами Автотекста могут быть рисунки, графики, таблицы. Форматирование текста Форматирование текста в Word выполняется с помощью меню ФОРМАТ Наиболее часто используемые команды меню вынесены в панель инструментов ФОРМАТИРОВАНИЕ в виде кнопок. Меню ФОРМАТ содержит возможности выбора параметров: шрифта, абзаца, заливки, списков, рамок, стиля и др. Параметры шрифта. Диалоговое окно имеет три вкладки: ШРИФТ, ИНТЕРВАЛ, АНИМАЦИЯ. Вкладка ШРИФТ аналогична WordPad, но имеет значительно большие возможности по видоизменению шрифта. Вкладка ИНТЕРВАЛ имеет окна ввода: МАСШТАБ, ИНТЕРВАЛ, СМЕЩЕНИЕ. Масштаб указывает ширину шрифта в процентах относительно некоторого нормального значения, т.е. при одном вертикальном размере векторный шрифт (True Type) может быть нормальным (100%), широким (200%) или узким (80%). Интервал указывает на расстояние между символами в пунктах, может быть обычный, разреженный (на 2 пункта в этом случае) или уплотненный (на 1 пункт). Смещение применяется, чтобы приподнять или опустить часть текста над остальным, смещения может не быть, может быть смеще- вверх (на 3 пт.) ние или вниз (тоже 3 пт.). Вкладка анимация предоставляет различные возможности офор- 203
мительских эффектов, например, мигающий фон, фейерверк, муравьи и т.п., применимо только для электронных документов в формате процессора. Для Web-документов он не целесообразен, так как не все браузеры поддерживают этот формат. Параметры абзаца. Диалоговое окно настроек параметров абзаца устанавливает величины отступов слева и справа абзаца, отступ красной строки, интервалы перед абзацем, после абзаца и междустрочный интервал. С каждым абзацем в Word связывается понятие уровень. В режиме «Схема документа» в левой части страницы отображаются все абзацы, уровень которых выше «основного текста» (или «обычный»). Например, «1 уровень», «2 уровень» и т.д. Причем абзацы второго уровня вкладываются в абзацы первого уровня и третьего во второй и т.д., подобно тому, как это делается с папками в проводнике. В целом, просматривая левую часть «Схемы документа» мы видим структуру его. Сделав щелчок на абзаце слева, мы вызываем соответствующий элемент текста справа, упрощая перемещения по большим документам. Создание списков. Колонки. Для создания списка необходимо войти в меню ФОРМАТ ► СПИСОК, в котором указать, какой создается список: маркированный, нумерованный или многоуровневый. При выходе из меню автоматически появляется выбранный маркер или первый номер списка. В дальнейшем, при вводе очередного пункта списка и нажатии клавиши Enter, на следующей строке появляется маркер или очередной номер списка. Выход из списка может быть сделан двойным нажатием Enter. Текст в Word может быть расположен в нескольких колонках, меню ФОРМАТ ► КОЛОНКИ (или кнопка на панели стандартная) вызывает диалоговое окно, в котором можно выбрать количество колонок, ширину и промежуток для каждой, установить их одинаковыми по ширине или задать ширину каждой. Кнопка «Применить» позволит оформить не весь текст, а только выделенную часть. Разбивка на разделы. Параметры страницы. Word позволяет разбивать документ на два раздела и больше, если необходимо установить различные параметры форматирования страницы (поля, размер бумаги, ориентацию страниц — книжную или альбомную) для разных разделов. По умолчанию эти виды форматирования применяются ко всему документу. Меню ВСТАВКА ► РАЗРЫВ. 204
Поля страницы определяют пустое пространство между текстом и краями страницы. На каждой странице есть четыре поля: левое, правое, верхнее и нижнее. Установление новых полей страницы повлечет за собой изменение полей во всем документе или, при наличии нескольких разделов, только в текущем разделе. Если нужно установить точные размеры полей страницы (и ряд других параметров) можно применить диалоговое окно ФАЙЛ ► ПАРАМЕТРЫ СТРАНИЦЫ. Стили оформления. Как известно, абзац — это часть текста между двумя нажатиями клавиши Enter, т.е. любой заголовок является абзацем. Абзац имеет несколько параметров настройки и, конечно, было бы нерационально, каждый раз набирая новый заголовок, повторять все настройки сначала. С этой целью в Word введено понятие стиля оформления. Стиль оформления — это поименованная совокупность настроек параметров оформления (шрифта, абзаца). При необходимости оформления абзаца чаще всего пользуются готовым стилем. Это ускоряет процесс набора и обеспечивает единство всех абзацев данного стиля. Некоторое количество стилевых заготовок можно увидеть в поле со списком «Стиль» на панели инструментов «Форматирование». Чтобы форматировать один абзац по стилю, достаточно курсор установить в любой точке абзаца, открыть список «Стиль» и щелкнуть по выбранному стилю. При форматировании нескольких абзацев их необходимо выделить. Если перечисленных стилей в поле «Стиль» недостаточно, можно обратиться в меню ФОРМАТ ► СТИЛЬ, которое вызовет диалоговое окно выбора стиля. В списке «Стили» выбрать необходимый стиль (в том же окне находится описание стиля и образец). Можно создать свой стиль на основе одного из выбранных, для чего нажать кнопку «Создать», которая откроет диалоговое окно «Изменение стиля». В поле «Имя» ввести имя создаваемого стиля, в поле «Основан на стиле» указать стиль, на котором он основан. Указать стиль следующего абзаца и, нажав кнопку «Формат», указать параметры шрифта, абзаца, границы, рамок и т.д. Созданные стили сохраняются вместе с документом. Если они оказались удачными, имеет смысл сохранить их отдельно от документа в виде шаблона. Тогда их можно использовать в других документах. Создать шаблон на основе готового документа можно при его 205
сохранении меню ФАЙЛ ► СОХРАНИТЬ КАК и в поле со списком «Тип файла» выбрать «Шаблон документа». В Word 2000 имеется специальное средство оформления темы. Тема объединяет в себе следующие элементы оформления: • фоновый узор; • стили заголовков и основного текста; • стиль оформления маркированных списков; • стиль графических элементов (линий). Доступ в меню осуществляется командой ФОРМАТ ► ТЕМЫ. Создание формул Текстовый процессор Word снабжен редактором формул Microsoft Equation 3.0, который позволяет создавать формульные выражения и вставлять их в текст. Формульный редактор запускается через меню ВСТАВКА ► ОБЪЕКТ, в открывшемся окне выбирается объект Microsoft Equation 3.0. Привычный вид экрана меняется на меню редактора формул и панель инструментов «Формула». Настройка параметров стиля редактора формул выполняется командой меню СТИЛЬ ► ОПРЕДЕЛИТЬ, вызывающей диалоговое окно, в котором устанавливаются форматные настройки (гарнитура, полужирный, курсив) для текста, функции, символов, чисел и т.д. Если основной текст документа разрабатывается на основе шаблона «Обычный», то хороший внешний вид формул получается при установке размеров кнопкой «По умолчанию». Для набора формул используется панель инструментов «Формула» (рис 4.7). Как видно, она имеет два ряда кнопок: верхний ряд — математические символы, нижний ряд — шаблоны формул. Шаблоны предоставляют поля ввода, в которые с клавиатуры набираются необходимый текст или символы. Рис. 4.7. Панель инструментов «Формула» 206
Робота с таблицами, рисунками, чертежами Таблица представляет собой набор данных, организованных в виде строк и столбцов. Элемент таблицы на пересечении строки и столбца называется ячейкой. Таблицы в Microsoft Word являются очень удобным и наглядным способом представления данных. С помощью таблиц организация информации в столбцах упрощается в сравнении с расстановкой табуляторов, а внешний вид улучшается. Для работы с таблицами удобно использовать панель инструментов «Таблицы и границы», проще всего она вызывается щелчком по кнопке на панели «Стандартная». Содержимое этой панели час- тично перекрывается содержимым меню «Таблица». Создание таблицы. Для создания необходимо установить курсор в место, где она будет находиться, зайти в меню «Таблица» и щелкнуть на строке «Добавить таблицу». Выбрать указателями размер таблицы, например, 4 строки и 3 столбца. Там же даются указания по линейным размерам ячеек, они могут задаваться вручную и автоматически — по умолчанию («Авто»). При этом ширина столбцов будет установлена в зависимости от содержимого ячеек. Таблицы сложной формы рационально создавать на основе простой таблицы, редактируя ее потом методом рисования. Для этого на панели инструментов «Таблицы границы» есть инструменты: «Нарисовать таблицу», «Ластик», «Тип линии», «Толщина линии», «Цвет границы», «Границы», «Заливка». Для установки клавиатурного курсора в таблицу щелкнем на нужной ячейке, после чего возможен ввод в ячейки таблицы текста. Перемещать курсор между ячейками можно клавишами перемещения курсора или мышью, щелкнув на нужной ячейке. Редактирование и оформление таблицы. Чтобы редактировать таблицу, необходимо прежде всего выделить одну или несколько ячеек, где будут производиться изменения. Выделить всю таблицу или ее часть можно, проведя по ним мышью с нажатой левой клавишей, или в меню «Таблица» подобрать нужную опцию выделения. Для изменения ширины столбца установим курсор мыши на линию разделения столбцов (при этом курсор примет вид двунаправ- 207
ленной стрелки) и перетащим ее вместе с линией на нужное место. Аналогично можно менять высоту ячеек. Чтобы очистить содержимое строки, столбца или отдельной ячейки, нужно их выделить и нажать клавишу Delete. Чтобы удалить строку, столбец или отдельную ячейку, нужно их выделить и, щелкнув на соответствующей строке в меню «Таблица», выполнить операцию. Объединить ячейки можно, выделив их, и в меню «Таблица» щелкнуть на строке «Объединить ячейки». Разбить одну или несколько ячеек таблицы можно так: • выделить ее; • щелкнуть в меню «Таблица» на строке «Разбить ячейки»; • установить параметры разбивки и нажать кнопку ОК. Когда таблица создана, в нее можно добавить новые ячейки, заливку, границы и другие элементы форматирования. Сортировка данных и вычисления в таблицах. В таблице можно производить сортировку данных по одному или нескольким столбцам. При сортировке заголовки столбцов обычно не участвуют в процессе. Щелкнем по любой ячейке столбца, по которому нужно провести сортировку. В меню ТАБЛИЦА ► СОРТИРОВКА введем дополнительную информацию о характере сортировки. Нажмем ОК — действие выполнится. В таблицах можно суммировать, вычитать, усреднять и производить другие математические действия. Наиболее распространенное из них — это вычисление общей суммы для данных столбца или строки. Кнопка «Автосумма» на панели инструментов «Таблицы и границы» позволяет автоматически посчитать сумму данных, расположенных слева, или сумму данных, расположенных выше указанной ячейки. Таблицу можно преобразовать в текст, задав те или иные разделители между данными из бывших столбцов. При этом используется меню ТАБЛИЦА ► ПРЕОБРАЗОВАТЬ В ТЕКСТ. Создание рисунка. Word позволяет создавать собственные рисунки. Средства для их создания дают возможность даже человеку без художественных способностей украшать свои документы рисованными иллюстрациями и чертежами. Для работы с векторными рисунками и чертежами в Word разработан ряд инструментов, объединен- 208
ных в панели инструментов «Рисование». Вызов ее происходит либо как обычно через меню ВИД ► ПАНЕЛИ ИНСТРУМЕНТОВ, либо нажатием пиктограммы на панели инструментов «Стандартная». Процесс создания векторного рисунка состоит из трех основных действий: 1. Вставка в документ рисованных объектов из набора графических примитивов, объединенных в пиктограмме «Автофигуры» (это линии, стрелки, фигуры). 2. Перемещение рисованных объектов по документу, изменение их размеров. 3. Видоизменение рисованных объектов, например, можно менять толщину линии, цвет текста, пропорции и форму примитивов. Для того чтобы нарисовать объект, необходимо щелкнуть мышью на его кнопке на панели инструментов «Рисование», затем с помощью протяжки развернуть объект в какой-либо области создаваемого рисунка. Для выделения только что нарисованного объекта просто щелкнем на нем. Вокруг него появятся маркеры размеров. Быстро переместить выделенный объект можно с помощью перетаскивания или клавишами управления курсором, более точное перемещение маленькими шагами получается, если клавиши управления курсором сочетать с удерживанием клавиши Ctrl. Для изменения цвета линий объекта щелкнем на списке кнопки «Цвет линии» на панели инструментов «Рисование» и выберем цвет; чтобы изменить цвет заливки объекта, щелкнем на списке кнопки «Цвет заливки» и выберем цвет заливки. Для изменения толщины или стиля линий объекта выделим объект, а затем щелкнем на кнопке «Тип линии» или «Тип штриха» соответственно. Для добавления надписи щелкнем на кнопке «Надпись». Затем щелкнем в том месте документа, где будет располагаться надпись, введем текст в текстовом окне, по окончании этого — щелкнем мышью где-нибудь в документе за пределами текстового окна. Еще одно полезное свойство предоставляет пиктограмма «Формат объекта». Выделив объект и нажав эту кнопку, мы вызываем диалоговое окно «Формат автофигуры». В нем можно установить цвет заливки, сделать ее полупрозрач- 209
ной или отказаться от нее вовсе, т.е. получить только линию по контуру (например, был круг — станет окружность). Можно установить цвет и толщину линии, а можно от нее отказаться вообще, что часто применяется в надписях, чтобы они не получались в рамках. Во вкладке «Размер» показываются размеры объекта при печати на принтер. Изменяя значения размера в «Формате автофигуры», мы изменяем объект, и это делает возможным создание небольшого чертежа в масштабе. 4.3. Электронные таблицы Решение ряда экономических задач часто приводит к обработке прямоугольных таблиц данных разных типов (текстовых, числовых). Применение для таких задач средств алгоритмических языков высокого уровня оказалось во многих случаях не эффективно. Текстовые процессоры дают возможность ведения и форматирования таблиц, но они плохо приспособлены для вычислений. Вышеуказанные причины вызвали появление программ, называемых электронными таблицами, объединяющими в себе возможности: • текстовых процессоров по созданию и форматированию таблиц; • математической обработки табличных данных; • визуализации результатов в форме таблиц, диаграмм, графиков. История развития программ обработки электронных таблиц насчитывает около двадцати лет, налицо огромный прогресс в этой области программного обеспечения. Примерами программ электронных таблиц являются Lotus 1-2-3 (Lotus), Microsoft Excel. В настоящее время наибольшее распространение получил программный комплекс Microsoft Excel. Далее мы подробно рассмотрим его. Современные программные продукты этого вида имеют: • калькуляционный (вычислительный) модуль, с помощью которого происходит обработка данных (текстовых или числовых) в таблицах; • модуль диаграмм для создания презентационной графики, который позволяет на основе числовых данных, полученных с помощью калькуляционного модуля, создать диаграммы различных типов; 210
• модуль базы данных, реализующий доступ к внешним базам данных. Электронные таблицы можно использовать для решения задач учета, составления бланков, планирования производства, расчета налогов и заработной платы, учета кадров и др. Благодаря мощным математическим функциям, имеющимся в электронных таблицах, с их помощью можно решать множество задач в области естественных и технических наук. 4.3.1. Общие сведения о табличном процессоре Excel Документом Excel является рабочая книга — это файл с произвольным именем и расширением .xls. Рабочая книга состоит из рабочих листов (в количестве от 1 до 256, каждый имеет свое имя). Один из рабочих листов является активным, т.е. в настоящий момент с ним работает пользователь. Рабочий лист представляет собой таблицу, в которой может содержаться до 65536 строк и до 256 столбцов. Строки нумеруются числами (от 1 до 65536), столбцы — латинскими буквами А, В, С, ..., Y, Z, АА, АВ, АС, .., AZ, ВА, ..., IV. Ячейки. На пересечении столбцов и строк находятся ячейки. Каждая ячейка имеет адрес, состоящий из указания столбца и строки, на пересечении которых она находится, например Al, B5, АВ234. Адреса ячеек используются при обращении к их содержимому. Одна из ячеек является активной, она выделяется черной рамкой, в правом нижнем углу которой находится маркер заполнения (черный квадратик). Ввод данных производится в активную ячейку. Перемещение активной ячейки осуществляется клавишами управления курсором: PageUp, Page Down, Home, End или щелчком мыши. Диапазоны. Иногда в Excel требуется работать не с одной ячейкой, а с группой ячеек в виде прямоугольника, такая группа называется диапазон. Прежде чем работать с диапазоном, следует его выделить. Выделяется диапазон протягиванием мышью по диагонали диапазона. Выделенный диапазон на рабочем поле показывается инверсным цветом, вокруг него располагается рамка с маркером заполнения, как на активной ячейке. 211
Элементы управления. Окно Excel (рис 4.8) содержит заголовок, строку меню, панели инструментов «Стандартная» и «Форматирование», рабочее поле, строку состояния. Назначение этих элементов аналогично назначению таких же элементов Word. Заголовок Строка меню Панели инструментов "Стандартная" и "Форматирование" (по умолчанию) Рис. 4.8. Окно Excel Панели инструментов Excel можно настраивать: добавлять и удалять кнопки (пиктограммы команд), создавать новые панели инструментов, а также отображать, скрывать и перемещать существующие панели инструментов, совершенно аналогично Word. Главное меню и панель инструментов «Стандартная» имеют команды «Открыть» и «Сохранить», которые работают так же, как и в вышеописанных программных продуктах. Файл может сохраняться в формате «Книга Microsoft Excel». Это его основной формат (.xls), 212
но параллельно могут использоваться формат шаблона (.xlt), ряд форматов, связывающих Excel 2000 с его старыми версиями, а также ряд форматов, позволяющих связать Excel с базами данных. При сохранении файла в Excel можно установить пароль. Табличный процессор Excel ведет протокол всех действий, последние шестнадцать запоминает и в любой момент позволяет отменить несколько последних действий нажатием кнопки Работа с окнами. Иногда необходимо одновременно просматривать различные части большой таблицы, например строку заголовков таблицы и какую-либо ее часть. Для этого следует разделить окно Таблицы на подокна: устанавливаем указатель мыши на горизонтальный или вертикальный движок разбиения (рис. 4.9) (он примет вид двунаправленной стрелки) и перетягиваем его в нужное место. Каждая область будет иметь свою полосу скроллинга для перемещения по таблице. Рис. 4.9. Разделение окна таблицы на подокна Excel представляет пользователю многооконный интерфейс. Это значит, что одновременно могут быть открыты несколько окон, в которых будет отображаться одна и та же книга (например, разные страницы) или разные рабочие книги. Делается это с помощью меню ОКНО команды НОВОЕ. В этом случае в заголовке окна после имени рабочей книги через двоеточие указывается номер нового окна. Например, первое окно рабочей книги будет называться КНИГА: 1, второе будет названо КНИГА:2. Одновременно на панели задач появятся кнопки открытых окон, 213
что дополнительно облегчит переход от одного окна к другому. Закрыть окно можно обычным щелчком на кнопке «крест» в заголовке. Для возврата к однооконному изображению необходимо развернуть активное окно на весь экран, щелкнув на кнопке восстановления окна. Иногда требуется зафиксировать одну часть таблицы, например, заголовок, чтобы он всегда присутствовал на экране. Для фиксации только вертикальных (горизонтальных) заголовков следует выделить строку ниже заголовков (столбец справа от заголовков), обратиться в меню ОКНО ► ЗАКРЕПИТЬ ОБЛАСТИ. Для одновременной фиксации и вертикальных, и горизонтальных заголовков необходимо выделить ячейку, по которой следует зафиксировать заголовки (все строки выше выделенной ячейки и все столбцы слева от выделенной ячейки будут зафиксированы), затем меню ОКНО ► ЗАКРЕПИТЬ ОБЛАСТИ. Работа с листами в Excel. Принцип работы с листами напоминает обычную работу с деловыми блокнотами в офисе. В каждом рабочем блокноте можно поместить всю информацию, относящуюся к одной теме, и хранить ее в одном файле, что повышает наглядность рабочих документов. Корешки отдельных рабочих листов одной рабочей книги расположены в нижней части экрана (именной указатель листов), по умолчанию они называются «Лист 1», «Лист 2», «Лист 3»; щелкая по ним мышью, можно переходить с одного листа на другой. Корешок активного рабочего листа маркируется белым цветом. Листы можно добавлять, удалять, переименовывать. Команды этих операций находятся в меню ПРАВКА, ВСТАВКА, но более удобно воспользоваться контекстным меню именного указателя листов. При переименовании рабочих листов запрещается использовать следующие символы: квадратные скобки [ ], двоеточие :, слеш прямой /, слеш обратный \. Рабочий лист или рабочую книгу можно защитить от изменений паролем, для этого надо зайти в меню СЕРВИС ► ЗАЩИТА ► ЗАЩИТИТЬ ЛИСТ (или ЗАЩИТИТЬ КНИГУ). Работа со столбцами и строками таблицы. Изменение высоты строки или ширины столбца производится следующим образом. Корректируемая строка или столбец таблицы должны быть выделены. В меню ФОРМАТ ► СТРОКА выбирается одно из подменю следующего уровня, содержащее пункты: ВЫСОТА, АВТОПОДБОР ВЫ- 214
СОТЫ, СКРЫТЬ, ОТОБРАЗИТЬ (аналогичные пункты есть и в меню СТОЛБЕЦ). ВЫСОТА позволяет установить высоту выделенных строк в пунктах. АВТОПОДБОР ВЫСОТЫ устанавливает высоту по высоте содержимого. Команда СКРЫТЬ скрывает строки, не удаляя их, применяется для скрытия промежуточных вычислений. Снова отобразить скрытые строки можно командой ОТОБРАЗИТЬ, предварительно выделив две строки, между которыми находится скрываемые строки. Коррекцию размеров ячеек можно выполнить и с помощью мыши. Для этого указатель мыши нужно установить на границу между номерами строк (или столбцов). При этом указатель мыши приобретает вид двунаправленной стрелки (рис. 4.10). Рис. 4.10. Коррекция размеров ячеек Если нажать теперь левую кнопку мыши и, не отпуская ее, сдвинуть указатель мыши, то можно увидеть штриховую линию, которая показывает смещение границы строки. Переместим эту линию в нужную позицию и отпустим кнопку мыши, в таблице появится новая граница строки. Если дважды щелкнуть мышью по нижней границе строки (столбца), то высота (ширина) этой строки (столбца) будет автоматически скорректирована по ее содержимому. 4.3.2. Создание таблиц Ввод данных в ячейку и в диапазон. В любой ячейке Excel может содержаться текстовая строка, число или формула. Тип данного определяется автоматически при вводе. Если ввод начинается со знака равенства, то процессором это понимается как формула. Далее мы подробно опишем правила построения формул, сейчас же заметим, что формулы содержат обычные арифметические операторы, например, + (плюс), — (минус), • (умножить), / (разделить). Кроме того, они могут использовать специально встроенные функции, которые облегчают процесс вычисления. 215
Число вводится в привычном виде со знаком или без него, в качестве разделителя целой и дробной части, может быть точка или запятая в соответствии с настройками Windows. Любая прочая последовательность символов понимается как текстовые данные. Редактирование содержимого ячейки можно произвести двойным щелчком по ячейке. При этом она переводит ее в режим редактирования содержимого, т.е. в поле ячейки появляется курсор, изменения вносятся с клавиатуры, как в текстовых редакторах. Завершаем редактирование нажатием клавиши Enter или щелчком на пиктограмме в строке формул. Автозаполнение. Если необходимо продублировать какое-либо данное (числовое или текстовое) в ряд смежных ячеек в строке или столбце, то можно ввести одно данное, затем перетащить маркер заполнения ячейки с введенным данным по строке или столбцу, произойдет автоматическое копирование содержимого ячейки. Иногда требуется заполнить смежные ячейки не одинаковыми, но похожими данными, например, «1 блок», «2 блок», «3 блок» или «ряд 1», «ряд 2», «ряд 3». Делается это также с помощью маркера заполнения, т.е. в ячейку вводится первое данное («1 блок»), затем ячейка протягивается за маркер заполнения. Копирование ячеек, содержащих данные. Чтобы скопировать содержимое ячейки или диапазона, нужно активизировать ячейку или выделить диапазон, вызвать меню ПРАВКА ► КОПИРОВАТЬ или правой кнопкой мыши вызвать контекстное меню пункт КОПИРОВАТЬ, активизировать ячейку, являющуюся началом диапазона, куда должны быть скопированы данные, меню ПРАВКА ► ВСТАВИТЬ или контекстное меню пункт ВСТАВИТЬ, затем нажать клавишу [Enter]. Форматирование ячеек. Форматирование в Excel предполагает ряд действий по установке: форматов данных, параметров шрифтов и выравнивания, границ, заливки. Форматируемые ячейки или диапазон должны быть выделены, затем меню ФОРМАТ ► ЯЧЕЙКИ вызывает диалоговое окно «Формат ячейки», имеющее шесть вкладок: ЧИСЛО, ВЫРАВНИВАНИЕ, ШРИФТ, ГРАНИЦА, ВИД, ЗАЩИТА устанавливаются необходимые параметры. Вкладка ЧИСЛО позволяет установить формат ячейки как числовой. В поле «Числовые форматы» приведены различные типы форматов, которые выбираются щелчком мыши или с помощью клавиш управления курсором. Опишем числовые форматы. 216
«Числовой» — устанавливает число знаков после запятой, при необходимости разделитель групп разрядов (три разряда — пробел, начиная от запятой) удобен для представления чисел с фиксированной запятой, применимы все арифметические операции. «Денежный» — как числовой, но число сопровождается знаком валюты р., $, €, ¥ и т.д. С точки зрения общего формата запись в ячейке 12,34$ является текстом, но если формат ячейки объявлен как денежный, то это число, с которым могут производиться арифметические действия. Удобен формат для денежных расчетов. «Финансовый» — то же, что и денежный, но выравнивание в столбцах происходит по запятой; удобен тем, что длина записи числа отражает ее величину, это снижает вероятность ошибки при просмотре документа. «Дата» — позволяет отобразить дату по одному из шаблонов. Дата есть число дней, прошедших от 1-го января 1900 г. С датой можно работать как с числом, т.е. если в ячейке А1 содержится дата 01.05.04, а в ячейке В1 мы наберем формулу = А1 + 1, то результат получится 02.05.04, но если ячейку А1 переформатировать в числовой формат, то получится 38108, т.е. количество дней, прошедших с 1-го января 1900 г. «Время» — служит для отображения времени по одному из предлагаемых шаблонов. Допустима арифметика, но надо помнить, что время — это доля суток от 0 часов, т.е. число 0,25 в формате «дата- время» даст 6 часов утра, 0,5 — 12 часов. «Процентный» — число в ячейке умножается на 100 и добавляется символ %. «Дробный» — число представляется в виде обыкновенной дроби (приближенно) по шаблону «Экспоненциальный» — число представляется в виде мантиссы и порядка; удобен для приближенных вычислений с плавающей запятой в различных научно-технических расчетах. «Текстовый» — содержимое, каким бы оно ни было, воспринимается процессором как текст. Арифметические операции недопустимы. «Дополнительный» — то же, что и текстовый, но текст форматируется по маске (образцу): номер телефона, почтовый индекс и т.д. Вкладка ВЫРАВНИВАНИЕ. Некоторые команды этой вкладки дублируются на панели инструментов «Форматирование», техника аналогична Word. 217
Вкладка ШРИФТ аналогична диалоговым окнам выбора шрифта Word. Вкладка ГРАНИЦА — позволяет установить толщину, форму, цвет линий границ любых ячеек. Сначала устанавливается «тип линии» и цвет, затем указывается, к каким границам выделенного диапазона их применить. Вкладка ВИД — определяет цвет и узор заливки ячеек. Вкладка ЗАЩИТА — позволяет снять защиту с выделенного диапазона. Обычно это делается перед тем как защищать весь лист, т.е. если на рабочем листе сделаны расчеты, то с исходных данных защиту снимают, а весь лист с формулами и промежуточными результатами защищается (меню СЕРВИС ► ЗАЩИТА ► ЗАЩИТИТЬ ЛИСТ...). 4.3.3. Работа с формулами, диаграммами, списками Формулы Ввод формул. Возможность работы с формулами и встроенными функциями является важнейшей особенностью электронных таблиц. Логика использования табличного процессора требует применять формулы везде, где значения одних ячеек зависят от значений других, так как если значения ячеек с исходными данными изменяются, то автоматически изменяются значения всех зависимых ячеек. Как известно, ввод формулы начинается со знака равенства, сопровождается появлением формулы в ячейке и дублировании набора в строке формул, завершается нажатием клавиши Enter, после чего в ячейке появляется результат вычисления (при настройках процессора по умолчанию), а саму же формулу теперь можно увидеть в строке формул, если активизировать ячейку. Формула может содержать числовые константы, ссылки (адреса ячеек, содержимое которых участвует в вычислениях), функции. Указанные элементы между собой могут соединяться знаками арифметических операций, скобки могут изменять принятый в арифметике порядок действий. 218
Например, пусть в ячейке А1 содержится число 10, в ячейке В1 число 20, в ячейку С1 введем формулу =А1+В1+2. После завершения ввода (нажатие Enter) в ячейке С1 появится результат сложения чисел, содержащихся в ячейках А1 и В1, увеличенный на 2, т.е. 32. Если изменить число, хранящееся в ячейке А1, например заменить на 20, то наличие формулы в ячейке С1 автоматически изменит ее значение на 42. Ссылки А1 и В1 в формуле можно делать, непосредственно вводя с клавиатуры текст формулы или после знака равенства сделать щелчок по ячейке А1 (в формуле появится ссылка А1), набрать знак + , сделать щелчок по В1, снова + , набрать 2. Автозаполнение ячеек формулами. Активизируем ячейку С1 из предыдущего примера и протянем ее за маркер заполнения вниз по столбцу. В ячейку С2 автоматически введется формула =А2+В2+2, в СЗ =АЗ+ВЗ+2 и т.д. При протягивании по столбцу номер столбца увеличивается. Вернемся в ячейку С1 и протянем ее по строке, получим: в ячейке D1 =В1+С1 , в El =C1+D1 и т.д., при протягивании по строке номер строки увеличивается. Таким образом, при протягивании формулы ссылки А1 и В1 модифицируются, такие ссылки называются относительными. Чтобы ссылки не модифицировались при протягивании по строке, ее следует записать как С$1; запретить модификацию по столбцу можно, применив ссылку $С1. Ссылка будет неизменна при любом протягивании в виде $С$1. Такие ссылки называются абсолютными. В длинных математических расчетах по формулам, как правило, исходные данные содержатся в ячейках, которые в дальнейшем используются как абсолютные ссылки. Весьма неудобно было бы постоянно помнить, в каких ссылках какие параметры находятся (например, в $С$1 находится параметр Ь, в $D$147 — к и т.п.). Для этого в Excel есть возможность переименования абсолютных ссылок. Меню ВСТАВКА ► ИМЯ ► ПРИСВОИТЬ вызывает диалоговое окно, в котором можно абсолютную ссылку переименовать. В том же меню при необходимости можно удалить уже существующее имя. Ссылки на другие листы и книги. Для обращения к значению ячейки, расположенной на другом рабочем листе, нужно указать имя этого листа вместе с адресом соответствующей ячейки. Например, находясь на листе 1, можно ввести в ячейку А1 формулу =ЛИСТ4!ВЗ+1 для обращения к ячейке ВЗ на рабочем листе ЛИСТ4. Если в названии 219
листа есть пробелы, то оно (название) заключается в кавычки. Связывание двух ячеек можно упростить, для чего на листе 1 в ячейке А1 набрать знак = , затем через корешок обратиться к листу 4 и щелкнуть по ячейке ВЗ. Копирование ячеек, содержащих формулы. Техника копирования, перемещения, удаления ячеек, содержащих формулы, такая же, как и ячеек, содержащих данные (см. 4.2.2.) Но если в формуле содержатся относительные ссылки, то при копировании и перемещении они модифицируются. Рассмотрим на примере. Пусть в ячейке СЗ содержится формула = A1+$B1+C$1+$D$1. Перенесем или скопируем ее в ячейку Е6, т.е. на два столбца правей и на три строки ниже. Тогда все относительные адреса формулы в ячейке Е6 увеличатся на два по столбцу, на три по строке. В результате в ячейке Е6 получим формулу =C4+$B4+E$1+$D$1. Работа с функциями. Excel позволяет использовать в формулах ряд встроенных математических, логических, статистических функций. Функции объединяют несколько вычислительных операций для решения определенной задачи, имеют один или несколько аргументов. В качестве аргументов функций выступают числовые значения и/или адреса ячеек. Вызывается функция, как правило, с помощью МАСТЕРА ФУНКЦИЙ меню ВСТАВКА или кнопки . Диалоговое окно «Мастера функций» имеет два шага. На первом шаге выбирается тип функции в поле «Категория», затем сама функция в списке «Функция». Следующий шаг уточняет аргументы. Диагроммы Диаграмма — это представление данных таблицы в графическом виде, которое используется для анализа и сравнения данных. На диаграмме числовые данные ячеек изображаются в виде точек, линий, полос, столбиков, секторов и в другой форме. Группы элементов данных, отражающих содержимое ячеек одной строки или столбца на рабочем листе, составляют ряд данных. Строятся диаграммы с помощью Мастера диаграмм. Вызывается через меню ВСТАВКА ► ДИАГРАММА или нажатием кнопки на панели инструментов «Стандартная». Мастер имеет четыре шага, где выясняются вопросы 220
о виде диаграммы, особенностях оформления и размещения, затем строится диаграмма. Списки Списки позволяют эффективно работать с большими упорядоченными наборами данных, имеющих одинаковую структуру Например, списком является телефонный справочник, в котором в большом количестве строк приведены фамилии абонентов и номера их телефонов. Каждый элемент списка занимает одну строку, в которой данные распределяются по нескольким полям (столбцам). В табличном процессоре имеются операции для их обработки (сортировка, фильтрация). В первой строке рабочего листа обычно помещаются названия отдельных полей списка. Эта строка используется в качестве строки заголовков списка. Начиная со следующей строки, вводятся данные. Для быстрого заполнения таблицы можно обратиться к меню ДАННЫЕ ► ФОРМА, которое откроет диалоговое окно для ввода данных, в котором каждому полю списка соответствует поле ввода. Как только все поля ввода будут заполнены данными, щелкнем по командной кнопке ДОБАВИТЬ. Затем можно начать ввод следующего элемента данных и т.д., пока не будут введены все элементы списка. В заключение закроем окно щелчком по командной кнопке ЗАКРЫТЬ. Каждый новый список следует создавать на отдельном рабочем листе. Фильтрация данных. Выделим заголовки списка. Откроем в меню ДАННЫЕ ► ФИЛЬТР ► АВТОФИЛЬТР В таблице рядом с названиями полей появятся маленькие пиктограммы со стрелками Как известно, это раскрывающиеся списки (рис. 4.11). Рис. 4.11. Раскрывающиеся списки Щелкнув по одной из этих стрелок, получим меню с перечнем значений данного поля (рис. 4.12). 221
Рис. 4.12. Перечень значений поля Щелчком выберем какой-либо пункт из этого перечня. В списке отобразятся только те элементы, у которых значение данного поля совпадает с выбранным значением, т.е. произойдет фильтрация данных. При этом пиктограмма со стрелкой будет изображена другим цветом. Слева в столбце с номерами строк будут видны прежние номера элементов, которые они имели в исходном списке. Если необходимо вернуться к полному списку, то нужно выбрать опцию ВСЕ в перечне значений поля, по которому выполнялась фильтрация. Здесь же есть опция УСЛОВИЕ, позволяющая задать условие фильтрации. Например, выбрать все записи, значение поля у которых больше 10 и т.п. Сортировка данных. Активизируем первую ячейку в столбце «Фамилия». Выберем меню ДАННЫЕ ► СОРТИРОВКА. Откроется диалоговое окно этой директивы, в котором указываются поля сортировки и рядом с каждым полем расположены две селекторные кнопки ПО ВОЗРАСТАНИЮ и ПО УБЫВАНИЮ, указывающие направление сортировки. Печать. Перед распечаткой таблиц необходимо установить параметры страницы с помощью команды меню ФАЙЛ > ПАРАМЕТРЫ СТРАНИЦЫ. Эта процедура во многом сходна с Word. Отличие лишь в том, что таблица здесь может быть распечатана в масштабе. Для этого включим переключатель УСТАНОВИТЬ и укажем масштаб распечатки. Если включить переключатель РАЗМЕСТИТЬ НЕ БОЛЕЕ ЧЕМ НА, то таблица или выделенная область будет уменьшена настолько, чтобы разместиться на количестве страниц, указанном в полях СТР. В ШИРИНУ и СТР. В ВЫСОТУ. 222
Для просмотра таблицы перед печатью используется команда ФАЙЛ ► ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР или кнопка . Выйти из режима предварительного просмотра можно с помощью кнопки ЗАКРЫТЬ или клавиши Esc. Для распечатки таблицы необходимо обратиться в меню ФАЙЛ ► ПЕЧАТЬ, которое имеет такие же настройки, как соответствующая опция в Word. Чтобы напечатать одну копию активных листов, достаточно щелкнуть кнопку 4.4. Основы информоиионных систем. Базы данных 4.4.1. Основные понятия Как уже говорилось в главе 1, в истории развития вычислительной техники наблюдалось два основных направления ее применения. Первое связано с выполнением больших численных расчетов, которые трудно или невозможно произвести вручную. Развитие этой области способствовало ускорению развития методов математического моделирования, численных методов, языков программирования высокого уровня, рассчитанных на удобное представление вычислительных алгоритмов. Второе направление связано с использованием вычислительной техники для создания, хранения и обработки больших массивов данных. Такие задачи решают информационные системы (в дальнейшем — ИС). К ним относятся поисковые, справочные, банковские системы, автоматизированные системы управления предприятием. Для задач первого типа характерны большие объемы вычислительной работы при относительно небольших потребностях в памяти. Задачи второго типа, наоборот, требуют больших объемов внешней памяти при относительно небольших расчетах. Вторая область применения возникла несколько позже первой. Это связано с тем, что на первых этапах внешняя память вычислительных систем была 223
несовершенной, т.е. надежное хранение больших объемов данных не представлялось возможным. Предметом настоящего рассмотрения являются программные продукты второй области применения — информационные системы. Информационная система представляет собой аппаратно-программный комплекс, обеспечивающий выполнение следующих функций: • ввод данных об объектах некоторой предметной области; • надежное хранение и защита данных во внешней памяти вычислительной системы; • дополнение, удаление, изменение данных; • сортировка, выборка данных по запросам пользователей; • выполнение специфических для данной предметной области преобразований информации; • предоставление пользователям удобного интерфейса; • обобщение данных и составление отчетов. Объем данных в ИС может исчисляться миллиардами байт. Отсюда необходимость устройств, хранящих большие объемы данных во внешней памяти. Число пользователей ИС может достигать десятков тысяч, что создает немало проблем в реализации эффективных алгоритмов функционирования ИС. Успешно решаются эти задачи, если данные в информационной системе структурированы. Структурирование данных рассмотрим на примере студенческой группы. Каждый член группы во многом индивидуален, и характеризовать его можно с разных сторон. Но деканат, скорее всего, заинтересуют следующие данные (предметная область): фамилия студента, имя, отчество, курс, наименование группы, массив оценок по изучаемым дисциплинам. Таким образом, из всего многообразия данных выбираются только некоторые, т.е. создается информационная модель объекта. Данные упорядочиваются по порядку следования, по применяемым типам (форматам) данных, после чего они могут быть обработаны автоматом, каковым является компьютер. Совокупность взаимосвязанных данных называется структурой данных. Совокупность структурированных данных, относящихся к одной предметной области, называется базой данных (БД). Совокупность программ, реализующих в БД функции ИС в удобной для пользователя форме, называется системой управления базой данных (СУБД). Программы, производящие специфическую обработку данных в БД, составляют пакет прикладных программ (ППП). Итак, 224
можно заключить, что ИС — это организационное объединение аппаратного обеспечения (АО), одной или нескольких баз данных (БД), системы управления базами данных (СУБД) и пакетов прикладных программ (ППП). 4.4.2. Классификация БД По технологии обработки данных БД подразделяются на централизованные и распределенные. Централизованная БД хранится целиком в памяти одной вычислительной системы. Если система входит в состав сети, то возможен доступ к этой БД других систем. Распределенная БД состоит из нескольких, возможно пересекающихся или дублирующих друг друга БД, хранимых в памяти разных вычислительных систем, объединенных в сеть. По способу доступа к данным БД распределяются на локальный и удаленный (сетевой) доступ. Локальный доступ предполагает, что СУБД обрабатывает БД, которая хранится на том же компьютере. Удаленный доступ — это обращение к БД, которая которая хранится на одном из компьютеров, входящих в компьютерную сеть. Удаленный доступ может быть выполнен по принципу файл-сервер или клиент-сервер. Архитектура файл-сервер предполагает выделение одного из компьютеров сети (сервер) для хранения централизованной БД. Все остальные компьютеры сети (клиенты) исполняют роль рабочих станций, которые копируют требуемую часть централизованной БД в свою память, где и происходит обработка. Однако при большой интенсивности запросов к централизованной БД увеличивается нагрузка на каналы сети, что приводит к снижению производительности ИС в целом. Архитектура клиент-сервер предполагает, что сервер, выделенный для хранения централизованной БД, дополнительно производит обработку клиентских запросов. Клиенты получают по сети уже обработанные данные. Учитывая широкое распространение БД в самых различных областях, в последнее время архитектура клиент-сервер применяется и на одиночных вычислительных системах. В этом случае клиент — программа, которой понадобились данные из БД, по- 8. Информатика 225
сылает запрос серверу — программе, управляющей ведением БД, на специальном универсальном языке запросов. Сервер пересылает программе данные, являющиеся результатом поиска в БД по ее запросу. Этот способ удобен тем, что программа — клиент не обязана содержать все функции поддержания и ведения БД, этим занимается сервер. В результате упрощается написание программ — клиентов. Кроме того, к серверу может обращаться любое количество клиентов. 4.4.3. Модели данных Для реализации основных функций в ИС используются различные принципы описания данных. Ядром любой БД является модель представления данных. Подробному описанию различных моделей посвящена следующая глава. Пока же рассмотрим реляционную модель данных, ориентированную на организацию данных в виде двумерных таблиц. Реляционная модель данных является наиболее универсальной, к ней могут быть сведены другие модели. Важнейшим понятием реляционных моделей данных является сущность. Сущность — это объект любой природы, данные о котором хранятся в БД. Данные о сущности хранятся в двумерных таблицах, которые называют реляционными. Каждая реляционная таблица должна обладать следующими свойствами: • один элемент таблицы — один элемент данных; • все столбцы таблицы содержат однородные по типу данные (целочисленный, числовой, текстовый, и т.д.); • каждый столбец имеет уникальное имя; • число столбцов задается при создании таблицы; • порядок записей в отношении может быть произвольным; • записи не должны повторяться; • количество записей в отношении не ограничено. Объекты, их взаимосвязи и отношения представлены в виде таблиц. Формальное построение таблиц связано с фундаментальным понятием отношение (термин реляционная исходит от английского слова relation — отношение). Для заданных произвольных конечных множеств М,, М2, ..., MN множество всевозможных наборов вида (ц,, |12,..., |xN), где ц^М,, |12еМ2, ..., |ingMn называют их декартовым произведением 226
M,x M2x ... х MN. Отношением R, определенным на множествах М,, М2,..., MN, называется подмножество декартова произведения М,х М2х ...> х MN. При этом множества М,, М2, ..., MN называются доменами отношения, а элементы декартова произведения — кортежами отношения. Число N определяет степень отношения, количество кортежей — его мощность. В реляционной таблице каждый столбец есть домен (его альтернативное название поле), а совокупность элементов каждой строки — кортеж (или запись). Строка заголовков называется схемой отношения. Например, схема отношения СТУДЕНТ может быть следующей: СТУДЕНТ (ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ФАКУЛЬТЕТ, КУРС, ГРУППА), здесь СТУДЕНТ - отношение, а ФАМИЛИЯ, ИМЯ и т.д. — атрибуты. В отношении каждый конкретный экземпляр сущности представляется строкой, которая называется кортежем (или записью). Следующая таблица представляет отношение СТУДЕНТ (рис. 4.13). Отношение СТУДЕНТ (вся) таблица Схема отношения (строка заголовков) Атрибуты (поля) (отдельные заголовки) Строка (запись, кортеж) ФАМИЛИЯ Андреев Борисов Яковлев ИМЯ Иван Петр Иван ОТЧЕСТВО Иванович Иванович Петрович ФАКУЛЬТЕТ Конструкторский Конструкторски й Технологичес кий КУРС 1 2 1 Рис. 4.13. Отношение СТУДЕНТ Первичным ключом отношения называется поле или группа полей, однозначно определяющие запись. В отношении СТУДЕНТ первичным ключом может быть поле ФАМИЛИЯ, если во всем списке нет однофамильцев — это будет простой ключ. Если есть однофамильцы, то совокупность полей — фамилия, имя, отчество — создадут составной первичный ключ. На практике обычно в качестве ключевого выбирают поле, в котором совпадения заведомо исключены. 227
Для рассматриваемого примера таким полем может служить номер зачетной книжки студента. Свойства первичного ключа: • уникальность — в таблице может быть назначен только один первичный ключ, у составного ключа поля могут повторяться, но не все; • неизбыточность — не должно быть полей, которые, будучи удаленными из первичного ключа, не нарушат его уникальность; • в состав первичного ключа не должны входить поля типа, комментарий и графическое. Чтобы избежать повторяющихся записей, приходят к связыванию таблиц. Например, если в отношении СТУДЕНТ надо описать вуз, в котором он обучается, то, на первый взгляд, можно было бы включить в отношение следующие поля СТУДЕНТ (ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ФАКУЛЬТЕТ, КУРС, ГРУППА, НАЗВАНИЕ вуза, АДРЕС). Но при заполнении такой таблицы для каждого студента придется указывать довольно длинное наименование вуза и его адрес, что неудобно. Более того, любая незначительная ошибка во вводе этих полей приведет к нарушению непротиворечивости базы данных. Например, ошибка в адресе вуза приведет к тому, что в БД появятся два вуза с одинаковым наименованием и разными адресами. Поступают в таком случае так: в отношение СТУДЕНТ вводят поле «код вуза» (целое число) и добавляют еще одно отношение ВУЗ (код вуза, название, адрес). СТУДЕНТ и ВУЗ при этом будут связаны по полю «код вуза». СТУДЕНТ (ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ФАКУЛЬТЕТ, КУРС, ГРУППА, КОД вуза) ВУЗ (КОД вуза, НАЗВАНИЕ, АДРЕС, ТЕЛЕФОН) При работе с такими таблицами повторяться могут только данные в поле «КОД вуза», а все необходимые сведения о вузе можно взять из отношения ВУЗ. Заметим при этом, что ввод в поле «КОД вуза» целого числа, вместо длинного названия, принесет гораздо меньше ошибок. В отношении ВУЗ поле «КОД вуза» будет первичным ключом, а в отношении СТУДЕНТ поле «КОД вуза» будет внешним ключом. Для связи реляционных таблиц необходимо ввести в обе таблицы одинаковые по типу поля, по которым определится связь между 228
записями обеих таблиц. Связи бывают нескольких типов «один к одному», «один ко многим», «многие ко многим». В вышеприведенном примере была установлена связь «один ко многим», т.е. одной записи в таблице ВУЗ соответствуют многие записи в таблице СТУДЕНТ. 4.4.4. Проектирование баз данных Проектирование базы данных является одним из этапов жизненного цикла ИС. Ввиду сложности этот этап выполняется, как правило, коллективом разработчиков и включает следующие работы: • анализ предметной области; • проектирование и непосредственно кодирование (создание запросов и приложений); • тестирование и сопровождение. Анализ преЭметной области Проектирование баз данных начинается с анализа предметной области, в которой будет работать ИС. Как правило, этот этап выполняется разработчиками ИС совместно с заказчиком. Обычным языком описываются информационные объекты, их свойства, их взаимосвязи, описываются пожелания будущих пользователей. Результатом такой работы является техническое задание на разработку ИС. В техническом задании более строго указывается список исходных данных, список запросов к ИС, список выходных данных, оговаривается интерфейс, определяющий переход от представления данных в БД к представлению, принятому среди пользователей, и обратно. В общем случае пользователи представляют данные в виде документов различных видов, от произвольных текстов до справок и таблиц фиксированного формата. Затем собственно и начинается проектирование базы данных. Проектирование баз данных осуществляется на двух уровнях — физическом и логическом. На физическом уровне решаются вопросы размещения данных на внешних носителях. Во многом эта работа выполняется СУБД автоматически без участия разработчика. На логическом уровне составляется общий список полей, который может насчитывать от единиц до тысяч. Описывают каждое поле по типу данных. Общий список полей разбивается на основные таб- 229
лицы. Дальнейшее рассмотрение информационной структуры приводит к разбиению — нормализации — основных таблиц на более мелкие с целью избежания многократно повторяющихся данных в записях, что уменьшает объем памяти, занимаемый базой данных на диске, и обеспечивает непротиворечивость данных в БД. Процесс нормализации имеет итерационный (пошаговый) характер, осуществляется методом нормальных форм. Суть метода состоит в последовательном переводе таблицы из одной нормальной формы в другую, причем каждая последующая устраняет определенный вид функциональной зависимости между полями таблицы. Всего в теории описаны шесть нормальных форм, на практике чаще всего применяются первые три. Первая нормальная форма. Отношение называется приведенным к первой нормальной форме, если все его атрибуты неделимы. Например, отношение, содержащее поле ФИО, не приведено к первой нормальной форме, если в запросах БД требуется выделить отдельно фамилию или имя. Разработчики БД изначально строят так исходное отношение, чтобы оно было в первой нормальной форме. Вторая нормальная форма. Для приведения отношений ко второй нормальной форме введем понятие функциональной зависимости. Функциональная зависимость полей — это зависимость, при которой в строке определенному значению ключевого поля соответствует только одно значение не ключевого поля. Функционально не ключевое поле зависит от составного ключа, но не зависит от любого поля, входящего в составной ключ. Например, в отношении СТУДЕНТ (ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ФАКУЛЬТЕТ, КУРС, ГРУППА) первичным ключом является совокупность полей ФАМИЛИЯ + ИМЯ + ОТЧЕСТВО. Поля ФАКУЛЬТЕТ, КУРС, ГРУППА функционально полно зависят от составного ключа. Отношение находится во второй нормальной форме, если оно находится в первой нормальной форме, и каждое не ключевое поле функционально полно зависит от составного ключа. Например, в отношении УСПЕВАЕМОСТЬ (НОМЕР ЗАЧЕТКИ, ФАМИЛИЯ, ДИСЦИПЛИНА, ОЦЕНКА) составным ключом является совокупность НОМЕР ЗАЧЕТКИ + ДИСЦИПЛИНА. Это отношение находится в первой нормальной форме, но оно не находится во второй нормальной форме, так как поле ФАМИЛИЯ не имеет полной фун- 230
кциональной зависимости от составного ключа. Для перевода этого отношения во вторую нормальную форму необходимо исключить из него поле ФАМИЛИЯ, так как оно функционально зависит от НОМЕРА ЗАЧЕТКИ. Т.е. исходное отношение необходимо разбить на два связанных отношения УСПЕВАЕМОСТЬ (НОМЕР ЗАЧЕТКИ, ДИСЦИПЛИНА, ОЦЕНКА) и СПИСОК (НОМЕР ЗАЧЕТКИ, ФАМИЛИЯ). Связь здесь осуществляется по полю НОМЕР ЗАЧЕТКИ. Третья нормальная форма. Третья нормальная форма позволяет устранить транзитивную зависимость. Транзитивная зависимость существует в отношении, если существуют два описательных поля, в которых первое зависит от ключа, а второе зависит от первого. Отношение находится в третьей нормальной форме, если оно находится во второй нормальной форме, и каждое не ключевое поле не тран- зитивно зависит от ключа. Например, в отношении СТУДЕНТ (ФАМИЛИЯ, ФАКУЛЬТЕТ, НАЗВАНИЕ вуза, АДРЕС) поле АДРЕС транзитивно (через поле НАЗВАНИЕ вуза) зависит от ключа ФАМИЛИЯ. При заполнении экземплярами такого отношения поле Адрес будет многократно повторяться. Для устранения транзитивной зависимости в классе используется расщепление отношения на несколько. Например, отношение СТУДЕНТ расщепляется на два: СТУДЕНТ (ФАМИЛИЯ, ФАКУЛЬТЕТ, НАЗВАНИЕ вуза), ВУЗ (НАЗВАНИЕ вуза, АДРЕС) связь по полю НАЗВАНИЕ вуза. Процесс нормализации заканчивается созданием схемы данных, в которой указываются все нормализованные таблицы с их полями и взаимосвязями между ними. Указываются типы взаимосвязей. Проектирование Дальнейшая работа над проектом связана с конкретной СУБД, поэтому, предварительно учитывая требования заказчика и намеченную архитектуру ИС, выбирают СУБД. Мы рассмотрим эту часть на примере СУБД MS Access (разработка Microsoft). СУБД Access является системой управления базами данных реляционного типа. Всю базу данных по умолчанию Access хранит на диске в виде одного файла с расширением *.mdb, а вообще Access поддерживает ряд стандартов БД (dbase, Paradox и др). Данные хранятся в виде таблиц, строки которых состоят из наборов полей определенных типов. С каждой таблицей могут быть связаны индексы 231
(ключи), задающие нужные пользователю порядки на множестве строк. Таблицы могут иметь однотипные поля (столбцы), и это позволяет устанавливать между ними связи, выполнять операции реляционной алгебры. Типичными операциями над базами данных являются: • работа с таблицами (создание, модификация, удаление таблиц, создание и модификация схем взаимосвязи существующих таблиц); • ввод данных в таблицы непосредственно или с помощью формы, проверку вводимых данных; • поиск данных в таблицах по определенным критериям (выполнение запросов); • создание отчетов о содержимом базы данных. Таблицы. Работа в Access начинается с определения реляционных таблиц и их полей, которые будут содержать данные, т.е. создания макета таблицы. Вид рабочего окна Access представлен на рис. 4.14. Рис. 4.14. Вид рабочего окна MSAccess 232
Открытие окна сопровождается записью на диске файла базы данных. Затем в рабочем окне Access появляется окно вновь созданной базы данных. Изучая окно базы данных, заметим, что все основные объекты Access (таблицы, запросы, отчеты, формы) могут создаваться в режиме конструктора и в режиме мастера. Создание таблиц предпочтительней в режиме конструктора (рис. 4.15). Здесь задаются имена полей и свойства, ниже находится редак- Рис. 4.15. Создание таблиц в режиме конструктора тор свойств полей, где указываются свойства (если поле текстовое — его длина, числовое — тип целый или вещественный). Редактор свойств полей имеет скрытые элементы управления. Например, щелчок по полю ввода «размер поля» приведет к появлению элемента списка , в результате нажатия на который появляется раскрывающийся список выбора свойств. В завершении создания таблицы при 233
записи задается имя таблицы. Схема отношения может быть отредактирована путем повторного открытия ее в режиме конструктора. Далее определяются реляционные связи между таблицами, для чего открывается окно «Схема данных» нажатием кнопки в окне Access. В окне «Добавление таблицы» выбираем таблицы, которые следует связать. Затем методом перетаскивания указываем связываемые поля, после чего появляется окно «Изменение связей» (рис. 4.16.), в котором указываем тип обеспечения целостности. Завершается этот этап нажатием кнопки «Создать». Рис. 4.16. Окно «Изменение связей» Формы — одно из основных средств работы с базами данных в Access, используются для ввода новых записей, просмотра и редактирования уже имеющихся данных, задания параметров запросов и вывода ответов на них и др. Формы представляют собой окна с размещенными в них элементами управления. Существует возможность динамического создания форм при исполнении программы, однако 234
естественным режимом их создания является режим визуального конструирования. Выбор команды «Форма» в меню «Вставка» выводит на экран окно «Новая форма», позволяющее задать таблицу или запрос, для которых создается новая форма, и указать режим ее создания. Создание формы можно автоматизировать, используя «Мастер форм». Для создания формы с помощью Мастера форм предполагается следующая последовательность действий: меню Формы / Создать. На экране появится окно диалога «Новая форма», в котором необходимо выбрать метод построения формы и исходный объект для построения формы. В качестве такого объекта могут быть выбраны таблица или запрос. На следующих шагах Мастер форм предлагает выбрать форму представления отчета (в столбец, ленточную, табличную или выровненную) и стиль оформления. Стили представляют собой набор различных фоновых рисунков с соответствующим подбором шрифтов и форм полей. На последнем шаге можно изменить предлагаемое название формы на свое собственное и завершить процесс создания формы, нажав кнопку «Готово». В режиме конструктора можно создать специальные формы с листами данных, диаграммами и сводными таблицами в формате Excel. На форме можно расположить элементы управления в виде графических примитивов, надписей, рисунков и др. Элементы управления могут использоваться для ввода и отображения дат, а также для выполнения вычислений и вывода результата. Элементами управления являются кнопки команд, которые активизируют исполнение различных операций; объекты типа «подчиненные формы» (бланк таблицы, дочерней по отношению к форме); объекты, облегчающие восприятие данных, такие как календарь или счетчик, а также элементы пользователя. Запросы. При разумном подходе к проектированию баз данных пользователи не получают прямой доступ к базовым таблицам, а делают это посредством запросов. Запрос может предоставлять пользователю выборку из полей одной таблицы или из полей разных таблиц. Создать запрос можно в режиме мастера или в режиме конструктора. Создадим запрос в режиме конструктора, для чего в окне базы данных следует щелкнуть на кнопках «Запрос» и «Конструктор». Прежде всего, откроется окно «Добавление таблицы», в ко- 235
тором выберем таблицы, на основе которых строится запрос (допустим, ВУЗ и СТУДЕНТ). В результате откроется окно (рис. 4.17), называемое бланком запроса по образцу, где в верхней части указанные таблицы предстанут вместе со схемой данных. Двойным щелчком укажем на те поля, которые будут участвовать в запросе. Пусть это будут поля из таблицы СТУДЕНТ (ФАМИЛИЯ, ФАКУЛЬТЕТ) и из таблицы ВУЗ (НАЗВАНИЕ вуза). Указанные поля появятся в нижней части бланка запроса по образцу. Таким образом, нами был создан простейший запрос, который называется запрос на выборку на языке запросов по образцу (QBE — Query By Example). При его активации кнопкой f будет построена таблица с указанием фамилии, факультета и вуза, в котором обучается студент. Закрытие запроса сопровождается присвоением ему имени. Заметим, что запрос на выборку создает не физическую таблицу на диске, а виртуальную Рис. 4.17. Бланк запроса 236
в оперативной памяти, которая существует, пока мы пользуемся запросом. Запрос на выборку может создавать большие таблицы, работать с которыми неудобно, поэтому более целесообразно результаты запроса сортировать. Сортировки возможны по возрастанию и по убыванию. Направление это указывается в строке «Сортировка бланка запроса по образцу». Если сортировка указана по нескольким полям, то сначала будет произведена сортировка по первому полю; при обнаружении повторяющихся записей, сортировка будет по второму полю и т.д. Бланк запроса по образцу допускает отбор данных по условию. Для этого в строке «Условие отбора» можно поставить, например, в поле «Фамилия» = Иванов, и будут отобраны все студенты с фамилией Иванов. Возможности языка QBE весьма широки, но все же ограничены. Если требуется нечто большее, то меню окна ЗАПРОС ►ВИД ► РЕЖИМ SQL позволяет построить запрос на языке SQL, более универсальном, но требующем специальных знаний. Отчеты. Отчет похож на запрос, но служит для форматированного вывода данных на бумагу. Для создания отчетов рационально воспользоваться Мастером отчетов (база данных СОЗДАТЬ ► НОВЫЙ ОТЧЕТ), который похож на Мастера форм. Выполняется отчет за ряд шагов, в процессе которых: • выясняются таблицы и запросы, на основе которых строится отчет; • поля, по которым производится сортировка, фильтрация; • стиль оформления печатного документа. Редактировать отчет, созданный Мастером, можно с помощью конструктора. 4.4.5. CASE-системы для разработки информационных систем Проектирование информационных систем представляет собой сложную, трудоемкую и длительную работу, требующую высокой квалификации участвующих в ней специалистов. Однако в недалеком прошлом проектирование нередко выполнялось на интуитивном уровне неформализованными методами, включающими в себя эле- 237
менты искусства, практический опыт, экспертные оценки и дорогостоящие экспериментальные проверки качества функционирования. Кроме того, в процессе создания и функционирования информационные потребности пользователей ИС постоянно изменяются или уточняются, что еще более усложняет разработку и сопровождение таких систем. В начале 70-х гг. в США был отмечен кризис программирования {software crisis). Это выражалось в том, что большие проекты стали выполняться с отставанием от графика или с превышением сметы расходов, разработанный продукт не обладал требуемыми функциональными возможностями, производительность его была низка, качество получаемого программного обеспечения не устраивало потребителей. Аналитические исследования и обзоры, выполняемые в течение ряда лет ведущими зарубежными аналитиками, показывали, что только немногим более 16 % проектов завершались в срок, не превысили запланированный бюджет и реализовали все требуемые функции и возможности, остальные превысили бюджет или запоздали в сроках, а свыше 30 % проектов были аннулированы до завершения. Потребность контролировать процесс разработки ПО, прогнозировать и гарантировать стоимость разработки, сроки и качество результатов привела в конце 70-х гг. к необходимости перехода от кустарных к индустриальным способам создания ПО и появлению совокупности инженерных методов и средств создания ПО, объединенных общим названием «программная инженерия» (software engineering). Впервые этот термин был использован как тема конференции, проводившейся под эгидой NATO в 1968 г. В основе программной инженерии лежит одна фундаментальная идея: проектирование ПО является формальным процессом, который можно изучать и совершенствовать. Освоение и правильное применение методов и средств создания ПО позволяет повысить качество ИС, обеспечить управляемость процесса проектирования ИС и увеличить срок ее жизни. Тенденции развития современных информационных технологий определяют постоянное возрастание сложности ПО ИС, что вызвало потребность в программно-технологических средствах специального класса — CASE-средствах, реализующих CASE-технологию создания и сопровождения ИС. Термин CASE (Computer Aided Software 238
Engineering) имеет весьма широкое толкование. Первоначально значение термина CASE ограничивалось вопросами автоматизации разработки только лишь программного обеспечения, а в настоящее время оно приобрело новый смысл и охватывает процесс разработки сложных ИС в целом. Таким образом, к концу 80-х гг. назрела необходимость в CASE- технологиях и CASE-средствах и возникли предпосылки для их появления: было проведено много исследований в области программирования (разработка и внедрение языков высокого уровня, методов структурного и модульного программирования, языков проектирования й средств их поддержки, формальных и неформальных языков описания системных требований и спецификаций и т. д.). CASE-технология представляет собой совокупность методов проектирования ИС, а также набор инструментальных средств, позволяющих в наглядной форме моделировать предметную область, анализировать эту модель на всех стадиях разработки и сопровождения ИС и разрабатывать приложения в соответствии с информационными потребностями пользователей. Большинство существующих CASE-средств основано на методах структурного или объектно-ориентированного анализа и проектирования, использующих спецификации в виде диаграмм или текстов для описания внешних требований, связей между моделями системы, динамики поведения системы и архитектуры программных средств. Были созданы CASE-системы: • ориентированные на этапы жизненного цикла ПО, Design/IDEF (Meta Sotfware), BPWin (LopicWorks)}; • функционально полные, т.е. используемые на всех этапах жизненного цикла Designer (Oracle) Developer/2000 (Oracle); • независимые от СУБД ODBC Sdesigner (SPD), ERWin (Logic- Works), Silverrun (Silverrun Technologies). 4.5. Системы компьютерной графики Системы компьютерной графики — это отдельные программы и аппаратно-программные комплексы, создающие и обрабатывающие различные изображения на экране монитора. Как уже было сказано, все изображения, создаваемые с помощью компьютеров, можно разделить на два класса — растровые и векторные. 239
В растровой графике изображение какого-либо графического объекта описывается конкретным расположением и цветом точек (пикселей), привязанных к сетке (растру, см. главу 1), т.е. оно создается, как в мозаике. Чем больше точек и чем они мельче, тем визуально качественнее изображение (и больше размер файла). Одна и та же картинка может быть представлена с лучшим или худшим качеством в соответствии с разрешением, т.е. количеством точек на единицу длины. Разрешение обычно измеряется в точках на дюйм — dpi или в пикселях на дюйм — ppi. При редактировании растровых графических объектов изменяется цвет пикселей, а не форма линий. Вывод растровой графики на устройства с более низким разрешением, чем разрешение самого изображения, понизит его качество. Кроме того, качество характеризуется еще и количеством цветов и оттенков, которые может принимать каждая точка изображения. Чем большим количеством оттенков характеризуется изображение, тем большее количество двоичных разрядов потребуется для описания каждого пикселя. Растровое представление обычно используют для изображений фотографического типа с большим количеством деталей или оттенков. К сожалению, масштабирование таких картинок в любую сторону обычно ухудшает качество. При уменьшении количества точек теряются мелкие детали и деформируются надписи (правда, это может быть не так заметно при уменьшении визуальных размеров самой картинки — т.е. сохранении разрешения). Добавление пикселей приводит к ухудшению резкости и яркости изображения, так как новым точкам приходится давать оттенки, средние между двумя и более граничащими цветами. В настоящее время распространены следующие форматы растровой графики .bmp, .pcx, .gif, .tif, jpg, .png и др. В векторной графике изображения описываются с помощью кривых линий, называемых векторами (каждая кривая аппроксимируется многочленом третьего порядка, т.е. массивом коэффициентов — многомерным вектором), а также параметров, описывающих их цвета и расположение. Например, изображение какой-либо фигуры на экране описывается точками, через которые проходит линия контура фигуры. Цвет фигуры задается цветом контура и цветом области внутри этого контура. 240
При редактировании элементов векторной графики можно изменять параметры линий, описывающих форму графических объектов, можно переносить их, менять размер, форму (это делается математическими преобразованиями), цвет, но это не отразится на качестве их визуального представления. Векторная графика не зависит от разрешения, т.е. может быть показана в разнообразных выходных устройствах с различным разрешением без потери качества. Очевидно, описание простых векторных графических объектов занимает значительно меньше места, чем растровых. Еще одно преимущество — качественное масштабирование в любую сторону. Увеличение или уменьшение объектов производится увеличением или уменьшением соответствующих коэффициентов в математических формулах. Но векторный формат становится невыгодным при передаче изображений с большим количеством оттенков или мелких деталей (например, фотографий). Ведь каждый мельчайший блик в этом случае будет представляться не совокупностью одноцветных точек, а уравнением линии (математической формулой) или совокупностью графических примитивов, каждый из которых является формулой. Это приводит к увеличению файлов. Таким образом, выбор растрового или векторного формата зависит от целей и задач работы с изображением. Если нужна фотографическая точность цветопередачи, то предпочтительнее растр. Логотипы, схемы, элементы оформления удобнее представлять в векторном формате. Понятно, что и в растровом и в векторном представлении графика (как и текст) выводятся на экран монитора или печатное устройство в виде совокупности точек. В Интернете графика представляется в одном из растровых форматов, понимаемых браузерами без установки дополнительных модулей — GIF, JPG, PNG. Из-за описанных выше особенностей представления изображения, для каждого типа приходится использовать отдельный графический редактор — растровый или векторный. Разумеется, у них есть общие черты — возможность открывать и сохранять файлы в различных форматах, использование инструментов с одинаковыми названиями (карандаш, перо и т.д.) или функциями (выделение, перемещение, масштабирование и т.д.), выбирать нужный цвет или оттенок. Однако принципы реализации процессов рисования и редактирования различны и обусловлены природой соответствующего формата. Так, если в растровых редакторах говорят о выделении объекта, то 241
имеют в виду совокупность точек в виде области сложной формы. Процесс выделения очень часто является трудоемкой и кропотливой работой. При перемещении такого выделения появляется «дырка». В векторном же редакторе объект представляет совокупность графических примитивов, и для его выделения достаточно выбрать мышкой каждый из них. А если эти примитивы были сгруппированы соответствующей командой, то достаточно «щелкнуть» один раз в любой из точек сгруппированного объекта. Перемещение выделенного объекта обнажает нижележащие элементы. С некоторыми особенностями работы с простым векторным редактором Microsoft Draw мы познакомились в разделе 4.2.3 «Создание рисунка». Этот редактор встроен в офисный интегрированный пакет программ MS Office. Существует тенденция к сближению редакторов векторной и растровой графики. Большинство современных векторных редакторов способны использовать растровые картинки в качестве фона, а то и переводить в векторный формат части изображения встроенными средствами (трассировка). Причем обычно имеются средства редактирования загруженного фонового изображения. Кроме того, может осуществляться непосредственный перевод сформированного векторного изображения в растровый формат и дальнейшее использование как нередактируемого растрового элемента. Причем, все это помимо обычно имеющихся конвертеров из векторного формата в растровый с получением соответствующего файла. Некоторые растровые редакторы способны грузить один из векторных форматов (обычно .wmf) в качестве фона или сразу переводить их в растр с возможностью непосредственного редактирования. 4.5.1. Растровый редактор Paint Paint — простейший графический редактор (разработчик Microsoft), предназначенный для создания и редактирования растровых графических изображений в основном формате Windows (BMP) и форматах Интернета (GIF и JPEG). Он приемлем для создания простейших графических иллюстраций, в основном схем, диаграмм и графиков, которые можно встраивать в текстовые документы. В Paint можно создавать рекламу, буклеты, объявления, приглашения, поздравления и др. 242
Основные возможности Paint: • Проведение прямых и кривых линий различной толщины и цвета. • Использование кистей различной формы, ширины и цвета. • Построение различных фигур — прямоугольников, многоугольников, овалов, эллипсов — закрашенных и незакрашенных. • Помещение текста на рисунок. • Использование преобразований — поворотов, отражений, растяжений и наклона. Начало работы с Paint. Графический редактор Paint встроен в операционную систему Windows. Для запуска его применяется следующий способ: кнопка ПУСК ► ПРОГРАММЫ ► СТАНДАРТНЫЕ ► PAINT Для окончания работы с Paint можно использовать пункты меню ФАЙЛ, и далее ВЫХОД. Окно графического редактора Paint имеет стандартный вид (рис. 4.18). В меню редактора входят команды ФАЙЛ, ПРАВКА, ВИД, РИСУНОК, ПАЛИТРА. В палитру инструментов входит ряд кнопок: «Выделение произвольной области», «Выделение», «Ластик», «Заливка», «Выбор цветов», «Масштаб», «Карандаш», «Кисть», «Распылитель», «Надпись», «Линия», «Кривая», «Прямоугольник», «Многоугольник», «Эллипс», «Скругленный прямоугольник». В левом нижнем углу расположена Панель цветов. Управлять работой в Paint можно посредством меню и панели инструментов. Существуют команды, вызываемые или только через меню, или только через панель инструментов. Задание размеров рисунка производится посредством выбора из меню РИСУНОК пункта АТРИБУТЫ и вводом в поля ШИРИНА и ВЫСОТА нужных значений. Таким образом, размеры текущего рисунка изменяются. Следует отметить, что если текущие размеры рисунка превышают новые размеры, то рисунок обрезается по правому и нижнему краю. Если новые размеры больше текущих размеров, то добавленная область получает текущий фоновый цвет. Отменить последнее изменение можно командой ОТМЕНИТЬ в меню ПРАВКА. Также есть возможность выбрать единицы измерения и тип цветовой палитры (цветная или черно-белая). Создание нового рисунка. Для создания нового рисунка применяют пункты меню ФАЙЛ ► СОЗДАТЬ. После этого в рабочей области окна появится белый прямоугольник, на фоне которого и рабо- 243
Рис. 4.18. Окно графического редактора Paint тают. Сохраняется рисунок одним из ранее известных способов: че- рез меню ФАЙЛ или при закрытии окна. Сохранение, как было отмечено раньше, можно произвести в одном из форматов: .bmp, .gif, •JPg. Панель инструментов. Кратко охарактеризуем набор стандартных инструментов графического редактора Paint (рис. 4.19). Карандаш — при нажатой левой кнопки мыши за курсором мыши рисуется его след выбранного цвета толщиной 1 пиксел. При отпущенной левой кнопке след не рисуется. Кисть — действие похоже на карандаш, но можно менять форму кисти — кружок, квадратик, линия и др. Распылитель — рисование с эффектом распыления краски. 244
Рис. 4.19 Панель инструментов Paint Ластик — для стирания части рисунка. Можно менять размер ластика. Удаленный участок будет закрашен цветом фона. Заливка — позволит закрасить выбранным цветом внутреннюю часть произвольной замкнутой области. Для этого требуется выполнить щелчок в любой точке внутри области. Если область не является замкнутой, то закрасится вся рабочая область. Линия — предназначена для рисования прямой линии (отрезка) выбранного цвета и толщины. Концы отрезка — места, где была нажата и отпущена левая кнопка мыши. Кривая — предназначена для рисования гладких кривых линий, соединяющих заданные точки, выбранного цвета и толщины. Сначала проводят прямую линию, затем при нажатой левой кнопке мыши кривую можно дважды изогнуть в указанных направлениях. Прямоугольник — используется для рисования закрашенных и незакрашенных прямоугольников и квадратов. Требуется нажать на 245
левую кнопку мыши, перенести курсор в иную точку и отпустить кнопку. Возможные режимы — «только рамка», «рамка и заполнение», «только заполнение». Многоугольник — рисование многоугольников. Для рисования первой стороны требуется перетащить курсор при нажатой кнопке. Для построения следующих сторон можно щелкать мышкой в вершинах многоугольника. Эллипс — рисование эллипса, вписанного в намеченный прямоугольник. Можно выбрать режим (см. прямоугольник). Округленный прямоугольник — рисование прямоугольника с округленными вершинами. Выбор цвета. Для выбора цвета можно использовать два способа. Во-первых, существует палитра цветов с 28 предлагаемыми цветами (рис. 4.20). Рис. 4.20. Цветовая палитра Paint Для выбора цвета линии и закраски следует щелкнуть левой кнопкой мыши над нужным цветом. Для выбора цвета фона щелкают правой кнопкой. Используемые по умолчанию основной и фоновый цвета отображаются в левом нижнем углу окна Paint. Во-вторых, можно выбрать инструмент «Выбор цвета» и щелкнуть им в том месте экрана, который закрашен нужным цветом. Можно также щелкать левой или правой кнопкой мыши. Процесс рисования. Для того чтобы рисовать, закрашивать, менять цвет, делать надписи, стирать и т.д., в Paint необходимо выбрать нужный инструмент. Для этого используется палитра инструментов. Необходимо щелкнуть на кнопке с нужным инструментом. После этого выбранная кнопка будет находиться в нажатом состоянии. Курсор мыши также изменит свою форму. Перемещение курсора по рабочей области при нажатой левой кнопке мыши приводит к использованию инструмента и изменению рисунка. При отжатой кнопке мыши происходит простое перемещение курсора без изменения рисунка. 246
Редактирование рисунка. Инструмент «Выделение произвольной области» позволяет выделить фрагмент — произвольную область рисунка, ограниченную построенной линией. Для этого требуется активизировать инструмент, а затем при нажатой левой кнопке нарисовать замкнутую область произвольной формы. Инструмент «выделение» позволяет выделить произвольную прямоугольную область. Фрагмент рисунка можно переносить на другое место, создавать несколько копий фрагмента или передавать его в другое приложение. Выделенную область можно перетащить на другое место. Для этого нажимают левую кнопку на области, затем, не отпуская ее, перетаскивают мышь на другое место. Если при этом удерживать нажатой клавишу Ctrl, то будет перенесена копия фрагмента. Выделенную область можно поместить в буфер через меню ПРАВКА ► КОПИРОВАТЬ (ВЫРЕЗАТЬ). Над фрагментом рисунка можно производить и другие операции — изменять размеры, растягивать, поворачивать, наклонять и отражать с помощью команд меню РИСУНОК. Вставка в рисунок готовых фрагментов из буфера или из файла ПРАВКА ► ВСТАВИТЬ. При этом вставленный фрагмент первоначально располагается в верхнем левом углу экрана и его требуется перетащить на нужное место мышкой при нажатой левой кнопке. Отмена выполненной операции в Paint Во время редактирования рисунков нельзя изменять уже законченные элементы графического изображения — можно только их удалять, или переносить, или рисовать поверх них. Если рисунок случайно испорчен, можно отменить три последних сделанных изменения рисунка. Для этого используют меню ПРАВКА ► ОТМЕНИТЬ. Или можно нажать на комбинацию клавиш Ctrl + Z. Если операцию отменили по ошибке, то ее можно восстановить нажатием на клавишу F4. Преобразование рисунка. С помощью команд подменю РИСУНОК можно отражать, растягивать, сжимать, увеличивать или наклонять выделенные фрагменты рисунка. С помощью команды ОТРАЗИТЬ/ ПОВЕРНУТЬ можно отразить выделенный фрагмент относительно вертикальной или горизонтальной оси. Для этого в диалоговом окне есть переключатели «Отразить слева направо», «Отразить сверху вниз» и «Повернуть на угол 90, 180 и 270 градусов». С помощью команды РАСТЯНУТЬ/НАКЛОНИТЬ можно растянуть или наклонить выделенный фрагмент по вертикали или по го- 247
ризонтали. Для этого в диалоговом окне есть соответствующие переключатели и поля ввода. Предварительный просмотр, печать. Полученный рисунок можно напечатать на принтере через подменю ФАЙЛ ► ПЕЧАТЬ. Из-за различий между разрешающей способностью экрана и принтера, один и тот же рисунок на экране и на бумаге может выглядеть по- разному. Чтобы заранее проверить, как будет выглядеть рисунок в отпечатанном виде, используют подменю ФАЙЛ ► ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР. Далее с помощью кнопок «Крупнее» и «Мельче» можно подобрать подходящий масштаб изображения. Используя подменю ФАЙЛ ► МАКЕТ СТРАНИЦЫ, можно изменить размер страницы рисунка и используемый принтер. 4.6. Офисные интегрированные программные средства Среди множества интегрированных пакетов программ наиболее распространенным является пакет офисных программ и, в частности Microsoft Office (разработчик Microsoft). Он включает несколько приложений, образующих единую среду для обработки самой различной информации, которая может встретиться в работе офиса. В его состав входят: 1) текстовый процессор Microsoft Word; 2) электронные таблицы Microsoft Excel; 3) пакет подготовки и демонстрации презентаций Microsoft PowerPoint; 4) организатор и планировщик работы Microsoft Outlook; 5) система управления базами данных (СУБД) Microsoft Access; и д.р. Перечисленные приложения тесно интегрированы. Это означает, что все программы, входящие в состав Microsoft Office, имеют удобные возможности обмена данными. Например, если необходимо подготовить финансовый отчет по результатам некоторого периода, содержащий иллюстрации, то данные можно импортировать из Microsoft Access, обработать в Microsoft Excel, построить на их основе графики и диаграммы и затем поместить их в текст документа, который создан в Microsoft Word. Пере- 248
мещение диаграммы производится с помощью операций копирования в буфер обмена Microsoft Windows и вставки в документ, которые доступны через основное меню приложения, через панели инструментов, через горячие клавиши или через контекстное меню, которое появляется при нажатии на правую кнопку мыши. Наконец иллюстрацию, как и любой другой объект, можно «связать» с документом, просто «захватив» мышью в одном приложении и «перетащив» на подходящее место в другом (режим «Drag and Drop»). Приложения Microsoft Office допускают обмен любыми данными между любыми приложениями. При перенесении отдельных объектов из одного приложения в другое помимо обычной операции копирования/вставки возможно использование механизма связывания оригинального объекта и его копии. В этом случае при изменении исходных данных в таблице Excel меняется построенная на их основе диаграмма, а вместе с ней и та копия диаграммы, которая содержится в документе Microsoft Word. Это дает возможность эффективной работы с составными документами, в которых используются различные источники. Например, данные можно взять из базы данных Access. Они будут обновляться автоматически, и любой, кто захочет ознакомиться с таким документом, увидит самые последние цифры. Семейство Microsoft Office содержит набор инструментов, общих для всех приложений. К ним относятся механизмы проверки правописания и грамматики, средство для рисования, инструмент для создания красочных заголовков, редактор организационных диаграмм, инструмент для редактирования математических формул, редактор фотоизображений, библиотека картинок и т. д. Сюда же относятся и панели инструментов, и даже меню, которые являются стандартными элементами любого приложения Microsoft Office. Начиная с версии 97, в Microsoft Office входит приложение — Microsoft Outlook. Это приложение представляет собой инструмент для организации и планирования персональной деятельности. Microsoft Outlook включает электронную почту, базу по контактам, календарь и т.д. Но, главное, он связывает все приложения, выступая как средство организации работы с ними. С помощью Microsoft Outlook можно назначить встречу, добавив в ее описание сопроводительный документ. Это может быть список вопросов, которые планируется обсудить, в формате Microsoft Word или отчет о результатах 249
в формате Microsoft Excel. Можно переслать составленный документ по электронной почте или в виде факс-сообщения. Microsoft Office, начиная с версии для Windows 95, тесно интегрирован с операционной системой и использует все ее достоинства. Работая в сетевых операционных системах, приложения семейства Microsoft Office поддерживают совместную групповую работу нескольких человек над общими документами. Существует возможность использования материалов, расположенных не только на локальном диске рабочей станции, но и на соседнем компьютере или на сервере сети. Электронной таблицей Microsoft Excel, или базой данных Microsoft Access могут одновременно пользоваться несколько человек. Microsoft Word позволяет создать документ, над разными частями которого могут одновременно работать разные люди. Microsoft PowerPoint позволяет проводить видеоконференции. При этом презентация показывается одновременно на экранах всех участников конференции. Кроме того, все приложения Microsoft Office поддерживают работу с электронной почтой. При работе над документом, требующим корректуры нескольких людей, можно послать этот документ по почте в режиме последовательной рассылки. Как только один участник работы закончит вносить поправки, документ отправляется к следующему. После того, как документ обойдет всех указанных в рассылке людей, он возвращается к тому, кто его посылал. При этом все пометки и исправления будут отражены отдельным цветом для каждого участника совместной работы. Исправления можно просмотреть и решить, какие из них нужно принять, а какие отменить. При подготовке документа часто возникает потребность в информации, находящейся либо в файле базы данных, либо на сервере баз данных (это может быть, например, Microsoft SQL Server). Обычно в таких случаях используются специальные приложения-клиенты, поддерживающие механизм ODBC. Он обеспечивает возможность получения данных любым поддерживающим его приложением-клиентом от любого приложения-сервера. Механизм ODBC является одним из стандартных элементов Microsoft Office, доступных всем приложениям, входящим в семейство. Приложения Microsoft Office имеют широкий набор функций, рассчитанных на самые различные категории пользователей. Одна- 250
ко он не может содержать абсолютно все специфические функции, которые требуются разным пользователям. В Microsoft Office встроен универсальный язык разработки Microsoft Visual Basic. Используя его, квалифицированный пользователь может легко создать собственное приложение, отвечающее требованиям конкретной организации или подразделения. Одна и та же программа на языке Visual Basic может использовать объекты и документы из любого приложения Microsoft Office. 4.7. Интегрированные пакеты математических расчетов Последнее время ознаменовалось бурным развитием научного направления, стоящего на стыке математики и информатики, — компьютерной математики. Его можно охарактеризовать как совокупность математических, программных, аппаратных средств, обеспечивающих эффективное решение прикладных математические задач, возникающих во многих областях науки. Практическим результатом компьютерной математики явилась разработка большого количества компьютерных математических систем. Многие из них прошли большой путь развития, от громоздких ЭВМ третьего поколения до персональных компьютеров. Классификация математических систем. В настоящее время компьютерные математические системы по функциональному назначению можно подразделить на семь классов: 1. Системы для численных расчетов. 2. Табличные процессоры. 3. Матричные системы. 4. Системы для статистических расчетов. 5. Системы для специальных расчетов. 6. Системы для аналитических расчетов (компьютерной алгебры). 7. Универсальные системы. Весьма условно по уровню сложности их можно разбить на три класса: 1) начального уровня для школьников и студентов Derive, MuPad; 2) среднего уровня MuPad, MathCad; 3) высший класс Mathematica, Maple, MatLab. 251
Структура систем компьютерной математики, ставшей классической, выглядит следующим образом (рис. 4.21): Библиотеки Ядро Пакеты расширения Рис. 4.21. Структура систем компьютерной математики Ядро представляет совокупность процедур, обеспечивающих набор встроенных операторов системы. Вмешательство пользователя в ядро исключено. Интерфейс дает возможность пользователю обращаться к ядру с запросами и выдает решения на экране монитора. Программы, работающие в ядре, выполняются быстро, вызываются очень часто, и потому их ограниченное количество. Большое количество программ, используемых относительно редко, собраны в библиотеки. Расширение возможностей системы достигается за счет пакетов расширения. Эти пакеты пишутся на собственном языке расширения и могут создаваться самими пользователями. Справочная система обеспечивает получение оперативной информации по системе. Системы компьютерной математики для численных расчетов способны выполнять арифметические, алгебраические, логические операторы и функции, векторные и матричные операторы и функции, средства решения уравнений, систем линейных и нелинейных уравнений, средства решения систем дифференциальных уравнений, средства оптимизации и линейного программирования, средства создания графиков и средства программирования. К такому классу пакетов относятся Eureka и Mercury, разработанные фирмой Borland. Программы управлялись операционной системой MS-DOS, отличались простотой и были по сути первыми массовыми программными Интерфейс Справочная система 252
продуктами компьютерной математики. Интересными являются пакеты MathCad (MathSoft Inc.) ранних версий, так как они имели пользовательский интерфейс и входной язык, позволяющий создавать документы в форме протокола расчета. Сейчас математическая система Mathcad признана во всем мире одной из лучших вычислительных систем для научно-технических расчетов. Со времени своего создания претерпела множество изменений и дополнений, нашедших отражение в различных ее версиях. Возможности Mathcad очень велики, от простых расчетов до решения сложнейших систем дифференциальных уравнений, выполнения символьных вычислений или конструирования электрических схем. Система Mathcad чрезвычайно проста в использовании и требует немного времени для ее освоения. Большинство действий, необходимых при работе с системой, являются интуитивно прозрачными, пользователю, знакомому со средой Windows, не потребуется много времени для ее освоения. Система использует 32-разрядную модель памяти, что обеспечивает повышенную точность и быстродействие вычислений. Mathcad может выполнять вычисления любой сложности, по своему объему допустимые на персональном компьютере. Кроме обычных численных расчетов, система способна решать задачи в символьном (аналитическом) виде. Например, такие как Mathcad имеет развитые средства для численного решения дифференциальных уравнений и их систем. В то же время отметим, что в отличие от более продвинутых математических систем, таких как Mathematica 2 и 3 или Maple V R4 или R5, Mathcad не имеет средств аналитического решения дифференциальных уравнений. Тем не менее, опытный пользователь может воспользоваться известными средствами решения таких уравнений, например, применить прямое и обратное преобразования Лапласа. Система обладает широкими графическими возможностями. Графические представления решений в максимальной степени приближены к естественному виду, облегчают визуализацию и анализ данных. Она также позволяет создание виртуальных анимационных 253
физических экспериментов, базирующихся на математическом моделировании физических явлений. Система Mathcad полностью поддерживает технологии OLE (Object Linking and Embedding — связывание и внедрение объекта) и DDE (Dynamic Data Exchange — динамический обмен данных). OLE и DDE предоставляют Mathcad возможность работать внутри других приложений Windows или осуществлять с ними обмен данными. Mathcad работает в среде Интернет, что позволяет использовать фрагменты расчетов, хранимые в недрах информационных ресурсов сети. Система содержит внутри себя текстовый редактор со стандартными функциями, что позволяет готовить отчеты, статью и техническую документацию типографского качества. Начиная с версии 7.0, в составе Mathcad содержится системный интегратор MathConnex, который выполняет функции интеграции различных приложений с системой и обеспечивает их совместную работу Благодаря этому возможно простое и наглядное установление сложных взаимосвязей с матричной системой Mat LAB, с графической системой Axum и др. Выполняет функции имитационного моделирования систем, представленные типовыми блоками в виде функциональной схемы. В частности, он позволяет создать виртуальные физические лаборатории, содержащие сложные и дорогостоящие приборы. Пользователи, знакомые с программированием в Mathcad, могут создать библиотеку динамической компоновки (DLL), содержащую собственные внешние функции, которые будут выглядеть и работать так же, как «фирменные» функции. Матричные системы. Ранние версии MatLab являлись чисто матричными системами, даже простое число интерпретировалось как матрицы размера 1x1. Практически все функции системы определялись как матричные, т.е. способные выполнять действия над массивами. Интенсивное развитие этой системы привело к тому, что сейчас это универсальная система. Современная двенадцатая версия MatLab имеет не только самое большое число матричных операторов и функций, но и самую простую адаптацию к решению задач пользователя. Любое новое определение системы задается в виде некоторого М-файла и в дальнейшем оно может быть использовано наряду со встроенными функциями. Для MatLab создано большое 254
количество пакетов расширения. Дескрипторная графика пакета основана на принципах объектно-ориентированного программирования, добавляет мощные средства визуализации результатов вычислений. Системы статистических расчетов. К ним относятся StatGraphics Plus, Statistica, SPSS. Ввод обрабатываемых данных производится в таблицу или таблица загружается с диска, потому интерфейс систем напоминает табличный процессор Excel. Правила работы с пакетом также аналогичны Excel, т.е. вводятся в таблицу данные, выделяются данные для расчета, затем вызывается функция. В отличие от Excel программы статистических расчетов снабжены большим числом встроенных специальных функций по статистической обработке данных. Системы для специальных расчетов. Часть математических пакетов ориентирована на некоторый узко специальный круг задач. Например, систем нелинейных уравнений ТК Solver, систем дифференциальных уравнений Dynamic Solver, построения графиков Axum и т.д. Эти программы сейчас все чаще заменяются универсальными пакетами программ. К особому классу систем специальных расчетов относятся системы математического моделирования. Например, для блочно заданных систем с успехом применяется приложение Simulink, входящее в последние версии MatLab, для проектирования и моделирования электронных схем применяются OrCAD, DesignLab и др. Системы аналитических расчетов. Дают возможность производить вычисления в аналитическом виде. Одной из таких систем символьной математики (компьютерной алгебры) является Maple. Система Maple разработана в университете Ватерлоо (Канада), вместе с развитием программных средств, она успешно развивается и модифицируется. Версии системы называют реализациями. Одной из самых известных ранних реализаций является версия Maple V R5. В нее были введены возможности работы с электронными таблицами, появилась возможность записи файлов в формате HTML и введен обмен данными между документами методом перетаскивания. Современная версия системы Maple 8 — одна из самых надежных систем компьютерной математики. Перечислим некоторые возможности этой версии. 255
Простой и удобный пользовательский интерфейс (работа со многими окнами, представление данных в виде естественных математических формул, управление с помощью мыши и др.). Символьные и численные вычисления (решение уравнений, дифференцирование и интегрирование функций, вычисление пределов, разложение функций в ряды, интегральные преобразования Лапласа, Фурье и др.). Графическая визуализация вычислений (построение различных плоских и трехмерных графиков, анимация графиков, создание и проигрывание анимационных файлов и др.). Программирование (встроенный язык процедурного программирования, средства отладки программ, мощные библиотеки функций, задание внешних процедур и функций, поддержка языков Си, Фортран и др.). Ускоренные алгоритмы вычислений. Обучающий курс User's Tour, встроенный в справку. Набор новых алгоритмов решения дифференциальных уравнений, эффективных при решении задач в области моделирования физических явлений и устройств. Поддержка протокола TCP/IP, обеспечивающего динамический удаленный доступ к данным, например, для финансового анализа предприятия в реальном масштабе времени или данных о погоде. Maple — эффективный инструмент для инженеров и математиков, охватывает почти все разделы математики, широко используется во многих университетах мира. Во многих случаях от пользователя не требуется знаний алгоритмов и программирования, он только ставит задачу в традиционной форме, a Maple сам выбирает методы, алгоритмы и представляет решение в требуемом виде. Maple можно использовать и как редактор математических документов с возможностью включения графики и объектов. 256
5. Модели решения функциональных и вычислительных задач 5.1. Основные понятия В повседневной жизни, на производстве, в научно-исследовательской, инженерной или любой другой деятельности человек постоянно сталкивается с решением задач. Задачи, которые мы решаем, по своему назначению можно разделить на две категории: вычислительные задачи, целью которых является определение некоторой величины, и функциональные задачи, предназначенные для создания некого аппарата, выполняющего определенные действия — функции. Например, проектирование нового здания требует решения задачи расчета прочности его фундамента, несущих опорных конструкций, расчета финансовых затрат на строительство, определение оптимального числа работников и т.д. Для повышения производительности труда строителей создано немало машин функционального назначения (решены функциональные задачи), такие как экскаватор, бульдозер, подъемный кран и др. История развития средств вычислительной техники повествует о том, что мощным толчком для создания первых вычислительных машин стала вторая мировая война. Для успешного ведения войны требовалось решать множество вычислительных задач. Немецкий инженер Конрад Цузе сконструировал вычислительную машину Z2 (1941 г.) для выполнения необходимых расчетов при проектировании самолетов и баллистических снарядов. Английские инженеры создали вычислительную машину «Колосс» (1943 г.) для дешифровки перехваченных сообщений вражеской армии. Американский инженер Говард Эйкен для выполнения баллистических расчетов создал компьютер «Марк I» (1944 г.). Компьютеры первого и второго поколения использовались для решения вычислительных задач, для инженерных, научных, финансовых расчетов, для обработки больших объемов данных. Начиная с третьего поколения, область применения ЭВМ включает и решение функциональных задач: это обработка баз данных, управление, проектирование. Современный компьютер может выполнять практически любые задачи, а массовое 9. Информатика 257
использование персональных компьютеров и повсеместное применение новых информационных технологий отводит ему особую роль для решения любых задач. С точки зрения информатики, решение любой задачи представляет замкнутую технологическую последовательность (рис. 5.1): Реальный объект Модель Алгоритм Программа Результат Рис. 5.1. Этапы решения задачи В этом ряду каждый элемент играет свою особую роль. Объектом (от лат. objectum — предмет) называется все то, что противостоит субъекту в его практической и познавательной деятельности, все то, на что направлена эта деятельность. Под объектами понимаются предметы и явления, как доступные, так и недоступные чувственному восприятию человека, но имеющие видимое влияние на другие объекты (например, гравитация, инфразвук или электромагнитные волны). Объективная реальность, существующая независимо от нас, является объектом для человека в любой его деятельности и взаимодействует с ним. Поэтому объект всегда должен рассматриваться во взаимодействии с другими объектами, с учетом их взаимовлияния. Деятельность человека обычно идет по двум направлениям: исследование свойств объекта с целью их использования (или нейтрализации); создание новых объектов, имеющих полезные свойства. Первое направление относится к научным исследованиям и большую роль при их проведении имеет гипотеза, т.е. предсказание свойств объекта при недостаточной его изученности. Второе направление относится к инженерному проектированию. При этом важную роль играет понятие аналогии — суждении о каком-либо сходстве известного и проектируемого объекта. Аналогия может быть полной или частичной. Это понятие относительно и определяется уровнем абстрагирования и целью построения аналогии. Любой аналог (образ) какого-либо объекта, процесса или явления, используемый в качестве заменителя (представителя) оригинала, называется моделью (от лат. modulus — образец). Исследование объектов, процессов или явлений путем построе- 258
ния и изучения их моделей для определения или уточнения характеристик оригинала называется моделированием. Моделирование может быть определено как представление объекта моделью для получения информации об этом объекте путем проведения экспериментов с его моделью. Теория замещения объектов-оригиналов объектом-моделью называется теорией моделирования. Если результаты моделирования подтверждаются и могут служить основой для прогнозирования поведения исследуемых объектов, то говорят, что модель адекватна объекту. Степень адекватности зависит от цели и критериев моделирования. Все многообразие способов моделирования, рассматриваемого теорией моделирования, можно условно разделить на две группы: аналитическое и имитационное моделирование. Аналитическое моделирование заключается в построении модели, основанной на описании поведения объекта или системы объектов в виде аналитических выражений — формул. При таком моделировании объект описывается системой линейных или нелинейных алгебраических или дифференциальных уравнений, решение которых может дать представление о свойствах объекта. К полученной аналитической модели, с учетом вида и сложности формул применяются аналитические или приближенные численные методы. Реализация численных методов обычно возлагается на вычислительные машины, обладающие большими вычислительными мощностями. Тем не менее, применение аналитического моделирования ограничено сложностью получения и анализа выражений для больших систем. Имитационное моделирование предполагает построение модели с характеристиками, адекватными оригиналу, на основе какого-либо его физического или информационного принципа. Это означает, что внешние воздействия на модель и объект вызывают идентичные изменения свойств оригинала и модели. При таком моделировании отсутствует общая аналитическая модель большой размерности, а объект представлен системой, состоящей из элементов, взаимодействующих между собой и с внешним миром. Задавая внешние воздействия, можно получить характеристики системы и провести их анализ. В последнее время имитационное моделирование все больше ассоциируется с моделированием объектов на компьютере, что позволяет в интерактивном режиме исследовать модели самых разных по природе объектов. 259
5.2. Системный подход в моделировании систем Классический (или индуктивный) подход к моделированию рассматривает систему, переходя от частного к общему, и синтезирует ее путем слияния компонент, разрабатываемых отдельно. Системный подход предполагает последовательный переход от общего к частному, когда в основе рассмотрения лежит цель, при этом объект выделяется из окружающего мира. При создании нового объекта с полезными свойствами (например, системы управления) задаются критерии, определяющие степень полезности полученных свойств. Так как любой объект моделирования представляет собой систему взаимосвязанных элементов, введем понятие системы. Система S есть целенаправленное множество взаимосвязанных элементов любой природы. Внешняя среда Е представляет собой множество существующих вне системы элементов любой природы, оказывающих влияние на систему или находящихся под ее воздействием. При системном подходе к моделированию прежде всего четко определяется цель моделирования. Создание модели полного аналога оригинала дело трудоемкое и дорогое, поэтому модель создается под определенную цель. Важным для системного подхода является определение структуры системы — совокупности связей между элементами системы, отражающих их взаимодействие. Существует ряд походов к исследованию систем и ее свойств, к которым следует отнести структурный и функциональный. При структурном подходе выявляется состав выделенных элементов системы S и связи между ними. Совокупность элементов и связей позволяет судить о свойствах выделенной части системы. При функциональном подходе рассматриваются функции (алгоритмы) поведения системы, причем, каждая функция описывает поведение одного свойства при внешнем воздействии Е. Такой подход не требует знания структуры системы, а ее описание состоит из набора функций ее реакции на внешние воздействия. Классический метод построения модели использует функциональный подход, при котором в качестве элемента модели принимается компонента, описывающая поведение одного свойства и не отображающая реальный состав элементов. Кроме этого компоненты 260
системы являются изолированными друг от друга, что плохо отражает моделируемую систему. Такой метод построения модели применим лишь для простых систем, так как требует включения в состав функций, описывающих свойства системы, отношения между свойствами, которые могут быть плохо определены или неизвестны. С усложнением моделируемых систем, когда невозможно учесть все взаимовлияния свойств, применяется системный методу основанный на структурном подходе. При этом система S разбивается на ряд подсистем Sl со своими свойствами, которые, естественно, проще описать функциональными зависимостями, и определяются связи между подсистемами. В этом случае система функционирует в соответствии со свойствами отдельных подсистем и связей между ними. Это избавляет от необходимости описывать функционально взаимосвязи между свойствами системы S, делает модель более гибкой, так как изменение свойств одной из подсистем автоматически изменяет свойства системы. 5.3. Классификация видов моделирования В зависимости от характера изучаемых процессов в системе S и цели моделирования существует множество типов моделей и способов их классификации, например, по цели использования, наличию случайных воздействий, отношению ко времени, возможности реализации, области применения и др. (таблица). По цели использования модели классифицируются на научный эксперимент, в котором осуществляется исследование модели с применением различных средств получения данных об объекте, возможности влияния на ход процесса, с целью получения новых данных об объекте или явлении; комплексные испытания и производственный эксперимент, использующие натурное испытание физического объекта для получения высокой достоверности о его характеристиках; оптимизационные, связанные с нахождением оптимальных показателей системы (например, нахождение минимальных затрат или определение максимальной прибыли). По наличию воздействий на систему модели делятся на детерминированные (в системах отсутствуют случайные воздействия) и стохастические (в системах присутствуют вероятностные воздействия). Эти же модели некоторые авторы классифицируют по способу оцен- 261
Классификации видов моделей По цели использования Научный эксперимент. Комплексные испытания и производственный эксперимент. Оптимизационные модели По наличию воздействий на систему Детерминированные. Стохастические По отношению ко времени Статические. Динамические (дискретные, непрерывные) По возможности реализации Мысленные (наглядные, символические, матема- тические). Реальные (натурные, физические). Информационные По области применения Универсальные. Специализированные ки параметров системы: в детерминированных системах параметры модели оцениваются одним показателем для конкретных значений их исходных данных; в стохастических системах наличие вероятностных характеристик исходных данных позволяет оценивать параметры системы несколькими показателями. По отношению ко времени модели разделяют на статические, описывающие систему в определенный момент времени, и динамические, рассматривающие поведение системы во времени. В свою очередь, динамические модели подразделяют на дискретные, в которых все события происходят по интервалам времени, и непрерывные, где все события происходят непрерывно во времени. По возможности реализации модели классифицируются как мыс- ленные, описывающие систему, которую трудно или невозможно моделировать реально, реальные, в которых модель системы представлена либо реальным объектом, либо его частью, и информационные, реализующие информационные процессы (возникновение, передачу, обработку и использование информации) на компьютере. В свою очередь, мысленные модели разделяют на наглядные (при которых моделируемые процессы и явления протекают наглядно); символические (модель системы представляет логический объект, в котором основные свойства и отношения реального объекта выражены систе- 262
мой знаков или символов) и математические (представляют системы математических объектов, позволяющие получать исследуемые характеристики реального объекта). Реальные модели делят на натурные (проведение исследования на реальном объекте и последующая обработка результатов эксперимента с применением теории подобия) и физические (проведение исследования на установках, которые сохраняют природу явления и обладают физическим подобием). По области применения модели подразделяют на универсальные, предназначенные для использования многими системами, и специализированные, созданные для исследования конкретной системы. 5.4. Математические модели Наиболее важным этапом при построении модели является переход от содержательного описания к формальному, что объясняется участием на этом этапе специалистов в предметной области, где существует моделируемая система, и специалистов в области моделирования систем. Наиболее удобным языком для их общения, целью которого является построение адекватной модели системы, обычно, является язык математических описаний. Математическое описание системы компактно и удобно для дальнейших реализаций на компьютере, с целью проведения статистических испытаний, поэтому рассмотрим эти модели в первую очередь. 5.4.1. Построение математической моЗели системы Систему S можно представить в виде множества величин, описывающих процесс функционирования реальной системы и образующих следующие подмножества: подмножество входных воздействий: (или вектор входящих воздействий х = подмножество воздействий внешней среды: 263
(или вектор воздействия внешней среды ; подмножество собственных параметров системы: (или вектор внутренних параметров ; подмножество выходных характеристик системы: (или вектор выходных характеристик Подмножества являются независимыми (экзогенными), Y является зависимым (эндогенным) подмножеством. Процесс функционирования системы описывается во времени оператором Fs, который преобразует экзогенные переменные в эндогенные в соответствии с соотношением Эта зависимость называется законом функционирования системы S. Закон функционирования F может быть задан в виде функ- ции, функционала, логических условий, алгоритмически или таблично, а также в виде словесного набора правил соответствия. Совокупность зависимостей выходных характеристик системы от времени называется выходной траекторией y(t). Соотношение (*) является математическим описанием поведением системы во времени, поэтому модели такого типа называются динамическими моделями. Если закон функционирования у не содержит параметра времени, то такие модели называются статическими и отображают связь между подмножеством у и подмножествами x,v,h и записывается как у = Fs(x, v, ti). Если в динамической модели дискретизировать время, то в каждый момент времени можно определить состояние системы zpe Z, р = 1,2,...,л2. Множество Z всех возможных состояний системы называется пространством состояний системы. Процесс функ- 264
ционирования системы, изменяющей свое состояние в фиксированные моменты времени, можно описать векторными уравнениями:  Первое уравнение по начальному состоянию z и экзогенным переменным определяет следующее состояние, а второе по значению состояния z определяет эндогенные переменные на выходе системы. 5.4.2. Примеры построения динамических моделей При моделировании непрерывных динамических объектов в качестве моделей обычно выступают дифференциальные уравнения, связывающее поведение объекта со временем. Положительным свойством дифференциальных уравнений является то, что одно и то же уравнение моделирует системы различной физической природы. В качестве независимой переменной в динамических системах обычно выступает время, от которого зависят неизвестные значения искомой функции, определяющие поведения объекта. Математическое описание модели в общем виде:  где -мерные векторы и — непрерывна. Например, процесс малых колебаний маятника описывается обыкновенным дифференциальным уравнением Процесс в электрическом колебательном контуре 265
 Очевидно, что если положить 1 , получим уравнение, описывающее состояние во времени обеих систем Общая математическая модель позволяет исследовать одну систему, моделируя работу другой. Рассмотрим пример построения дифференциальной модели объекта. Имеется сосуд, площадь горизонтального сечения которого является функцией расстояния сечения от дна сосуда. В начальный момент времени t = О высота уровня жидкости равна А метров. Площадь сечения сосуда на высоте х равна S(x). В дне сосуда имеется отверстие площадью s. Определить зависимость уровня воды в сосуде от времени x(t). Из физики известно, что скорость истечения жидкости v в тот момент, когда высота ее уровня равна х, определяется равенством , где к - коэффициент скорости истечения жидкости из отверстия. На бесконечно малом промежутке времени dt истечение жидкости можно считать равномерным, а поэтому за время dt вытечет столбик жидкости, высота которого v dt и площадь сечения s, что, в свою очередь, вызовет понижение уровня жидкости в сосуде на — dx. Приравнивая объем жидкости, вытекшей из отверстия и из сосуда, получим . Полученное дифференциальное уравнение дает зависимость уровня воды в сосуде от времени x(t). Решим теперь конкретную задачу, выбрав сосуд с известным S(x). Пусть имеется цилиндрический сосуд радиусом R с круглым отверстием в дне радиусом г, наполненный водой. 266
Площадь поперечного сечения сосуда постоянна и не зависит от , площадь отверстия в дне . Для воды коэффициент к — 0,6. Подставив эти значения в уравнение, получим Это уравнение может быть решено аналитически или одним из численных методов. Модели динамических систем на основе дифференциальных уравнений нашли широкое применение в теории управления различными техническими объектами. Под влиянием неизвестных заранее возмущений фактическое поведение системы отклоняется от желаемого, задаваемого алгоритмом и для приближения ее поведения к необходимому значению, в состав системы вводится автоматическое управление системой. Оно может быть встроено в саму систему, но при моделировании блок управления отделяется от самой системы. В общем виде структура многомерной системы автоматического управления (САУ) представлена на рис. 5.2. Рис. 5.2. Структура многомерной системы автоматического управления Эндогенные переменные: — вектора входных и возмущающих воздействий, а также вектора ошибок и управляющих воздействий, соответственно. Экзогенные переменные: — вектор состояния системы, который обычно совпадает с век- 267
тором выходных переменных, т.е. z(t) = y(t). (Более подробно о моделировании САУ см.: «Теория автоматического управления»: Учебник для машиностроит. спец. вузов/ Под ред. Ю.М. Соломенцева. М: Высшая школа, 1999.) 5.5. Информационные модели 5.5.1. Информационные объекты и связи Информационные модели во многих случаях опираются на математические модели, так как при решении задач математическая модель исследуемого объекта, процесса или явления неизбежно преобразуется в информационную для ее реализации на компьютере. Определим основные понятия информационной модели. Информационным объектом называется описание реального объекта, процесса или явления в виде совокупности его характеристик (информационных элементов), называемых реквизитами. Информационный объект определенной структуры (реквизитного состава) образует тип (класс), которому присваивают уникальное имя. Информационный объект с конкретными характеристиками называют экземпляром. Каждый экземпляр идентифицируется заданием ключевого реквизита (ключа). Одни и те же реквизиты в различных информационных объектах могут быть как ключевыми, так и описательными. Информационный объект может иметь несколько ключей. Пример. Информационный объект СТУДЕНТ имеет реквизитный состав: номер (номер зачетной книжки — ключевой реквизит), фамилия, имя, отчество, дата рождения, код места обучения. Информационный объект ЛИЧНОЕ ДЕЛО: номер студента, домашний адрес, номер аттестата о среднем образовании, семейное положение, дети. Информационный объект МЕСТО ОБУЧЕНИЯ включает реквизиты: код (ключевой реквизит), наименование вуза, факультет, группа. Информационный объект ПРЕПОДАВАТЕЛЬ: код (ключевой реквизит), кафедра, фамилия, имя, отчество, ученая степень, ученое звание, должность. Отношения, существующие между реальными объектами, опре- 268
деляются в информационных моделях как связи. Существует три вида связей: один к одному (1:1), один ко многим (1:) и многие ко многим (). Связь один к одному определяет соответствие одному экземпляру информационного объекта X не более одного экземпляра информационного объекта Y, и наоборот. Пример. Информационные объекты СТУДЕНТ и ЛИЧНОЕ ДЕЛО будут связаны отношением один к одному. Каждый студент имеет определенные уникальные данные в личном деле. При связи один ко многим одному экземпляру информационного объекта X может соответствовать любое количество экземпляров информационного объекта Y, но каждый экземпляр объекта Y связан не более чем с одним экземпляром объекта X. Пример. Между информационными объектами МЕСТО ОБУЧЕНИЯ и СТУДЕНТ необходимо установить связь один ко многим. Одно и то же место обучения может многократно повторяться для различных студентов. Связь многие ко многим предполагает соответствие одному экземпляру информационного объекта X любое количество экземпляров объекта Y, и наоборот. Пример. Информационные объекты СТУДЕНТ и ПРЕПОДАВАТЕЛЬ имеют связь многие ко многим. Каждый студент обучается у множества преподавателей, а каждый преподаватель учит множество студентов. 5.5.2. Примеры информаиионных моделей Определим информационную модель как связанную совокупность информационных объектов, описывающих информационные процессы в исследуемой предметной области. Существующие информационные модели разделим на универсальные и специализированные. Универсальные модели предназначены для использования в различных предметных областях, к ним относятся: базы данных и системы управления базами данных, автоматизированные системы управления, базы знаний, экспертные системы. Специализированные модели предназначены для описания конкретных систем, являются уникальными по своим возможностям, более дорогостоящими. Рассмотрим некоторые универсальные модели. 269
Базы Эаннын Базы данных представляют связанную совокупность структурированных данных, относящихся к определенному процессу или явлению, в конкретной предметной области. Система управления базами данных представляет собой программный комплекс для создания, организации необходимой обработки, хранения и передачи баз данных. Ядром любой БД является модель представления данных. Модель данных представляет множество структур данных и взаимосвязи между ними. Различают иерархическую, сетевую и реляционную модели данных. Иерархическая модель представляет связи между объектами (данными) в виде дерева. К основным понятиям иерархической модели относятся: • узел — набор атрибутов данных, описывающих объект; • связь — линия, связывающая узлы нижнего уровня с одним узлом вышележащего уровня. При этом узел вышележащего уровня называют предком для соответствующих ему узлов нижнего уровня, в свою очередь, узлы нижнего уровня называют потомками связанного с ними вышележащего узла (например, на рис. 5.3. узел В1 — предок для узлов С1, С2, а узлы С1, С2 — потомки узла В1); • уровень — номер слоя узлов, отсчитанный от корня. Уровень 1 Уровень 2 Уровень 3 Рис. 5.3. Иерархическая модель данных Количество деревьев в БД определяется числом корневых записей. К каждому узлу существует единственный путь от корня. 270
Сетевая структура имеет те же составляющие, что и иерархическая, но каждый узел может быть связан с любым другим узлом (рис. 5.4). Сетевой подход к организации данных является расширением иерархического. В иерархических моделях запись-потомок должна иметь только одного предка; в сетевых — потомок может иметь любое число предков. Рис. 5.4. Сетевая модель данных Обе эти модели не получили широкого распространения из-за сложности реализации графов в виде машинных структур данных, кроме того, в них сложно осуществить операции поиска информации. Набольшее распространение получила третья модель данных — реляционная, она может так же описывать иерархическую и сетевую модель. Реляционная модель ориентирована на организацию данных в виде двумерных таблиц и подробно рассмотрена в 4.4.3. искусственный интеллект Идеи моделирования человеческого разума известны с древнейших времен. Впервые об этом упоминается в сочинении философа и теолога Раймунда Луллия (ок.1235 — ок.1315) «Великое искусство», который не только высказал идею логической машины для решения разнообразных задач, исходя из всеобщей классификации понятий (XIV в.), но и попытался ее реализовать. Рене Декарт (1596—1650) и Готфрид Вильгельм Лейбниц (1646-1716) независимо друг от друга развивали учение о прирожденной способности ума к познанию и всеобщих и необходимых истин логики и математики, работали над созданием универсального языка классификации всех знаний. Именно на этих идеях базируются теоретические основы создания искусственного интеллекта. Толчком к дальнейшему развитию модели чело- 271
веческого мышления стало появление в 40-х гг. XX в. ЭВМ. В 1948 г. американский ученый Норберт Винер (1894-1964) сформулировал основные положения новой науки — кибернетики. В 1956 г. в Стен- фордском университете (США) на семинаре под названием «Artificial intelligence» (искусственный интеллект), посвященном решению логических задач, признано новое научное направление, связанное с машинным моделированием человеческих интеллектуальных функций и названное искусственный интеллект. Вскоре эта отрасль разделилась на два основных направления: нейрокибернетику и кибернетику «черного ящика». Нейрокибернетика обратилась к структуре человеческого мозга как единственно мыслящему объекту и занялась его аппаратным моделированием. Физиологи давно выявили нейроны — связанные друг с другом нервные клетки как основу мозга. Нейрокибернетика занимается созданием элементов, аналогичных нейронам, и их объединением в функционирующие системы, эти системы называют ней- росетями. В середине 80-х гг. XX в. в Японии был создан первый нейрокомпьютер, моделирующий структуру человеческого мозга. Его основная область применения — распознавание образов. Кибернетика «черного ящика» использует другие принципы, структура модели не главное, важна ее реакция на заданные входные данные, на выходе модель должна реагировать как человеческий мозг. Ученые этого направления занимаются разработкой алгоритмов решения интеллектуальных задач для имеющихся вычислительных систем. Наиболее значимые результаты: • Модель лабиринтного поиска (конец 50-х гг.), в которой рассматривается граф состояний объекта и в нем происходит поиск оптимального пути от входных данных к результирующим. На практике эта модель не нашла широкого применения. • Эвристическое программирование (начало 60-х гг.) разрабатывало стратегии действий на основе заранее известных заданных правил (эвристик). Эвристика — теоретически не обоснованное правило, позволяющее уменьшить количество переборов в поиске оптимального пути. • Методы математической логики. Метод резолюций, позволяющий на основе определенных аксиом автоматически доказывать теоремы. В 1973 г. создан язык логического программирования Пролог, позволяющий обрабатывать символьную информацию. 272
С середины 70-х гг. реализуется идея моделирования конкретных знаний специалистов-экспертов. В США появляются первые экспертные системы. Возникает новая технология искусственного интеллекта, основанная на представлении и использовании знаний. С середины 80-х гг. искусственный интеллект коммерциализируется. Растут капиталовложения в эту отрасль, появляются промышленные экспертные системы, повышается интерес к самообучающимся системам. Базы знаний При изучении интеллектуальных систем необходимо выяснить, что представляют собой знания и в чем их отличие от данных. Понятие знания определяют по-разному, но какого-либо исчерпывающего определения нет. Приведем некоторые из определений: Знания — выявленные закономерности предметной области (принципы, связи, законы), позволяющие решать задачи в этой области. Знания — хорошо структурированные данные, или данные о данных, или метаданные. Знания — совокупность сведений, образующих целостное описание, соответствующее некоторому уровню осведомленности об описываемом вопросе, объекте и т.д. С точки зрения искусственного интеллекта знания определяют как формализованную информацию, на которую ссылаются в процессе логического вывода. Для хранения знаний используют базы знаний. База знаний — основа любой интеллектуальной системы. С точки зрения решения задач в некоторой предметной области знания удобно разделить на две категории — факты и эвристику. Первая категория описывает известные в данной области обстоятельства, знания этой категории иногда называют текстовыми, подчеркивая их достаточное описание в литературе. Вторая категория знаний опирается на практический опыт специалиста-эксперта данной предметной области. Кроме того, знания делят на процедурные и декларативные. Исторически первыми появились процедурные знания, «рассыпанные» в алгоритмах. Они управляли данными. Для их изменения требовалось вносить изменения в программы. С развитием искусственного 273
интеллекта все большая часть знаний формировалась в структурах данных: таблицах, списках, абстрактных типах данных, знания все больше становились декларативными. Декларативные знания — это совокупность сведений о характеристиках свойств конкретных объектов, явлений или процессов, представленных в виде фактов и эвристик. Исторически такие знания накапливались в виде разнообразных справочников, с появлением ЭВМ приобрели форму баз данных. Декларативные знания часто называют просто данными, они хранятся в памяти информационной системы (ИС) так, что имеют непосредственный доступ для использования. Процедурные знания хранятся в памяти ИС в виде описаний процедур, с помощью которых их можно получить. В виде процедурных знаний обычно описывают способы решения задач предметной области, различные инструкции, методики и т.п. Процедурные знания — это методы, алгоритмы, программы решения различных задач в выбранной предметной области, они составляют ядро базы знаний. Процедурные знания образуются в результате осуществления процедур над фактами как исходными данными. Одной из наиболее важных проблем, характерных для систем искусственного интеллекта, является представление знаний. Форма представления знаний существенно влияет на характеристики и свойства системы. Для манипуляции различными знаниями реального мира на компьютере необходимо провести их моделирование. Существует множество моделей представления знаний для различных предметных областей, но большинство из них относятся к следующим классам: логические модели; продукционные модели; семантические сети; фреймовые модели. Традиционно в представлении знаний выделяют формальные логические модели, основанные на классическом исчислении предикатов первого порядка, когда предметная область описывается в виде набора аксиом. Вся информация, необходимая для решения задач, рассматривается как совокупность правил и утверждений, которые представляются как формулы в некоторой логике предикатов. Знания отражают совокупность таких формул, а получение новых знаний сводится к реализации процедур логического вывода. Эта логическая модель применима в основном в исследовательских «идеальных» системах, так как предъявляет высокие требования и 274
ограничения предметной области. В промышленных экспертных системах используются ее различные модификации и расширения. Исследования процессов принятия решений человеком показали, что рассуждая и принимая решение, человек использует продукционные правила (от англ. production — правило вывода, порождающее правило). Продукционная модель, основанная на правилах, позволяет представить знания в виде предложений: ЕСЛИ (список условие), ТО (следует выполнить перечень действий). Условие — это предложение, по которому происходит поиск в базе знаний, а действие есть некоторая операция, выполняемая при успешно осуществленном поиске. Действия могут быть как промежуточными, выступающими далее как условия, так и целевыми, завершающими работу ИС. В продукционной модели база знаний состоит из совокупности правил. Программа, управляющая перебором правил, называется машиной вывода. Механизм выводов связывает знания и создает из их последовательности заключение. Вывод бывает прямой (метод сопоставления, от данных к поиску цели) или обратный (метод генерации гипотезы и ее проверки, от цели — к данным). Пример. Имеется фрагмент базы знаний, состоящий из двух правил: Пр. 1: ЕСЛИ «ведение бизнеса» и «знакомство с Интернет», ТО «электронная коммерция». Пр. 2: ЕСЛИ «владеет компьютером», ТО «знакомство с Интернет». В систему поступили данные: «ведение бизнеса» и «владеет компьютером». ПРЯМОЙ ВЫВОД: На основе имеющихся данных получить заключение. 1-й проход: Шаг 1. Проверяем Пр. 1, не работает — не хватает данных «знакомство с Интернет». Шаг 2. Проверяем Пр. 2, работает, база дополняется фактом «знакомство с Интернет». 2-й проход Шаг 3. Проверяем Пр. 1, работает, система дает заключение «электронная коммерция». 275
ОБРАТНЫЙ ВЫВОД: Подтвердить выбранную цель с помощью имеющихся правил и данных. 1-й проход: Шаг 1. Цель - «электронная коммерция»: Проверяем Пр. 1, данных «знакомство с Интернет» нет, они становятся новой целью, и есть правило, где она в правой части. Шаг 2. Цель — «знакомство с Интернет»: Пр. 2 подтверждает цель и активизирует ее. 2-й проход: Шаг 3. Пр. 1 подтверждает искомую цель. Продукционная модель привлекает разработчиков наглядностью, модульностью, легкостью внесения дополнений и изменений, простотой механизма логического вывода, чаще всего используется в промышленных экспертных системах. Семантика — это наука, исследующая свойства знаков и знаковых систем, их смысловую связь с реальными объектами. Семантическая сеть — это ориентированный граф, вершины которого есть понятия, а дуги — отношения между ними (рис. 5.5). Это наиболее общая модель знаний, так как в ней имеются средства всех характерных для знаний свойств: внутренней интерпретации, структурированности, семантической метрики и активности. Студент учится Технический университет например имеет частью Попов учится изучает Программирование Кафедра Моделирование И С имеет частью Факультет информатики ведет ого Учебная дисциплина Рис. 5.5. Семантическая сеть Достоинствами сетевых моделей являются: большие выразитель- 276
ные возможности; наглядность системы знаний, представленной графически; близость структуры сети, представляющей систему знаний, семантической структуре фраз на естественном языке; соответствие современным представлениям об организации долговременной памяти человека. К недостаткам отнесем то, что сетевая модель не содержит ясного представления о структуре предметной области, которая ей соответствует, поэтому ее формирование и модификация затруднительны; сетевые модели представляют собой пассивные структуры, для их обработки используется специальный аппарат формального вывода. Проблема поиска решения в базе знаний типа семантической сети сводится к задаче поиска фрагмента сети, соответствующего некоторой подсети поставленной задачи, что, в свою очередь, говорит еще об одном недостатке модели — сложность поиска вывода на семантических сетях. Сетевые модели являются наглядным и достаточно универсальным средством представления знаний. Однако их формализация в конкретных моделях представления, использования и модификации знаний представляет достаточно трудоемкий процесс, особенно при наличии множественных отношений между понятиями. Термин фрейм (от англ. frame — каркас, рамка) предложен для обозначения структуры единицы знаний, которую можно описать некоторой совокупностью понятий, для ее пространственного восприятия. Фрейм имеет определенную внутреннюю структуру, состоящую из совокупности элементов, называемых слотами. Каждый слот, в свою очередь, представляется определенной структурой данных, процедурой, или может быть связан с другим фреймом. Фреймовая модель представляет собой систематизированную в виде единой теории технологическую модель памяти человека и его сознания. В отличие от других моделей, во фреймах фиксируется жесткая структура. В общем случае фрейм определяется следующим образом: {ИМЯ ФРЕЙМА: (имя 1-го слота: значение 1-го слота); (имя 2-го слота: значение 2-го слота); (имя N-ro слота: значение N-ro слота)}. Важным свойством фреймов является наследование свойств, заимствованное из теории семантических сетей. Наследование происходит по АКО-связям (от A Kind Of, что означает «эт.е.»). Слот АКО указывает на фрейм более высокого уровня иерархии, откуда неявно 277
наследуется, т.е. переносятся значения аналогичных слотов. Например, в сети фреймов на рис. 5.6 «конструктор» наследует свойства фреймов «инженер» и «человек», которые стоят на более высоком уровне иерархии. Человек АКО млекопитающее Умеет мыслить Инженер АКО человек Возраст от 22 лет Имеет высшее техническое образование Конструктор АКО Умеет инженер создавать конструкции сооружений или механизмов Рис. 5.6. Сеть фреймов Модель фрейма достаточно универсальна, позволяет отобразить все многообразие знаний о мире через: • фреймы-структуры, для обозначения объектов и понятий (лекция, конспект, кафедра); • фреймы-роли (студент, преподаватель, декан); • фреймы-сценарии (сдача экзамена, празднование именин, получение стипендии); • фреймы-ситуации (тревога, рабочий режим учебного дня) и др. Основным преимуществом фреймов как модели представления знаний является их способность отражать концептуальную основу организации памяти человека, а также гибкость и наглядность. Обобщая анализ моделей представления знаний, можно сделать следующие выводы: • Нельзя дать универсальных рекомендаций по выбору модели. Этот выбор определяется возможностью и удобством представления исследуемой предметной области с учетом необходимости использования знаний. • Наиболее мощными являются смешанные модели представления знаний. 278
Экспертные системы Предназначены для анализа данных, содержащихся в базах знаний, и выдачи рекомендаций по запросу пользователя. Используются в тех случаях, когда исходные данные хорошо формализуются, но для принятия решения требуются специальные обширные знания. Экспертные системы — это сложные программные комплексы, аккумулирующие знания специалистов в конкретных предметных областях и тиражирующие этот эмпирический опыт для консультаций менее квалифицированных пользователей. Предметные области: медицина, фармакология, химия, геология, экономика, юриспруденция и др., в которых большая часть знаний является личным опытом специалистов высокого уровня (экспертов), нуждаются в экспертных системах. Те области, где большая часть знаний представлена в виде коллективного опыта (например, высшая математика), не нуждаются в них. Экспертная система определяется набором логически взаимосвязанных правил, формирующих знания и опыт специалиста данной предметной области, и механизмом решения, позволяющим распознавать ситуацию, давать рекомендации к действию, ставить диагноз. Современные экспертные системы способны: — по совокупности признаков заболевания установить диагноз, назначить лечение, дозировать медикаменты, выработать программу курса лечения; — выполнять задачи диагностических систем в исследовании явлений и процессов (например, для анализа крови; управления производством; изучения состояния недр земли, нефтяных полей, залежей угля и т.п.); — распознавать речь, на данном этапе в ограниченной области применения; — распознавать человеческие лица, отпечатки пальцев и др. На рис. 5.7 изображены основные компоненты модели экспертной системы: пользователь (специалист предметной области, для которого данная система предназначена), инженер по знаниям (специалист по искусственному интеллекту — промежуточное звено между экспертом и базой знаний), интерфейс пользователя (приложение, реализующее диалог пользователя и системы), база знаний — ядро экспертной системы, решатель (приложение, моделирующее рассуждения эксперта на основе имеющихся в базе знаний), подсистема 279
разъяснения (приложение, позволяющее разъяснять на основании чего экспертная система дает рекомендации, делает выводы, какие знания при этом используются), интеллектуальный редактор базы знаний (приложение, дающее инженеру по знаниям возможность создания базы знаний в диалоговом режиме). Интерфейс пользователя Пользователь Решатель База знаний Подсистема разъяснений Интеллектуальный редактор базы знаний Инженер по знаниям + Эксперт Рис. 5.7. Структура модели экспертной системы Характерной особенностью любой экспертной системы является способность к саморазвитию. Исходные данные хранятся в базе знаний в виде фактов, между которыми установлены определенные логические связи. Если при тестировании выявлены некорректные рекомендации или заключения по конкретным вопросам, либо заключение не может быть сформулировано, это означает, или отсутствие важных фактов в ее базе, или нарушения в логической системе связей. В любом случае система сама может сформировать достаточный набор вопросов к эксперту и автоматически повысить свое качество. Система управления Представляет совокупность взаимосвязанных структурных моделей подсистем, осуществляющих следующие функции: • планирование (стратегическое, тактическое, оперативное); • учет — отображает состояние объекта управления в результате выполнения производственных процессов; • контроль — определяет отклонение учетных данных от плановых целей и нормативов; 280
ШйИРШвЩй • оперативное управление — осуществляет регулирование всех процессов с целью исключения возникающих отклонений от плановых и учетных данных; • анализ — определяет тенденцию в работе системы и резервы, которые учитываются при планировании на следующий временной период. Использование моделей в составе информационных систем началось с применения статистических методов и методов финансового анализа, которые реализовывались командами обычных алгоритмических языков. Позже были созданы специальные языки, позволяющие моделировать различные ситуации. Такие языки дают возможность построения моделей определенного типа, обеспечивающих нахождение решения при гибком изменении переменных. 5.6. Моделирование инсрормаиионнын проиессоВ В традиционных инженерных дисциплинах всегда использовались последние достижения прикладной математики, гарантирующие, что проект будет отвечать поставленным требованиям. Основываясь на оценках, полученных с помощью математической модели, можно достаточно уверенно приступать, например, к конструированию здания. Однако применительно к программному обеспечению (ПО) проектирование оказывается преимущественно неформальным процессом, для которого зачастую нет моделей и методов прогнозирования результата. С этой точки зрения можно сравнить эволюцию программного и аппаратного обеспечения на протяжении нескольких последних десятилетий. Если аппаратные устройства со временем становились миниатюрнее, быстрее и дешевле, то программы, напротив, оказывались все более объемными, медленными, дорогими и менее надежными. Одна из причин такого положения состоит в том, что в основе проектирования современной аппаратуры лежит использование прогностических моделей. Отсутствие фундаментальных инженерных принципов в практике разработки ПО можно отчасти объяснить изменчивой, хаотичной природой программ, что сильно затрудняет математическое моделирование. Тем не менее имеется немало полезных аналитических ме- 281
тодик. Любое ПО имеет свой жизненный цикл — период от начала проектирования и до его модернизации или замены более современной версией. В конце 60-х гг. появился термин software engineering (инженерное проектирования программ), которым обозначали совокупность административных и технических методов, процедур и инструментальных средств, необходимых для эффективного написания крупных программных систем. Были разработаны разные подходы для проектирования алгоритмов и программ, которые появлялись и развивались под влиянием увеличивающейся потребности в скорости и качестве разработки ПО. 5.6.1. Модели разработки программного обеспечения Для инженерного подхода к проектированию ПО были предложены модели процесса его разработки. Первым по времени и наиболее популярным можно считать метод «водопада». Эта модель идеализирует процесс проектирования, предполагая, что каждый этап проекта завершается до начала следующего и не осуществляется воз- Анализ Требования Спецификация Архитектурное проектирование Детальное проектирование Кодирование Тестирование Рис. 5.8. Моделирование методом «водопада» 282
врата к предыдущему этапу (рис. 5.9). Учитывая важность для дальнейшей разработки первых этапов проектирования, а стоимость исправления допущенных на этих этапах ошибок наиболее высокой, метод «водопада» был улучшен введением временных прототипов (см. рис. 5.9). Например, прототипов интерфейса, анализ которых пользователем может дать дополнительные сведения до разработки основных программных конструкций следующих этапов. Анализ Требования Спецификация Создание временных прототипов Архитектурное проектирование Детальное проектирование Кодирование Тестирование Рис. 5.9. Метод «водопада» с введением временных прототипов Еще одна модель жизненного цикла — спиральная модель управления рисками (рис. 5.10). В этой модели жизненный цикл ПО не заканчивается, а продолжается его модернизация, на что и указывает спираль. Анализ рисков состоит в определении затрат, в случае ошибок, допущенных на первом этапе. Для снижения рисков предлагаются дополнительные работы, например создание временных прототипов. 283
I. Определение 2. Анализ риска целей, альтернатив и ограничений 4. Планирование 3. Разработка следующего цикла и верификация Рис. 5.10. Спиральная модель 5.6.2. Методы проектирования программного обеспечения Один из наиболее популярных методов проектирования ПО — метод нисходящего проектирования. Он предполагает последовательное разложение общей функции обработки данных на простые (для данного уровня) функциональные элементы. В результате получается иерархическая модель, отражающая состав и взаимоподчиненность отдельных функций. Эта схема носит название функциональной структуры алгоритма (ФСА) приложения. Недостатком ФСА является то, что каждый ее уровень является единым целым и не может разрабатываться параллельно группой разработчиков. Следующий метод — модульное проектирование. Этот метод предполагает разбиение исходной функции обработки данных на ряд программных модулей, которые характеризуются следующими параметрами: • один входной и один выходной поток данных; • все операции, необходимые для преобразования входного потока в выходной, выполняются внутри модуля; • результат работы модуля зависит только от входного потока и не зависит от работы других модулей. 284
Состав и вид программных модулей в значительной мере определяется инструментальными средствами разработки, например, для Access набор модулей может быть таким: экранные формы, отчеты, меню и т.д. Оба эти метода относятся к стратегии проектирования ПО, получившей название структурное проектирование или проектирование на основе потоков данных, В этой стратегии не учитывались сущность и связи объектов предметной области. Для нее характерно преобразование входной информации в выходную способами, не учитывающими физическую сущность модели предметной области. В начале 80-х гг. появился новый подход, который был основан на моделировании реального мира изнутри наружу, т.е., моделируя все элементы системы и связи между ними, получаем модель предметной области, преобразование информации в которой происходит так же, как и в реальной моделируемой системе. Этот подход был назван методом объектно-ориентированного проектирования (ООП). При ООП на первом этапе выявляются объекты реального мира, их свойства и действия, на следующих — эти объекты и их поведение отображаются на объекты программы. Для любого метода проектирования ПО очень важным являются документирование и нотация, т.е. запись операций условным стандартизованным способом. Для структурного проектирования наиболее часто использовалась нотация схем алгоритмов. Для ООП в настоящее время используется нотация UML (Unified Modeling Language) — унифицированный язык моделирования, используя который в качестве нотации, мы будем моделировать информационные системы с помощью современных средств автоматизации программирования. 5.7. Унифииированный язык моделирования UML В начале 90-х гг. из всего множества языков объектно-ориентированного анализа и проектирования выделились три, наиболее часто используемых при разработке систем: Booch, созданный Грейди Бучем, OOSE (Object-Oriented Software Engineering), разработанный Айваром Джекобсоном, и ОМТ (Object Modeling Technique), автором 285
которого является Джеймс Рамбо. Каждый из этих методов является вполне законченным языком ООП, однако метод ВООСН особенно удобен на этапах проектирования модели, OOSE — на этапе анализа и формулирования требований, а ОМТ — удобен при проектировании СУБД. Создание языка, объединяющего достоинства этих трех методов, началось в начале 1995 г., когда эти три автора объединили свои методы для создания унифицированного языка для фирмы Rational Software. В 1997 г. была принята версия UML 1.1, взятая на вооружение всеми компаниями — производителями систем автоматизированного проектирования. В 2001 г. появилась версия 2.0. В настоящее время идет утверждение UML в качестве стандарта ISO. 5.7.1. Концептуальная модель UMIL Словарь UML включает три основных блока: • сущности; • отношения; • диаграммы. Сущность - это основные структурные блоки языка. UML имеет четыре типа сущностей: • структурные; • поведенческие; • группирующие; • аннотационные. Структурные сущности — это имена существительные, представляющие статические части модели, соответствующие физическим элементам системы. Среди них можно выделить следующие. Класс — описание совокупности объектов с общими атрибутами, операциями, отношениями и семантикой. Интерфейс — совокупность операций, которые определяют набор услуг (сервис), предоставляемый классом или компонентом. Он определяет только спецификацию операций, но не их исполнение. Обычно изображается с реализующим его классом или компонентом. Кооперация определяет взаимодействие. Она представляет собой совокупность ролей и других элементов, которые, работая совместно, производят некоторый кооперативный эффект, не сводящийся к простой сумме слагаемых. Кооперация имеет как структурный, так 286
и поведенческий аспект. Один и тот же класс может принимать участие в нескольких кооперациях. Кооперация является реализацией образцов поведения, формирующих систему. Прецедент — это описание последовательности выполняемых системой действий, которая производит наблюдаемый результат для какого-нибудь актера. Прецедент применяется для структурирования поведенческих сущностей модели. Прецеденты реализуются посредством кооперации. Активный класс — класс, объекты которого вовлечены в один или несколько процессов или нитей (нить — процесс, создаваемый внутри другого процесса как его часть, но получающий свой квант времени процессора) и поэтому могут инициировать управляющие воздействия. Активный класс подобен обычному классу, кроме того, что его объекты представляют собой элементы, которые осуществляют свою деятельность одновременно с деятельностью других элементов. Компонент — физическая заменяемая часть системы, которая соответствует некоторому набору интерфейсов и обеспечивает его реализацию. Компонент, как правило, представляет собой упаковку таких элементов, как классы, интерфейсы, кооперации. Узел — это вычислительный ресурс, обладающий обычно объемом памяти и способностью обработки. Совокупность компонентов может размещаться в узле или мигрировать с одного узла на другой. Для вышеперечисленных сущностей существуют разновидности: • классы — актеры, сигналы, утилиты; • компоненты — приложения, документы, файлы, страницы, таблицы. Поведенческие сущности представляют собой глаголы языка, они описывают поведение модели во времени и пространстве. Взаимодействие — поведение, заключающееся в обмене сообщениями. Автомат — алгоритм поведения, определяющий последовательность состояний объекта в зависимости от событий и своего текущего состояния. Автомат — это граф, состоящий из состояний и переходов. Переходы — линии с указанием события. Группирующие сущности являются организующими частями модели. Это бяоки, на которые можно разложить модель. Пакет: его основное назначение — сгруппировать на этапе проектирования сущности так, чтобы яснее была видна концептуальная 287
схема системы. В UML существуют также разновидности пакетов: каркасы, модели и подсистемы. Лннотационные сущности используются для дополнительного описания или замечания к любому элементу. 5.7.2. Отношения В UML В UML определены четыре типа отношений: • зависимость; • ассоциация; • обобщения; • реализация. Отношения являются связующими элементами для объединения сущностей. Зависимость — это семантическое (смысловое) отношение между двумя сущностями, при котором изменение одной из них, независимой, может повлиять на семантику другой, зависимой. Ассоциация — структурное отношение, описывающее совокупность связей между объектами. Графически изображается прямой линией (иногда со стрелкой или меткой), рядом с которой могут присутствовать дополнительные обозначения, например, кратность или имена. Обобщение — это отношение «родитель — потомок». Реализация — это семантическое отношение между интерфейсами и реализующими их классами или между прецедентами и реализующими их кооперациями. 5.7.3. Диаграммы Диаграмма — это графическое представление набора элементов с отношениями между ними. Обычно представляет собой ориентированный граф, описывает систему визуально с какой-либо точки зрения. Всего существует девять типов диаграмм. Диаграмма классов — включает классы, интерфейсы, объекты и кооперации, а так же отношения между ними. Эта диаграмма соответствует статическому виду системы с точки зрения проектирования. Диаграмма объектов — представляет объекты и отношения меж- 288
ду ними. Она дает статический слепок экземпляров сущностей, показанных на диаграмме классов. Диаграмма прецедентов — включает прецеденты и актеров (внешние, по отношению к данной системе, лица или другие системы), а также отношения между ними. Диаграмма последовательностей — представляет связи между объектами, в частности сообщения, и отражают их временную упорядоченность. Диаграмма коопераций — представляет структурную организацию объектов, обменивающихся сообщениями. Диаграмма состояния — представляет собой автомат, включающий состояния, переходы, события и все виды действия. Они относятся к динамическому виду системы и наиболее часто используются при моделировании работы интерфейса, класса или кооперации. Диаграмма деятельности — разновидность диаграммы состояния, показывает потоки управления между объектами. Диаграмма компонентов — представляет организацию компонентов и существующих между ними зависимостей. Относится к статическому виду системы. Диаграмма развертывания — представляет конфигурацию обрабатывающих узлов системы и размещенных в них компонентов. Относится к статическому виду системы. 5.7.4. Инструментарий проектирования программного обеспечения Многие продукты, реализующие CASE-технологии (Computer Aided Software Engineering — автоматизированное проектирование и создание программ), в настоящее время поддерживают нотацию UML. Такие пакеты, как Paradigm Plus, System Architect, Microsoft Visual Modeler, Delphi и др., поддерживают нотацию UML. Наиболее мощный пакет проектирования, разработанный компанией Rational Software — Rational Rose (RR), позволяет использовать при разработке все возможности языка UML. Процесс проектирования ПО должен представлять собой итерационный процесс. В RR определены четыре фазы проектирования, которые, повторяясь, могут постепенно улучшать проект на всех ста- 10. Информатика 289
днях. Каждая стадия является законченным этапом. Она документирована и может быть предъявлена заказчику и верифицирована. Первая фаза: определение свойств системы. На этом этапе задается идея нового ПО, определяются варианты разработки, круг лиц, взаимодействующих с ПО, круг задач (варианты использования Use Case), время и стоимость разработки. RR в первой фазе позволяет отображать диаграммы прецедентов (варианты использования) для нескольких вариантов разработки, документировать эти варианты с описанием действующих лиц и прецедентов. Эти диаграммы можно показать заказчикам, чтобы убедиться в полном представлении свойств ПО. Вторая фаза: уточнение. В этой фазе производится планирование, анализ и проектирование архитектуры для каждого варианта разработки. Она включает в себя следующие этапы: кодирование прототипов, разработка тестов и выбор варианта разработки. На основании анализа проводится разработка технического задания для ПО. RR позволяет на этом этапе, при помощи построения диаграммы последовательности и кооперативных диаграмм, проиллюстрировать поток обработки данных и детализировать проект. Результаты этого этапа передаются разработчикам, которые начинают конструировать ПО. Третья фаза: конструирование.Это фаза разработки и тестирования ПО. В этой фазе проект уже представлен в виде отдельных частей, которые можно разрабатывать параллельно. RR позволяет на этом этапе построить диаграммы компонентов, по которым она генерирует «скелетный код» системы на заданном языке высокого уровня. После уточнения кода вручную можно произвести обратное проектирование полученного кода с целью уточнения исходной модели. Четвертая фаза: ввод в действие. Эта фаза наступает, когда готовый продукт, откомпилированный в среде выбранного языка высокого уровня, передают пользователю. В этой фазе RR не используется. 290
6. Основы алгоритмизации и технологии программировании 6.1. Понятие алгоритма и его свойства Каждый из нас постоянно решает множество задач: как быстрее добраться на работу, как лучше спланировать дела текущего дня и многие другие. Некоторые задачи мы решаем автоматически, так как на протяжении многих лет привыкли к их выполнению, другие требуют длительного размышления над решением, но в любом случае, решение каждой задачи всегда делится на простые действия. Алгоритм — описанная на некотором языке точная конечная система правил, определяющая содержание и порядок действий над некоторыми объектами, строгое выполнение которых дает решение поставленной задачи. Понятие алгоритма, являющееся фундаментальным в математике и информатике, возникло задолго до появления средств вычислительной техники. Слово «алгоритм» появилось в средние века, когда европейцы познакомились со способами выполнения арифметических действий в десятичной системе счисления, описанными узбекским математиком Муххамедом бен Аль-Хорезми («аль-Хорезми» — человек из города Хорезми; в настоящее время город Хива в Хорезмской области Узбекистана). Слово алгоритм — есть результат европейского произношения слов аль-Хорезми. Первоначально под алгоритмом понимали способ выполнения арифметических действий над десятичными числами. В дальнейшем это понятие стали использовать для обозначения любой последовательности действий, приводящей к решению поставленной задачи. Любой алгоритм существует не сам по себе, а предназначен для определенного исполнителя (человека, робота, компьютера, языка программирования и т.д.). Свойством, характеризующим любого исполнителя, является то, что он умеет выполнять некоторые команды. Совокупность команд, которые данный исполнитель умеет выполнять, называется системой команд исполнителя. Алгоритм описывается в командах исполнителя, который будет его реализовы- 291
вать. Объекты, над которыми исполнитель может совершать действия, образуют так называемую среду исполнителя. Исходные данные и результаты любого алгоритма всегда принадлежат среде того исполнителя, для которого предназначен алгоритм. Значение слова «алгоритм» очень схоже со значениями слов «рецепт», «метод», «процесс». Однако, в отличие от рецепта или процесса, алгоритм характеризуется следующими свойствами: дискретностью, массовостью, определенностью, результативностью, формальностью. Дискретность (разрывность — противоположно непрерывности)— это свойство алгоритма, характеризующее его структуру: каждый алгоритм состоит из отдельных законченных действий, говорят: «Делится на шаги». Массовость — применимость алгоритма ко всем задачам рассматриваемого типа, при любых исходных данных. Например, алгоритм решения квадратного уравнения в области действительных чисел должен содержать все возможные исходы решения, т.е., рассмотрев значения дискриминанта, алгоритм находит либо два различных корня уравнения, либо два равных, либо делает вывод о том, что действительных корней нет. Определенность (детерминированность, точность) — свойство алгоритма, указывающее на то, что каждый шаг алгоритма должен быть строго определен и не допускать различных толкований; также строго должен быть определен порядок выполнения отдельных шагов. Помните сказку про Ивана-царевича? «Шел Иван-царевич по дороге, дошел до развилки. Видит большой камень, на нем надпись: «Прямо пойдешь - голову потеряешь, направо пойдешь — жену найдешь, налево пойдешь — разбогатеешь». Стоит Иван и думает, что дальше делать». Таких инструкций алгоритм содержать не может. Результативность — свойство, состоящее в том, что любой алгоритм должен завершаться за конечное (может быть очень большое) число шагов. Вопрос о рассмотрении бесконечных алгоритмов остается за рамками теории алгоритмов. Формальность - это свойство указывает на то, что любой исполнитель, способный воспринимать и выполнять инструкции алгоритма, действует формально, т.е. отвлекается от содержания поставленной задачи и лишь строго выполняет инструкции. Рассуждать «что, как и почему?» должен разработчик алгоритма, а исполнитель фор- 292
мально (не думая) поочередно исполняет предложенные команды и получает необходимый результат. 6.2. Способы описания алгоритмов Рассмотрим следующие способы описания алгоритма: словесное описание, псевдокод, блок-схема, программа. Словесное описание представляет структуру алгоритма на естественном языке. Например, любой прибор бытовой техники (утюг, электропила, дрель и т.п.) имеет инструкцию по эксплуатации, т.е. словесное описания алгоритма, в соответствии которому данный прибор должен использоваться. Никаких правил составления словесного описания не существует. Запись алгоритма осуществляется в произвольной форме на естественном, например, русском языке. Этот способ описания не имеет широкого распространения, так как строго не формализуем (под «формальным» понимается то, что описание абсолютно полное и учитывает все возможные ситуации, которые могут возникнуть в ходе решения); допускает неоднозначность толкования при описании некоторых действий; страдает многословностью. Псевдокод — описание структуры алгоритма на естественном, частично формализованном языке, позволяющее выявить основные этапы решения задачи, перед точной его записью на языке программирования. В псевдокоде используются некоторые формальные конструкции и общепринятая математическая символика. Строгих синтаксических правил для записи псевдокода не существует. Это облегчает запись алгоритма при проектировании и позволяет описать алгоритм, используя любой набор команд. Однако в псевдокоде обычно используются некоторые конструкции, присущие формальным языкам, что облегчает переход от псевдокода к записи алгоритма на языке программирования. Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором используемых слов и конструкций. Блок-схема — описание структуры алгоритма с помощью геометрических фигур с линиями-связями, показывающими порядок выполнения отдельных инструкций. Этот способ имеет ряд преимуществ. Благодаря наглядности, он обеспечивает «читаемость» 293
алгоритма и явно отображает порядок выполнения отдельных команд. В блок-схеме каждой формальной конструкции соответствует определенная геометрическая фигура или связанная линиями совокупность фигур. Рассмотрим некоторые основные конструкции, использующиеся для построения блок-схем. Блок, характеризующий начало/конец алгоритма (для подпрограмм — вызов/возврат): Блок — процесс, предназначенный для описания отдельных действий: Начало Конец Блок — предопределенный процесс, предназначенный для обращения к вспомогательным алгоритмам (подпрограммам): Блок — ввода/вывода с неопределенного носителя'. Блок — ввод с клавиатуры'. Блок — вывод на монитор: Блок — вывод на печатающее устройство'. 294 <Действие>
Блок — решение (проверка условия или условный блок): Блок, описывающий цикл с параметром'. Блок — границы цикла, описывающий циклические процессы типа: «цикл с предусловием», «цикл с постусловием»: Соединительные блоки Описания алгоритма в словесной форме, на псевдокоде или в виде блок-схемы допускают некоторый произвол при изображении команд. Вместе с тем она настолько достаточна, что позволяет человеку понять суть дела и исполнить алгоритм. На практике исполнителями алгоритмов выступают компьютеры. Поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на «понятном» ему языке, такой формализованный язык называют языком программирования. 295
Программа — описание структуры алгоритма на языке алгоритмического программирования. С другой стороны, понятие «программа» нельзя трактовать только таким образом, как уже говорилось в главе 5 (п. 5.5.2), программа на языке декларативного программирования представляет собой совокупность описанных знаний и не содержит явного алгоритма исполнения. 6.3. Основные алгоритмические конструкиии Элементарные шаги алгоритма можно объединить в следующие алгоритмические конструкции: линейные (последовательные), разветвляющиеся, циклические и рекурсивные. 6.3.1. Линейная алгоритмическая конструкиия Линейной называют алгоритмическую конструкцию, реализованную в виде последовательности действий (шагов), в которой каждое действие (шаг) алгоритма выполняется ровно один раз, причем после каждого /-го действия (шага) выполняется (/+1)-е действие (шаг), если /-е действие — не конец алгоритма. Пример 6.1. Опишем алгоритм сложения двух чисел на псевдокоде в виде блок-схемы (рис. 6.1). Псевдокод: 1. Ввод двух чисел a, b. 2. Вычисляем сумму S = а + b. 3. Вывод S. 4. Конец. Рис. 6.1. Блок-схема к примеру 6.1 296
6.3.2. Розветвляющаяся алгоритмическоя конструкция Разветвляющейся (или ветвящейся) называется алгоритмическая конструкция, обеспечивающая выбор между двумя альтернативами в зависимости от значения входных данных. При каждом конкретном наборе входных данных разветвляющийся алгоритм сводится к линейному. Различают неполное {если — то) и полное (если — то — иначе) ветвления. Полное ветвление позволяет организовать две ветви в алгоритме (то или иначе), каждая из которых ведет к общей точке их слияния, так что выполнение алгоритма продолжается независимо от того, какой путь был выбран (рис. 6.2). Неполное ветвление предполагает наличие некоторых действий алгоритма только Рис. 6.2. Полное ветвление на одной ветви (то), вторая ветвь отсутствует, т.е. для одного из результатов проверки никаких действий выполнять не надо, управление сразу переходит к точке слияния (рис. 6.3). Пример 6.2. Вывести значение наибольшего из двух чисел. Псевдокод: 1. Ввод двух чисел а, Ь. 2. ЕСЛИ а > Ь, ТО «выводим а», ИНАЧЕ «выводим Ь». 3. Конец. 297
Рис. 6.4. Блок-схема к примеру 6.2 В данном примере реализовано полное ветвление. ЕСЛИ значения входных данных таковы, что а >b, ТО выполняется линейный алгоритм: 1. Ввод двух чисел а, b. 2. Вывод а. ИНАЧЕ, когда а <b, выполняется линейный алгоритм: 298
1. Ввод двух чисел а, b. 2. Вывод b. Вывод: алгоритм является разветвляющимся и состоит из двух ветвей. Рассмотрим стандартный алгоритм поиска наибольшего (наименьшего) значения среди нескольких заданных. Основная идея алгоритма сводится к следующему: за наибольшее (наименьшее) принимаем значение любого из данных. Поочередно сравниваем оставшиеся данные с наибольшим (наименьшим). Если окажется, что очередное значение входного данного больше (меньше) наибольшего (наименьшего), то наибольшему (наименьшему) присваиваем это значение. Таким образом, сравнив все входные данные, найдем наибольшее (наименьшее) среди них. Алгоритм использует неполное ветвление. Пример 6.3. Заданы три числа. Найти значение наименьшего из них. Заданные числа обозначим: а, b, с; результирующее наименьшее - min. На рис. 6.5 представлена блок-схема алгоритма решения данной задачи. Рис. 6.5. Алгоритм поиска наименьшего значения среди трех заданных 299
Команlа «Выбор» Часто при выборе одного из возможных вариантов действий приходится проверять значение выражения на принадлежность заданному набору данных. Для этого существует команда «Выбор». При ее исполнении сначала вычисляется значение некоторого выражения Z. Затем последовательно проверяются условия VI, V2, ..., Vп относительно Z, начиная с первого, до тех пор, пока не встретится условие, принимающее значение ИСТИНА. Далее выполняется соответствующее этому условию действие (или серия действий), после чего команда выбора завершается. Если ни одно из условий не является истинным, то выполняется действие (или набор действий), идущее по ветви ЛОЖЬ для каждого из условий. На рис. 6.6 представлена блок-схема команды «Выбор» для п — 3. Рис. 6.6. Команда «выбор» 300
6.3.3. Алгоритмическоя конструкция «Цикл» Циклической (или циклом) называют алгоритмическую конструкцию, в которой некая, идущая подряд группа действий (шагов) алгоритма может выполняться несколько раз, в зависимости от входных данных или условия задачи. Группа повторяющихся действий на каждом шагу цикла называется телом цикла. Любая циклическая конструкция содержит в себе элементы ветвящейся алгоритмической конструкции. Рассмотрим три типа циклических алгоритмов: цикл с параметром (который называют арифметическим циклом), цикл с предусловием и цикл с постусловием (их называют итерационными). Арифметический цикл В арифметическом цикле число его шагов (повторений) однозначно определяется правилом изменения параметра, которое задается с помощью начального (N) и конечного (К) значений параметра и шагом (А) его изменения. Т.е., на первом шаге цикла значение параметра равно N, на втором — N + h, на третьем — N + 2h и т.д. На последнем шаге цикла значение параметра не больше К, но такое, что дальнейшее его изменение приведет к значению, большему, чем К. Пример 6.4. Вывести 10 раз слово «Привет!». Параметр цикла обозначим i, он будет отвечать за количество выведенных слов. При i = 1 будет выведено первое слово, при i = 2 будет выведено второе слова и т.д. Так как требуется вывести 10 слов, то последнее значение параметра i = 10. В заданном примере требуется 10 раз повторить одно и то же действие: вывести слово «При- Правило изменения параметра i: i =NtK,h означает 1 -й шаг цикла i = N 2-й шаг цикла i = N + h 3-й шаг цикла i = N + 2h и т.д. последний шаг i = К 301
вет!». Составим алгоритм, используя арифметический цикл, в котором правило изменения параметра / = 1, 10, 1. То есть начальное значение параметра /=1; конечное значение / = 10; шаг изменения h = 1. На рис. 6.7 представлена блок-схема алгоритма решения данной задачи. Начало Конец Привет! Рис. 6.7. Блок-схема к примеру 6.4 Цикл с предусловием Количество шагов цикла заранее не определено и зависит от входных данных задачи. В данной циклической структуре сначала проверяется значение условного выражения (условие) перед выполнением очередного шага цикла. Если значение условного выражения истинно, исполняется тело цикла. После чего управление вновь передается проверке условия и т.д. Эти действия повторяются до тех пор, пока условное выражение не примет значение ЛОЖЬ. При первом же несоблюдении условия цикл завершается. Рис. 6.8. Блок-схема цикла с предусловием 302
Блок-схема данной конструкции представлена на рис. 6.8 двумя способами: с помощью условного блока лис помощью блока границы цикла б. Особенностью цикла с предусловием является то, что если изначально условное выражение ложно, то тело цикла не выполнится ни разу. Пример 6.5. Одним из наиболее распространенных алгоритмов, встречающихся в литературе по информатике, является алгоритм Евклида — алгоритм нахождения наибольшего общего делителя двух натуральных чисел тип (рис. 6.9). Рис. 6.9. Блок-схема алгоритма Евклида 303
Опишем его на псевдокоде: 1. Ввод натуральных чисел тип. 2. Пока т п делать. 2.1. Если т >п , то т =т — л, иначе п=п — т. 2.2. Переход к шагу 2. 3. Вывод т (найденный наибольший общий делитель). 4. Конец. Цикл с постусловием Как и в цикле с предусловием, в циклической конструкции с постусловием заранее не определено число повторений тела цикла, оно зависит от входных данных задачи. В отличие от цикла с предусловием, тело цикла с постусловием всегда будет выполнено хотя бы один раз, после чего проверяется условие. В этой конструкции тело цикла будет выполняться до тех пор, пока значение условного выражения ложно. Как только оно становится истинным, выполнение команды прекращается. Блок-схема данной конструкции представлена на рис. 6.10 двумя способами: с помощью условного блока а и с помощью блока управления б. Рис. 6.10. Блок-схема цикла с постусловием 304
Пример 6.6. Составим алгоритм игры «Угадай число». Первый игрок вводит задуманное число от 1 до 50: Второй (угадывающий) вводит другое число и получает один из ответов: «Ваше число меньше», «Ваше число больше» или «Вы угадали». Игра продолжается до тех пор, пока второй игрок не угадает задуманное число. Составляя алгоритм игры, обозначим х — число, задуманное первым игроком, у — число, вводимое на очередном шаге вторым игроком. Блок-схема алгоритма приведена на рис. 6.11. Рис. 6.11. Блок-схема игры «Угадай число» (пример 6.6) 305
Рассмотрим стандартные циклические алгоритмы, такие как вычисление суммы и подсчет количества элементов, удовлетворяющих некоторому признаку. Суммирование. Пример 6.7. Для заданного натурального числа N вычислить сумму 1 1 1 1 + - + - + ...+—. 2 3 N Подсчет суммы осуществляется следующим образом. Сначала считаем, что сумма S есть первое слагаемое (S = 1). Далее к первому сла- 1 гаемому прибавляем второе, получаем новую сумму 5-1 + — . Но 1 на предыдущем шаге S = 1, поэтому можно записать 5 = 5 + — . к сумме двух первых слагаемых прибавляем третье 5 = 1 + — + -. Но на 1 1 предыдущем шагу 5 = 1 + — , поэтому можно записать S - S + - и т.д. 2 3 Получили следующую последовательность шагов: 1) S=l. 2) S = S + -. 2 3) S = S + ~. 3 Запишем /-й шаг, опираясь на два предыдущих: i Выясним правило изменения номера шага /. В описанной последовательности / = 1, 2, 3 и т.д. В сумме N слагаемых, поэтому последним значением i будет N. Отсюда нашли правило изменения / = 1, N, 1. 306
Сверяя инструкции каждого шага, находим, что выражение на первом шаге отличается от других (однотипных). Чтобы оно стало таким как все, в сумму надо добавить S, т.е. записать: S = S + 1 (учи- 1 тываем, что 1=т). Отсюда для S возникает необходимость задания начального значения, но такого, чтобы S + 1 = 1 (таким должно быть выражение для / = 1), этим числом является нуль, при сложении с нулем сумма не меняется. Так как известно число шагов цикла, то для построения алгоритма используем цикл с параметром /. Алгоритм на псевдокоде: 1. Ввод N. 2. S = 0. 3. Для / = 1, N, 1 повторить: 3.1. 5 = 5 + -. i 4. Вывод S. 5. Конец. Блок-схема алгоритма приведена на рис. 6.12. Сформулируем правило суммирования: • начальное значение суммы S = 0; • в теле некоторой циклической конструкции выполнить команду: S = S + <слагаемое>. Упражнения для самостоятельной работы: Для заданного натурального числа N вычислите суммы N-сла- гаемых: 12 3 1. - + - + - + ...; 2 3 4 .12 3 2. — + — + — + ...: 2 4 6 307
Рис. 6.12. Алгоритм вычисления суммы Подсчет количества элементов. Произведем счет: 1, 2, 3, 4, 5 и т.д., этот процесс является циклическим, так как каждый раз мы совершаем одно и то же действие: предыдущее натуральное число увеличиваем на единицу. Обозначив через К — счетчик искомых элементов, легко получить правило счетчика: К = К + 1 (на очередном шаге цикла). Но при первом подсчете должны получить значение К, равное единице, а до начала счета счетчик должен быть пуст, следовательно, начальное значение счетчика равно нулю. Правило счетчика: • начальное значение счетчика К = 0; • в теле некоторой циклической конструкции выполнить команду: К = К+ 1. 308
Пример 6.8 Задано 20 чисел. Сколько среди них чисел, больших 10? Псевдокод: 1. К = 0 {Счетчик чисел, больших 10}. 2. Повторить 20 раз (для / = 1, 20, 1). 2.1. Ввод числа х. 2.2. Если х > 10, то К = К+ 1. 3. Вывод К. 4. Конец. Блок-схема алгоритма приведена на рис. 6.13. Замечание, в фигурных скобках {....} принято помещать комментарии к алгоритму. Рис. 6.13. Алгоритм примера 6.8 309
В каждом из рассмотренных выше примеров использовалась одна циклическая конструкция. В реальных задачах может встретиться любое число циклов. Обозначив цикл квадратной скобкой, схематично представим варианты взаимного расположения циклов (рис. 6.14). а — последовательные б — вложенные в — запрещенные Рис. 6.14. Расположение циклов Алгоритм любой задачи может быть представлен как комбинация представленных выше элементарных алгоритмических структур, поэтому данные конструкции: линейную, ветвящуюся и циклическую, называют базовыми. 6.3.4. Рекурсивный алгоритм Рекурсивным называется алгоритм, организованный таким образом, что в процессе выполнения команд на каком-либо шаге он прямо или косвенно обращается сам к себе. 6.4. Простые типы данных: переменные и константы Реальные данные, которые обрабатывает программа, — это целые и вещественные числа, символы и логические величины. Эти 310
простые типы данных называют базовыми. Все данные, обрабатываемые компьютером, хранятся в ячейках памяти компьютера, каждая из которых имеет свой адрес. Для того чтобы не следить за тем, по какому адресу будут записаны те или иные данные, в языках программирования используется понятие переменной, позволяющее отвлечься от адреса ячейки памяти и обращаться к ней с помощью имени (идентификатора). Переменная — есть именованный объект (ячейка памяти), который может изменять свое значение. Имя переменной указывает на значение, а способ ее хранения и адрес остаются скрытыми от программиста. Кроме имени и значения, переменная имеет тип, определяющий, какая информация находится в памяти. Тип переменной задает: • используемый способ записи информации в ячейки памяти; • необходимый объем памяти для ее хранения. Объем памяти для каждого типа определяется таким образом, чтобы в него можно было поместить любое значение из допустимого диапазона значений данного типа. Например, тип «байт» может принимать значения от 0 до 255, что в двоичном коде (255(10) = = 11111111(2) соответствует ячейке памяти длиной в 8 бит (или 1 байт). В описанных выше алгоритмах (примеры 6.1 — 6.8) все данные хранятся в виде переменных. Например, инструкция «Ввод двух чисел а, Ь» означает введение пользователем значений двух переменных, а инструкция «К=К+1» означает увеличение значения переменной К на единицу. Если переменные присутствуют в программе, на протяжении всего времени ее работы — их называют статическими. Переменные, создающиеся и уничтожающиеся на разных этапах выполнения программы, называют динамическими. Все остальные данные в программе, значения которых не изменяются на протяжении ее работы, называют константами или постоянными. Константы, как и переменные, имеют тип. Их можно указывать явно, например, в инструкции «К = К + 1» 1 есть константа, или для удобства обозначать идентификаторами: pi = 3,1415926536. Только значение pi нельзя изменить, так как это константа, а не переменная. 311
6.5. Структурированные данные и алгоритмы их обработки Для повышения производительности и качества работы необходимо иметь данные, максимально приближенные к реальным аналогам. Тип данных, позволяющий хранить вместе под одним именем несколько переменных, называется структурированным. Каждый язык программирования имеет свои структурированные типы. Рассмотрим структуру, объединяющую элементы одного типа данных, — массив. Массивом называется упорядоченная совокупность однотипных величин, имеющих общее имя, элементы которой адресуются (различаются) порядковыми номерами (индексами). В качестве иллюстрации можно представить шкаф, содержащий множество пронумерованных ящиков (совокупность — «Ящик № 1», «Ящик № 2», «Ящик № 3» и т.д.; «Ящик» — общее имя всех ее элементов). Доступ к содержимому конкретного ящика (элементу массива) осуществляется после выбора ящика по его номеру (индексу). Элементы массива в памяти компьютера хранятся по соседству, одиночные элементы простого типа такого расположения данных в памяти не предполагают. Массивы различаются количеством индексов, определяющих их элементы. Одномерный массив (шкаф ящиков в один ряд) предполагает наличие у каждого элемента только одного индекса. Примерами одномерных массивов служат арифметическая (а) и геометрическая (b) последовательности, определяющие конечные ряды чисел. Количество элементов массива называют размерностью. При определении одномерного массива его размерность записывается в круглых скобках, рядом с его именем. Например, если сказано: «задан массив А(10)», это означает, что даны элементы: ар а2, ... , а10. Рассмотрим алгоритмы обработки элементов одномерных массивов. Ввод элементов одномерного массива осуществляется поэлементно, в порядке, необходимом для решения конкретной задачи. Обычно, когда требуется ввести весь массив, порядок ввода элементов не важен, и элементы вводятся в порядке возрастания их индексов. Алгоритм ввода элементов массива А(10) представлен на рис. 6.15. 312
Рис. 6.15. Ввод элементов одномерного массива А(10) Пример 6.9. Рассмотрим алгоритм вычисления среднего арифметического положительных элементов числового массива А(10). Среднее арифметическое есть отношение суммы к числу ее слагаемых, т.е. среднее арифметическое — . Алгоритм решения задачи (рис. 6.16) будет содержать подсчет суммы (обозначим ее S), включающей положительные элементы массива ( а. > 0), и количества (обозначим N) ее слагаемых. Псевдокод: 1. Повторить 10 раз (для i = 1, 10, 1). 1.1. Ввод а. 2. Начальное значение суммы: S = 0. 3. Начальное значение счетчика: N = 0. 4. Повторить 10 раз (для /= 1, 10, 1): 4.1. ЕСЛИ а. > 0, ТО S = S + а.; N = N + 1. 5. ЕСЛИ N > 0, ТО вычисление среднего арифметического SA = S/N; вывод SA. ИНАЧЕ: вывод «Положительных элементов в массиве нет». 6. Конец. 313
Рис. 6.16. Блок-схема задачи «подсчета среднего арифметического положительных элементов массива» (пример 6.9) 314
Пример 6.10. В заданном числовом массиве А(10) найти наибольший элемент и его индекс, при условии, что такой элемент в массиве существует, и единственный. Обозначим индекс наибольшего элемента т. Будем считать, что первый элемент массива является наибольшим (т = 1). Сравним поочередно наибольший с остальными элементами массива. Если оказывается, что текущий элемент массива а. (тот, с которым идет сравнение) больше выбранного нами наибольшего а , то считаем его наибольшим (т — /) (рис. 6.17). Рассмотрим двумерный массив (шкаф с множеством ящиков, положение которых определяется двумя координатами — по горизонтали и по вертикали). В математике двумерный массив (таблица чисел) называется матрицей. Каждый ее элемент имеет два индекса а..9 первый индекс / определяет номер строки, в которой находится элемент (координата по горизонтали), а второй j — номер столбца (координата по вертикали). Двумерный массив характеризуется двумя размерностями N и М, определяющими число строк и столбцов соответственно (рис. 6.18). Ввод элементов двумерного массива осуществляется построчно, в свою очередь, ввод каждой строки производится поэлементно, тем Рис 6.17. Алгоритм поиска наибольшего элемента массива и его индекса (пример 6.10) 315
Рис. 6.18. Матрица A(NxM) самым определяется циклическая конструкция, реализующая вложение циклов. Внешний цикл определяет номер вводимой строки (/), внутренний — номер элемента по столбцу (/). На рис. 6.19 представлен алгоритм ввода матрицы A(NxM). Рис. 6.19. Алгоритм ввода матрицы A(NxM) Пример 6.11. Задана матрица символов Х(ЮОхЮО), представляющая собой карту ночного неба; звездам на карте соответствуют символы «*». Определить: сколько звезд на карте? Алгоритм решения задачи достаточно прост, необходимо перебрать все элементы матрицы и посчитать, сколько среди них символов «*». Обозначим К переменную — счетчик. На рис. 6.20 представлена блок-схема решения этой задачи. 316
Рис. 6.20. Алгоритм примера 6.11 317
6.6. Языки программирования Как мы уже знаем, компьютерная программа представляет собой логически упорядоченную последовательность команд, предназначенных для управления компьютером. Процессор компьютера — это большая интегральная схема. Все данные и команды он получает в виде электрических сигналов. В двоичном коде наличие сигнала описывается понятием «1», а его отсутствие — понятием «О». Команды, обрабатываемые процессором, можно интерпретировать как ряд чередующихся определенным образом единиц и нулей. То есть любая команда преобразуется в двоичное число. Таким образом, процессор исполняет программы, представляющие собой последовательность чисел и называемые машинным кодом. Писать программы в машинных кодах очень сложно, причем с ростом размера программы эта задача усложняется. В компьютерах первого поколения использовались программы, написанные в машинных кодах, причем для каждого компьютера существовал свой собственный машинный код. Числовая кодировка команд, адресов ячеек и обрабатываемых данных, зависимость вида программы от ее места в памяти не давали возможность следить за смыслом программы. Это во многом ограничивало область применения компьютеров первого поколения. В тот период (начало 50-х гг.) средства программирования и программное обеспечение только зарождались и были еще не развиты. Для того чтобы сделать программу читабельной и иметь возможность следить за ее смысловой структурой, придумали символический язык ассемблер, близкий к машинному (конец 50-х — начало 60-х гг.), в котором появилось понятие переменной. Ассемблер стал первым полноценным языком программирования. Благодаря этому заметно уменьшилось время разработки и возросла надежность программ. Для записи кодов операций и обрабатываемой информации в ассемблере используются стандартные обозначения, позволяющие записывать числа и текст в общепринятом виде, для кодов команд приняты мнемонические обозначения. Для обозначения величин, размещаемых в памяти, можно поименять имена. После ввода программы ассемблер сам заменяет символические имена на адреса памяти, а символические коды команд на числовые. Использование ассемблера сделало процесс программирование более наглядным. Дальнейшее развитие этой идеи привело к созданию языков 318
программирования высокого уровня, в которых длинные и сложные последовательности машинных кодов были заменены одним единственным обозначающим их словом — операторы. 6.6.1. Понятие «язык программирования» Сегодня практически все программы создаются с помощью языков программирования. Теоретически программу можно написать и на естественном языке (говорят: программирование на метаязыке), но из-за неоднозначности естественного языка автоматически перевести такую программу в машинный код пока невозможно. Языки программирования — это формальные искусственные языки. Как и естественные языки, они имеют алфавит, словарный запас, грамматику и синтаксис, а также семантику. Алфавит — разрешенный к использованию набор символов, с помощью которого могут быть образованы слова и величины данного языка. Синтаксис — система правил, определяющих допустимые конструкции языка программирования из букв алфавита. Семантика — система правил однозначного толкования каждой языковой конструкции, позволяющих производить процесс обработки даннх. Взаимодействие синтаксических и семантических правил определяет основные понятия языка, такие как операторы, идентификаторы, константы, переменные, функции, процедуры и т.д. В отличие от естественных, язык программирования имеет ограниченный запас слов (операторов) и строгие правила их написания, а правила грамматики и семантики, как и для любого формального языка, явно однозначно и четко сформулированы. Языки программирования, ориентированные на команды процессора и учитывающие его особенности, называют языками низкого уровня. «Низкий уровень» не означает неразвитый, имеется в виду, что операторы этого языка близки к машинному коду и ориентированы на конкретные команды процессора. Языком самого низкого уровня является ассемблер. Программа, написанная на нем, представляет последовательность команд машинных кодов, но записанных с помощью символьных мнемоник. С помощью языков низкого уровня создаются компактные оптимальные 319
программы, так как программист получает доступ ко всем возможностям процессора. С другой стороны, при этом требуется хорошо понимать устройство компьютера, а использование такой программы на компьютере с процессором другого типа невозможно. Такие языки программирования используются для написания небольших системных приложений, драйверов устройств, модулей стыковки с нестандартным оборудованием, когда важнее компактность, быстродействие, прямой доступ к аппаратным ресурсам. Языки программирования, имитирующие естественные, обладающие укрупненными командами, ориентированные «на человека», называют языками высокого уровня. Чем выше уровень языка, тем ближе структуры данных и конструкции, использующиеся в программе, к понятиям исходной задачи. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому исходные тексты программ легко переносимы на другие платформы, имеющие трансляторы этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, число ошибок, допускаемых в процессе программирования, намного меньше. В настоящее время насчитывается несколько сотен таких языков (без учета их диалектов). Таким образом, языки программирования высокого уровня, ориентированные на решение больших содержательных прикладных задач, являются аппаратно-независимыми и требуют использования соответствующих программ-переводчиков для преобразования текста программы в машинный код, который в итоге и обрабатывается процессором. 6.6.2. Компиляторы и интерпретаторы С помощью языка программирования создается текст программы, описывающий разработанный алгоритм. Чтобы программа была выполнена, надо либо весь ее текст перевести в машинный код (это действие и выполняет программа — компилятор) и затем передать на исполнение процессору, либо сразу выполнять команды языка, переводя на машинный язык и исполняя каждую команду поочередно (этим занимаются программы — интерпретаторы). Интерпретатор функционирует следующим образом: берет оче- 320
редной оператор языка из текста программы, анализирует его структуру и затем сразу исполняет. После успешного выполнения текущей команды интерпретатор переходит к анализу и исполнению следующей. Если один и тот же оператор в программе выполняется несколько раз, интерпретатор всякий раз воспринимает его так, будто встретил впервые. Поэтому программы, в которых требуется произвести большой объем повторяющихся вычислений, будут работать медленно. Для выполнения программы на другом компьютере также необходимо установить интерпретатор, так как без него программа представляет собой набор слов и работать не может. Компиляторы полностью обрабатывают весь текст программы (его называют исходным кодом или source code). Они осуществляют поиск синтаксических ошибок, выполняют семантический анализ и только затем, если текст программы в точности соответствует правилам языка, его автоматически переводят (транслируют) на машинный язык (говорят: генерируют объектный код или object code). Нередко при этом выполняется оптимизация с помощью набора методов, позволяющих повысить быстродействие программы. Сгенерированный объектный код обрабатывается специальной программой — сборщиком или редактором связей, который производит связывание объектного и машинного кодов. Текст программы преобразуется в готовый к исполнению ЕХЕ-файл {исполнимый код), его можно сохранить в памяти компьютера или на диске. Этот файл имеет самостоятельное значение и может работать под управлением операционной системы. Его можно перенести на другие компьютеры с процессором, поддерживающим соответствующий машинный код. Основной недостаток компиляторов — трудоемкость трансляции языков программирования, ориентированных на обработку данных сложной структуры, заранее неизвестной или динамически меняющейся во время работы программы. Для таких программ в машинный код вводятся дополнительные проверки и анализ наличия ресурсов операционной системы, средства динамического захвата и освобождения памяти компьютера, что на уровне статически заданных машинных инструкций осуществить достаточно сложно, а для некоторых задач практически невозможно. С помощью интерпретатора, наоборот, для исследования содержимого памяти допустимо в любой момент прервать работу программы, организовать диалог с пользователем, выполнить любые слож- 11. Информатика 321
ные преобразования данных и при этом постоянно контролировать программно-аппаратную среду, что и обеспечивает высокую надежность работы программы. Интерпретатор при выполнении каждой команды подвергает проверке и анализу необходимые ресурсы операционной системы, при возникающих проблемах вьщает сообщения об ошибках. В реальных системах программирования смешаны технологии компиляции и интерпретации. В процессе отладки программу можно выполнять по шагам (трассировать), а результирующий код не обязательно будет машинным, он может быть, например, аппарат- но-независимым промежуточным кодом абстрактного процессора, который в дальнейшем будет транслироваться в различных компьютерных архитектурах с помощью интерпретатора или компилятора в соответствующий машинный код. 6.6.3. Системы программировании Процесс создания программы включает: • Составление исходного кода программы (рис. 6.21) на языке программирования. • Этап трансляции, необходимый для создания объектного кода программы. • Построение загрузочного модуля, готового к исполнению. Все перечисленные выше действия требуют наличия специальных программных средств. Исходный код Трансляция Объектный код Редактор связей Загрузочный модуль Рис. 6.21. Процесс создания программы, готовой к исполнению Совокупность этих программных средств входит в состав системы программирования'. • Текстовый редактор (необходимый для создания и редактирования исходного кода программы на языке программирования). • Компилятор. • Редактор связей. • Отладчик. 322
ш • Библиотеки функций. • Справочная система. 6.6.4. Классификации и обзор азыков программирования Современное состояние языков программирования можно представить в виде следующей классификации (рис. 6.22). Процедурные (императивные) Операцион ■ ные ЯЗЫКИ ПРОГРАММИРОВАНИЯ Структурные Объектно- ориентированные Объектные Визуальные Декларативные Функциональные Логические Рис. 6.22. Классификация языков программирования ПроиеЭурное программирование Процедурное или императивное (от лат. imperativus — повелительный) программирование есть отражение фон Неймановской архитектуры компьютера. Программа, написанная на этом языке, представляет собой последовательность команд, определяющих алгоритм решения задачи. Основной командой является команда присвоения, предназначенная для определения и изменения содержимого памяти компьютера. Фундаментальная идея процедурного программирования — использование памяти компьютера для хранения данных. Функционирование программы сводится к последовательному выполнению команд с целью преобразования исходного состояния памяти, т.е. программа производит пошаговое преобразование содержимого памяти, изменяя его от исходного состояния к результирующему. Одним из первых процедурных языков программирования высоко- 323
го уровня стал Фортран (FORmula TIMNslation), созданный в начале 50-х гг. в США фирмой IBM. Первая публикация о нем появилась в 1954 г. Основное назначение языка — программирование научно-технических задач. Объектами языка являются целые и вещественные числа и числовые переменные. Выражения в нем формируются с помощью четырех арифметических действий: возведения в степень, логических операций И, ИЛИ, НЕ, операций отношения и круглых скобок. Основные операторы Фортрана — ввод, вывод, присваивание, условный и безусловный переход, цикл, вызов подпрограмм. Долгие годы он был одним из самых распространенных языков в мире. За это время накоплена огромная библиотека программ, написанных на Фортране. И сейчас ведутся работы над очередным стандартом Фортрана. В 2000 г. была реализована версия Фортран F2k, имеется стандартная версия HPF (High Performance Fortran) для параллельных суперкомпьютеров. Многие средства Фортрана использованы в языках PL-1 и Бейсик. Кобол (COmmon Business Oriented Language — общепринятый деловой язык) — язык программирования, ориентированный на решение задач обработки данных. Широко используется для решения учетно-экономических и управленческих задач. Разработан в США в 1958—1960 гг. Программа на Коболе имеет вид ряда предложений на английском языке и напоминает обычный текст. Группы последовательно записанных операторов объединяются в предложения, предложения — в параграфы, параграфы — в секции. Программист присваивает параграфам и секциям имена (метки), что облегчает непосредственное обращение к нужному участку программы. В СССР был принят русский вариант языка. В Коболе были реализованы мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано много приложений, некоторые из них активно эксплуатируются и сейчас. Достаточно сказать, что одной из высокооплачиваемых категорией граждан в США являются программисты на Коболе. Алгол (ALGOrithmic Language) разработан группой зарубежных специалистов в 1960 г., явился результатом международного сотрудничества конца 50-х гг. (Алгол-60). Алгол предназначался для записи алгоритмов, построенных в виде последовательности процедур, применяемых при решении поставленных задач. Специалисты-практики воспринимали этот язык неоднозначно, но тем не менее он как 324
признанный международный язык сыграл большую роль в становлении основных понятий программирования и для обучения программистов. В нем впервые введены понятия «блочная структура программы», «динамическое распределение памяти». Внутри блока в Алголе можно вводить локальные обозначения, которые не зависят от остальной части программы. Несмотря на свое интернациональное происхождение, Алгол-60 получил меньшее распространение, чем Фортран. Например, не на всех зарубежных ЭВМ имелись трансляторы с Алгола-60. В 1968 г. в результате дальнейшего развития и усовершенствования Алгола-60 была создана версия Алгол-68. Это многоцелевой универсальный расширенный язык программирования. Последнее свойство позволяло с помощью одной и той же программы транслятора осуществлять трансляцию с различных расширенных версий языка без дополнительных затрат на приспособление этого языка к различным категориям пользователей, на получение проблемно-ориентированных диалектов языка. По своим возможностям Алгол-68 и сегодня опережает многие языки программирования, однако из-за отсутствия эффективных компьютеров для него не удалось своевременно создать хорошие компиляторы. В нашей стране в те годы под руководством академика Андрея Петровича Ершова был создан транслятор Альфа, который представлял достаточно удачную русифицированную версию Алгола. В середине 60-х гг. сотрудники математического факультета Дар- тмутского колледжа Томас Курц и Джон Кемени создали специализированный язык программирования, который состоял из простых английских слов. Новый язык назвали универсальным символическим кодом для начинающих (Beginners All-purpose Symbolic /instruction Code) или сокращенно BASIC (Бейсик). 1964 г. считают годом рождения этого языка. Он получил самое широкое распространение при работе на персональных компьютерах в режиме интерактивного диалога. Популярность Бейсика объясняется как простотой его освоения, так и наличием достаточно мощных универсальных средств, пригодных для решения научных, технических и экономических задач, а также задач бытового характера, игровых и т.д. Согласно концепциям, заложенным в Бейсике, в нем широко распространены различные правила умолчания, что считается плохим тоном в большинстве языков программирования подобного типа. Возникло множество версий языка, зачастую мало совместимых друг с другом. Однако, зная одну из 325
версий, можно без особого труда освоить любую другую. Бейсик активно поглощает многие концепции и новинки из других языков. Первоначально интерактивный режим осуществлялся с использованием интерпретатора, в настоящее время для этого языка имеются также и компиляторы. В начале 60-х гг. каждый из существующих языков программирования был ориентирован на разные классы задач, но в той или иной мере привязан к конкретной архитектуре ЭВМ. Были предприняты попытки преодолеть этот недостаток путем создания универсального языка программирования. ПЛ/1 (PL/1 — Programming language One) — первый многоцелевой универсальный язык, разработан в США фирмой IBM в 1963—1966 гг. Это один из наиболее распространенных универсальных языков, он хорошо приспособлен для решения задач в области вычислительной техники: исследования и планирования вычислительных процессов, моделирования, решения логических задач и исследования логических схем, разработки систем математического обеспечения. При разработке PL/1 были широко использованы основные понятия и средства языков Фортран, Алгол-60, Кобол. PL/1 — богатый и гибкий язык, дает возможность производить вставки, исправлять текст программы в процессе ее отладки. Язык получил широкое распространение, трансляторы с него имеются для многих типов компьютеров. Компания IBM и сегодня продолжает поддерживать этот язык. Паскаль (Pascal) является одним из наиболее популярных процедурных языков программирования, особенно для персональных компьютеров. Созданный как учебный язык программирования в 1968—1971 гг. Никлаусом Виртом в Высшей технической школе (ЕТН) в Цюрихе (Швейцария), он был назван в честь французского математика и философа Блеза Паскаля (1623—1662). Задачей Н. Вирта было создание языка, базирующегося на простом синтаксисе и небольшом количестве базовых конструкций, переводимого в машинный код простым компилятором. В основе языковой концепции Паскаля лежит системный подход, предполагающий переход от общей задачи к частным (более простым и меньшим по объему). К основным принципам Паскаля следует отнести: • Структурное программирование. Его методология основана на использовании подпрограмм и независимых структур данных, 326
объединяющих связанные между собой совокупности данных. Подпрограммы позволяют заменять в тексте программ упорядоченные блоки команд, отчего программный код становится более компактным. Структурный подход обеспечивает создание более понятных и легко читаемых программ, упрощает их тестирование и отладку. • Программирование сверху вниз, когда задача делится на простые, самостоятельно решаемые подзадачи. Затем на основе решенных подзадач выстраивается решение исходной задачи полностью — сверху вниз. В основу разработки языка Паскаль был положен Алгол-60, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его для создания крупных проектов, например, программ-трансляторов. Паскаль реализован для всех типов компьютеров, в настоящее время используется во многих учебных заведениях для обучения программированию, а также для создания больших реальных проектов. Период с конца 60-х до начала 80-х гг. характеризуется бурным ростом числа различных языков программирования, сопровождавшим, как это ни парадоксально, кризис программного обеспечения. Этот кризис особенно остро переживало военное ведомство США. В январе 1975 г. Пентагон решил навести порядок среди бесчисленного множества трансляторов и создал комитет для разработки одного универсального языка. На конкурсной основе комитет рассмотрел сотни проектов и выяснил, что ни один из существующих языков не может удовлетворить их требованиям, для окончательного рассмотрения было оставлено два проекта. В мае 1979 г. был объявлен победитель — группа ученых во главе с Жаном Ихбиа. Победивший язык назвали АДА, в честь Ады Лавлейс, дочери великого поэта Байрона. Она в юности была увлечена идеями Чарльза Бэббиджа и помогала ему составлять описание машины, а в начале 40-х гг. XIX в. разработала первую в мире программу для вычислительной машины. Язык АДА — прямой наследник Паскаля. Он предназначен для создания и длительного сопровождения больших программных систем, управления процессами в реальном масштабе времени. В языке четко выражена модульность его конструкций, причем обеспечивается удобство организации разнообразных связей между модулями. Важным его достоинством является возможность параллельного программирования 327
ветвей программы, которые затем могут реализоваться на многопроцессорных компьютерах. Язык АДА сложен для изучения. Язык программирования С (Си) был разработан в лаборатории Bell для реализации операционной системы UNIX в начале 70-х гг. и не рассматривался как массовый. Он планировался для замены Ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. По набору управляющих конструкций и структур данных С имеет возможности, присущие высокоуровневым языкам, и вместе с тем он располагает средствами прямого обращения к функциональным узлам компьютера. Синтаксис языка С позволяет создавать лаконичный программный код. Одна из существенных особенностей С, приближающая его к функциональным языкам, состоит в том, что различия между выражениями и операторами сглаживаются. Например, выражения, являющиеся операторами программы, могут выполнять дополнительно операции присваивания. Использование подпрограмм основано на понятии функции, которая может также сочетать в себе возможности процедуры. Понятие процедуры в языке С отсутствует. Синтаксис языка затрудняет читаемость программы. Отсутствие строгой типизации данных, возможность в одном выражении сочетать несколько действий делает этот язык привлекательным для программистов, предоставляя им дополнительные возможности, но не способствует надежности создаваемых программ. Язык С популярен и широко используется профессиональными программистами. В настоящее время он реализован для большинства компьютерных платформ. Функциональное программирование Суть функционального (аппликативного) программирования определена А.П. Ершовым как «способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части является введение имени функции, а единственным правилом композиции — оператор суперпозиции функций. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передачи управления». Ключевым понятием в функциональных языках является выражение. К ним относятся константы, структурированные объекты, 328
функции, их тела и вызовы функций. Функциональный язык программирования состоит из: совокупности базовых функций; классов констант, действия над которыми могут производить функции; предписаний, устанавливающих правила построения выражений и новых функций на основе базовых или рекурсивно через себя. Программа, написанная на функциональном языке, напоминает определение и перечень специфических особенностей задачи и представляет собой последовательность описаний функций и выражений. Выражение вычисляется редукционным способом, т.е. сведением сложного к простому. Обращения к базовым функциям приводят к их замене соответствующими значениями. Вызовы функций, не являющихся базовыми, заменяются их телами, а их параметры — фактическими аргументами. Функциональное программирование не рассматривает память как место для хранения данных, в нем используется математическое понятие переменной и функции. Переменные временно обозначают объекты программы. Как и в математике, функции функциональных языков отображают одни объекты в другие, аргументы — в значения. Нет принципиальных различий между константами и функциями, т.е. между операциями и данными. Функция может быть результатом обращения к другой функции и может быть элементом структурированного Объекта. При обращении к функции число ее аргументов не обязательно должно совпадать с числом параметров, определенных при ее описании. Первым таким языком стал Лисп (LISP, LISt Processing — обработка списков), созданный в 1959 г. Джоном Маккарти. Этот язык ориентирован на структуру данных в форме списка и позволяет организовать эффективную обработку больших объемов текстовой информации. Существенная черта языка — единообразие программных структур и структур данных: все выражения записываются в виде списков. Логическое программирование Создание языка искусственного интеллекта Пролог (PROLOG, PROgramming in LOGic — программирование в терминах логики) в 1973 г. французским ученым Аланом Кольмероэ открыло новую область — логическое или реляционное программирование. 329
Концепция логического программирования базируется на понятии отношение. Логическая программа — это совокупность аксиом и правил, определяющих отношения между объектами и целью. Выполнение программы представляет собой попытку доказательства логического утверждения, построенного из программы по правилам, определенным семантикой используемого языка. Результатом вычислений является вывод следствий из аксиом. Алгоритм логической программы предполагает определение и перечень специфических свойств объектов и отношений между ними, а не определение порядка выполнения отдельных шагов. Это подтверждает декларативный характер логического языка программирования. Логические программы не отличаются высоким быстродействием, так как процесс их выполнения сводится к построению прямых и обратных цепочек рассуждений разнообразными методами поиска. Программа на языке Пролог, в основу которой положена математическая модель теории исчисления предикатов, строится из последовательности фактов и правил, затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. Пользователь только описывает структуру задачи, а внутренний механизм Пролога сам ищет решение с помощью методов поиска и сопоставления. Объектно-ориентироdанное программирование (ООП) Пионером данного направления явился язык Смолток (Smalltalk), первоначально предназначенный для реализаций функций машинной графики. Работа над языком началась в 1970 г. в исследовательской лаборатории XEROX (США), а закончилась в 1980 г. окончательным вариантом интерпретатора Smalltalk-80. Данный язык оригинален тем, что его синтаксис очень компактен и базируется исключительно на понятии объекта. В нем отсутствуют операторы или данные, все, что входит в Смолток, является объектами, а объекты общаются друг с другом исключительно с помощью сообщений. В настоящее время версия VisualAge for Smalltalk активно развивается компанией IBM. Основой объектно-ориентированного программирования (ООП) является понятие объект. Его суть состоит в том, что объект объеди- 330
няет в себе структуры данных и характерные только для него процедуры (методы) их обработки. Такой подход полностью меняет стиль программирования, он заключается в отображении физических объектов реального мира на программную среду. Работать с объектами удобнее и естественнее, чем с традиционными конструкциями процедур преобразования данных. Объединение данных и свойственных им процедур обработки в одном объекте, детальная реализация которых остается скрытой для пользователей, называется инкапсуляцией и является одним из важнейших принципов ООП. Другим фундаментальным понятием ООП является класс. Класс есть шаблон, на основе которого может быть создан конкретный программный объект, он описывает свойства и методы, определяющие поведение объектов этого класса. В ООП класс представляет собой абстрактный тип данных и является механизмом для создания объектов. Объявление класса есть логическая абстракция, определяющая новый тип объекта, а определение объекта как экземпляра класса создает этот объект физически, т.е. размещает объект в памяти. ООП является более естественным, так как предоставляет возможность выбрать имеющиеся или создать новые объекты и организовать взаимодействия между ними. Следовательно, объектно-ориентированные языки по сравнению с процедурными являются языками более высокого уровня. Следующими важнейшими принципами ООП являются наследование и полиморфизм. Наследование предусматривает создание новых классов на базе существующих и позволяет классу-потомку иметь (наследовать) все свойства класса-родителя. При работе с объектами иерархии «родители — дети — и т.д.» разрешается задавать одинаковые имена различным по реализации методам, для обработки объектов разных ступеней иерархии. Это явление называется полиморфизм. Благодаря полиморфизму в ООП обработка объектов упрощается, так как одинаковым действиям объектов соответствуют одноименные методы. Полиморфизм (от греч. «многоликость») означает, что рожденные объекты обладают информацией о том, какие методы они должны использовать в зависимости от того, в каком месте цепочки наследования они находятся. Другим основополагающим принципом ООП является модульность, — объекты заключают в себе полное определение их характеристик, никакие определения методов и свойств 331
объекта не должны располагаться вне его, это делает возможным свободное копирование и внедрение одного объекта в другие. К наиболее распространенным современным языкам программирования относятся C++ и Java. Язык C++ был разработан в начале 80-х гг. Бьярном Страустру- пом в лаборатории Bell корпорации AT&T. Им была создана компактная компилирующая система, в основе которой лежал язык С, дополненный элементами языков BCPL, Simula-67 и Алгол-68. Более ранние версии языка были известны как «С с классами». В июле 1983 г. C++ был впервые использован за пределами исследовательской группы автора, однако тогда еще многие особенности языка не были придуманы. К 1990 г. была выпущена третья версия языка C++, стандартизированная американским государственным комитетом стандартов ANSI. В 1990 г. сотрудник корпорации Sun Д. Гослинг на основе расширения C++ разработал объектно-ориентированный язык Oak, основным достоинством которого было обеспечение сетевого взаимодействия различных по типу устройств. Новая интегрируемая в Internet версия языка получила название Java. С января 1995 г. Java получает распространение в Internet. По определению автора, Java является простым объектно-ориентированным и архитектурно-нейтральным языком интерпретирующего типа, обеспечивающим надежность, безопасность и переносимость, обладает высокой производительностью, многопоточностью и динамичностью. Синтаксис языков C++ и Java практически полностью совпадает. Принципиальным различием является то, что язык C++ компилируемый в машинный код, a Java — в платформо-независимый байт- код (каждая команда занимает один байт), этот байт-код может выполняться с помощью интерпретатора — виртуальной Java-машины (Java Virtual Machine), версии которой созданы сегодня для любых платформ. С точки зрения возможностей объектно-ориентируемых средств, Java имеет ряд преимуществ перед C++. Язык Java имеет более гибкую и мощную систему инкапсуляции информации. Механизм наследования, реализованный в Java, обязывает к более строгому подходу к программированию, что способствует надежности и читабельности кода. Язык C++ обладает сложной неадекватной и трудной для понимания системой наследования. Возможности динамического связывания объектов одинаково хорошо представлены 332
в обоих языках, но синтаксическая избыточность C++ и здесь принуждает к выбору языка Java. Сегодня Java по популярности занимает второе место в мире после Бейсика. Идеи ООП проникли во многие процедурные языки. Например, в состав интегрированной системы программирования Паскаль (корпорации Borland International), начиная с версии 5.5, входит специальная библиотека ООП Turbo Vision. С середины 90-х гг. многие объектно-ориентированные языки реализуются как системы визуального программирования. Такие системы имеют интерфейс, позволяющий при составлении текста программы видеть те графические объекты, для которых она пишется. Отличительной особенностью этих систем является наличие в них среды разработки программ из готовых «строительных блоков», позволяющих создавать интерфейсную часть программного продукта в диалоговом режиме, практически без написания программных операций. Система берет на себя значительную часть работы по управлению компьютером, что делает возможным в простых случаях обходиться без особых знаний о деталях ее работы. Она сама пишет значительную часть текста программы: описания объектов, заголовки процедур и многое другое. Программисту остается только вписать необходимые строчки, определяющие индивидуальное поведение программы, которые система не в состоянии предвидеть. Но даже в этих случаях система сама указывает место для размещения таких строк. К объектно-ориентированным системам визуального проектирования относятся: Visual Basic, Delphi, C++ Builder, Visual C++. Это системы программирования самого высокого уровня. VBA (Visual Basic for Application) является общей языковой платформой для приложений Microsoft Office (Excel, Word, Power Point и др.). VBA соблюдает основной синтаксис и правила программирования языков Бейсик-диалектов. VBA помогает довольно сильно расширить возможности приложений за счет написания макросов — программ, предназначенных для автоматизации выполнения многих операций. VBA позволяет создавать объекты управления графического интерфейса пользователя, задавать и изменять свойства объектов, подключать к ним необходимый для конкретного случая программный код. С помощью VBA можно производить интеграцию между различными программными продуктами. Программы на языке VBA для приложений создаются двумя способами: в автоматичес- 333
ком режиме как результат построения клавишной макрокоманды или путем написания программного кода. Языки программирования баз данных Эти языки отличаются от алгоритмических прежде всего своим функциональным назначением. При работе с базами данных (БД) наиболее часто выполняются следующие операции: создание, преобразование, удаление таблиц в БД; поиск, отбор, сортировка по запросам пользователя; добавление новых записей или модификация существующих; удаление записей и др. Для обработки больших массивов информации и выборки записей по определенным признакам был создан структурированный язык запросов SQL (Structured Query Language). Он был впервые создан фирмой IBM в начале 70-х гг., назывался Structured English Query Language (SEQUEL) и предназначался для управления прототипом реляционной базы данных IBM — System R. В дальнейшем SQL стал стандартом языка работы с реляционными базами данных, что зафиксировано американским национальным комитетом стандартов ANSI в 1986 г. Практически в каждой СУБД имеется свой универсальный язык, ориентированный на ее особенности. Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas), Informix и Sybase. Их продукты предназначены для совместной параллельной работы тысяч пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах. В Oracle имеется встроенный язык PL/SQL, в Informix — INFORMIX 4GL, в Adabas - Natural и т.д. Языки программировании для компьютерных сетей Появление и активное развитие компьютерных сетей стало причиной создания многочисленных версий популярных языков программирования, адаптированных для использования в сети. Отличительные особенности, присущие сетевым языкам: они являются интерпретируемыми. Интерпретаторы для них распространяются бесплатно, а сами программы — в исходных текстах. Такие языки получили название скрипт-языков. 334
HTML (Hyper Text Markup Language) — универсальный язык разметки гипертекста, используемый для подготовки Web-документов для сети Internet. Язык представляет собой набор элементарных команд форматирования текста, добавления графических объектов (рисунков), задания шрифтов и цвета, организации ссылок и таблиц. В соответствии с командами HTML броузер отображает содержимое документа, команды языка не отображаются. В основе языка HTML лежит механизм гипертекстовых ссылок, обеспечивающий связь одного документа с другим. В HTML текст кодируется в ASCII и поэтому может быть создан и отредактирован в любом текстовом редакторе. Все Web-страницы написаны на HTML или используют его расширение. Perl. В 80-х гг. Ларри Уолл разработал язык Perl, который предназначался для эффективной обработки больших текстовых файлов, создания текстовых отчетов и управления задачами. В его состав входят многочисленные функции работы со строками, массивами, всевозможные средства преобразования данных, управления процессами, работы с системной информацией и др. Tcl/Tk. В конце 80-х гг. Джон Аустираут придумал скрипт-язык Tel и библиотеку Tk. Tel — это попытка создания идеального скрипт- языка. Он ориентирован на автоматизацию рутинных операций и состоит из мощных команд, выполняющих обработку нетипизирован- ных объектов. VRML. В 1994 г. был создан язык VRML для организации виртуальных трехмерных интерфейсов в Интернете. Он ориентирован на описание разнообразных трехмерных образов, цвето-теневого освещения в текстовом виде и позволяет создавать различные сценарии миров, путешествовать по ним, «облетать» с разных сторон, вращаться в любых направлениях, масштабировать, управлять освещенностью и многое другое. Языки моделирования При моделировании систем применяются формальные способы их описания — формальные нотации, с помощью которых можно представить объекты и взаимосвязи между ними в системе. Такие системы называют CASE-системами. 335
6.7. Этапы подготовки и решений задач на компьютере Компьютер предназначен для решения разнообразных задач: научно-технических, инженерных, разработки системного программного обеспечения, обучения, управления производственными процессами и т.д. В процессе подготовки и решения на компьютере научно-технических задач можно выделить следующие этапы: 1. Постановка задачи — формулируется цель решения задачи, подробно описывается ее содержание; проводится анализ условий, при которых решается поставленная задача, выявляется область определения входных параметров задачи. 2. Формальное построение модели задачи — предполагает построение модели с характеристиками, адекватными оригиналу, на основе какого-либо его физического или информационного принципа; анализируется характер и сущность величин, используемых в задаче. 3. Построение математической модели задачи — характеризуется математической формализацией задачи, при которой существующие взаимосвязи между величинами выражаются с помощью математических соотношений. Как правило, математическая модель строится с определенной точностью, допущениями и ограничениями. 4. Выбор и обоснование метода решения — модель решения задачи реализуется на основе конкретных приемов и методов решения. В большинстве случаев математическое описание задачи трудно перевести на машинный язык. Выбор и использование метода решения позволяет свести решение задачи к конкретному набору машинных команд. При обосновании метода решения рассматриваются вопросы влияния различных факторов и условий на конечный результат, в том числе на точность вычислений, время решения задачи на компьютере, требуемый объем памяти и др. 5. Построение алгоритма — на данном этапе составляется алгоритм решения задачи, в соответствии с выбранным методом решения. Процесс обработки данных разбивается на отдельные относительно самостоятельные блоки, определяется последовательность выполнения этих блоков. 336
6. Составление программы — алгоритм решения переводится на кон- кретный язык программирования. 7. Отладка программы — процесс устранения синтаксических и логических ошибок в программе. В процессе трансляции программы с помощью синтаксического и семантического контроля выявляются недопустимые конструкции и символы (или сочетания символов) для данного языка программирования. Компьютер выдает сообщение об ошибках в форме, соответствующей этому языку. Затем проверяется логика работы программы в процессе ее выполнения с конкретными исходными данными. Для этого используются специальные методы. Например, в программе выбираются контрольные точки, для них подбираются тестирующие примеры и вручную находятся значения в этих точках, которые затем и сверяются со значениями, получаемыми компьютером на этапе отладки. Кроме того, используются отладчики, выполняющие специальные действия на этапе отладки, такие как удаление, замена или вставка отдельных операторов или целых фрагментов программы, вывод промежуточных результатов, изменение значений заданных переменных и др. 8. Решение задачи на компьютере и анализ результатов. Теперь программу можно использовать для решения поставленной задачи. Первоначально выполняется многократное решение задачи на компьютере для различных наборов исходных данных. Получаемые результаты анализируются специалистом, поставившим задачу. Разработанная программа поставляется заказчику в виде готовой к исполнению машинной программы. К ней прилагается документация, включающая инструкцию по эксплуатации. В задачах другого типа некоторые этапы могут отсутствовать. Например, проектирование программного обеспечения не требует построения математической модели. Все приведенные этапы тесно связаны между собой. Например, анализ результатов может привести к необходимости внесения изменений в программу, алгоритм, метод решения или даже в постановку задачи. 337
7. Компьютерною сети Эта глава посвящена компьютерным сетям — основам построения, протоколам, стандартам, сетевым компонентам. Здесь также рассмотрены основы построения Internet — способы передачи информации, адресация и службы. 7.1. Назначение и классификация компьютерных сетей Современные информационные технологии нуждаются во все более совершенных средствах обработки информации. Поэтому потребности в таких средствах постоянно растут. Объединение компьютеров и средств коммуникации оказало существенное влияние на принципы организации компьютерных систем. Модель, в которой один компьютер выполнял всю необходимую работу по обработке данных, уступила место модели, представляющей собой большое количество отдельных, но связанных между собой компьютеров. Такие системы называются компьютерными сетями. Два или более компьютера называются связанными между собой, если они могут обмениваться информацией. Для каких же целей используются компьютерные сети? • Первая цель — предоставление доступа к программам, оборудованию и особенно данным для любого пользователя сети. Это называется совместным использованием ресурсов. • Вторая цель — обеспечение высокой надежности при помощи альтернативных источников информации. Например, все файлы могут быть расположены на двух или трех машинах одновременно, так что, если одна из них недоступна по какой-либо причине, то используются другие копии. Возможность продолжать работу, несмотря на аппаратные проблемы, имеет большое значение для военных и банковских задач, воздушного транспорта, безопасности ядерного реактора и т.п. • Третья цель — экономия средств. Небольшие компьютеры обладают значительно лучшим соотношением цена—производительность, нежели большие. Это обстоятельство заставляет раз- 338
работников создавать системы на основе модели клиент-сервер. Обмен информацией в модели клиент-сервер обычно принимает форму запроса серверу на выполнение каких-либо действий. Сервер выполняет работу и отсылает ответ клиенту. Обычно в сети количество клиентов значительно больше числа используемых ими серверов. • Четвертая цель — масштабируемость, т.е. способность увеличивать производительность системы по мере роста нагрузки. В случае модели клиент-сервер новые клиенты и новые серверы могут добавляться по мере необходимости. • Пятая цель — ускорение передачи информации. Компьютерная сеть является мощным средством связи между удаленными друг от друга пользователями. Если один из них изменяет документ, находящийся на сервере, в режиме on-line, остальные могут немедленно увидеть эти изменения. Имеется два важнейших параметра классификации сетей: технология передачи и размеры. Существуют два типа технологии передачи: • широковещательные сети; • сети с передачей от узла к узлу. Широковещательные сети обладают единым каналом связи, совместно используемым всеми машинами сети. Короткие сообщения, называемые пакетами, посылаемые одной машиной, принимаются всеми машинами. Поле адреса в пакете указывает, кому направляется сообщение. При получении пакета машина проверяет его адресное поле. Если пакет адресован этой машине, она обрабатывает пакет. Пакеты, адресованные другим машинам, игнорируются. Сети с передачей от узла к узлу состоят из большого количества соединенных пар машин. В такой сети пакету необходимо пройти через ряд промежуточных машин, чтобы добраться до пункта назначения. Часто при этом существует несколько возможных путей от источника к получателю. Обычно небольшие сети используют широковещательную передачу, тогда как в крупных сетях применяется передача от узла к узлу. Другим критерием классификации сетей является их размер. Сети можно разделить на локальные, муниципальные и глобальные. И, наконец, существуют объединения двух и более сетей. Хорошо известным примером такого объединения является Internet. Размеры 339
сетей являются важным классификационным фактором, поскольку в сетях различного размера применяется различная техника. Локальными сетями (ЛВС — локальные вычислительные сети или LAN — Local Area Network) называют сети, размещающиеся, как правило, в одном здании или на территории какой-либо организации размерами до нескольких километров. Их часто используют для предоставления совместного доступа компьютеров к ресурсам (например, принтерам) и обмена информацией. Локальные сети отличаются от других сетей тремя характеристиками: размерами, технологией передачи данных и топологией. Обычные ЛВС имеют пропускную способность канала связи от 10 до 100 Мбит/с, небольшую задержку — десятые доли мкс и очень мало ошибок. Муниципальные или региональные сети (MAN — Metropolitan AN) являются увеличенными версиями локальных сетей и обычно используют схожие технологии. Такая сеть может объединять несколько предприятий корпорации или город. Муниципальная сеть может поддерживать передачу цифровых данных, звука и включать в себя кабельное телевидение. Обычно муниципальная сеть не содержит переключающих элементов для переадресации пакетов во внешние линии, что упрощает структуру сети. Глобальные сети (Wide AN или ГВС) охватывают значительную территорию, часто целую страну или даже континент. Они объединяют множество машин, предназначенных для выполнения приложений. Эти машины называются хостами. Хосты соединяются коммуникационными подсетями или просто подсетями. Задачей подсети является передача сообщений от хоста хосту, подобно тому, как телефонная система переносит слова говорящего слушающему. То есть коммуникативный аспект сети — подсеть отделен от прикладного аспекта — хостов, что значительно упрощает структуру сети. 7.2. Типы сетей Сети подразделяются на два типа: одноранговые и на основе сервера. Между этими двумя типами сетей существуют принципиальные различия, которые определяют их разные возможности. Выбор типа сети зависит от многих факторов: размера предприятия и вида его деятельности, необходимого уровня безопасности, доступности адми- 340
нистративной поддержки, объема сетевого трафика, потребностей сетевых пользователей, финансовых возможностей. В одноранговой сети все компьютеры равноправны. Каждый компьютер функционирует и как клиент, и как сервер. Нет отдельного компьютера, ответственного за администрирование всей сети. Пользователи сами решают, какие ресурсы на своем компьютере сделать доступными в сети. Одноранговые сети, как правило, объединяют не более 10 компьютеров. Отсюда их другое название — рабочие группы. Одноранговые сети относительно просты, дешевле сетей на основе сервера, но требуют более мощных компьютеров. Требования к производительности и уровню защиты сетевого программного обеспечения (ПО) ниже, чем в сетях с выделенным сервером. Поддержка одноранговых сетей встроена во многие операционные системы (ОС), поэтому для организации одноранговой сети дополнительного ПО не требуется. Если в сети более 10 компьютеров, то одноранговая сеть становится недостаточно производительной. Поэтому большинство сетей имеют другую конфигурацию — они работают на основе выделенного сервера. Выделенным сервером называется такой компьютер, который функционирует только как сервер и не используется в качестве клиента или рабочей станции. Он специально оптимизирован для быстрой обработки запросов от сетевых клиентов и обеспечивает защиту файлов и каталогов. Сети на основе сервера стали промышленным стандартом. Основным аргументом при выборе сети на основе сервера является защита данных. Проблемами безопасности занимается один администратор: он формирует единую политику безопасности и применяет ее в отношении каждого пользователя сети. Сети на основе сервера, в отличие от одноранговых сетей, способны поддерживать тысячи пользователей. При этом к характеристикам компьютеров и квалификации пользователей предъявляются более мягкие требования, чем в одноранговых сетях. 7.3. Топология сетей Термин топология сети характеризует способ организации физических связей компьютеров и других сетевых компонентов. Выбор той или иной топологии влияет на состав необходимого сетевого 341
оборудования, возможности расширения сети и способ управления сетью. Топология — это стандартный термин. Все сети строятся на основе базовых топологий: шина, звезда, кольцо, ячеистая. Сами по себе базовые топологии не сложны, однако на практике часто встречаются довольно сложные их комбинации. Шина. Эту топологию (рис. 7.1) часто называют линейной шиной. Она наиболее простая из всех топологий и весьма распространенная. В ней используется один кабель, называемый магистралью или сегментом, вдоль которого подключены все компьютеры. Рис. 7. 1. Топология шина: С — сервер, К — компьютер, Т — терминатор В сети с топологией шина данные в виде электрических сигналов передаются всем компьютерам сети, но принимает их тот, адрес которого совпадает с адресом получателя, зашифрованном в этих сигналах. Причем в каждый момент времени передачу может вести только один компьютер. Поэтому производительность такой сети зависит от количества компьютеров, подключенных к шине. Чем больше компьютеров, ожидающих передачи данных, тем медленнее сеть. На быстродействие сети также влияют: • тип аппаратного обеспечения сетевых компьютеров; • частота, с которой компьютеры передают данные; • тип работающих сетевых приложений; • тип сетевого кабеля; • расстояние между компьютерами в сети. Шина — пассивная топология: компьютеры только слушают передаваемые по сети данные, но не перемещают их от отправителя к получателю. Поэтому выход одного или нескольких компьютеров из строя никак не сказывается на работе сети. 342
Электрические сигналы распространяются по всему кабелю — от одного конца к другому. Сигналы, достигшие концов кабеля, отражаются от них. Возникает наложение сигналов, находящихся в разных фазах, и, как следствие, их искажение и ослабление. Поэтому сигналы, достигшие конца кабеля, следует погасить. Для гашения сигналов на концах кабеля устанавливают терминаторы. При разрыве кабеля или отсутствии терминаторов функционирование сети прекращается. Сеть падает. Звезда. При топологии звезда (рис. 7.2) все компьютеры с помощью сегментов кабеля подключаются к центральному устройству, называемому концентратором (hub). Сигналы от передающего компьютера поступают через концентратор ко всем остальным. Рис. 7. 2. Топология звезда В настоящее время концентратор стал одним из стандартных компонентов сетей. В сетях с топологией звезда он, например, служит центральным узлом. Концентраторы делятся на активные и пассивные. Активные регенерируют и передают сигналы так же, как репитеры. Их называют многопортовыми повторителями. Обычно они имеют от 8 до 12 портов для подключения компьютеров. Активные концентраторы следует подключать к электрической сети. К пассивным концентраторам относятся монтажные или коммутирующие панели. Они просто пропускают через себя сигнал, не усиливая и не восстанавливая его. Пассивные концентраторы не надо подключать к электрической сети. Недостатки этой топологии: дополнительный расход кабеля, установка концентратора. Главное преимущество этой топологии перед шиной — более высокая надежность. Выход из строя одного или 343
нескольких компьютеров на работу сети не влияет. Любые неприятности с кабелем касаются лишь того компьютера, к которому этот кабель присоединен, и только неисправность концентратора приводит к падению сети. Кроме того, концентратор может играть роль интеллектуального фильтра информации, поступающей от узлов в сеть, и при необходимости блокировать запрещенные администратором передачи. Кольцо. Компьютеры подключаются к кабелю, замкнутому в кольцо (рис. 7.3). Сигналы передаются по кольцу в одном направлении и проходят через каждый компьютер. В отличие от пассивной топологии шина, здесь каждый компьютер выступает в роли репитера (повторителя), усиливая сигналы и передавая их следующему компьютеру. Поэтому выход из строя хотя бы одного компьютера приводит к падению сети. Рис. 7. 3. Топология кольцо Способ передачи данных по кольцу называется передачей маркера. Маркер (token) — это специальная последовательность бит, передающаяся по сети. В каждой сети существует только один маркер. Маркер передается по кольцу последовательно от одного компьютера к другому до тех пор, пока его не захватит тот компьютер, который хочет передать данные. Передающий компьютер добавляет к маркеру данные и адрес получателя, и отправляет его дальше по кольцу. Данные проходят через каждый компьютер, пока не окажутся у того, чей адрес совпадает с адресом получателя. Затем принимающий компьютер посылает передающему сообщение, в котором подтверждает факт приема. Получив подтверждение, передающий компьютер 344
восстанавливает маркер и возвращает его в сеть. Скорость движения маркера сопоставима со скоростью света. Так, в кольце диаметром 200 м маркер может циркулировать с частотой 477 376 об/с. Ячеистая топология. Сеть с ячеистой топологией обладает высокой избыточностью и надежностью, так как каждый компьютер в такой сети соединен с каждым другим отдельным кабелем (рис. 7.4). Рис. 7.4. Ячеистая топология Сигнал от компьютера-отправителя до компьютера-получателя может проходить по разным маршрутам, поэтому разрыв кабеля не сказывается на работоспособности сети. Основной недостаток — большие затраты на прокладку кабеля, что компенсируется высокой надежностью и простотой обслуживания. Ячеистая топология применяется в комбинации с другими топологиями при построении больших сетей. Кроме базовых топологий существуют их комбинации — комбинированные топологии. Чаще всего используются две комбинированные топологии: звезда-шина и звезда-кольцо. Звезда-шина — несколько сетей с топологией звезда объединяются при помощи магистральной линейной шины (к концентратору подключены компьютеры, а сами концентраторы соединены шиной). Выход из строя одного компьютера не сказывается на работе всей сети, а сбой в работе концентратора влечет за собой отсоединение от сети только подключенных к нему компьютеров и концентраторов. Звезда-кольцо — отличие состоит только в том, что концентраторы в звезде-шине 345
соединяются магистральной линейной шиной, а в звезде-кольце концентраторы подсоединены к главному концентратору, внутри которого физически реализовано кольцо. 7.4. Сетевые компоненты 7.4.1. Сетевые кабели На сегодня подавляющая часть компьютерных сетей использует для соединения кабели. Это среда передачи сигналов между компьютерами. В большинстве сетей применяются три основные группы кабелей: • коаксиальный кабель; • витая пара (twisted pair), неэкранированная (unshielded) и экранированная (shielded); • оптоволоконный кабель. Коаксиальный кабель до недавнего времени был самым распространенным. Недорогой, легкий, гибкий, удобный, безопасный и простой в установке. Существует два типа коаксиальных кабелей: тонкий (спецификация 10Base2) и толстый (спецификация 10Base5). Тонкий — гибкий, диаметр 0,64 см (0,25"). Прост в применении и подходит практически для любого типа сети. Подключается непосредственно к плате сетевого адаптера. Передает сигнал на 185 м практически без затухания. Волновое сопротивление — 50 ом. Толстый — жесткий, диаметр 1,27 см (0,5"). Его иногда называют стандартный Ethernet (первый кабель в популярной сетевой архитектуре). Жила толще, затухание меньше. Передает сигнал без затухания на 500 м. Используют в качестве магистрали, соединяющей несколько небольших сетей. Волновое сопротивление — 75 ом. Для подключения к толстому коаксиальному кабелю применяется специальное устройство - трансивер (transceiver - приемопередатчик). Он снабжен коннектором, который называется вампир или пронзающий ответвитель. К сетевой плате трансивер подключается с помощью кабеля с разъемом. Для подключения тонкого коаксиального кабеля используются BNC-коннекторы (British Naval Connector). Применяются BNC—Т-коннекторы для соединения сетевого кабеля 346
с сетевой платой компьютера, BNC—баррел-коннекторы для сращивания двух отрезков кабеля, BNC-терминаторы для поглощения сигналов на обоих концах кабеля в сетях с топологией шина. Витая пара — это два перевитых изолированных медных провода. Несколько витых пар проводов часто помещают в одну защитную оболочку. Переплетение проводов позволяет избавиться от электрических помех, наводимых соседними проводами и другими внешними источниками, например двигателями, трансформаторами, мощными реле. Неэкранированная витая пара (UTP) широко используется в ЛВС, максимальная длина 100 м. UTP определена особым стандартом, в котором указаны нормативные характеристики кабелей для различных применений, что гарантирует единообразие продукции. Экранированная витая пара (STP) помещена в медную оплетку. Кроме того, пары проводов обмотаны фольгой. Поэтому STP меньше подвержены влиянию электрических помех и может передавать сигналы с более высокой скоростью и на большие расстояния. Преимущества витой пары — дешевизна, простота при подключении. Недостатки — нельзя использовать при передаче данных на большие расстояния с высокой скоростью. В оптоволоконном кабеле цифровые данные распространяются по оптическим волокнам в виде модулированных световых импульсов. Это надежный способ передачи, так как электрические сигналы при этом не передаются. Следовательно, оптоволоконный кабель нельзя вскрыть и перехватить данные. Оптоволоконные линии предназначены для перемещения больших объемов данных на очень высоких скоростях, так как сигнал в них практически не затухает и не искажается. Оптоволокно передает сигналы только в одном направлении, поэтому кабель состоит из двух волокон с отдельными коннекторами: одно — для передачи, другое — для приема. Скорость передачи данных в настоящее время составляет от 100 Мбит/с. Между тем, получает все большее распространение скорость 1 Гбит/с, теоретически — до 200 Гбит/с. Расстояние — многие километры. Кабель не подвержен электрическим помехам. Существенным недостатком этой технологии является дороговизна и сложность в установке и подключении. Типичная оптическая сеть состоит из лазерного передатчика све- 347
та, мультиплексора/демультиплексора для объединения оптических сигналов с разными длинами волн, усилителей оптических сигналов, демультиплексоров и приемников, преобразующих оптический сигнал обратно в электрический. Все эти компоненты обычно собираются вручную. Для передачи по кабелю кодированных сигналов используют две технологии — немодулированную и модулированную передачу. Немодулырованные системы передают данные в виде цифровых сигналов, которые представляют собой дискретные электрические или световые импульсы. При таком способе цифровой сигнал использует всю полосу пропускания кабеля (полоса пропускания — разница между максимальной и минимальной частотой, которую можно передать по кабелю). Устройство в сетях с немодулированной передачей посылает данные в обоих направлениях. Для того, чтобы избежать затухания и искажения сигнала в смодулированных системах, используют репитеры, которые усиливают и ретранслируют сигнал. Модулированные системы передают данные в виде аналогового сигнала (электрического или светового), занимающего некоторую полосу частот. Если полосы пропускания достаточно, то один кабель могут одновременно использовать несколько систем (например, транслировать передачи кабельного телевидения и передавать данные). Каждой передающей системе выделяется часть полосы пропускания. Для восстановления сигнала в модулированных системах используют усилители. В модулированной системе устройства имеют раздельные тракты для приема и передачи сигнала, так как передача идет в одном направлении. Чтобы устройства могли и передавать, и принимать данные, используют разбиение полосы пропускания на два канала, которые работают с разными частотами для передачи и приема, или прокладку двух кабелей — для передачи и приема. 7.4.2. Беспроводная среда Словосочетание беспроводная среда не означает полное отсутствие проводов в сети. Обычно беспроводные компоненты взаимодействуют с сетью, в которой в качестве среды передачи используется кабель. Такие сети называют гибридными. Беспроводная среда обеспечивает временное подключение к су- 348
шествующей кабельной сети, гарантирует определенный уровень мобильности и снижает ограничения на протяженность сети. Применяется в служебных помещениях, где у сотрудников нет постоянного рабочего места, в изолированных помещениях и зданиях, в строениях, где прокладка кабелей запрещена. Существуют следующие типы беспроводных сетей: ЛВС, расширенные ЛВС и мобильные сети (переносные компьютеры). Основные различия между ними - параметры передачи. ЛВС и расширенные ЛВС используют передатчики и приемники той организации, в которой функционирует сеть. Для переносных компьютеров средой передачи служат общедоступные сети (например, телефонная или Internet). ЛВС выглядит и функционирует практически так же, как и кабельная, за исключением среды передачи. Беспроводный сетевой адаптер с трансивером установлен в каждом компьютере, и пользователи работают так, будто их компьютеры соединены кабелем. Трансивер или точка доступа обеспечивает обмен сигналами между компьютерами с беспроводным подключением и кабельной сетью. Используются небольшие настенные трансиверы, которые устанавливают радиоконтакт с переносными устройствами. Работа беспроводных ЛВС основана на четырех способах передачи данных: инфракрасном излучении, лазере, радиопередаче в узком диапазоне (одночастотной передаче), радиопередаче в рассеянном спектре. 7.4.3. Платы сетевого адалтера Платы сетевого адаптера (СА) выступают в качестве физического интерфейса, или соединения, между компьютером и сетевым кабелем. Платы вставляются в слоты расширения материнской платы всех сетевых компьютеров и серверов или интегрируются на материнскую плату. Для обеспечения физического соединения между компьютером и сетью к разъему платы подключается сетевой кабель. Плата СА выполняет: • подготовку данных, поступающих от компьютера, к передаче по сетевому кабелю; • передачу данных другому компьютеру; 349
• управление потоком данных между компьютером и кабельной системой; • прием данных из кабеля и перевод их в форму, понятную ЦП компьютера. Плата СА должна также указать свое местонахождение или се- тевой адрес, чтобы ее могли отличить от других плат сети. Сетевые адреса определены комитетом IEEE (Institute of Electrical and Electronics Engineers, Inc.), который закрепляет за каждым производителем плат сетевого адаптера некоторый интервал адресов. Производители зашивают эти адреса в микросхемы, поэтому каждый компьютер имеет свой уникальный номер, т.е. адрес в сети. Перед тем, как послать данные по сети, плата СА проводит электронный диалог с принимающей платой, в результате которого они устанавливают: • максимальный размер блока передаваемых данных; • объем данных, пересылаемых без подтверждения о получении; • интервал между передачами блоков данных; • интервал, в течение которого необходимо послать подтверждение; • объем данных, который может принять плата без переполнения буфера; • скорость передачи. Если новая (более сложная и быстрая) плата взаимодействует с устаревшей (медленной) платой, то они должны найти общую для них обеих скорость передачи. Схемы современных плат позволяют им приспособиться к низкой скорости старых плат. Каждая плата оповещает другую о своих параметрах, принимая чужие параметры и подстраиваясь к ним. После определения всех деталей начинается обмен данными. Для правильной работы платы должны быть корректно установлены следующие параметры: • номер прерывания (IRQ — interrupt query); • базовый адрес порта; • I/O.Базовый адрес памяти; • тип трансивера. Для обеспечения совместимости компьютера и сети плата СА должна соответствовать внутренней структуре компьютера (архитектуре шины данных) и иметь соответствующий соединитель, подходящий к типу кабельной системы. 350
Например, плата, которая нормально работает в компьютере Apple Macintosh в сети с топологией шина, не будет работать в компьютере IBM в сети с топологией кольцо. Сеть топологии кольцо требует плату, которая физически отличается от применяемой в сети топологии шина, к тому же Apple использует другой метод сетевого взаимодействия. 7.5. Сетевые стандарты Работа сети заключается в передаче данных от одного компьютера к другому. В этом процессе можно выделить следующие задачи: 1. Распознавание данных. 2. Разбиение данных на управляемые блоки. 3. Добавление информации к каждому блоку о местонахождении данных и получателе. 4. Добавление информации для синхронизации и проверки ошибок. 5. Перемещение данных в сеть и отправка их по заданному адресу. Сетевая ОС при выполнении этих задач строго следует определенному набору процедур. Эти процедуры называются протоколами. Они регламентируют каждую сетевую операцию. Стандартные протоколы позволяют программному и аппаратному обеспечению разных производителей нормально взаимодействовать. Существует два главных набора стандартов: эталонная модель OSI и ее модификация Project 802. Для понимания технической стороны функционирования сетей необходимо иметь представление об этих моделях. 7.5.1. Эталонная модель OSI В 1978 г. ISO (International Standards Organization) выпустила набор спецификаций, описывающих модель взаимодействия открытых систем, т.е. систем, доступных для связи с другими системами. Это был первый шаг к международной стандартизации протоколов. Все системы могли теперь использовать одинаковые протоколы и стандарты для обмена информацией. В 1984 г. ISO выпустила новую версию своей модели, названную 351
эталонной моделью взаимодействия открытых систем ISO. Эта версия стала международным стандартом. Ее спецификации используют производители при разработке сетевых продуктов, ее придерживаются при построении сетей. Полностью модель носит название ISO OSI (Open System Interconnection Reference Model). Для краткости будем ее называть модель OSI. Модель OSI не является сетевой архитектурой, так как не описывает службы и протоколы, используемые на каждом уровне. Она просто определяет, что должен делать каждый уровень. Важно также понимать, что эталонная модель не является чем-то реальным, таким, что обеспечивает связь. Сама по себе она не заставляет коммуникации функционировать и служит лишь для классификации. Она классифицирует то, что непосредственно работает, а именно — протоколы. Протоколом считается набор спецификаций, определяющих реализацию одного или нескольких уровней OSI. ISO разработала также стандарты для каждого уровня, хотя эти стандарты не входят в саму эталонную модель. Каждый из них был опубликован как отдельный международный стандарт. Модель OSI имеет семь уровней. Каждому уровню соответствуют различные сетевые операции, оборудование и протоколы. Появление именно семи уровней было обусловлено функциональными особенностями модели. Модель OSI без физического носителя показана на рис. 7.5. Определенные сетевые функции, выполняемые на каждом уровне, взаимодействуют только с функциями соседних уровней — вышестоящего и нижележащего. Например, Сеансовый уровень должен взаимодействовать только с Представительским и Транспортным уровнями. Все эти функции подробно описаны. Каждый уровень выполняет несколько операций при подготовке данных для доставки по сети на другой компьютер. Уровни отделяются друг от друга границами — интерфейсами. Все запросы от одного уровня к другому передаются через интерфейс. Каждый уровень, выполняя свои функции, пользуется услугами нижележащего уровня. Самые нижние уровни — 1-й и 2-й — определяют физическую среду при передаче битов данных через плату СА и кабель. Самые верхние уровни определяют, каким способом реализуется доступ приложений к услугам связи. Задача каждого уровня — предоставление услуг вышележащему уровню, маскируя при этом детали реализации этих услуг. Каждый 352
Протоколы хост-маршрутизатор сетевого, передачи данных и физического уровней Рис. 7.5. Эталонная модель OSI уровень на компьютере-отправителе работает так, как будто он напрямую связан с соответствующим уровнем на компьютере-получателе. Эта виртуальная связь показана на рис. 7.5 пунктирными линиями. В действительности же связь осуществляется между соседними уровнями одного компьютера. ПО каждого уровня реализует определенные сетевые функции в соответствии с набором протоколов. Перед отправкой в сеть данные разбиваются на пакеты, передаваемые между устройствами сети как единое целое. Пакет проходит 12. Информатика 353
последовательно все уровни ПО от прикладного до физического, при этом на каждом уровне к пакету добавляется форматирующая или адресная информация, необходимая для безошибочной передачи данных по сети. На принимающей стороне пакет также проходит через все уровни, но в обратном порядке. ПО каждого уровня анализирует информацию пакета, удаляет ту информацию, которая добавлена к пакету на, таком же уровне отправителем, и передает пакет следующему уровню. По достижении пакетом Прикладного уровня вся служебная информация будет удалена, и данные примут свой первоначальный вид. Таким образом, только Физический уровень модели может непосредственно послать информацию соответствующему уровню другого компьютера. Информация на компьютере-отправителе и компьютере-получателе должна пройти все уровни, начиная с того, с которого она посылается, и заканчивая соответствующим уровнем того компьютера, которым она принимается. Например, если Сетевой уровень передает информацию с компьютера А, она спускается через Канальный и Физический уровни в сетевой кабель, затем попадает в компьютер В, где поднимается через Физический и Канальный уровни и достигает Сетевого уровня. В среде клиент-сервер примером такой информации служит адрес и результат контроля ошибок, добавленные к пакету. Взаимодействие смежных уровней осуществляется через интерфейс. Интерфейс определяет услуги, которые нижний уровень предоставляет верхнему, и способ доступа к ним. Рассмотрим каждый из семи уровней модели OSI и услуги, которые они предоставляют смежным уровням. Прикладной (Application) уровень. Уровень 7. Он представляет собой окно для доступа прикладных процессов к сетевым услугам. Услуги, которые он обеспечивает, напрямую поддерживают приложения пользователя. Прикладной уровень управляет общим доступом к сети, потоком данных и восстановлением данных после сбоев связи. Уровень представления (Presentation). Уровень 6. Представительский уровень определяет формат, используемый для обмена данными между сетевыми компьютерами. Типичный пример работы служб Представительского уровня — кодирование передаваемых данных определенным стандартным образом. Уровень представления отвечает 354
за преобразование протоколов, трансляцию и шифрование данных, смену кодовой таблицы и расширение графических команд. Кроме того, он управляет сжатием данных для уменьшения объема передаваемых бит. Сеансовый уровень (Session). Уровень 5. Сеансовый уровень позволяет двум приложениям разных компьютеров устанавливать, использовать и завершать соединение, называемое сеансом. Сеанс может предоставлять еще и расширенный набор услуг, полезный для некоторых приложений. Сеансовый уровень управляет диалогом между взаимодействующими процессами, устанавливая, какая из сторон, когда, как долго и т.д. должна осуществлять передачу. Транспортный уровень (Transport). Уровень 4. Основная функция Транспортного уровня — принять данные от Сеансового уровня, разбить их при необходимости на небольшие части и передать Сетевому уровню, гарантируя, что эти части в правильном порядке прибудут по назначению. Все это должно быть сделано эффективно и так, чтобы изолировать более высокие уровни от каких-либо изменений в аппаратной технологии. Транспортный уровень также следит за созданием и удалением сетевых соединений, управляет потоком сообщений, проверяет ошибки и участвует в решении задач, связанных с отправкой и получением пакетов. Примеры протоколов транспортного уровня — TCP и SPX. Сетевой уровень (Network). Уровень 3. Сетевой уровень управляет операциями подсети. Он отвечает за адресацию сообщений и перевод логических адресов и имен в физические. Сетевой уровень разрешает также проблемы, связанные с разными способами адресации и разными протоколами при переходе пакетов из одной сети в другую, позволяя объединять разнородные сети. Примеры протоколов сетевого уровня — IP и IPX. Уровень передани данных или канальный (Data Link). Уровень 2. Основная задача Канального уровня — преобразовать способность Физического уровня передавать данные в надежную линию связи, свободную от необнаруженных ошибок с точки зрения вышестоящего Сетевого уровня. Эту задачу Канальный уровень выполняет при помощи разбиения входных данных на кадры размером от нескольких сот до нескольких тысяч байтов. Каждый следующий кадр данных передается только после получения и обработки кадра подтверждения, посылаемого обратно получателем. Кадр — это логически орга- 355
низованная структура, в которую можно помещать данные. На рис. 7.6 представлен простой кадр данных, где идентификатор отправителя — адрес компьютера-отправителя, а идентификатор получателя — адрес компьютера-получателя. Управляющая информация используется для маршрутизации, указания типа пакета и сегментации. CRC (Cyclical Redundancy Check — циклический код) позволяет выявить ошибки и гарантирует правильный прием информации. Идентификатор получателя Управляющая информация Данные Идентификатор отправителя Циклический код Рис. 7.6. Кадр данных Физический уровень (Physical). Уровень 1. Физический уровень осуществляет передачу неструктурированного, сырого, потока бит по физической среде (например, по сетевому кабелю). На этом уровне реализуются электрический, оптический, механический и функциональный интерфейсы с кабелем. Физический уровень также формирует сигналы, которые переносят данные, поступившие ото всех вышележащих уровней. На этом уровне определяется способ соединения сетевого кабеля с платой СА и способ передачи сигналов по сетевому кабелю. Физический уровень отвечает за кодирование данных и синхронизацию бит, гарантируя, что переданная единица будет воспринята именно как единица, а не как ноль. Уровень устанавливает длительность каждого бита и способ перевода в электрические или оптические импульсы, передаваемые по сетевому кабелю. 356
7.5.2. Стандарт IEEE Project 802 Два нижних уровня модели OSI относятся к оборудованию, а именно: сетевой плате и кабелю. Для постановки более четких требований к аппаратуре, которая работает на этих уровнях, IEEE разработал расширения, предназначенные для разных сетевых плат и кабелей. Эти расширения широко известны как Project 802, названные в соответствии с годом (1980) и месяцем (февраль) своего издания. Стандарты IEEE были опубликованы раньше модели OSI, но оба проекта разрабатывались примерно в одно время и при полном обмене информацией. Это и привело к созданию двух совместимых продуктов. Project 802 установил стандарты для физических компонентов сети — интерфейсных плат и кабельной системы, которые работают на Канальном и Физическом уровнях модели OSI. Эти стандарты, называемые 802-спецификациями, распространяются на платы СА, компоненты ГВС, компоненты сетей, использующих коаксиальный кабель и витую пару. 802-спецификации определяют способы, в соответствии с которыми платы СА осуществляют доступ к физической среде и передают по ней данные. Это соединение, поддержка и разъединение сетевых устройств. Выбор протокола канального уровня — наиболее важное решение при проектировании ЛВС. Этот протокол определяет скорость сети, метод доступа к физической среде, тип кабелей, сетевые платы и драйверы. Стандарты ЛВС, определенные Project 802, делятся на 16 категорий, каждая из которых имеет свой номер (от 802.1 до 801.16, например, 802.6 — сеть масштаба города, MAN; 802.10 — безопасность сетей; 802.11 — беспроводные сети). Два нижних уровня модели, Канальный и Физический, устанавливают, каким образом несколько компьютеров могут одновременно, не мешая друг другу, использовать сеть. IEEE Project 802 предназначен именно для этих двух уровней. На рис.7.7 показаны Канальный уровень и два его подуровня. Подуровень Управление логической связью (Logical Link Control, LLC) устанавливает и разрывает канал связи, управляет потоком данных, производит упорядочение и вырабатывает подтверждение приема кадров. Подуровень Управление доступом к среде (Media Access Control, 357
Канальный уровень Управление логической связью Управление доступом к среде Рис. 7.7. Подуровни Управление логической связью и Управление доступом к среде MAC) контролирует доступ к среде передачи, определяет границы кадров, обнаруживает ошибки, распознает адреса кадров. Он также обеспечивает совместный доступ плат СА к Физическому уровню. Этот подуровень напрямую связан с платой СА и отвечает за безошибочную передачу данных между двумя компьютерами сети. 7.5.3. Драйверы устройств и OSI Сетевые драйверы обеспечивают связь между платами СА и работающими на компьютере редиректорами. Редиректор — это часть сетевого ПО, которое принимает запросы ввода/вывода, относящиеся к удаленным файлам, и переадресовывает их по сети на другой компьютер. Драйверы платы СА располагаются на подуровне Управления доступом к среде Канального уровня. Подуровень MAC отвечает за совместный доступ плат СА к Физическому уровню. Таким образом, драйвер платы СА обеспечивает связь между компьютером и самой платой, связывая, в конечном итоге, компьютер с сетью. Производители плат СА обычно предоставляют драйверы разработчикам сетевого ПО, которые включают их в состав своих продуктов. Производители сетевых ОС публикуют списки совместимого оборудования — перечень устройств, драйверы которых протестированы на совместимость с ОС. Список совместимого оборудования HCL (Hardware Compatibility List) для сетевой ОС содержит сотни моделей плат СА от разных производителей. 358
7.6. Сетевые архитектуры Сетевые архитектуры - это комбинация стандартов, топологий и протоколов, необходимых для создания работоспособной сети. 7.6.1. Методы доступа к сетевому ресурсу Для использования сетевого ресурса необходимо получить доступ к нему. Существуют три метода доступа: множественный доступ с контролем несущей, доступ с передачей маркера, доступ по приоритету запроса. Метод доступа — набор правил, которые определяют, как компьютер должен отправлять и принимать данные по сетевому кабелю. Компьютеры получают доступ к сети поочередно на короткое время. Обычно несколько компьютеров в сети имеют совместный доступ к кабелю. Однако если два компьютера попытаются передавать данные одновременно, их пакеты столкнутся и будут испорчены. Возникает так называемая коллизия. Все компьютеры в сети должны использовать один и тот же метод доступа, иначе произойдет сбой в работе сети, когда отдельные компьютеры, чьи методы доминируют, не позволят остальным осуществлять передачу. Множественный доступ с контролем несущей подразделяется на: • множественный доступ с обнаружением коллизий; • множественный доступ с предотвращением коллизий. Рассмотрим особенности каждого метода доступа. Множественный доступ с контролем несущей и обнаружением коллизий (Carrier-Sense Multiple Access with Collision Detection, CSMA/CD). Все компьютеры в сети — и клиенты, и серверы — прослушивают кабель, стремясь обнаружить передаваемые данные, т.е. трафик. Компьютер может начать передачу только тогда, когда убедится, что кабель свободен — трафик отсутствует. Пока кабель занят, ни один из компьютеров не может вести передачу. Если возникает коллизия, то эти компьютеры приостанавливают передачу на случайный интервал времени, а затем вновь стараются наладить связь. Причем периоды ожидания у них разные, что снижает вероятность одновременного возобновления передачи. Название метода раскрывает его суть: компьютеры как бы про- 359
слушивают кабель, отсюда — контроль несущей. Чаще всего сразу несколько компьютеров в сети хотят передать данные, отсюда множественный доступ. Прослушивание кабеля дает возможность обнаружить коллизии, отсюда обнаружение коллизий. Способность обнаруживать коллизии ограничивает область действия самого CSMA/CD. При длине кабеля > 2,5 км механизм обнаружения коллизий становится неэффективным — некоторые компьютеры могут не услышать сигнал и начнут передачу, что приведет к коллизии и разрушению данных. CSMA/CD является состязательным методом, так как компьютеры конкурируют между собой за право передавать данные. Он является громоздким, но современные реализации настолько быстры, что пользователи не замечают, что сеть работает, используя состязательный метод. Однако чем больше компьютеров в сети, тем интенсивнее сетевой трафик, и число коллизий возрастает, а это приводит к уменьшению пропускной способности сети. Поэтому в некоторых случаях метод CSMA/CD все же оказывается недостаточно быстрым. Так, лавинообразное нарастание повторных передач способно парализовать работу всей сети. Вероятность возникновения подобной ситуации зависит от числа пользователей, работающих в сети, и приложений, с которыми они работают. Например, БД используют сеть интенсивнее, чем ТП. Множественный доступ с контролем несущей и предотвращением коллизий (Carrier-Sense Multiple Access with Collision Avoidance, CSMA/ CA). Этот метод самый непопулярный среди всех методов доступа. Каждый компьютер перед передачей данных в сеть сигнализирует о своем намерении, поэтому остальные компьютеры «узнают» о готовящейся передаче и могут избежать коллизий. Однако широковещательное оповещение увеличивает общий трафик и уменьшает пропускную способность сети. Поэтому CSMA/CA работает медленнее, чем CSMA/CD. Доступ с передачей маркера. Суть метода заключается в следующем: пакет особого типа, маркер (token), циркулирует от компьютера к компьютеру. Чтобы послать данные в сеть, любой компьютер должен сначала «дождаться» прихода свободного маркера и «захватить» его. Захватив маркер, компьютер может передавать данные. Когда какой-либо компьютер наполнит маркер своей информацией и пошлет его по сетевому кабелю, другие компьютеры уже не смогут 360
передавать данные, так как в каждый момент времени только один компьютер использует маркер. В сети не возникает ни состязания, ни коллизий, ни временных задержек. Доступ по приоритету запроса (demand priority). Относительно новый метод доступа, разработанный для сети Ethernet со скоростью передачи 100 Мбит/с — 100VG-AnyLan. Он стандартизован IEEE в категории 802.12. Этот метод учитывает своеобразную конфигурацию сетей 100VG-AnyLan, которые состоят только из концентраторов и оконечных узлов. Концентраторы управляют доступом к кабелю, последовательно опрашивая каждый узел в сети и выявляя запросы на передачу. Концентратор должен знать все адреса связи и узлы и проверять их работоспособность. Оконечным узлом в соответствии со спецификацией 100VG-AnyLan может быть компьютер, мост, маршрутизатор или коммутатор. При доступе по приоритету запроса, как и при CSMA/CD, два компьютера могут конкурировать за право передать данные. Однако в этом методе реализуется принцип, по которому определенные типы данных, если возникло состязание, имеют соответствующий приоритет. Получив одновременно два запроса, концентратор вначале отдает предпочтение запросу с более высоким приоритетом. Если запросы имеют одинаковый приоритет, они будут выполнены в произвольном порядке. Для сетей с использованием доступа по приоритету запроса разработана специальная схема кабеля, поэтому каждый компьютер может одновременно передавать и принимать данные. Применяется восьмипроводный кабель, по каждой паре проводов которого сигнал передается с частотой 25 Мгц. 7.6.2. Передача данных по сети Данные, состоящие из нулей и единиц, обычно содержатся в больших по размерам файлах. Однако сети не будут нормально работать, если компьютер будет посылать такой блок данных целиком. В это время другие компьютеры вынуждены долго ждать своей очереди. Такая ситуация похожа на монопольное использование сети. При этом, кроме монопольного использования сети, возникновение ошибок может привести к необходимости повторной передачи всего большого блока данных. 361
Чтобы быстро, не тратя времени на ожидание, передавать информацию по сети, данные разбиваются на маленькие управляемые блоки, содержащие все необходимые сведения для их передачи. Эти блоки называются пакетами. Под термином «пакет» подразумевается единица информации, передаваемая между устройствами сети как единое целое. При разбиении данных на пакеты сетевая ОС добавляет к каждому пакету специальную управляющую информацию, которая обеспечивает передачу исходных данных небольшими блоками, сбор данных в определенном порядке (при их получении), проверку данных на наличие ошибок (после сборки). Компоненты пакета группируются по трем разделам: заголовок, данные и трейлер. Заголовок включает: • сигнал о том, что передается пакет, • адрес источника, • адрес получателя, • информацию, синхронизирующую передачу. Для большинства сетей размер пакета составляет от 512 байт до 4 Кбайт. Содержимое трейлера зависит от протокола связи (протокол — это набор правил или стандартов для осуществления связи и обмена информацией между компьютерами). Чаще всего трейлер содержит информацию для проверки ошибок, называемую избыточным циклическим кодом (Cyclical Redundancy Check, CRC). CRC — это число, получаемое в результате математических преобразований данных пакета и исходной информации. Когда пакет достигает места назначения, эти преобразования повторяются. Если результат совпадает с CRC — пакет принимается без ошибок. В противном случае передача пакета повторяется. Формат и размер пакета зависят от типа сети. Максимальный размер пакета определяет количество пакетов, которое будет создано сетевой ОС для передачи большого блока данных. 7.6.3. Сети Ethernet Ethernet — самая популярная сейчас архитектура. Используется в сетях любого размера. Ethernet — это промышленный стандарт, 362
нашедший широкую поддержку среди производителей сетевого оборудования. Поэтому проблем, связанных с использованием устройств разных производителей, почти не существует. В конце 60-х гг. Гавайский университет разработал ГВС под названием ALOHA. Университет, расположенный на обширной территории, решил объединить в сеть все компьютеры. Одной из ключевых характеристик созданной сети стал метод доступа CSMA/CD. Эта сеть послужила основой для современных сетей Ethernet. В 1972 г. в исследовательском центре Пало Альто фирмы Xerox разработали кабельную систему и схему передачи сигналов, а в 1975 г. — первый продукт Ethernet. Первоначальная версия Ethernet представляла собой систему со скоростью передачи 2,94 Мбит/с и объединяла более 100 компьютеров с помощью кабеля длиной 1 км. Сеть Ethernet фирмы Xerox имела такой успех, что компании Xerox, Intel Corporation и Digital Equipment Corporation разработали стандарт Ethernet со скоростью передачи 10 Мбит/с. Сегодня его рассматривают как спецификацию, описывающую метод совместного использования среды передачи компьютерами и системами обработки данных. Спецификация Ethernet выполняет те же функции, что Физический и Канальный уровни модели OSI. Ethernet использует немодулированную передачу, топологию шина и метод доступа CSMA/CD. Другие используемые топологии — звезда-шина. Спецификация — IEEE 802.3. Скорость передачи данных — 10 или 100 Мбит/с. Кабельная система — толстый и тонкий коаксиальный кабель, UTP. Ethernet разбивает данные на пакеты (кадры), формат которых отличается от формата пакетов в других сетях. Длина 64—1518 байтов, но сама структура использует 18 байтов, поэтому остается 46— 1500 байтов. Максимальная общая длина сети 925 м. Общее число компьютеров в сети достигает 1024. 7.6.4. Сети Token Ring Версия сети Token Ring была представлена IBM в 1984 г. как часть предложенного фирмой способа объединения в сеть всего ряда выпускаемых IBM компьютеров и компьютерных систем. В 1985 г. 363
Token Ring стала стандартом ANSI/IEEE (ANSI — представитель ISO в США). Сеть Token Ring является реализацией стандарта IEEE 802.5. От других сетей ее отличает не только наличие уникальной кабельной системы, но и использование метода доступа с передачей маркера. Топология типичной сети — звезда/кольцо. Соединение выполняется через концентратор в виде звезды, а физическое кольцо реализуется в концентраторе. Кабельная система - UTP и STR Скорость передачи — 4 и 16 Мбит/с. Когда в сети начинает работать первый компьютер, он генерирует маркер. Маркер проходит по кольцу от компьютера к компьютеру (направление движения маркера зависит от оборудования), пока один из них не сообщит о готовности передать данные и не возьмет управление маркером на себя. Маркер — это предопределенная последовательность бит, которая позволяет компьютеру отправить данные по кабелю. Когда маркер захвачен каким-либо компьютером, другие передавать данные не могут. Захватив маркер, компьютер отправляет кадр данных в сеть. Кадр проходит по кольцу, пока не достигнет узла с адресом, соответствующим адресу приемника в кадре. Компьютер-приемник копирует кадр в буфер приема и делает пометку в поле статуса кадра о получении информации. Кадр продолжает передаваться по кольцу, пока не достигнет отправившего его компьютера, который и удостоверяется, что передача прошла успешно. Компьютер изымает кадр из кольца и возвращает туда маркер. В сети одномоментно может передаваться только один маркер, причем только в одном направлении. Передача маркера — детерминистический процесс. Это значит, что самостоятельно начать работу в сети (как при методе доступа CSMA/CD) компьютер не может. Он может передавать данные только после получения маркера. Каждый компьютер действует как однонаправленный повторитель, регенерируя маркер и посылая его дальше по кольцу. Основным компонентом сетей Token Ring является концентратор, реализующий физическое кольцо. В сети с передачей маркера вышедший из строя компьютер или соединение останавливают движение маркера, что ведет к прекращению работы всей сети. Концентраторы разработаны таким образом, чтобы обнаруживать вышедшую из строя плату СА и вовремя отключать ее. Эта процедура позволяет 364
обойти отказавший компьютер, поэтому маркер продолжает циркулировать по сети. 7.7. Сетевые протоколы Протоколы — это набор правил и процедур, регулирующих порядок осуществления некоторой связи. Протоколы реализуются во всех областях деятельности человека, например, дипломатических. В сетевой среде — это правила и технические процедуры, позволяющие нескольким компьютерам общаться друг с другом. Различают три определяющих свойства протоколов: 1. Каждый протокол предназначен для различных задач и имеет свои преимущества и недостатки. 2. Протоколы работают на разных уровнях модели OSI. Функции протокола определяются уровнем, на котором он работает. 3. Несколько протоколов могут работать совместно. В этом случае они образуют так называемый стек, или набор протоколов. Как сетевые функции распределяются по всем уровням модели OSI, так и протоколы совместно работают на различных уровнях стека. Например, Прикладной уровень протокола TCP/IP соответствует уровню Представления модели OSI. В совокупности протоколы определяют полный набор функций и возможностей стека. Передача данных по сети должна быть разбита на ряд последовательных шагов, каждому из которых соответствует свой протокол. Эти шаги должны выполняться на каждом сетевом компьютере в одной и той же последовательности. На компьютере-отправителе они выполняются сверху вниз, а на компьютере-получателе — снизу вверх. Компьютер-отправитель в соответствии с протоколом выполняет следующие действия: разбивает данные на небольшие блоки — пакеты, с которыми может работать протокол; добавляет к пакетам адресную информацию, чтобы компьютер-получатель мог определить, что эти данные предназначены именно ему; подготавливает данные к передаче через плату СА по сетевому кабелю. Компьютер-получатель в соответствии с протоколом выполняет те же действия, но в обратном порядке. Он принимает пакеты данных из сетевого кабеля и через плату СА передает пакеты в компьютер. Затем он удаляет из пакета всю служебную информацию, добав- 365
ленную компьютером-отправителем; копирует данные из пакета в буфер для их объединения в исходный блок данных; передает приложению собранный из пакетов блок данных в том формате, который использует это приложение. И компьютеру-отправителю, и компьютеру-получателю необходимо выполнять каждое действие одинаковым способом, чтобы отправленные данные совпали с полученными. До середины 80-х гг. большинство ЛВС были изолированными. С развитием ЛВС и увеличением объема передаваемой ими информации они стали компонентами больших сетей. Данные, передаваемые из одной локальной сети в другую по одному из возможных маршрутов, называются маршрутизированными, а протоколы, поддерживающие передачу данных между сетями по нескольким маршрутам, — маршрутизируемыми. Такие протоколы служат для объединения локальных сетей, поэтому их роль постоянно возрастает. Модель OSI помогает определить, какие протоколы нужно использовать на каждом ее уровне. Продукты разных производителей, которые соответствуют этой модели, способны вполне корректно взаимодействовать друг с другом. ISO, IEEE, ANSI, ITU (International Telecommunications Union) и другие организации по стандартизации разработали протоколы, соответствующие некоторым уровням модели OSI. TCP/IP — стандартный промышленный набор протоколов, обеспечивающий связь в неоднородной среде, т.е. между компьютерами разных типов. Совместимость — одно из основных преимуществ TCP/IP, поэтому его поддерживают большинство ЛВС. Кроме того, TCP/IP предоставляет маршрутизируемый протокол для корпоративных сетей и доступ в Интернет. Из-за своей популярности TCP/IP стал стандартом де-факто для межсетевого взаимодействия. У TCP/ IP есть два главных недостатка: большой размер и недостаточная скорость работы. Но для современных ОС это не является проблемой (проблема только у DOS-клиентов), а скорость работы сравнима со скоростью работы протокола IPX. Стек TCP/IP включает и другие протоколы: • SMTP (Simple Mail Transfer Protocol) — для обмена E-mail; • FTP (File Transfer Protocol) - для обмена файлами; • SNMP (Simple Network Management Protocol) — для управления сетью. 366
TCP/IP разрабатывался специалистами МО США как маршрутизируемый, надежный и функциональный протокол. Он также представляет собой набор протоколов для ГВС. Его назначение — обеспечивать взаимодействие между узлами даже в случае ядерной войны. Сейчас ответственность за разработку TCP/IP возложена на сообщество Интернет в целом. Установка и настройка TCP/IP требует знаний и опыта со стороны пользователя, однако применение TCP/IP предоставляет ряд существенных преимуществ. Протокол TCP/IP в точности не соответствует модели OSI. Вместо семи уровней в нем используется только четыре: 1. Уровень сетевого интерфейса. 2. Межсетевой уровень. 3. Транспортный уровень. 4. Прикладной уровень. Каждый из них соответствует одному или нескольким уровням модели OSI. Уровень сетевого интерфейса, относящийся к Физическому и Канальному уровням модели OSI, напрямую взаимодействует с сетью. Он реализует интерфейс между сетевой архитектурой (Ethernet или Token Ring) и Межсетевым уровнем. Межсетевой уровень, относящийся к Сетевому уровню модели OSI, использует несколько протоколов для маршрутизации и доставки пакетов. Для этого используются маршрутизаторы, которые работают на Сетевом уровне и могут переадресовывать и маршрутизировать пакеты через множество сетей, обмениваясь информацией между отдельными сетями. Транспортный уровень, соответствующий Транспортному уровню модели OSI, отвечает за установку и поддержание соединения между двумя хостами. Транспортный уровень отвечает также за отправку уведомлений о получении данных, управление потоком, упорядочение пакетов и их повторную передачу. Transmission Control Protocol (TCP) отвечает за надежную передачу данных между узлами. Это ориентированный на соединение протокол, поэтому он устанавливает сеанс связи между двумя компьютерами прежде, чем начать передачу. Прикладной уровень, соответствующий Сеансовому, Представительскому и Прикладному уровням модели OSI, соединяет в сети приложения. 367
7.8. Среда клиент-сервер Раньше сетевые системы основывались на модели централизованных вычислений, в которой один мощный сервер — мейнфрейм выполнял основную работу в сети, а пользователи получали доступ к нему при помощи недорогих и низкопроизводительных компьютеров — терминалов. В результате развития персональных компьютеров централизованную модель заменила модель клиент-сервер, предоставляющая при той же производительности возможности сетевой обработки данных. В настоящее время большинство сетей использует модель клиент- сервер. Сеть архитектуры клиент-сервер — это сетевая среда, в которой компьютер-клиент инициирует запрос компьютеру-серверу, выполняющему этот запрос. Рассмотрим работу модели на примере системы управления БД — приложения, часто используемого в среде клиент-сервер. В модели клиент-сервер ПО клиента использует язык структурированных запросов SQL (Structured Query Language), который переводит запрос с языка, понятного пользователю, на язык, понятный машине. SQL близок к естественному английскому. Клиент (пользователь) генерирует запрос с помощью интерфейсного приложения, которое обеспечивает интерфейс пользователя, формирует запросы и отображает данные, полученные с сервера. В клиент-серверной среде сервер не наделяется пользовательским интерфейсом. Представлением данных в удобной форме занимается сам клиент. Компьютер-клиент получает инструкции от пользователя, готовит их для сервера, а затем по сети посылает ему запрос. Сервер обрабатывает запрос, проводит поиск необходимых данных и отсылает их клиенту. Клиент в удобной для пользователя форме отображает полученную информацию. В клиент-серверной среде пользователь компьютера-клиента имеет дело с экранной формой. В ней он задает необходимые параметры информации. Интерфейсная часть одну и ту же информацию может представлять в различном виде. Сервер в клиент-серверной среде обычно предназначен для хранения данных и управления ими. Именно сервер выполняет большинство операций с данными. Сервер называют также прикладной частью модели клиент-сервер, так как именно он выполняет запросы клиентов. Обработка данных на сервере состоит из их сортиров- 368
ки, извлечения затребованной информации и отправки ее по адресу пользователя. ПО предусматривает также обновление, удаление, добавление и защиту информации. Технология клиент-сервер создает мощную среду, обладающую множеством реальных преимуществ. В частности, хорошо спланированная клиент-серверная система обеспечивает относительно недорогую платформу, которая обладает в то же время вычислительными возможностями мэйнфрейма и легко настраивается на выполнение конкретных задач. Кроме того, в среде клиент-сервер резко уменьшается сетевой трафик, так как по сети пересылаются только результаты запросов. Файловые операции выполняются в основном более мощным сервером, поэтому запросы лучше обслуживаются. Это означает, что нагрузка на сеть распределяется более равномерно, чем в традиционных сетях на основе файл-сервера. Уменьшается потребность компьютеров-клиентов в ОЗУ, так как вся работа с файлами выполняется на сервере. По этой же причине на компьютерах-клиентах уменьшается потребность в дисковом пространстве. Упрощается управление системой, контроль ее безопасности становится проще, так как все файлы и данные размещаются на сервере. Упрощается резервное копирование. 7.9. Internet как иерархия сетей Слово Internet происходит от выражения interconnected networks (связанные сети). Это глобальное сообщество малых и больших сетей. В широком смысле - это глобальное информационное пространство, хранящее огромное количество информации на миллионах компьютеров, которые обмениваются данными. К концу 1969 г. в США был завершен проект ARPAnet подключением в одну компьютерную сеть 4 исследовательских центров: University of California Los Angeles, Stanford Research Institute, University of California at Santa Barbara, University of Utah. Проект также предусматривал проведение экспериментов в области компьютерных коммуникаций, изучение способов поддержания связи в условиях ядерного нападения и разработку концепции децентрализованного управления военными и гражданскими объектами в период 369
ведения войн. В 1972 г. Минобороны США начало разработку новой программы Internetting Project с целью изучения методов соединения сетей между собой. Выдвигались требования максимальной надежности передачи данных при заведомо низком качестве коммуникаций, средств связи и оборудования и возможности передачи больших объемов информации. В 1974 г. была поставлена задача разработки универсального протокола передачи данных, которая была решена созданием протокола передачи данных и объединения сетей - Transmission Control Protocol/Internet Protocol (TCP/IP). В 1983 г. был осуществлен перевод ARPAnet на TCP/IP. В 1989 г. в Европейской лаборатории физики элементарных частиц (CERN, Швейцария, Женева) Тим Бернерс-Ли разработал технологию гипертекстовых документов — World Wide Web, позволяющую пользователям иметь доступ к любой информации, находящейся в сети Интернет на компьютерах по всему миру. К 1995 г. темпы роста сети показали, что регулирование вопросов подключения и финансирования не может находиться в руках одного Национального научного фонда США, и в этом же году произошла передача региональным сетям оплаты за подсоединение многочисленных частных сетей к национальной магистрали. Рассмотрим схему подключения компьютера к Интернет и проследим, по каким каналам передается информация, посылаемая в Сеть и принимаемая из Сети. Подключение к Интернету домашнего компьютера выполняется, как правило, с помощью модема (рис. 7.8). При этом чаще всего осуществляется так называемое сеансовое соединение с провайдером по телефонной линии. Набирается один из телефонных номеров, предоставленных провайдером, для соединения с одним из его модемов. У провайдера имеется набор модемов, так называемый модемный пул. После того, как вы соединились с ISP (Internet Service Provider), ваш компьютер становится частью сети данного ISP Каждый провайдер имеет свою магистральную линию или backbone. ISP-провайдеры имеют так называемые точки присутствия POP (Point of Presence), где происходит подключение локальных пользователей. Провайдер может иметь точки присутствия POP в нескольких городах. В каждом городе находятся аналогичные модемные пулы, на которые звонят локальные клиенты этого провайдера в данном городе. Провайдер обычно арендует волоконно-оптические ли- 370
Рис. 7.8. Схема подключения компьютера к Internet нии у телефонной компании для соединения всех своих точек присутствия. Крупные коммуникационные компании имеют собственные высокопропускные каналы. Пусть имеются опорные сети двух Интернет-провайдеров. Очевидно, что все клиенты провайдера А могут взаимодействовать между собой по собственной сети, а все клиенты провайдера В — по своей, но при отсутствии связи между сетями А и В клиенты разных провайдеров не могут связаться друг с другом. Для реализации такой услуги провайдеры А и В подключаются к так называемым точкам доступа NAP (Network Access Points) в разных городах, и трафик между двумя сетями течет через NAR Аналогично организуется подключение к другим магистральным сетям, в результате чего образуется объединение множества сетей высокого уровня. В Интернете 371
действуют сотни крупных провайдеров, их магистральные сети связаны через NAP в различных городах, и миллиарды байтов данных текут по разным сетям через NAP-узлы. В офисе компьютеры, скорее всего, подключены к локальной сети. В этом случае рассмотренная схема видоизменяется. Варианты подключения к провайдеру могут быть различными, хотя чаще всего это выделенная линия. На сегодняшний день существует множество компаний, имеющих собственные опорные сети (бэкбоуны), которые связываются с помощью NAP с сетями других компаний по всему миру. Благодаря этому каждый, кто находится в Интернете, имеет доступ к любому его узлу, независимо от того, где он расположен территориально. Скорость передачи информации на различных участках Интернета существенно различается. Магистральные линии — это высокоскоростные каналы, построенные на основе волоконно-оптических кабелей. Кабели обозначаются ОС (optical carrier), например ОС-3, ОС-12 или ОС-48. Так, линия ОС-3 может передавать 155 Мбит/с, а ОС-48 — 2488 Мбит/с (2,488 Гбит/с). Но максимальная скорость получения информации на домашний компьютер с модемным подключением не превышает 56 Кбит/с. Как же происходит передача информации по всем этим многочисленным каналам? Доставка информации по нужному адресу выполняется с помощью маршрутизаторов, определяющих, по какому маршруту передавать информацию. Маршрутизатор — это устройство, которое работает с несколькими каналами, направляя в выбранный канал очередной блок данных. Выбор канала осуществляется по адресу, указанному в заголовке поступившего сообщения. Таким образом, маршрутизатор выполняет две взаимосвязанные функции. Во-первых, он направляет информацию по свободным каналам, предотвращая закупорку узких мест в Сети; во-вторых, проверяет, что информация следует в нужном направлении. При объединении двух сетей маршрутизатор включается в обе сети, пропуская информацию из одной в другую. В некоторых случаях он осуществляет перевод данных из одного протокола в другой, при этом защищая сети от лишнего трафика. Эту функцию маршрутизаторов можно сравнить с работой службы ГИБДД, которая ведет наблюдение за автомобильным движением с вертолета и сообщает водителям оптимальный маршрут. 372
7,9.1. Протоколы интернет Различают два типа протоколов: базовые и прикладные. Базовые протоколы отвечают за физическую пересылку сообщений между компьютерами в сети Internet. Это протоколы IP и TCP. Прикладными называют протоколы более высокого уровня, они отвечают за функционирование специализированных служб. Например, протокол HTTP служит для передачи гипертекстовых сообщений, протокол FTP — для передачи файлов, SMTP — для передачи электронной почты. Набор протоколов разных уровней, работающих одновременно, называют стеком протоколов. Каждый нижележащий уровень стека протоколов имеет свою систему правил и предоставляет сервис вышележащим. Аналогично каждый протокол в стеке протоколов выполняет свою функцию, не заботясь о функциях протокола другого уровня. На нижнем уровне используются два основных протокола: IP (Internet Protocol — протокол Интернет) и TCP (Transmission Control Protocol — протокол управления передачей). Архитектура протоколов TCP/IP предназначена для объединения сетей. В их качестве могут выступать разные ЛВС (Token Ring, Ethernet и др.), различные национальные, региональные и глобальные сети. К этим сетям могут подключаться машины разных типов. Каждая из сетей работает в соответствии со своими принципами и типом связи. При этом каждая сеть может принять пакет информации и доставить его по указанному адресу. Таким образом, требуется, чтобы каждая сеть имела некий сквозной протокол для передачи сообщений между двумя внешними сетями. Предположим, имеется некое послание, отправляемое по электронной почте. Передача почты осуществляется по прикладному протоколу SMTP, который опирается на протоколы TCP/IP. Согласно протоколу TCP, отправляемые данные разбиваются на небольшие пакеты фиксированной структуры и длины, маркируются таким образом, чтобы при получении данные можно было бы собрать в правильной последовательности. Обычно длина одного пакета не превышает 1500 байт. Поэтому одно электронное письмо может состоять из нескольких сотен таких пакетов. Малая длина пакета не приводит к блокировке линий свя- 373
зи и не позволяет отдельным пользователям надолго захватывать канал связи. К каждому полученному TCP-пакету протокол IP добавляет информацию, по которой можно определить адреса отправителя и получателя. Это аналогично помещению адреса на конверт. Для каждого поступающего пакета маршрутизатор, через который проходит пакет, по данным IP-адреса определяет, кому из ближайших соседей необходимо переслать данный пакет, чтобы он быстрее оказался у получателя, т.е. принимает решение об оптимальном пути следования очередного пакета. При этом географически самый короткий путь не всегда оказывается оптимальным (быстрый канал на другой континент может быть лучше медленного в соседний город). Очевидно, что скорость и пути прохождения разных пакетов могут быть различными. Взаимосвязанные пакеты данных могут передаваться различными путями. Возможно, что пакеты будут путешествовать через разные континенты с различной скоростью. При этом пакеты, отправленные позже, могут дойти раньше. Независимо от длины пути в результате конечного числа пересылок TCP-пакеты достигают адресата. Наконец, TCP-модуль адресата собирает и распаковывает IP-конверты, затем распаковывает TCP-конверты и помещает данные в нужной последовательности. Если чего-либо не достает, он требует переслать этот пакет снова. Пакеты не только теряются, но и могут искажаться при передаче из-за наличия помех на линиях связи. TCP решает и эту проблему. В конце концов, информация собирается в нужном порядке и полностью восстанавливается. Таким образом, протокол IP осуществляет перемещение данных в сети, а протокол TCP обеспечивает надежную доставку данных, используя систему кодов, исправляющих ошибки. Причем два сетевых сервера могут одновременно передавать в обе стороны по одной линии множество TCP-пакетов от различных клиентов. Необходимо подчеркнуть основное различие передачи информации по телефонной сети и по Интернету. Телефонная система при звонке по телефону в другой регион или даже на другой континент устанавливает канал между вашим телефоном и тем, на который вы звоните. Канал может состоять из десятков участков разной физической природы — медные провода, волоконно-оптические линии, беспроводные участки, спутниковая связь и т.д. Эти участки неиз- 374
менны на протяжении всего сеанса связи. Это означает, что линия между вами и тем, кому вы звоните, постоянна в течение всего разговора, поэтому повреждения на любом участке линии способны прервать ваш разговор. При этом выделенная вам часть сети для других уже недоступна. Речь идет о сети с коммутацией каналов. Интернет же является сетью с коммутацией пакетов. Процесс пересылки электронной почты принципиально иной. Итак, Internet-данные в любой форме — электронное письмо, Web-страница или скачиваемый файл — путешествуют в виде группы пакетов. Каждый пакет посылается на место назначения по оптимальному из доступных путей. Поэтому даже если какой-то участок Интернет окажется нарушенным, то это не повлияет на доставку пакета, который будет направлен по альтернативному пути. Таким образом, во время доставки данных нет необходимости в фиксированной линии связи между двумя пользователями. Принцип пакетной коммутации обеспечивает основное преимущество Internet — надежность. Сеть может распределять нагрузку по различным участкам за тысячные доли секунды. Если какой-то участок оборудования сети поврежден, пакет может обойти это место и пройти по другому пути, обеспечив доставку всего послания. Прототип Интернет — сеть ARPAnet, разработанная по заказу Минобороны США, задумывалась именно как сеть, устойчивая к повреждениям (например, в случае военных действий), способная продолжать нормальное функционирование при выходе из строя любой ее части. 7.9.2. Адpecация в интернет Каждому компьютеру, подключенному к Интернету, присваивается идентификационный номер, который называется IP-адресом. При сеансовом подключении к Интернету IP-адрес выделяется компьютеру только на время этого сеанса. Присвоение адреса компьютеру на время сеанса связи называется динамическим распределением IP-адресов. Оно удобно для провайдера, поскольку один и тот же IP-адрес в разные периоды времени может быть выделен разным пользователям. Таким образом, Интернет-провайдер должен иметь по одному IP-адресу на каждый обслуживаемый им модем, а не на каждого клиента. IP-адрес имеет формат ххх.ххх.ххх.ххх, где ххх — числа от 0 до 375
255. Рассмотрим типичный IP-адрес: 193.27.61.137. Для облегчения запоминания IP-адрес обычно выражают рядом чисел в десятичной системе счисления, разделенных точками. Но компьютеры хранят его в бинарной форме. Например, тот же IP-адрес в двоичном коде будет выглядеть так: 11000001. 00011011. 00111101. 10001001. Четыре числа в IP-адресе называются октетами, поскольку в каждом из них при двоичном представлении имеется восемь разрядов: 4 • 8=32. Так как каждая из восьми позиций может иметь два различных состояния: 1 или 0, общий объем возможных комбинаций составляет 28 или 256, т.е. каждый октет может принимать значения от 0 до 255. Комбинация четырех октетов дает 232 значений, т.е. примерно 4,3 млрд комбинаций, за исключением некоторых зарезервированных адресов. Октеты делят на две секции: Net и Host. Net-секция используется для того, чтобы определить сеть, к которой принадлежит компьютер. Host, который называют узлом, определяет конкретный компьютер в сети. Подобная система используется и в обычной почте. На ранней стадии своего развития Интернет состоял из небольшого количества компьютеров, объединенных модемами и телефонными линиями. Тогда пользователи могли установить соединение с компьютером, набрав цифровой адрес, например 163. 25. 51. 132. Это было удобно, пока компьютеров было мало. По мере увеличения их количества цифровые имена стали заменять текстовыми, потому что текстовое имя проще запомнить, чем цифровое. Возникла проблема автоматизации этого процесса, и в 1983 г. в Висконсинском университете США была создана так называемая DNS-система (Domain Name System), которая автоматически устанавливала соответствие между текстовыми именами и IP-адресами. Вместо чисел была предложена ставшая сегодня для нас привычной запись типа www. myname. gorod. ru. Подобным же образом осуществляется сортировка обычной почты. Люди привыкли ориентироваться по географическим адресам, в то время как автомат на почте быстро сортирует почту по индексу. Таким образом, при пересылке информации компьютеры используют цифровые адреса, люди — буквенные, а DNS-сервер служит своеобразным переводчиком. 376
7.9.3. Доменные имена Когда происходит обращение на Web или посылается e-mail, то используется доменное имя. Например, адрес http://www.microsoft.com содержит доменное имя microsoft.com. Аналогично e-mail-адрес algol@rambler.ru содержит доменное имя rambler.ru. В доменной системе имен реализуется принцип назначения имен с определением ответственности за их подмножество соответствующих сетевых групп. Каждая группа придерживается этого простого правила. Имена, которые она присваивает, единственны среди множества ее непосредственных подчиненных, поэтому никакие две системы, где бы они ни находились в Интернете, не смогут получить одинаковые имена. Так же уникальны адреса, указываемые на конвертах при доставке писем обычной почтой. Таким образом, адрес на основе географических и административных названий однозначно определяет точку назначения. Домены имеют подобную иерархию. В именах домены отделяются друг от друга точками: addressx.msk.ru, addressy.spb.ru. В имени может быть различное количество доменов, но обычно их не больше пяти. По мере движения по доменам в имени слева направо, количество имен, входящих в соответствующую группу, возрастает. Для перевода буквенного доменного имени в IP-адрес цифрового формата служат DNS-серверы. В качестве примера рассмотрим адрес group, facult. univers. rst. ru. Первым в имени стоит название рабочей машины — реального компьютера с IP-адресом. Это имя создано и поддерживается группой facult. Группа входит в более крупное подразделение univers, далее следует домен rst — он определяет имена ростовской части сети, аш- российской. Каждая страна имеет свой домен: аи — Австралия, be — Бельгия и т.д. Это географические домены верхнего уровня. Помимо географического признака используется организационный признак, в соответствии с которым существуют следующие доменные имена первого уровня: • com — коммерческие предприятия, • edu — образовательные учреждения, • gov — государственные учреждения, 377
• mil — военные организации, • net — сетевые образования, • org — учреждения других организаций и сетевых ресурсов. Внутри каждого доменного имени первого уровня находится целый ряд доменных имен второго уровня. Домен верхнего уровня располагается в имени правее, а домен нижнего уровня — левее. Так, в адресе www. continent, rst. ru домен верхнего уровня га указывает на то, что адрес принадлежит российской части Интернет, rst — определяет город, следующий уровень — домен конкретного предприятия. Лавинообразное подключение в сети Интернет обнажило проблему недостатка адресного пространства. В 1995 г. организация IETF (Internet Engineering Task Force — инженерные силы Интернет) опубликовала рекомендации по протоколу IP следующего поколения - IP v. 6 (сейчас IP v. 4), которые предполагают постепенный переход с существующей 32-разрядной системы присвоения IP-адресов на 128-разрядную систему. Такая мера сулит увеличение адресного пространства в 296 раз, что позволит каждому жителю планеты иметь несколько адресов. Переход уже начался. Вместе с использованием новых оптоволоконных каналов для увеличения скорости в сотни и тысячи раз расширение адресного пространства даст возможность осуществить проект Интернет 2. Эта сеть в настоящее время развертывается в США для ряда университетов, школ, федеральных агентств и крупных компьютерных компаний. Во время приема запроса на перевод доменного имени в IP-адрес DNS-сервер выполняет одно из следующих действий: • отвечает на запрос, выдав IP-адрес, если знает IP-адрес запрашиваемого домена; • взаимодействует с другим DNS-сервером для того, чтобы найти IP-адрес запрошенного имени, если он его не знает (такой запрос может проходить по цепочке DNS-серверов несколько раз); • выдает сообщение: «Я не знаю IP-address домена, запрашиваемого вами, но вот IP-address DNS-сервера, который знает больше меня»; • сообщает, что такой домен не существует. Предположим, вы набрали адрес group, facult. univers. rst. com, который имеет адрес в домене верхнего уровня СОМ. В простейшем варианте браузер контактирует с DNS-сервером для того, чтобы по- 378
лучить IP-адрес искомого компьютера, и DNS-сервер возвращает этот искомый IP-адрес. Одна из причин надежной работы этой системы — ее избыточность. Существует множество DNS-серверов на каждом уровне, и поэтому если один из них не может дать ответ, то точно существует другой, на котором есть необходимая информация. Система кэширования делает поиск более быстрым. DNS-сервер, однажды сделав запрос на корневой DNS и получив адрес нужного DNS-сервера, кэширует полученный IP-адрес. В следующий раз он уже не будет повторно обращаться с подобным запросом. Подобное кэширование происходит с каждым запросом, что постепенно оптимизирует скорость работы системы. Пользователям работа DNS-сервера не видна, однако эти серверы каждый день выполняют миллиарды запросов, обеспечивая работу миллионов пользователей. 7.9.4. Варианты доступа в интернет Провести соединение между ISP-провайдером и пользователями — задача не из простых. Обычно провайдер подключен к Интернет с помощью дорогостоящего оптоволоконного высокоскоростного канала. Один провайдер обслуживает множество клиентов, которые рассредоточены на большой территории. Технология, по которой осуществляется связь между абонентами и местной телекоммуникационной службой, т.е. провайдером, получила название технологии последней мили. Название это условное (обычно расстояние от абонента до провайдера не превышает 4 км). Существует целый ряд технологий, позволяющих использовать имеющуюся инфраструктуру — телефонные линии, сети кабельного телевидения и т.д., — для осуществления доступа в Интернет. Наиболее распространенный среди домашних пользователей в России способ доступа в Интернет — доступ по коммутируемой телефонной линии с помощью модема. Скорость доступа при таком способе подключения не более 56 Кбит/с, но такая скорость сегодня мало кого устраивает. Какие же альтернативные технологии позволяют получить более высокую скорость доступа в Интернет? Обычный телефон использует лишь низкочастотный диапазон линии. Однако провод телефонной линии способен передавать го- 379
раздо больше данных, если использовать более широкую полосу (полоса пропускания обычной телефонной линии 3400 КГц). Поэтому телефонную сеть, которая изначально предназначалась для передачи голосового сигнала, приспособили для высокоскоростной передачи цифровых данных. DSL-технология (Digital Subscriber Line — цифровая абонентская линия) позволяет использовать более широкую полосу пропускания для передачи данных без ущерба для использования телефонной линии по прямому назначению. Существует целое семейство технологий под общим названием xDSL, где приставка х указывает на конкретную спецификацию семейства DSL. Эта технология весьма перспективна, она позволяет одновременно работать в Интернете и разговаривать по телефону. Скорость подключения по ней намного выше, чем при помощи обычного модема. DSL не требует прокладки новых проводов, так как использует уже имеющуюся телефонную динию. Одним из основных преимуществ технологии xDSL является высокоскоростной доступ в Интернет. При работе в Интернет основной поток информации идет из сети к пользователю, а в сеть передается гораздо меньший объем данных. Действительно, при просмотре Web-страниц в ответ на небольшой запрос пользователь получает из Сети не только текст, но и изображения. Таким образом, информационный обмен является асимметричным. ADSL (Asymmetrical DSL), или асимметричный DSL, позволяет передавать данные пользователю со скоростью, на порядок превышающую скорость передачи данных от пользователя. При этом сигнал от пользователя в Сеть передается на более низких частотах, чем сигнал из Сети к пользователю. Теоретически при этом можно иметь канал с пропускной способностью 1 Мбит/с в прямом направлении (в Сеть) и 8 Мбит/с — в обратном. При этом одна и та же линия может использоваться для передачи голоса и цифровых данных. По сравнению с коммутируемым доступом ADSL-линия работает, как минимум, на два порядка быстрее. Высокая скорость позволяет комфортно работать с Web-сайтами с мультимедийной информацией, быстро перекачивать большие файлы и полноценно использовать интерактивные приложения. Достоинства ADSL: легкость установки (используется уже имеющаяся телефонная линия), постоянный доступ в Интернет (пользо- 380
ватели ADSL не разделяют полосу пропускания с другими абонентами). Недостаток ADSL: ограничения по дальности. Скорость передачи потока данных в обратном направлении существенно зависит от расстояния. Если при расстоянии 3 км можно получить скорость около 8 Мбит/с, то на расстоянии 5 км — только 1,5 Мбит/с. На стороне пользователя компьютер подключается к ADSL-модему. Принцип действия ADSL-модема заключается в том, что диапазон частот в интервале 24—1100 КГц разбивается на 4 КГц полосы, на каждую из которых назначается виртуальный модем. Таким образом, каждый из этих 249 виртуальных модемов работает со своим диапазоном. ADSL-модем подключается к частотному разделителю. Частотный разделитель представляет собой фильтр низких частот, разделяющий низкочастотный сигнал обычной телефонной связи и высокочастотный ADSL-сигнал. Конструктивно частотный разделитель, или сплиттер, выполняется в виде блока, имеющего три гнезда: для подключения ADSL-модема, телефонного аппарата и линии. Частотный разделитель позволяет подключить к одной линии и компьютер, и телефон. Таким образом, по одной линии могут передаваться и цифровые компьютерные сигналы, и аналоговые сигналы телефонной связи. На телефонной станции такой же частотный разделитель позволяет разделять низкочастотные и высокочастотные сигналы на другом конце абонентной линии. Голосовой аналоговый сигнал направляется в телефонную сеть общего пользования, а цифровой сигнал — на мультиплексор доступа DSLAM. На стороне провайдера сигнал от мультиплексора доступа DSLAM через модемный пул и сервер попадает в Интернет. Мультиплексор доступа DSLAM (Digital Subscriber Line Access Multiplexer) — это устройство, установленное на телефонной станции, которое осуществляет подключение всех DSL-абонентов к одной высокоскоростной линии. ADSL — весьма экономичная технология. Обычно такая линия обходится потребителю намного дешевле, чем выделенный канал аналогичной пропускной способности. По данной технологии может быть подключен не только отдельный компьютер, но и локальная сеть. DSL-технология позволяет также использовать широкополосный 381
доступ. Понятие «широкополосный доступ» означает, что канал предоставляет расширенную полосу частот для передачи информации. Высокая скорость передачи информации достигается благодаря тому, что с использованием широкой полосы частот информация может быть мультиплексирована и отправлена на нескольких различных частотах, позволяя, таким образом, передавать за единицу времени большее количество информации. Как известно, мультиплексирование — это передача нескольких сигналов по одному физическому каналу путем разделения его на подканалы. Говоря о частотном мультиплексировании, имеют в виду частотное разделение на подканалы. Под термином узкополосный доступ обычно понимается канал, достаточный для передачи голоса. Скорость передачи по такому каналу не превышает 64 Кбит/с. Считается, что широкополосный доступ — это канал со скоростью передачи не менее 256 Кбит/с. Широкополосный доступ позволяет передавать в одном канале различные сигналы и одновременно пользоваться телефоном, телевизором и Интернетом. Выделенная телефонная линия — это арендованная телефонная линия связи, соединяющая без коммутации двух абонентов. Наиболее распространенной технологией выделенной линии является технология ISDN (Integrated Services Digital Network). ISDN — это стандарт цифровой передачи. Основным компонентом любой ISDN-линии является однонаправленный канал или В-канал с пропускной способностью 64 Кбит/с. По этому каналу могут передаваться цифровые данные и, соответственно, оцифрованные видео- и аудиоданные. Для расширения полосы пропускания В-кана- лы группируются по два. В состав группы включается также D-канал (16 Кбит/с), управляющий передачей данных. Передача информации может осуществляться по обычному медному проводу. Пользователи, которые устанавливают ISDN-адаптер вместо модема, могут получить доступ в Интернет со скоростью до 128 Кбит/с. ISDN требует установки адаптеров на обоих концах линии передачи. ISDN-канал обычно предоставляется телефонными станциями. По линии ISDN можно вести телефонные разговоры и одновременно передавать данные в Интернет. Сеть кабельного телевидения первоначально была разработана как система для передачи аналогового видеосигнала в одном направлении — в сторону пользователя. Позднее были созданы так называе- 382
мые кабельные модемы, которые кодируют и передают данные по кабелю таким образом, что это не мешает передаче телевизионного сигнала. Основным достоинством этой технологии является то, что используются уже имеющиеся сети кабельного телевидения. При доступе в Интернет по сетям кабельного телевидения обеспечивается высокая скорость передачи информации. Полосы пропускания телевизионного кабеля вполне достаточно для предоставления услуг последней мили при скоростях, сравнимых с теми, что предоставляют операторы DSL. В отличие от ADSL, которая обеспечивает высокоскоростную передачу данных по одной телефонной линии, сети кабельного телевидения являются сетями коллективного пользования. Кабельные модемы получают услугу от общего источника информации. Рабочая полоса частот кабельного модема разделяется между всеми пользователями, подключенными к линии, и, следовательно, зависит от количества одновременно работающих пользователей. Обычно к одной модемной системе подключается несколько десятков абонентов. Чем больше клиентов одновременно посылают данные, тем меньше скорость их передачи. На практике скорость передачи данных от пользователей при применении кабельного модема часто меньше, чем при использовании ADSL. Для организации связи между пользователем и опорной точкой радиосети провайдера используют радиоканал для высокоскоростного доступа в Интернет. С помощью этой технологии к Интернету можно подключить как индивидуальных пользователей, так и ЛВС. Для этого у абонента устанавливается радиомодем, который подключается к сетевой карте ПК или к хабу/маршрутизатору (в случае подключения ЛВС). Радиомодем соединен с направленной антенной, установленной на крыше здания. Антенна абонента направляется на базовую станцию провайдера. Связь между точкой входа в Интернет провайдера и абонентом осуществляется по радиоканалу. С помощью данной технологии можно также объединить в сеть несколько филиалов компании без кабельного соединения. Для этого в каждом подразделении устанавливается абонентский комплект: направленная антенна и радиомодем. Провайдер обеспечивает связь между всеми точками доступа фирмы и правильную маршрутизацию данных. Оборудование беспроводных сетей работает в диапазоне частот 383
2,4 ГГц. Сигналы такой частоты распространяются вдоль прямой линии, соединяющей антенны, поэтому радиоканал может быть организован при условии прямой видимости между абонентской антенной и антенной провайдера. На практике направленные антенны обеспечивают дальность связи до 30 км. Преимущества радиоканала: быстрая инсталляция, мобильность (нет кабеля), высокая скорость (несколько Мбит/с в зависимости от оборудования), затраты (первоначальные затраты на оборудование выше, чем в случае выделенной линии, но абонентская плата ниже). В случае отсутствия телефонных станций и кабельного телевидения может помочь спутниковый доступ в Интернет. При этом скорость доступа на порядок выше, чем по обычному модему через коммутируемую телефонную линию, но несоизмеримо ниже ASDL- доступа. Существует две разновидности организации высокоскоростного доступа в Интернет по спутниковому каналу: симметричная и асимметричная. В случае симметричного доступа клиент осуществляет передачу запроса на спутник и прием данных со спутника. Подобное решение является достаточно дорогим, как по части клиентского оборудования, так и по стоимости абонентской платы. В случае асимметричного доступа клиент осуществляет передачу запроса на получение требуемой информации по наземному каналу, а принимает информацию со спутника. Пользователь связывается с любым провайдером Интернета через обычный телефонный модем. Используя этот канал связи, он регистрируется на сервере провайдера, который обеспечивает асимметричный доступ в Интернет. После авторизации весь поток информации, поступающей в адрес пользователя через Интернет, направляется к нему не по обычной телефонной линии, а через спутниковый канал. В последние годы активно разрабатываются технологии, направленные на использование бытовой электрической сети для доступа в Интернет. Одно из важнейших преимуществ бытовой электрической сети состоит в ее распространенности. Поэтому идея передачи информации по такой сети очень перспективна. Поскольку бытовая электрическая сеть первоначально не была предназначена для передачи информации, то это создает ряд технических трудностей. Электропроводка характеризуется высоким уровнем шумов, быстрым затуханием высокочастотного сигнала, а также изменением коммуникационных параметров в зависимости от текущей нагрузки. 384
Несмотря на технические трудности, сегодня уже имеются технологии, позволяющие использовать силовую кабельную инфраструктуру. В частности, компании Nor.web и United Utilities разработали технологию DPL (Digital Power Line), позволяющую передавать голос и пакеты данных через простые электрические сети 120/220 В со скоростью до 1 Мбит/с. Ожидается, что DPL-технология сможет дать новый импульс развитию средств передачи данных по линиям электропитания и сделает возможным прямой доступ в Интернет практически из любой точки земного шара по минимальной стоимости. Пока эта технология не получила широкого распространения, однако в ближайшем будущем можно ожидать существенных изменений на рынке провайдерских услуг и снижения расценок на доступ в Сеть, включая цены на коммутируемые и выделенные линии. Если эта технология получит распространение, она сможет значительно изменить расстановку сил на рынке предоставления Internet-доступа. Технология будет способствовать и появлению новых принципов проектирования силовых электрических сетей с учетом как энергетических, так и коммуникационных требований. 7.9.5. Система адресации URL Чтобы найти документ в сети Интернет, достаточно знать ссылку на него — так называемый универсальный указатель на ресурс URL (Uniform Resource Locator — унифицированный указатель ресурса), который указывает местонахождение каждого файла, хранящегося на компьютере, подключенном к Интернету. Адрес URL является сетевым расширением понятия полного имени ресурса, например, файла или приложения и пути к нему в операционной системе. В URL, кроме имени файла и директории, где он находится, указывается сетевое имя компьютера, на котором этот ресурс расположен, и протокол доступа к ресурсу, который можно использовать для обращения к нему. Рассмотрим некоторые URL: http://www.abc.def.ru/kartinki/SLIDE.htm Первая часть http:// (Hypertext Transfer Protocol) — протокол передачи гипертекста, по которому обеспечивается доставка докумен- 13. Информатика 385
та с Web-сервера, указывает браузеру, что для доступа к ресурсу применяется данный сетевой протокол. Вторая часть www.abc.def.ru указывает на доменное имя. Третья часть kartinki/SLIDE.htm показывает программе-клиенту, где на данном сервере искать ресурс. В данном случае ресурсом является файл в формате html, а именно SLIDE.htm, который находится в папке kartinki. Имена директорий, содержащиеся в URL, — виртуальные и не имеют ничего общего с реальными именами каталогов компьютера, на котором выполняется Web-сервер, а являются их псевдонимами. Ни один владелец компьютера, на котором выполняется Web-сервер, не позволит постороннему пользователю, обращающемуся к Web-серверу через Интернет, иметь доступ к реальной файловой системе этого компьютера. При написании URL важно правильно указывать верхние и нижние регистры. Дело в том, что Web-серверы функционируют под управлением разных операционных систем, а в некоторых из них имена файлов и приложений являются регистро-чувствительными. В общем случае формат URL имеет вид: (протокол доступа) [://<домен>: <порт>](/<директория><имя ресурса>[/<параметры запроса>]. Первая часть URL соответствует используемому протоколу доступа, например HTTP:// (протокол передачи гипертекста), FTP:// (File Transfer Protocol — протокол передачи файлов) и т.д. Вторая часть URL-адреса указывает доменное имя, а также может указывать номер порта. Любой сервер предоставляет сервис, используя нумерованные порты. При этом каждая служба имеет свой номер порта. Клиенты подключаются к сервису по уникальному IP- адресу и по конкретному номеру порта. Так, если на компьютере функционируют Web-сервер и FTP-сервер, то обычно Web-сервер будет доступен по порту 80, а FTP-сервер — по порту 21. Каждый из распространенных сервисов имеет свой стандартный номер порта: WWW - 80, FTP - 21, ECHO - 7, TELNET - 23, SMTP - 25, GOPHER — 70 и т.д. Если номер порта не указан, то по умолчанию предполагается 80. В рассмотренном выше примере номер порта указан не был, поэтому он будет определен по умолчанию в связи с именем используемого протокола, в данном случае — HTTP. При этом следует учитывать, что если устанавливается свой Wfeb- 386
сервер, то его можно поместить на другой свободный номер порта, например 920. В этом случае, если имя машины, например, aaa.bbb.com, то подключиться к этому серверу можно по URL http: //aaa.bbb.com:920. Третья часть URL-адреса — путь доступа к файлу — аналогичен пути к файлу на клиентском компьютере. Если этот путь не указан, по умолчанию используется стандартный отклик, определяемый в настройках Web-сервера. В частности, стандартным откликом на HTTP-запрос для ряда Web-серверов служит вывод файла с именем index.html. 7.9.6. Сервисы интернет Обычно пользователи идентифицируют Интернет со службой WWW (World Wide Web — Всемирная паутина). Но это далеко не так, ибо WWW — одна из многочисленных служб Интернета. По аналогии Интернет можно сравнить с системой транспортных магистралей, а виды сервисов Интернет — с различными службами доставки. В число наиболее часто используемых служб Интернет входят электронная почта, WWW, служба новостей Интернет, передача файлов по протоколу FTP, терминальный доступ по протоколу Telnet и ряд других служб. Электронная почта. Электронная почта возникла раньше, чем Интернет, однако она не только не устарела, но, напротив, является наиболее массовой службой Сети и постоянно приобретает новых пользователей. Электронное письмо, как и обычное, содержит адреса отправителя и получателя. В него можно вложить графическое изображение или иной файл — точно так же, как в конверт с письмом можно положить открытку или фотографию. На него можно поставить электронную подпись, которая играет ту же роль, что и подпись в обычном письме. Однако служба e-mail давно обошла по популярности традиционную почту: ежегодно в мире рассылается более 600 млрд электронных писем. Чем же вызвана такая популярность? Для ответа на этот вопрос перечислим достоинства электронной почты. В отличие от телефонного звонка электронная почта может быть прочитана в удобное время, что особенно важно с учетом разницы 387
во времени между часовыми поясами. Следует также отметить демократичность электронной почты: отправляя электронное письмо хоть самому президенту, вы не рискуете отвлечь его от текущих дел. К удобствам электронной почты следует также отнести возможность рассылки писем сразу большому количеству получателей, высокую скорость доставки, удобство пересылки вложенных файлов. Хранение писем в базе данных почтового клиента позволяет осуществлять быстрый поиск и сортировку почтовых отправлений. Кроме того, электронная почта в несколько сот раз дешевле обычной почтовой рассылки. Обычно в момент регистрации доступа в Интернет сервис-провайдер предоставляет пользователю дисковое пространство под почтовый ящик: адрес этого почтового ящика (E-mail Account Address), имя пользователя (E-mail Account Login Name) и пароль (E-mail Account Password). Пароль для доступа предоставляется в целях предотвращения несанкционированного доступа к почте. Адрес электронной почты имеет формат: имяпользователя @ имядомена, например Ivanov@abc.rst.ru. Часть слева от значка @ — это имя почтового ящика (E-mail Account Name) на сервере, из которого владелец этого адреса забирает письма (в данном примере — Ivanov). Как правило, имя пользователя совпадает с именем почтового ящика. Часть справа от значка @ называется доменом и указывает на местонахождение этого почтового ящика. Нужно отметить, что носителем адреса электронной почты является вовсе не конечный пункт доставки, т.е. не адрес вашего домашнего компьютера, а адрес сервера, на котором вы будете получать почту. Электронная почта построена по принципу клиент-серверной архитектуры. Пользователь общается с клиентской программой, которая, в свою очередь, общается с почтовым сервером. Очевидно, что процедуры отправки и получения почты требуют разной степени идентификации личности, поэтому существуют и два разных протокола — на отправку и на прием писем. Для передачи писем используются протокол SMTP (Simple Mail Transfer Protocol — простой протокол пересылки почты) и соответственно SMTP-серверы, Чаще всего отправка почты происходит с почтового сервера вашего Internet-провайдера, хотя, в принципе, это не обязательно. Обычно SMTP-серверы не требуют идентификации, 388
поэтому вы можете отправить письмо с любого такого сервера. Для приема почтовых сообщений в настоящее время наиболее часто используется протокол РОРЗ (Post Office Protocol — протокол почтового офиса), который контролирует право пользователя забирать почту из ящика и поэтому требует предоставления имени пользователя и пароля. Рассмотрим конкретный пример работы почты. Пусть некий владелец электронного ящика с адресом petya@abc.ru на почтовом сервере abc.ru пишет письмо владельцу почтового ящика с адресом vasya@xyz.com на сервере xyz.com. Для того чтобы подготовить письмо, он вызывает клиентскую программу, создает текст сообщения и в графе Кому указывает адрес получателя vasya@xyz.com. Если отправитель не имеет постоянного подключения к Интернету, то после нажатия кнопки Отправить он устанавливает сеанс связи с провайдером и начинает получать накопившуюся почту и отправлять подготовленные письма. Порядок приема почты обычно зависит от текущих настроек почтовой программы. Нередко письма складываются в определенную папку и отправляются другой командой после установки связи с провайдером. Процесс загрузки на локальный компьютер вновь поступивших писем и отправления новых писем на сервер называется синхронизацией учетной записи. После того как вы подключились к Интернету, клиентская программа соединяется с почтовым сервером и передает серверу почтовый адрес получателя vasya@xyz.com и текст самого сообщения. При отправке почты клиентская программа взаимодействует с сервером исходящей почты, т.е. с SMTP-сервером, по протоколу SMTP, подключаясь к порту с номером 25. Процедура отправки электронной почты заключается в копировании вновь подготовленных сообщений из базы клиента в базу почтового сервера (в нашем случае — сервера abc.ru). Рассмотрим этот процесс более подробно. После того как письмо доставлено на сервер отправителя, SMTP-сервер последнего должен связаться с сервером получателя. Для этого ему необходимо знать IP-adpec SMTP-сервера, получающего почту для адресов из домена xyz.com. Чтобы узнать этот адрес, он обращается к DNS-cepeepy и задает ему вопрос: Каков IP-адрес SMTP-сервера, получающего почту для адресов из домена xyz.com? 389
DNS-сервер выдает IP-адрес, после чего SMTP-сервер на abc.ru может соединиться с SMTP-сервером на xyz.com. Если по какой-либо причине SMTP-сервер на abc.ru не может связаться с SMTP-сервером на xyz.com, то послание встает в очередь для отправки. Обычно через каждые 15 минут производится попытка переслать послание из очереди. Через четыре часа отправителю будет послано сообщение о проблеме, а спустя пять дней большинство серверов прекращают попытки и возвращают отправителю недоставленную почту, так что бесследно ваше письмо не исчезнет. Как только SMTP-серверу на abc.ru удается связаться с SMTP- сервером на xyz.com, он передает послание. Сервер xyz.com определяет, существует ли пользователь с именем vasya, и передает послание в ящик vasya. После того, как почта оказалась на сервере xyz.com, получатель имеет возможность скачать ее оттуда. При получении почты, накопившейся в вашем почтовом ящике, клиентская программа получателя взаимодействует с РОРЗ-сервером по протоколу РОРЗ. Поскольку при входе в Интернет вы уже сообщаете свой пароль и логин, то обычно при получении почты дополнительного введения этих данных не требуется (следует отметить, что в принципе пароль на доз- вон и доступ к ящику не всегда один и тот же). Ваш почтовый клиент связывается с РОРЗ-сервером и передает команды, которые определяют передачу копий посланий электронной почты на локальную машину клиента. WWW — самый популярный сервис Интернета. Именно он, благодаря своей относительной простоте и наглядности для пользователей, сделал столь массовыми обращения к ресурсам Сети. В самом общем плане WWW — это система Web-серверов, поддерживающая документы, форматированные специальным образом. Служба WWW реализована в виде клиент-серверной архитектуры. Пользователь с помощью клиентской программы (браузера) осуществляет запрос той или иной информации на сервере, а Web-сервер обслуживает запрос браузера. Браузер — это программа, обеспечивающая обращение к искомому ресурсу на сервере по его URL, интерпретирующая полученный результат и демонстрирующая его на клиентском компьютере. Протокол, по которому происходит доставка Web-сервером документа Web-браузеру, носит название HTTP (Hypertext Transfer 390
Protocol — протокол передачи гипертекста). Гипертекст — это текст, содержащий гиперссылки, связывающие слова или картинки документа с другим ресурсом (с каким-нибудь еще документом или с иным разделом этого же документа), при этом подобные связанные слова или картинки документа, как правило, выделяются, обычно с помощью подчеркивания. Пользователь может активировать эту связь щелчком мыши. Поскольку современные электронные документы содержат не только текст, но и любую мультимедийную информацию (текст, графика, звук), в качестве ссылок стали использовать не только текстовые, но и графические объекты. Со временем понятие гипертекста было расширено до понятия гипермедиа. Гипермедиа — это метод организации мультимедийной информации на основе ссылок на разные типы данных. Особенно продуктивной идея гипертекста оказалась применительно к объединению цифровой информации, распределенной на серверах во всем мире. WWW — это глобальная гипертекстовая система, организованная на базе Internet. WWW представляет собой механизм, при помощи которого связывается информация, доступная посредством многочисленных Web-серверов во всем мире. Web-сервер — это программа, которая умеет получать http-запросы и выполнять в соответствии с этими запросами определенные действия, например запускать приложения и генерировать документы. Документ, доступный через Web, называют Web-страницей, а группы страниц, объединенные общей темой и навигационно, — Web- узлами, или Web-сайтами, Один аппаратный Web-сервер может содержать несколько Web-сайтов, но возможна и обратная ситуация, когда огромный Web-сайт может поддерживаться группой Web-серверов. Тот факт, что навигация не требует знаний о местоположении искомых документов, как раз и является основным удобством и причиной популярности службы WWW. В браузерах реализованы две основные функции: запрос информации у Web-сервера и отображение ее на клиентском компьютере. Кроме того, браузеры обладают дополнительными сервисными функциями, такими как упрощение поиска, хранение закладок, указывающих на избранные страницы, и др. Популярность WWW обусловлена тем, что можно не только просматривать чужие страницы и иметь доступ к огромному количеству 391
информации, представленной на сотнях миллионов компьютеров, но и создать собственные ресурсы и таким образом донести любую информацию до всех будущих посетителей сайта. Иными словами, WWW — это глобальный механизм обмена информацией: одни люди помещают информацию на Web-серверы, а другие ее просматривают. Создав Web-сайт, владелец может поместить туда информацию различного рода: текст, графику, звук, анимацию, которая станет доступной для всех посетителей этого ресурса. С появлением в Сети вашей страницы информация о вас или о вашей фирме станет доступна сотням миллионов пользователей круглосуточно семь дней в неделю. Количество информации, которое может быть предоставлено посетителю, практически не ограничено по времени, в отличие от радио или телевидения. 7.9.7. Поиск в интернете Бытует мнение, что в Интернете есть все, но найти там что-либо практически невозможно. Впрочем, противоположная точка зрения, взятая на вооружение поисковой системой Яндекс, гласит, что найти в Интернете можно все. Видимо, для того чтобы находить, нужно уметь искать. Для поиска в Интернете предназначены различные инструменты: поисковые машины, индексированные каталоги, метапоисковые системы, тематические списки ссылок, онлайновые энциклопедии и справочники. При этом для поиска разного рода информации наиболее эффективными оказываются различные инструменты. Рассмотрим каждый инструмент в отдельности. Индексированные каталоги содержат информацию, иерархически структурированную по темам. Тематические разделы первого уровня определяют широко популярные темы, такие как спорт, отдых, наука, магазины и т.д. В каждом разделе есть подразделы. Таким образом, путешествуя по дереву каталога, можно постепенно сужать область поиска. Дойдя до нужного подкаталога, вы находите в нем набор ссылок. Обычно в каталоге все ссылки являются профильными, поскольку составлением каталогов занимаются не программы, а люди. Очевидно, что если вы ищете информацию по некоторой широкой теме, то целесообразно обратиться к каталогу. Если же вам необходимо найти конкретный документ, то каталог окажется мало- 392
эффективным поисковым средством. Один из наиболее популярных каталогов в России — List.ru находится по адресу http://mail.ru/. Кроме каталогов общего назначения в Сети много специализированных каталогов. Если внутри отдельной темы каталога находится огромное количество ресурсов, возникает проблема выбора. В некоторых каталогах имеется сортировка по популярности, например в каталоге Яндекс сортировка идет по индексу цитирования. Тематические списки ссылок — это списки, составленные группой профессионалов или коллекционерами-одиночками. Часто узкоспециализированная тема может быть раскрыта одним специалистом лучше, чем группой сотрудников крупного каталога. Тематических коллекций в Сети очень много, поэтому давать конкретные адреса не имеет смысла. Поисковые машины. В ответ на запрос мы обычно получаем длинный список документов, многие из которых не имеют никакого отношения к теме запроса. Такие документы называются нерелевантными, т.е. не относящимися к делу. Таким образом, релевантный документ — это документ, содержащий искомую информацию. Очевидно, что от умения грамотно делать запрос зависит процент получаемых релевантных документов. Доля релевантных документов в списке всех найденных поисковой машиной документов называется точностью поиска. Если все найденные документы релевантные, то точность поиска составляет 100 %. Если найдены все релевантные документы, то полнота поиска — 100 %. Таким образом, качество поиска определяется двумя параметрами: точностью и полнотой поиска. Эти величины взаимозависимы, т.е. увеличение полноты снижает точность, и наоборот. Поисковая машина состоит из двух частей: робота, или паука, и поискового механизма. База данных робота формируется в основном им самим (робот сам находит ссылки на новые ресурсы) и в существенно меньшей степени — владельцами ресурсов, которые регистрируют свои сайты в поисковой машине. Помимо робота, который обходит все предписанные серверы и формирует базу данных, существует программа, определяющая рейтинг найденных ссылок. Принцип работы поисковой машины сводится к тому, что она опрашивает свою базу данных по ключевым словам, которые пользователь указывает в поле запроса, и выдает список ссылок, ранжированный по релевантности. 393
Поиск по индексу заключается в том, что пользователь формирует запрос и передает его поисковой машине. В случае, когда у пользователя имеется несколько ключевых слов, весьма полезно использование булевых операторов. Текст, в пределах которого проверяется логическая комбинация, называется единицей поиска. Это может быть предложение, абзац или весь документ. В разных поисковых системах могут использоваться различные единицы поиска. После того, как пользователь сделал запрос, поисковая система обрабатывает синтаксис запроса и сравнивает ключевые слова со словами в индексе. После этого составляется список сайтов, отвечающих запросу, они ранжируются по релевантности, и формируется результат поиска, который и выдается пользователю. Существует огромное количество поисковых систем. Наиболее популярная на Западе поисковая система — Google (www.google.com). Всемирно популярный каталог Yahoo! в качестве поисковой системы использует именно Google. В Рунете самыми популярными поисковыми системами являются Яндекс (www.yandex.ru) и Рамблер (www. rambler, ru). Метапоисковые системы. Так как Интернет развивается стремительными темпами, то рост количества документов происходит быстрее, чем поисковые системы успевают их проиндексировать. Отсюда следует, что даже если в Сети и есть то, что вы ищете, вовсе не обязательно, что об этом знает та поисковая машина, к которой вы обратились. Велика вероятность, что нужный документ проиндексирован другой поисковой системой. Поэтому существуют службы, позволяющие транслировать запрос сразу в несколько поисковых систем, — это метапоисковые системы. Однако пользоваться ими во всех случаях не следует. Если документов по теме много, то метапоиск, возможно, даже вреден, поскольку смешивает разные логики ранжирования. Но если документов по теме мало, то метапоиск может быть полезен именно потому, что объединяет большое число поисковых систем. Очень удобной в этом отношении является отечественная программа ДИСКо Искатель (www.disco.ru). Онлайновые энциклопедии и справочники. Очень часто нужно найти не документ, содержащий то или иное ключевое слово, а именно — толкование искомого слова. Одной из крупнейших онлайновых энциклопедий является ресурс Яндекс.Энциклопедии (http:// 394
encycl.yandex.ru/). Этот проект содержит 219 968 статей из 14 энциклопедий, в том числе из БСЭ и Энциклопедии Брокгауза и Ефрона. К крупным относится и Энциклопедия Кирилла и Мефодия, которую можно найти по адресу www.km.ru. Особенно актуальным является поиск толкований терминов по информационным технологиям, которые развиваются так быстро, что уследить за появлением новых терминов очень сложно. Единственный ресурс на русском языке, который можно назвать компьютерным энциклопедическим словарем, — это проект Компьютерная энциклопедия Кирилла и Мефодия (http://www.megakm.ru/pc/), предусматривающая поиск не только до термину, но и по тематической структуре. Объем словаря терминов — 700 статей. Объем англоязычного словаря FOLDOC (Free On-line Dictionary Of Computing; http:// wombat.doc.ic.ac.uk/) — более 13 тыс. терминов. 7.9.8. Практические рекомендации 1. Используйте различные инструменты для поиска информации разного профиля. Поиск в каталоге дает представление о структуре вопроса, поисковая система позволяет найти конкретный документ. 2. Избегайте общих слов, осуществляя поиск в поисковой машине. Чем уникальнее ключевое слово, по которому осуществляется поиск, тем скорее вы его найдете. Логика здесь очевидна, однако факты позволяют лучше понять ситуацию: 400 наиболее часто употребляемых слов русского языка со всеми словоформами (около 2 тысяч) составляют одну треть всех слов в среднестатистическом тексте, а частотный список на 8 тыс. слов покрывает уже 80 % всех словоупотреблений в текстах. 3. Ищите больше чем по одному слову. Сократить объем ссылок можно, определив несколько ключевых слов. Используйте синонимы. 4. Не пишите прописными буквами. Избегайте написания ключевого слова с прописной буквы. В ряде поисковых систем заглавные буквы позволяют искать имена собственные, например фирма Intel. 395
5. Используйте функцию Найти похожие документы. Если один из найденных документов ближе к искомой теме, чем остальные, нажмите на ссылку Найти похожие документы. 6. Пользуйтесь языком запросов. С помощью языка запросов можно сделать запрос более точным. 7. Пользуйтесь расширенным запросом. Во многих поисковых системах есть форма расширенного запроса, в которой можно использовать основные механизмы сужения поиска. 8. Пользуйтесь метапоисковыми системами, если по теме мало документов.
8. Основы u методы зашиты информации 8.1. Общие понятия информационной безопасности Персональные компьютеры, системы управления и сети на их основе быстро входят во все области человеческой деятельности. Среди них можно выделить такие сферы применения, как военная, коммерческая, банковская, посредническая, научные исследования по высоким технологиям и др. Очевидно, широко используя компьютеры и сети для обработки и передачи информации, эти отрасли должны быть надежно защищены от возможности доступа к ней посторонних лиц, ее утраты или искажения. Согласно статистическим данным, более 80 % компаний несут финансовые убытки из-за нарушения целостности и конфиденциальности используемых данных. Кроме информации, составляющей государственную или коммерческую тайну, существует информация, представляющая собой интеллектуальную собственность. К ней можно отнести результаты научных исследований, программы, обеспечивающие функционирование компьютера, игровые программы, оригинальные аудио- и видеоклипы, которые находятся под защитой законов, принятых в большинстве стран мирового сообщества. Стоимость такой информации в мире составляет несколько триллионов долларов в год. Ее несанкционированное копирование снижает доходы компаний и авторов, занятых ее разработкой. Усложнение методов и средств организации машинной обработки, повсеместное использование глобальной сети Интернет приводит к тому, что информация становится все более уязвимой. Этому способствуют такие факторы, как постоянно возрастающие объемы обрабатываемых данных, накопление и хранение данных в ограниченных местах, постоянное расширение круга пользователей, имеющих доступ к ресурсам, программам и данным, недостаточный уровень защиты аппаратных и программных средств компьютеров и коммуникационных систем и т.п. 397
Учитывая эти факты, защита информации в процессе ее сбора, хранения, обработки и передачи приобретает исключительно важное значение. 8.1.1. Основные понятия информационной безопасности Введем ряд определений, используемых при описании средств и методов защиты информации в системах автоматизированной обработки, построенных на основе средств вычислительной техники. Компьютерная система (КС) — организационно-техническая система, представляющую совокупность следующих взаимосвязанных компонентов: технические средства обработки и передачи данных; методы и алгоритмы обработки в виде соответствующего программного обеспечения; данные — информация на различных носителях и находящаяся в процессе обработки; конечные пользователи — персонал и пользователи, использующие КС с целью удовлетворения информационных потребностей; объект доступа, или объект, — любой элемент КС, доступ к которому может быть произвольно ограничен (файлы, устройства, каналы); субъект доступа, или субъект, — любая сущность, способная инициировать выполнение операций над объектом (пользователи, процессы). Информационная безопасность — состояние КС, при котором она способна противостоять дестабилизирующему воздействию внешних и внутренних информационных угроз и при этом не создавать таких угроз для элементов самой КС и внешней среды. Конфиденциальность информации — свойство информации быть доступной только ограниченному кругу конечных пользователей и иных субъектов доступа, прошедших соответствующую проверку и допущенных к ее использованию. Целостность информации — свойство сохранять свою структуру и содержание в процессе хранения, использования и передачи. Достоверность информации — свойство, выражаемое в строгой 398
принадлежности информации субъекту, который является ее источником. Доступ к информации — возможность субъекта осуществлять определенные действия с информацией. Санкционированный доступ к информации — доступ с выполнением правил разграничения доступа к информации. Несанкционированный доступ (НСД) — доступ с нарушением правил разграничения доступа субъекта к информации, с использованием штатных средств (программного или аппаратного обеспечения), предоставляемых КС. Правила разграничения доступа — регламентация прав доступа субъекта к определенному компоненту системы. Идентификация — получение от субъекта доступа к сведениям (имя, учетный номер и т.д.), позволяющим выделить его из множества субъектов. Аутентификация — получение от субъекта сведений (пароль, биометрические параметры и т.д.), подтверждающих, что идентифицируемый субъект является тем, за кого себя выдает. Угроза информационной безопасности КС — возможность воздействия на информацию, обрабатываемую КС, с целью ее искажения, уничтожения, копирования или блокирования, а также возможность воздействия на компоненты КС, приводящие к сбою их функционирования. Уязвимость КС — любая характеристика, которая может привести к реализации угрозы. Атака КС — действия злоумышленника, предпринимаемые с целью обнаружения уязвимости КС и получения несанкционированного доступа к информации. Безопасная, или защищенная, КС — КС, снабженная средствами защиты для противодействия угрозам безопасности. Комплекс средств защиты — совокупность аппаратных и программных средств, обеспечивающих информационную безопасность. Политика безопасности — совокупность норм и правил, регламентирующих работу средств защиты от заданного множества угроз. Дискреционная модель разграничения доступа — способ разграничения доступа субъектов к объектам, при котором права доступа задаются некоторым перечнем прав доступа субъекта к объекту. При реализации представляет собой матрицу, строками которой являют - 399
ся субъекты, а столбцами — объекты; элементы матрицы характеризуют набор прав доступа. Полномочная (мандатная) модель разграничения доступа — способ разграничения доступа субъектов к объектам, при котором каждому объекту ставится в соответствие уровень секретности, а каждому субъекту уровень доверия к нему. Субъект может получить доступ к объекту, если его уровень доверия не меньше уровня секретности объекта. 8.1.2. Анализ угроз информационной безопасности Для успешного противодействия угрозам и атакам КС, а также выбора способов и средств защиты, политики безопасности и анализа рисков от возможного НСД необходимо классифицировать существующие угрозы информационной безопасности. Каждый признак классификации должен отражать одно из обобщенных требований к системе защиты, а сами угрозы позволяют детализировать эти требования. Современные КС и сети являются сложными системами, подверженными, кроме того, влиянию чрезвычайно большого числа факторов и поэтому формализовать задачу описания полного множества угроз не представляется возможным. Как следствие, для защищенной КС определяется не полный перечень угроз, а перечень классов угроз, которым должен противодействовать комплекс средств защиты. Классификация угроз может быть проведена по ряду базовых признаков: 1. По природе возникновения: объективные природные явления, не зависящие от человека; субъективные действия, вызванные деятельностью человека. 2. По степени преднамеренности: ошибки конечного пользователя или персонала; преднамеренного действия, для получения НСД к информации. 3. По степени зависимости от активности КС: проявляющиеся независимо от активности КС (вскрытие шифров, хищение носителей информации); проявляющиеся в процессе обработки данных (внедрение вирусов, сбор «мусора» в памяти, сохранение и анализ работы клавиатуры и устройств отображения). 400
4. По степени воздействия на КС: пассивные угрозы (сбор данных путем выведывания или подсматривания за работой пользователей); активные угрозы (внедрение программных или аппаратных закладок и вирусов для модификации информации или дезорганизации работы КС). 5. По способу доступа к ресурсам КС: получение паролей и прав доступа, используя халатность владельцев и персонала, несанкционированное использование терминалов пользователей, физического сетевого адреса, аппаратного блока кодирования и др.; обход средств защиты, путем загрузки посторонней операционной защиты со сменного носителя; использование недокументированных возможностей операционной системы. 6. По текущему месту расположения информации в КС: внешние запоминающие устройства; оперативная память; сети связи; монитор или иное отображающее устройство (возможность скрытой съемки работы принтеров, графопостроителей, световых панелей и т.д.). Необходимо отметить, что абсолютно надежных систем защиты не существует. Кроме того, любая система защиты увеличивает время доступа к информации, поэтому построение защищенных КС не ставит целью надежно защититься от всех классов угроз. Уровень системы защиты — это компромисс между понесенными убытками от потери конфиденциальности информации, с одной стороны, и убытками от усложнения, удорожания КС и увеличения времени доступа к ресурсам от введения систем защиты, с другой стороны. 8.1.3. Юридические основы информационной безопасности Широкое распространение КС и сетей, внедрение их в государственных учреждениях и важность задачи сохранения конфиденциальности государственной и частной информации заставили многие страны принять соответствующие законы, регламентирующие защиту КС и сетей. Наиболее общим законом Российской Федерации является Конституция. Главы 23, 29, 41 и 42 в той или иной мере затрагивают вопросы информационной безопасности. Статья 23 Конституции, 401
например, гарантирует право на личную и семейную тайну, на тайну переписки, телефонных разговоров, почтовых, телеграфных и иных сообщений; статья 29 — право свободно искать, получать, передавать, производить и распространять информацию любым законным способом. Главы 41 и 42 гарантируют право на знание фактов и обстоятельств, создающих угрозу жизни и здоровью людей, право на знание достоверной информации о состоянии окружающей среды. Действующий Уголовный кодекс Российской Федерации предусматривает наказания за преступления, связанные с нарушением конфиденциальности информации. Глава 28 «Преступления в сфере компьютерной информации» содержит статьи 272—274, посвященные преступлениям, связанным, соответственно, с неправомерным доступом к компьютерной информации, созданием, использованием и распространением вредоносных программ, нарушением правил эксплуатации ЭВМ, систем и сетей на их основе. Интересы государства в плане обеспечения конфиденциальности информации наиболее полно представлены в Законе «О государственной тайне». В нем гостайна определена как защищаемые государством сведения в области военной, внешнеполитической, экономической, разведывательной, контрразведывательной и оперативно-розыскной деятельности, распространение которых может нанести ущерб безопасности Российской Федерации. Здесь же дается описание средств защиты информации, к которым, согласно данному Закону, относятся технические, криптографические, программные и другие средства, предназначенные для защиты сведений, составляющих государственную тайну. Наряду с общими законами, во многих странах приняты законы о защите информации в компьютерных системах и сетях. Описание основных положений этих законов, принятых в США и РФ, приведены ниже. 8.1.4. Критерии защищенности средств компьютерных систем Министерством обороны США в 1983 г. были разработаны определения требований к аппаратному, программному и специальному программному обеспечению под названием «Критерии оценки 402
безопасности компьютерных систем», получившие неофициальное, но прочно утвердившееся название «Оранжевая книга». В «Оранжевой книге» предложены три категории требований безопасности: политика безопасности, аудит (мониторинг производимых действий), корректность, в рамках которых сформулированы шесть базовых критериев безопасности. Критерий 1. Политика безопасности. КС должна поддерживать точно определенную политику безопасности. Возможность доступа субъектов к объектам должна определяться на основании их идентификации и набора правил управления доступом. Там, где это возможно, должно использоваться мандатное управление доступом, позволяющее эффективно разграничивать доступ к информации разной степени конфиденциальности. Критерий 2. Метки. Каждый объект доступа в КС должен иметь метку безопасности, используемую в качестве исходной информации для исполнения процедур контроля доступа. Критерий 3. Идентификация и аутентификация. Все субъекты должны иметь уникальные идентификаторы. Доступ субъекта к ресурсам КС должен осуществляться на основании результатов идентификации и подтверждения подлинности их идентификаторов (аутентификация). Идентификаторы и аутентификационные данные должны быть защищены от НСД, модификации и уничтожения. Критерий 4. Регистрация и учет. Для определения степени ответственности пользователей за действия в системе, все происходящие в ней события, имеющие значение для поддержания конфиденциальности и целостности информации, должны отслеживаться и регистрироваться в защищенном объекте (файле-журнале). Система регистрации должна осуществлять анализ общего потока событий и выделять из него только те события, которые оказывают влияние на безопасность КС. Доступ к объекту аудита для просмотра должен быть разрешен только специальной группе пользователей — аудиторов. Запись должна быть разрешна только субъекту, олицетворяющему систему. Критерий 5. Контроль корректности функционирования средств защиты. Все средства защиты, обеспечивающие политику безопасности, должны находиться под контролем средств, проверяющих корректность их функционирования и быть независимыми от них. Критерий 6. Непрерывность защиты. Все средства защиты дол- 403
жны быть защищены от несанкционированного воздействия или отключения. Защита должна быть постоянной и непрерывной в любом режиме функционирования системы, защиты и КС. Это требование должно распространяться на весь жизненный цикл КС. Гостехкомиссией при Президенте Российской Федерации были приняты руководящие документы, посвященные вопросам защиты информации в автоматизированных системах. Основой этих документов является концепция защиты средств вычислительной техники и автоматизированных систем от несанкционированного доступа к информации и основные принципы защиты КС. Для определения принципов защиты информации вводится понятие несанкционированного доступа к информации. Это понятие является чрезвычайно важным, так как определяет, от чего сертифицированные по руководящим документам средства вычислительной техники и КС должны защищать информацию. В соответствии с принятой в руководящих документах классификацией, основными способами НСД являются: непосредственное обращение к объектам доступа (получение процессом, управляемым пользователем доступа к файлу); создание программных и технических средств, выполняющих обращение к объектам доступа в обход средств защиты; модификация средств защиты, позволяющая осуществить НСД (программные и аппаратные закладки); внедрение в технические средства аппаратных или программных механизмов, нарушающих структуру и функции КС и позволяющие осуществить НСД (загрузка нестандартной операционной системы без функций защиты). Руководящие материалы представляют семь критериев защиты КС: 1. Защита КС основывается на положениях существующих законов, стандартов и нормативно-методических документов по защите информации. 2. Защита средств вычислительной техники обеспечивается комплексом программно-технических средств. 3. Защита КС обеспечивается комплексом программно-технических средств и поддерживающих их организационных мер. 4. Защита КС должна обеспечиваться на всех технологических этапах обработки информации и во всех режимах функционирова- 404
ния, в том числе при проведении ремонтных и регламентных работ. 5. Программно-технические средства не должны существенно ухудшать основные функциональные характеристики КС (надежность, производительность, возможность изменения конфигурации). 6. Оценка эффективности средств защиты, учитывающей всю совокупность технических характеристик, включая технические решения и практическую реализацию средств защиты. 7. Защита КС должна предусматривать контроль эффективности средств защиты от НСД, который может быть периодическим или включаться по мере необходимости пользователем или контролирующими органами. 8.1.5. Политика безопасности в компьютерных системох Защищенная КС обязательно должна иметь средства разграничения доступа пользователей к ресурсам КС, проверки подлинности пользователя и противодействия выводу КС из строя. Интегральной характеристикой защищенности КС является политика безопасности — качественное выражение свойств защищенности в терминах, представляющих систему. Политика безопасности для конкретной КС не должна быть чрезмерной — ужесточение защиты приводит к усложнению доступа пользователей к КС и увеличению времени доступа. Политика безопасности должна быть адекватна предполагаемым угрозам, и обеспечивать заданный уровень защиты. Политика безопасности включает: • множество субъектов; • множество объектов; • множество возможных операций над объектами; • множество разрешенных операций для каждой пары субъект- объект, являющееся подмножеством множества возможных состояний. Элементы множества операций над объектами выбираются в за- 405
висимости от назначения КС, решаемых задач и конфиденциальности информации. Например, операции «создание объекта», «удаление объекта», «чтение данных», «запись данных» и т.д. В защищенной КС всегда присутствует субъект, выполняющий контроль операций субъектов над объектами, например, в операционной системе Windows таким субъектом является псевдопользователь SYSTEM. Этот компонент фактически отвечает за реализацию политики безопасности, которая реализуется путем описания доступа субъектов к объектам. Существуют два типа политики безопасности: дискретная (дискреционная) и мандатная (полномочная). Основой дискретной политики безопасности является дискреционное управление доступом, которое определяется двумя свойствами: • все субъекты и объекты должны быть идентифицированы; • права доступа субъекта к объекту определяются на основе некоторого задаваемого набора правил. К достоинствам дискретной политики безопасности можно отнести относительно простую реализацию соответствующих механизмов защиты. Этим обусловлен тот факт, что большинство используемых в настоящее время КС обеспечивают именно дискретную политику безопасности. В качестве примера реализации дискретной политики безопасности можно привести матрицу доступов, строки которой соответствуют субъектам системы, а столбцы — объектам; элементы матрицы представляют фиксированный набор или список прав доступа. К ее недостаткам относится статичность модели, не учитывающая динамику изменений состояния КС. Например, при подозрении на НСД к информации, необходимо оперативно изменить права доступа к ней, но сделать это с помощью матрицы доступа, которая формируется вручную, не просто. Мандатная модель политики безопасности основывается на том, что: • все субъекты и объекты должны быть идентифицированы; • задан линейно упорядоченный набор меток секретности; • каждому объекту присвоена метка секретности, определяющая ценность содержащейся в ней информации — его уровень секретности; • каждому субъекту системы присвоена метка секретности, определяющая уровень доверия к нему — его уровень доступа. 406
В отличие от дискретной политики, которая требует определения прав доступа для каждой пары субъект—объект, мандатная политика, назначением метки секретности объекту, однозначно определяет круг субъектов, имеющих права доступа к нему. И, наоборот, назначением метки секретности субъекту, однозначно определяется круг объектов, к которым он имеет права доступа. 8.1.6. Меры по поддержанию работоспособности компьютерных систем Наряду с мерами поддержания политики безопасности информации, предоставляемыми стандартным аппаратным и программным обеспечением, любой пользователь, особенно начинающий, должен соблюдать ряд простых правил, которые избавят его от потери важной для него информации при случайных сбоях или авариях аппаратуры, разрушения программ и данных из-за ошибок в работе самого пользователя или администратора. Недооценка фактора безопасности в повседневной работе приводит к тяжелым последствиям, связанным с потерей или нарушением конфиденциальности информации. Правила проведения повседневных мероприятий администратором системы и пользователем для предотвращения случайных сбоев или утраты информации можно сформулировать так: • администратор должен организовать поддержку пользователей при решении возникающих у них проблем, выявляя при этом общие вопросы, связанные с безопасностью и указывая пользователям способы их решения; • администратор должен следить за целостностью программного обеспечения, установленного на компьютерной системе, и ограничивать возможности самостоятельной установки пользователями дополнительных программ, которые могут содержать вредоносные коды, следить за изменением файлов программ, для чего периодически запускать утилиты, проверяющие целостность файлов программных кодов; • пользователь должен иметь возможность проводить резервное копирование своих данных, которые могут понадобиться для восстановления данных после аварии; резервные копии необходимо сохранять на съемных носителях или других внешних носителях с ограниченным правом доступа; 407
• каждая компьютерная система должна быть в обязательном порядке снабжена источником бесперебойного питания, предотвращающего потерю информации при кратковременных перебоях с энергоснабжением. 8.2. Способы и средства нарушений конфиденциальности информации 8.2.1. Основные методы реализации угроз информационной безопасности К основным направлениям реализации злоумышленником информационных угроз на локальной, изолированной или включенной в сеть КС можно отнести следующие: 1. Непосредственное обращение к объектам доступа. Злоумышленник пытается войти в систему, используя подсмотренный полностью или частично пароль легального пользователя; пытается получить доступ к объектам (файлам, сетевым портам и др.), надеясь на ошибки в политике безопасности. 2. Создание программных и технических средств, выполняющих обращение к объектам доступа. Злоумышленник, получив в свое распоряжение файл паролей с помощью программ, осуществляющих перебор паролей, пытается его расшифровать; использует программы, просматривающие содержимое жестких дисков, с целью получения информации о незащищенных каталогах и файлах, имена таких файлов программа фиксирует; использует в сети со связью по модему программы, выполняющие автодозвон и фиксирующие номера ответивших узлов, а затем программы, прослушивающие сетевые порты для определения открытого порта; в локальной сети применяет программы перехвата и сохранения всего трафика сети. 3. Модификация средств защиты, позволяющая реализовать угрозы информационной безопасности. Злоумышленник, получив права доступа к подсистеме защиты, подменяет некоторые ее файлы с целью изменения реакции подсистемы на права доступа к объектам, 408
расширяя права легальных пользователей или предоставляя права нелегальным пользователям. 4. Внедрение в технические средства программных или технических механизмов, нарушающих структуру и функции КС. Злоумышленник, на этапе разработки или модернизации технических средств КС, внедряет аппаратуру или изменяет программы, содержащиеся в постоянном запоминающем устройстве КС, которые, наряду с полезными функциями, выполняют некоторые функции НСД к информации, например, сбор сведений о паролях или считывание, сохранение и передача данных, оставшихся в оперативной памяти после завершения работы приложения; использует недостатки охраны КС и подключает дополнительные устройства, например, клавиатурные шпионы, которые позволяют перехватывать пароли и конфиденциальную информацию и, в зависимости от сложности устройства, позволяет их сохранять в собственной памяти или передавать по радиоканалу. Получение доступа к информации обычно осуществляется злоумышленником в несколько этапов. На первом этапе решаются задачи получения тем или иным способом доступа к аппаратным и программным средствам КС. На втором этапе решаются задачи внедрения аппаратных или программных средств с целью хищения программ и данных. Основные методы, применяемые злоумышленником для получения НСД к информации, состоят в определении: • типов и параметров носителей информации; • архитектуры, типов и параметров технических средств КС, версии операционной системы, состава прикладного программного обеспечения; • основных функций, выполняемых КС; • средств и способов защиты; • способов представления и кодирования информации. После решения задач определения параметров системы злоумышленник переходит к этапу получения сведений о режимах доступа, паролях и сведений о пользователях системы. Для этого он пытается получить доступ к использованным расходным материалам и сменным носителям: • съемные носители информации, содержащие секретную информацию; 409
• визуальное наблюдение или съемка экранов терминалов, анализ распечаток и отходов работы графопостроителей и т.д.; • перехват побочных электромагнитных и звуковых излучений и наводок по цепям питания. Получив доступ к КС или возможность входа в систему, злоумышленник, в зависимости от преследуемых целей, среди которых можно выделить получение секретной информации, искажение секретных данных, нарушение работы системы, предпринимает следующие действия: • несанкционированный доступ к информации; • перехват данных по каналам связи; • изменение архитектуры КС, путем установки дополнительных перехватывающих устройств или замены отдельных узлов на специальные, содержащие возможность проводить несанкционированные действия в КС, например, установка клавиатурных шпионов, перепрограммирование ПЗУ, установка сетевых карт, способных фиксировать и сохранять или искажать проходящие через них пакеты; • уничтожение машинных носителей информации; • внесение искажений в программные компоненты КС; • внедрение дезинформации; • раскрытие способов представления информации и ключей шифрования; • изменение доступа к информации. 8.2.2. Типичные приемы атак на локальные и удаленные компьютерные системы 1. Сканирование файловой системы. Злоумышленник пытается просматривать файловую систему и прочесть, скопировать или удалить файлы. Если доступ к файлу закрыт, сканирование продолжается. Если объем файловой системы велик, то рано или поздно обнаружится хотя бы одна ошибка администратора. Такая атака проводится с помощью специальной программы, которая выполняет эти действия в автоматическом режиме. 2. Кража ключевой информации. Пароль может быть подсмотрен по движению рук на клавиатуре или снят видеокамерой. Некоторые 410
программы входа в КС удаленного сервера допускают набор пароля в командной строке, где пароль отображается на экране, а иногда для ввода используются пакетные файлы для упрощения входа в ОС. Кража такого файла компрометирует пароль. Известны случаи, когда для кражи пароля использовался съем отпечатков пальцев пользователя с клавиатуры. Кража внешнего носителя с ключевой информацией: диски или Touch Memory. 3. Сборка мусора. Информация, удаляемая пользователем, не удаляется физически, а только помечается к удалению и помещается в сборщик мусора. Если получить доступ к этой программе, можно получить и доступ к удаляемым файлам. Сборка мусора может осуществляться и из памяти. В этом случае программа, запускаемая злоумышленником, выделяет себе всю допустимо возможную память и читает из нее информацию, выделяя заранее определенные ключевые слова. 4. Превышение полномочий. Используя ошибки в системном программном обеспечении и/или политики безопасности, пользователь пытается получить полномочия, превышающие те, которые были ему выделены. Это воздействие может быть также результатом входа в систему под именем другого пользователя или заменой динамической библиотекой, которая отвечает за выполнение функций идентификации пользователя. 5. Программные закладки. Программы, выполняющие хотя бы одно из следующих действий: — внесение произвольных искажений в коды программ, находящихся в оперативной памяти (программная закладка первого типа); — перенос фрагментов информации из одних областей оперативной или внешней памяти в другие (программная закладка второго типа); — искажение информации, выводимой другими программами на внешние устройства или каналы связи (программная закладка третьего типа). 6. Жадные программы. Программы, преднамеренно захватывающие значительную часть ресурсов КС, в результате чего другие программы работают значительно медленнее или не работают вовсе. Часто запуск такой программы приводит к краху ОС. 7. Атаки на отказ в обслуживании (deny-of-service — DoS). Атаки DoS являются наиболее распространенными в компьютерных сетях 411
и сводятся к выведению из строя объекта, а не к получению несанкционированного доступа. Они классифицируются по объекту воздействия: • перегрузка пропускной способности сети — автоматическая генерация, возможно, из нескольких узлов, большого сетевого трафика, которое полностью занимает возможности данного узла; • перегрузка процессора — посылка вычислительных заданий или запросов, обработка которых превосходит вычислительные возможности процессора узла; • занятие возможных портов — соединяясь с портами сервисов узла, занимает все допустимое число соединений на данный порт. Такие атаки могут быть обнаружены и устранены администратором путем выдачи запрета на прием пакетов от данного источника. Чтобы лишить администратора узла этой возможности, атака идет с множества узлов, на которые предварительно внедряется вирус. Вирус активизируется в определенное время, производя DoS-атаку. Этот тип атаки получил название DDoS (Distributed DoS). 8. Атаки маскировкой. Маскировка — общее название большого класса сетевых атак, в которых атакующий выдает себя за другого пользователя. Если существенные права получают процессы, инициируемые доверенными хостами (т.е. пакеты с адресом доверенного источника пропускаются без применения к ним ограничивающих правил), то достаточно указать доверенный адрес отправителя, и он будет пропущен. 9. Атаки на маршрутизацию. Для достижения узла — жертвы в таких атаках применяется изменение маршрута доставки пакета. Каждый путь может иметь свои права доступа, узел может по-разному реагировать на пакеты, поступившие различными путями. Поэтому интерес злоумышленника распространяется не только на сам атакуемый узел, но и на промежуточные пункты — маршрутизаторы. 10. Прослушивание сети (sniffing). Различают межсегментный и внутрисегментный сниффинг. В первом случае устройство подслушивания должно быть размещено у входа или выхода взаимодействующих узлов или у одного из транзитных узлов. Для защиты от прослушивания, в основном, используются средства шифрования. При внутрисегментном прослушивании в равноранговой сети с общей шиной (Ethernet), в качестве прослушивающего устройства может использоваться одна из КС сети. Для организации прослушивания 412
необходимо, с помощью программы-сниффера, перевести режим Ethernet-карты в «неразборчивый режим», когда карта принимает не только пакеты со своим сетевым адресом, но и все, проходящие по сети пакеты. Для борьбы со снифферами используются сниффер-де- тектор. Принцип его работы заключается в формировании пакета с некорректным сетевым адресом, который должен быть проигнорирован всеми узлами сети. Та КС, которая примет такой пакет, должна быть проверена на наличие сниффера. 8.3. Основы противодействия нарушению конфиденциальности информации Требования безопасности определяют набор средств защиты КС на всех этапах ее существования: от разработки спецификации на проектирование аппаратных и программных средств до их списания. Рассмотрим комплекс средств защиты КС на этапе ее эксплуатации. На этапе эксплуатации основной задачей защиты информации в КС является предотвращение НСД к аппаратным и программным средствам, а также контроль целостности этих средств. НСД может быть предотвращен или существенно затруднен при организации следующего комплекса мероприятий: • идентификация и аутентификация пользователей; • мониторинг несанкционированных действий — аудит; • разграничение доступа к КС; • криптографические методы сокрытия информации; • защита КС при работе в сети. При создании защищенных КС используют фрагментарный и комплексный подход. Фрагментарный подход предполагает последовательное включение в состав КС пакетов защиты от отдельных классов угроз. Например, незащищенная КС снабжается антивирусным пакетом, затем системой шифрования файлов, системой регистрации действий пользователей и т.д. Недостаток этого подхода в том, что внедряемые пакеты, произведенные, как правило, различными пользователями, плохо взаимодействуют между собой и могут вступать в конфликты друг с другом. При отключении злоумышленником отдельных компонентов защиты остальные продолжают работать, что значительно снижает ее надежность. 413
Комплексный подход предполагает введение функций защиты в КС на этапе проектирования архитектуры аппаратного и системного программного обеспечения и является их неотъемлемой частью. Однако, учитывая вероятность появления новых классов угроз, модули КС, отвечающие за безопасность, должны иметь возможность заменены их другими, поддерживающими общую концепцию защиты. Организация надежной защиты КС невозможна с помощью только программно-аппаратных средств. Очень важным является административный контроль работы КС. Основные задачи администратора по поддержанию средств защиты заключаются в следующем: • постоянный контроль корректности функционирования КС и ее защиты; • регулярный просмотр журналов регистрации событий; • организация и поддержание адекватной политики безопасности; • инструктирование пользователей ОС об изменениях в системе защиты, правильного выбора паролей и т.д.; • регулярное создание и обновление резервных копий программ и данных; • постоянный контроль изменений конфигурационных данных и политики безопасности отдельных пользователей, чтобы вовремя выявить взлом защиты КС. Рассмотрим подробнее наиболее часто используемые методы защиты и принципы их действия. 8.3.1. Методы разграничения доступа При организации доступа субъектов к объектам выполняются следующие действия: • идентификация и аутентификация субъекта доступа; • проверка прав доступа субъекта к объекту; • ведение журнала учета действий субъекта. Идентификация и аутентификация пользователей При входе в КС, при получении доступа к программам и конфиденциальным данным субъект должен быть идентифицирован и 414
аутентифицирован. Эти две операции обычно выполняются вместе, т.е., пользователь сначала сообщает сведения, позволяющие выделить его из множества субъектов (идентификация), а затем сообщает секретные сведения, подтверждающие, что он тот, за кого себя выдает. Иногда проводится дополнительно авторизация субъекта, под которой понимается создание программной среды для его работы. Но основными средствами обеспечения безопасности являются идентификация и аутентификация. Обычно данные, идентифицирующие пользователя, не засекречены, но для усложнения проведения атак по НСД желательно хранить эти данные в файле, доступ к которому возможен только администратору системы. Для аутентификации субъекта чаще всего используются атрибутивные идентификаторы, которые делятся на следующие категории: • пароли; • съемные носители информации; • электронные жетоны; • пластиковые карты; • механические ключи. Паролем называют комбинацию символов, которая известна только владельцу пароля или, возможно, администратору системы безопасности. Обычно пароль вводится со штатной клавиатуры после включения питания. Возможен ввод пароля с пульта управления или специального наборного устройства. При организации парольной защиты необходимо выполнять следующие рекомендации: 1. Пароль необходимо запоминать, а не записывать. 2. Длина пароля должна быть не менее девяти символов. 3. Пароли должны периодически меняться. 4. В КС должны фиксироваться моменты времени успешного получения доступа и неудачного ввода пароля. Информация о попытках неверного ввода пароля должны подвергаться статистической обработке и сообщаться администратору. 5. Пароли должны храниться в КС так, чтобы доступ к ним был затруднен. Это достигается двумя способами: • пароли хранятся в специальном ЗУ, запись в которое осуществляется в специальном режиме; • пароли подвергаются криптографическому преобразованию (шифрованию). 415
6. При вводе пароля не выдавать никаких сведений на экран, чтобы затруднить подсчет введенных символов. 7. Не использовать в качестве паролей имена и фамилии, дни рождения и географические или иные названия. Желательно менять при вводе пароля регистры, использовать специальные символы, набирать русский текст на латинском регистре, использовать парадоксальные сочетания слов. В настоящее время аппаратура КС поддерживает ввод пароля до начала загрузки операционной системы. Такой пароль хранится в энергонезависимой памяти и обеспечивает предотвращение НСД до загрузки любых программных средств. Этот пароль считается эффективным средством, если злоумышленник не имеет доступа к аппаратуре КС, так как отключение внутреннего питания сбрасывает этот пароль. Другие способы идентификации (съемные носители, карты и др.) предполагают наличие технических средств, хранящих идентификационную информацию. Съемный носитель, содержащий идентификационную информацию — имя пользователя и его пароль, находится у пользователя КС, которая снабжена устройством для считывания информации с носителя. Для идентификации и аутентификации часто используется стандартный гибкий диск или флэш-память. Достоинства такого идентификатора заключаются в том, что не требуется использования дополнительных аппаратных средств и кроме идентификационного кода на носителе может храниться и другая информация, например, контроля целостности информации, атрибуты шифрования и др. Иногда, для повышения уровня защищенности, используются специальные переносные электронные устройства, подключаемые, например, к стандартным входам КС. К ним относится электронный жетон-генератор — прибор, вырабатывающий псевдослучайную символьную последовательность, которая меняется примерно раз в минуту синхронно со сменой такого же слова в КС. Жетон используется для однократного входа в систему. Существует другой тип жетона, имеющего клавиатуру и монитор. В процессе идентификации КС выдает случайную символьную последовательность, которая набирается на клавиатуре жетона, по ней на мониторе жетона формируется новая последовательность, которая вводится в КС как пароль. К недостатку способа идентификации и аутентификации с по- 416
мощью дополнительного съемного устройства можно отнести возможность его потери или хищения. Одним из надежных способов аутентификации является биометрический принцип, использующий некоторые стабильные биометрические показатели пользователя, например, отпечатки пальцев, рисунок хрусталика глаза, ритм работы на клавиатуре и др. Для снятия отпечатков пальцев и рисунка хрусталика требуются специальные устройства, которые устанавливаются на КС высших уровней защиты. Ритм работы при вводе информации проверяется на штатной клавиатуре КС и, как показывают эксперименты, является вполне стабильным и надежным. Даже подглядывание за работой пользователя при наборе ключевой фразы не дает гарантии идентификации злоумышленника при его попытке повторить все действия при наборе фразы. Методы ограничения доступа к информации В модель информационной безопасности введены определения объекта и субъекта доступа. Каждый объект имеет некоторые операции, которые над ним может производить субъект доступа, и которые могут быть разрешены или запрещены данному субъекту или множеству субъектов. Возможность доступа обычно выясняется на уровне операционной системы КС и определяется архитектурой операционной системы и текущей политикой безопасности. Для удобства описания методов и средств разграничения доступа субъектов к объектам введем некоторые понятия. Метод доступа к объекту — операция, определенная для данного объекта. Ограничение доступа к объекту связано именно с ограничением возможных методов доступа. Владелец объекта — субъект, которому принадлежит (создан им) объект и который несет ответственность за конфиденциальность содержащейся в объекте информации, а также за доступ к объекту. Право доступа к объекту — право на доступ к объекту по одному или группе методов доступа. Разграничение доступа — совокупность правил, определяющая для каждой тройки субъект—объект—метод наличие или отсутствие права доступа по указанному методу. Существует несколько моделей разграничения доступа. Наиболее распространенными являются: 14. Информатика 417
• дискреционная модель разграничения доступа; • полномочная (мандатная) модель разграничения доступа. Дискреционная модель, или избирательное разграничение доступа, характеризуется следующим набором правил: • для любого объекта существует владелец; • владелец может произвольно ограничивать доступ субъектов к данному объекту; • для каждой тройки субъект—объект—метод возможность доступа определена однозначно; • существует хотя бы один привилегированный пользователь (администратор), имеющий возможность обратиться к любому объекту по любому методу доступа. В этой модели для определения прав доступа используется матрица доступа, строки которой — субъекты, а столбцы — объекты. В каждой ячейке хранится набор прав доступа данного субъекта к данному объекту. Типичный объем матрицы доступа для современной операционной системы составляет десятки мегабайт. Полномочная (мандатная) модель характеризуется следующим набором правил: • каждый объект имеет гриф секретности. Чем выше его числовое значение, тем секретнее объект; • каждый субъект доступа имеет уровень допуска. Допуск субъекта к объекту в этой модели разрешен только в том случае, если субъект имеет значение уровня допуска не менее, чем значение грифа секретности объекта. Достоинством этой модели является отсутствие необходимости хранить большие объемы информации о разграничении доступа. Каждый субъект хранит только значение своего уровня доступа, а каждый объект — значение своего грифа секретности. Отметим, что политика безопасности такой популярной операционной системы, как Windows XP, поддерживает обе модели разграничения прав доступа. Методы мониторинга несанкционированных действий Политика безопасности предполагает контроль за работой КС и ее компонентов, который заключается в фиксировании и последующим анализе событий в специальных журналах — журналах аудита. 418
Периодически журнал просматривается администратором операционной системы или специальным пользователем — аудитором, которые анализируют сведения, накопленные в нем. Если обнаружится успешная атака, то очень важно выяснить, когда и как она была проведена, не исключено, что это можно будет сделать по журналу аудита. К подсистеме аудита предъявляются следующие требования: 1. Только сама КС может добавлять записи в журнал аудита. Это исключит возможность компрометации аудитором других пользователей. 2. Ни один субъект доступа, в том числе и сама КС, не может редактировать или удалять записи в журнале. 3. Журнал могут просматривать только аудиторы, имеющие соответствующую привилегию. 4. Только аудиторы могут очищать журнал. После очистки в него обязательно вносится запись о времени и имени пользователя, очистившего журнал. Должна поддерживаться страховая копия журнала, создаваемая перед очисткой. При переполнении журнала операционная система прекращает работу и дальнейшая работа может осуществляться до очистки журнала только аудитором. 5. Для ограничения доступа должны применяться специальные средства защиты, которые предотвращают доступ администратора и его привилегии по изменению содержимого любого файла. Желательно страховую копию журнала сохранять на WORM-CD, исключающих изменение данных. Для обеспечения надежной защиты операционной системы в журнале должны регистрироваться следующие события: • попытки входа/выхода пользователей из системы; • попытки изменения списка пользователей; • попытки изменения политики безопасности, в том числе и политики аудита. Окончательный выбор набора событий, фиксируемых в журнале, возлагается на аудитора и зависит от специфики информации, обрабатываемой системой. Слишком большой набор регистрируемых событий не повышает безопасность, а уменьшает, так как среди множества записей можно просмотреть записи, представляющие угрозы безопасности. 419
8.3.2. Криптографические методы защиты данных Основные принципы криптографии Криптографические методы являются наиболее эффективными средствами защиты информации в КС, при передаче же по протяженным линиям связи они являются единственным реальным средством предотвращения несанкционированного доступа к ней. Метод шифрования характеризуется показателями надежности и трудоемкости. Важнейшим показателем надежности криптографического закрытия информации является его стойкость — тот минимальный объем зашифрованного текста, который можно вскрыть статистическим анализом. Таким образом, стойкость шифра определяет допустимый объем информации, зашифровываемый при использовании одного ключа. Трудоемкость метода шифрования определяется числом элементарных операций, необходимых для шифрования одного символа исходного текста. Основные требования к криптографическому закрытию информации: 1. Сложность и стойкость криптографического закрытия данных должны выбираться в зависимости от объема и степени секретности данных. 2. Надежность закрытия должна быть такой, чтобы секретность не нарушалась даже в том случае, когда злоумышленнику становится известен метод шифрования. 3. Метод закрытия, набор используемых ключей и механизм их распределения не должны быть слишком сложными. 4. Выполнение процедур прямого и обратного преобразований должно быть формальным. Эти процедуры не должны зависеть от длины сообщений. 5. Ошибки, возникающие в процессе преобразования, не должны распространяться по всему тексту. 6. Вносимая процедурами защиты избыточность должна быть минимальной. На рис. 8.1 показана схема основных методов криптографичес- 420
Рис. 8.1. Классификация основных методов криптографического закрытия 421
кого закрытия информации. Некоторые из этих методов рассмотрены ниже. Шисррование заменой (подстановка) Наиболее простой метод шифрования. Символы шифруемого текста заменяются другими символами, взятыми из одного (моноалфавитная подстановка) или нескольких (полиалфавитная подстановка) алфавитов. Наиболее простой метод — прямая замена символов шифруемого сообщения другими буквами того же самого или другого алфавита. Таблица замены может иметь вид: Шифруемые символы А Б В « • • Заменяющие символы м л д • • • Однако такой шифр имеет низкую стойкость. Зашифрованный текст имеет те же самые статистические характеристики, что и исходный, поэтому, используя частотный словарь появления символов в том языке, на котором написано сообщение, и подбирая по частотам появления символы в зашифрованном сообщении, можно восстановить таблицу замены. Для этого требуется лишь достаточно длинный зашифрованный текст, для того, чтобы получить достоверные оценки частот появления символов. Поэтому простую замену используют лишь в том случае, когда шифруемое сообщение достаточно коротко. Использование полиалфавитных подстановок повышает стойкость шифра. Для замены символов используются несколько алфавитов, причем смена алфавитов проводится последовательно и циклически: первый символ заменяется соответствующим символом первого алфавита, второй — из второго алфавита и т.д., пока не будут исчерпаны все алфавиты. После этого использование алфавитов повторяется. 422
Шифрование методом перестановки Этот метод заключается в том, что символы шифруемого текста переставляются по определенным правилам внутри шифруемого блока символов. Этот алгоритм можно представить так: 1. Выбирается размер блока шифрования: т строк и п столбцов. 2. Выбирается ключ шифра — последовательность, которая формируется из натурального ряда 1, 2, ..., п случайной перестановкой. 3. Шифруемый текст записывается последовательными строками под числами ключевой последовательности, образуя блок шифрования размером пхш. 4. Зашифрованный текст выписывается колонками в последовательности возрастания номеров колонок, задаваемых номерами ключевой последовательности. 5. Заполняется новый блок и т.д. Дешифрование выполняется в следующем порядке. 1. Выделяем блок символов размером п х т. 2. Разбиваем его на п групп по т символов и записываем их в те столбцы таблицы перестановки, номера которых совпадают с номерами групп в блоке. 3. Расшифрованный текст читается по строкам таблицы перестановки. 4. Выделяем новый блок символов и т.д. Например, необходимо зашифровать текст «Абсолютно надежной защиты нет». Выберем блок размером 4 х 8 и ключ 5-8-1-3-7-4-6-2. Блок имеет вид: 5 А О О ы 8 б И 1 С н н 3 о а 3 Е 7 л д а т 4 ю ё щ 6 т ж и 2 н н т Зашифрованный текст выглядит так: «сн нннтоазеюёщ Аооытжи лдатб й». 423
Методы шифрование, использующие ключи Эти методы предполагают знание ключа при шифровании и дешифровании. При этом важной задачей является безопасная передача ключа, который при этом обычно тоже шифруется. Учитывая короткую длину фразы, содержащей ключ, стойкость шифра ключа значительно выше, чем у основного текста. Системы с открытым ключом. Наиболее перспективными системами криптографической защиты данных в настоящее время являются системы с открытым ключом. В таких системах для шифрования данных используется один ключ, а для дешифрования — другой. Первый ключ не является секретным и может быть опубликован для использования всеми пользователями системы, которые шифруют данные. Для дешифрования данных получатель использует второй ключ, который является секретным. Ключ дешифрования не может быть определен из ключа шифрования. В настоящее время наиболее развитым методом криптографической защиты информации с открытым ключом является алгоритм RSA. Методы, которые используют для шифрования и дешифрования один и тот же ключ, называются симметричными. В отличие от них методы с открытым ключом называются асимметричными методами криптозащиты. Использование хэш-функций Функции хэширования широко используются для шифрования паролей пользователей КС и при создании электронной подписи. Они отображают сообщение любой длины в строку фиксированного размера. Особенностью ее применения является тот факт, что не существует функции, которая могла бы по сжатому отображению восстановить исходное сообщение, — это односторонняя хэш-функция. Получив в свое распоряжение файл, хранящий пароли пользователей, преобразованные хэш-функцией, злоумышленник не имеет возможности получить по ним сами пароли, а должен перебирать парольные комбинации символов, применять к ним хэш-функцию и проверять на соответствие полученной строки и строки из файла хэшированных паролей. Эта работа затрудняется тем, что ему неиз- 424
вестна и длина пароля, по которому хэш-функцией получено отображение. Электронная цифровая подпись При обмене электронными документами очень важным является установление авторства, подлинности и целостности информации в полученном документе. Решение этих задач возлагается на цифровую подпись, сопровождающую электронный документ. Функционально она аналогична обычной рукописной подписи и обладает ее основными достоинствами: • удостоверяет, что подписанный текст исходит от лица, поставившего подпись; • не дает лицу, подписавшему текст, отказаться от обязательств, связанных с подписанным текстом; • гарантирует целостность подписанного текста. Электронная цифровая подпись представляет собой относительно небольшое количество дополнительной информации, передаваемой вместе с документом. Обычно цифровая подпись шифруется с применением методов открытого ключа и связывает содержимое документа, самой подписи и пары ключей. Изменение хотя бы одного из этих элементов делает невозможным подтверждение подлинности цифровой подписи. На этапе формирования цифровой подписи генерируются два ключа: секретный и открытый. Открытый ключ рассылается всем абонентам, которым будет направлен электронный документ. Подпись, добавляемая к документу, содержит такие параметры отправителя, как дату подписи, информацию об отправителе письма и имя открытого ключа. С помощью хэш-функции, примененной ко всему документу, вычисляется небольшое число, характеризующее весь текст в целом. Это число, которое затем шифруется закрытым ключом, и является электронной цифровой подписью. Получателю пересылается сам документ в открытом виде и электронная подпись. При проверке цифровая подпись расшифровывается открытым ключом, известным получателю. К полученному открытому документу применяется преобразование хэш-функцией. Результат ее работы сравнивается с присланной электронной подписью. Если оба числа совпадают, то полученный документ — подлинный. Очевидно, что 425
любое несанкционированное действие по внесению изменений в документ приведет к изменению значения, вычисляемого хэш-функцией по открытому документу, но подменить зашифрованную секретным ключом электронную подпись злоумышленнику будет очень трудно. 8.4. Зашита информации от компьютерных вирусов 8.4.1. Определение и классификация вирусов Компьютерным вирусом называется программа, способная самостоятельно создавать свои копии и внедряться в другие программы, в системные области дисковой памяти компьютера, распространяться по каналам связи. Целью создания и применения программ-вирусов является нарушение работы программ, порчи файловых систем и компонентов компьютера, нарушение нормальной работы пользователей. Компьютерным вирусам характерны определенные стадии существования: пассивная стадия, в которой вирус никаких действий не предпринимает; стадия размножения, когда вирус старается создать как можно больше своих копий; активная стадия, в которой вирус переходит к выполнению деструктивных действий в локальной компьютерной системе или компьютерной сети. В настоящее время существует тысячи различных вирусов, классификация которых приведена на рис. 8.2. По среде обитания вирусов Сетевые вирусы используют для своего распространения команды и протоколы телекоммуникационных сетей. Файловые вирусы чаще всего внедряются в исполняемые файлы, имеющие расширение .ехе и com, но могут внедряться и в файлы с компонентами операционных систем, драйверы внешних устройств, 426
Классификация вирусов По среде обитания По способу заражения По алгоритмам функционирования Сетевые Файловые Загрузочные Документные Резидентные Нерезидентные Паразитирующие Троянские кони Вирусы-невидимки Мутирующие Рис. 8.2. Классификация компьютерных вирусов объектные файлы и библиотеки, в командные пакетные файлы. При запуске зараженных программ вирус на некоторое время получает управление и в этот момент производит запланированные деструктивные действия и внедрение в другие файлы программ. Загрузочные вирусы внедряются в загрузочный сектор дискеты или в главную загрузочную запись жесткого диска. Такой вирус изменяет программу начальной загрузки операционной системы, запуская необходимые для нарушения конфиденциальности программы или подменяя, для этой же цели, системные файлы, в основном это относится к файлам, обеспечивающим доступ пользователей в систему. 427
Документные вирусы (макровирусы) заражают текстовые файлы редакторов или электронных таблиц, используя макросы, которые сопровождают такие документы. Вирус активизируется, когда документ загружается в соответствующее приложение. По способу заражения среды обитания Резидентные вирусы после завершения инфицированной программы остаются в оперативной памяти и продолжают свои деструктивные действия, заражая другие исполняемые программы, вплоть до выключения компьютера. Нерезидентные вирусы запускаются вместе с зараженной программой и удаляются из памяти вместе с ней. По алгоритмам функционирования Паразитирующие — вирусы, изменяющие содержимое зараженных файлов. Эти вирусы легко обнаруживаются и удаляются из файла, так как имеют всегда один и тот же внедряемый программный код. Троянские кони — вирусы, маскируемые под полезные программы, которые очень хочется иметь на своем компьютере. Наряду с полезными функциями, соответствующими устанавливаемой программе, вирус может выполнять функции, нарушающие работу системы, или собирать информацию, обрабатываемую в ней. Вирусы-невидимки способны прятаться при попытках их обнаружения. Они перехватывают запрос антивирусной программы и либо временно удаляются из зараженного файла, либо подставляют вместо себя незараженные участки программы. Мутирующие вирусы периодически изменяют свой программный код, что делает задачу обнаружения вируса очень сложной. Для своевременного обнаружения и удаления вирусов необходимо знать основные признаки появления вирусов в компьютере. К таким признакам относятся: • отказ в работе компьютера или отдельных компонентов; • отказ в загрузке операционной системы; • замедление работы компьютера; 428
• нарушение работы отдельных программ; • искажение, увеличение размера или исчезновение файлов; • уменьшение доступной программой оперативной памяти. 8.4.2. Способы защиты от вирусов Для защиты от проникновения вирусов необходимо проводить мероприятия, исключающие заражение программ и данных компьютерной системы. Основными источниками проникновение вирусов являются коммуникационные сети и съемные носители информации. Для исключения проникновения вирусов через коммуникационную сеть необходимо осуществлять автоматический входной контроль всех данных, поступающих по сети, который выполняется сетевым экраном (брандмауэром), принимающим пакеты из сети только от надежных источников, рекомендуется проверять всю электронную почту на наличие вирусов, а почту, полученную от неизвестных источников, удалять не читая. Для исключения проникновения вирусов через съемные носители необходимо ограничить число пользователей, которые могут записывать на жесткий диск файлы и запускать программы со съемных носителей. Обычно это право дается только администратору системы. В обязательном порядке при подключении съемного носителя следует проверять его специальной антивирусной программой. Kлoccuфuкацuя антивирусных средств Для обнаружения и удаления компьютерных вирусов разработано много различных программ, которые можно разделить на детекторы, ревизоры, фильтры, доктора и вакцины. Детекторы осуществляют поиск компьютерных вирусов в памяти и при обнаружении сообщают об этом пользователю. Ревизоры выполняют значительно более сложные действия для обнаружения вирусов. Они запоминают исходное состояние программ, каталогов, системных областей и периодически сравнивают их с текущими значениями. При изменении контролируемых параметров ревизоры сообщают об этом пользователю. Фильтры выполняют выявление подозрительных процедур, например, коррекция исполняемых программ, изменение загрузочных записей диска, изменение атрибутов или размеров файлов и др. 429
При обнаружении подобных процедур фильтры запрашивают пользователя о правомерности их выполнения. Доктора являются самым распространенным типом антивирусных программ. Эти программы не только обнаруживают, но и удаляют вирусный код из файла — «лечат» программы. Доктора способны обнаружить и удалить только известные им вирусы, поэтому их необходимо периодически, обычно раз в месяц, обновлять. Вакцины — это антивирусные программы, которые так модифицируют файл или диск, что он воспринимается программой-вирусом уже зараженным и поэтому вирус не внедряется. Современные антивирусные решения обладают всеми означенными механизмами и постоянно добавляют новые средства борьбы с вредоносными программами. Популярные антивирусные средства Среди наиболее популярных у российских пользователей антивирусных пакетов назовем программы: Norton Antivirus, Антивирус Касперского и Dr.Web. По различным оценкам, в настоящее время продукты Лаборатории Касперского занимают большую часть российского рынка. Прочие производители, в первую очередь Symantec, «Диалог-Наука», Trend Micro и Panda, делят оставшуюся долю рынка. Рассмотрим коротко эти популярные программы. Symantec Norton Antivirus 2007 — это последняя версия одного из наиболее популярных в мире антивирусных решений, которое предохраняет компьютер от всех видов вредоносных программ, обеспечивает надежную безопасность и конфиденциальность работы пользователей. Программа автоматически удаляет вирусы различных классов, проверяет и обезвреживает входящие и исходящие сообщения электронной почты, выявляет и блокирует вирусы во вложениях службы передачи мгновенных сообщений. Приложение автоматически загружает обновления системы антивирусной безопасности для защиты от новых угроз. Антивирус Касперского Personal 6.0 — новая разработка «Лаборатории Касперского», воплощающая результаты многолетних исследований ведущих экспертов в области защиты от вредоносных программ. Продукт сочетает уникальную функциональность, новый пользовательский интерфейс и высокий уровень защиты от вирусов. 430
Программный комплекс позволяет организовать полномасштабную систему антивирусной защиты персонального компьютера. Он охватывает все возможные источники проникновения вирусной угрозы — съемные и постоянные файловые носители, электронную почту и Интернет. Использование «Антивируса Касперского» обеспечивает полное восстановление работоспособности системы при вирусной атаке. В то же время функция антивирусной проверки и лечения электронной почты позволяет очистить от вирусов входящую и исходящую корреспонденцию в режиме реального времени. В случае необходимости пользователю также доступны проверка и лечение почтовых баз различных почтовых систем. Doctor Web для Windows 2000/XP представляет собой комбинацию антивирусного сканера Doctor Web и резидентного сторожа Spider Guard, интегрированного в ОС компьютера. Один из самых совершенных в мире эвристических анализаторов Doctor Web, в сочетании с ежедневно обновляющимися вирусными базами, является надежной защитой от вирусов всех классов. Резидентный сторож Spider осуществляет анализ всех опасных действий работающих программ и позволяет блокировать вирусную активность практически всех известных и еще неизвестных вирусов. Он позволяет не допустить заражения компьютера вирусом, даже если этот вирус не будет определен сканером Doctor Web с включенным эвристическим анализатором.
Алфавитный указатель А Абзац 187, 189, 196, 204, 205 Автозавершение 203 Автозамена 202 Автозаполнение 216, 219 Автотекст 202, 203 Автофигуры 209 Ада 327 Адаптер 115, 138, 139, 349 Адекватность информации 13 Администратор 341, 418 Адрес 32, 36, 43, 44, 211 IP 375 URL 385 внешних портов 81 команды 72 микропрограммы 90 сетевой 350 сетевой карты 115 электронной почты 387 ячейки 73 Адресное пространство 126 Актуальность информации 13 Алгебра логики 64 Алгоритм 15, 18, 30, 291, 296 LZW-кодирование 172 обработки 72 обработки команд 91 рекурсивный 310 свойства 292 сжатия 43, 172 способы описания 293 Хаффмена 43 Анализ предметной области 229 структуры текста 38 Аналого-цифровой преобразователь (АЦП) 38 Аналоговые вычислительные машины (АВМ) 62 Анимация 203, 256 Антивирусные средства 429 Doctor Web 431 Symantec Norton Antivirus 430 Антивирус Касперского 430 Аппаратно-программные средства (АПС) 120 Арифметико-логическое устройство (АЛУ) 69, 121 АРМ 120 Архиватор 169, 173, 174 Архитектура 122 CISC 90 RISC 90 Pentium-4 92 архитектура С ВТ 19 вычислительных систем сосредоточенной обработки ин 77 вычислительных системы с открытой архитектурой 80 клиент-сервер 236 многопроцессорной вычислительной системы 84 нейронная 116 процессора 90 с фиксированным набором устройств 78 суперскалярная 92 файл-сервер 225 Ассемблер 319 Ассоциация 288 Атрибут 270 доступа к файлам и папкам 153 системный 151 скрытый 151 только чтение 151 Аутентификация 399, 403, 413, 414 Б База данных 237 распределенная 237 централизованная 237 База знаний 273 Базовое ПО или BIOS 118 Базы данных 270 Байт 14, 32 Безопасность 162, 397 432
базовые критерии 403 безопасная, или защищенная, КС 399 Бейсик 325 Бит 14 Блок-схема 293 Блокнот (Notepad) 190 Брандмауэр 429 Браузер 378, 386, 390 Буфер 350, 364, 366 обмена 202 Буферизация 141 В Вампир 346 Ввод данных 211, 215, 224, 232 Ввод формул 218 Векторная графика 240 Видеоадаптер 139 Видеоконтроллер 97, 102, 103 Видеомонитор 102 на основе ЭЛТ 103 плазменный 104 самоизлучающий 105 электролюменесцентный 104 Видеопамять 93 Видеотерминалы 102 Винчестер 98 Вирус 118, 174, 400, 412, 426 невидимки 428 документные (макровирусы) 428 загрузочные 427 мутирующие 428 нерезидентные 428 паразитирующие 428 сетевые 426 троянские кони 428 файловые 426 Внедренный объект 197 Внешние запоминающие устройства (ВЗУ) 97 Внешние устройства 80, 102 Внешние функции 254 Внешняя память 45, 86, 88, 101, 223 Внешняя среда 260, 263, 264 Внешняя формула 218 Восстановление 140 данных 43, 172, 175, 354 настройки компьютера 162 Восьмеричная система счисления 27 Время доступа 98, 401 Встроенные операционные системы 126 Встроенная функция 220 Вторая информационная революция 16 Выделение блока 189 Выделенные устройства 141 Вычисления 31, 70, 73, 74, 83, 85, 88, 91, 133, 136, 184, 186, 208, 210, 215, 217, 218, 253, 255, 256, 306, 313, 321, 330, 336, 368 Вычислительные задачи 257 Г Гамильтоновый цикл 60 Гарнитура 193 Генератор 113, 416 Гипермедиа 391 Гиперссылки 188, 391 Гипертекст 335, 370, 373, 385, 386, 391 Гипотеза 258 Главное меню 212 Глобальные сети 339, 340, 373 Горячие клавиши 249 Граф 57 Графика 19 векторная 41 растровая 41 Д Данные 10, 11 Двоичная арифметика 33 Двоичная система счисления 26 Двоичное кодирование 24, 37 Дерево 43, 60 Дерево каталогов 128, 147, 160 Десятичная система счисления 25 Детерминистический 364 Дефрагментация 23 Джойстик 106, 108 433
Диагностирование 168 Диагностические программы 21 Диаграмма 218 Диалоговое окно 192, 196, 197, 201, 202, 203, 204, 205, 206, 209, 216, 219, 220, 221, 222 Диалоговые программы 118 Диапазон 35, 42, 104, 211, 215, 216 Диск 98, 99, 139, 416, 429 жесткий 99, 139 оптический компакт-диск (CD) 100 цифровой универсальный 101 Дисковод 98 Дискреционная модель разграничения доступа 399 Диспетчер задач 170 памяти 145 Дит 15 Документ 48, 133, 146, 179, 188, 193, 195, 198, 199, 201, 204, 250, 385, 393, 394, 425, 428 Домен 227 Дорожка 98, 101 Достоверность 12, 398 Доступ 192, 206 в Интернет 366, 380 к аппаратной части устройства 142 к информации 16 несанкционированный 388, 399, 404 одновременный 125 произвольный 102, 134 прямой 320, 385 санкционированный 399 свободный 93 узкополосный 382 широкополосный 381, 382 Доступность информации 13 Драйвер 140, 141, 142, 358 Дуализм 12 Е Единица измерения информации (бит, байт, гигабайт, килобайт, мегабайт, терабайт) 14 Ж Жидкокристалический видеомонитор 88, 102, ЮЗ Жизненный цикл 282, 283, 404 Журнал 202, 403, 414, 418 3 Зависимость 53, 54, 288 зависимость 264 Заголовок 362 окна 213 сектора 139 файла 48 Загрузка операционной системы 119, 130 процессора 135 Загрузочный сектор 151 Задача интерпретации кодов 36 логическая 272 межсистемного преобразования данных 37 поиска в графе цикла 60 представления данных 36 функциональная 257 централизованного управления данными 45 этапы решения 258 Закон смешения цветов 41 функционирования системы 264 Законы алгебры высказываний 49 Запись 227 Запрос 235, 279, 334, 339, 341, 352, 358, 359, 361, 368 Зараженная программа 427, 428 Защита информации 397, 426 Звуковая карта 113 Знания 273 декларативные 274 процедурные 274 Значение переменной 311 И Идентификатор 311 Идентификатор тома 151 434
Иерархии процессов и файлов 128 Иерархическая модель 270, 271 Иерархическая структура 44 каталогов 128, 392 Иерархия сети 369 Издательские системы 182, 184 Изменение структуры данных 43 Имя доменное 377 переменной 311 пути 129, 148 сетевое 385 файла 45, 140, 147 Индексированные каталоги 392 Инженер по знаниям 279 Инструментальное программное обеспечение 21 Инструментарий проектирования программного обеспечения 289 Интегрированные программные средства 185, 248 Интернет 17, 370, 373, 375, 379, 392 Интерпретатор 320, 321 Интерпретация кодов 36 Интерфейс 20, 286, 352 Интерфейс пользователя 279 Информатика 9, 18 Информационная безопасность 398 Информационная модель 224, 268 Информационная революция 16 Информационная система 17, 224, 237 Информационная технология 19, 188, 238 Информационное общество 17 Информационные ресурсы 17 Информационные системы 186, 224 Информационные технологии 9 Информационные услуги 18 Информационный объект 23 Информационный процесс 11, 15, 62 Информация 10, 11, 12 Искусственный интеллект 271 Исполнимый код 321 Исходный код 321 К Кадр 355 Канал ввода/вывода 79 связи 15, 339, 357, 374, 384, 411 Канальный уровень 354, 355, 357, 363 Карта звуковая 113 сетевая 115 смарт 126 Каталог 98, 128, 386, 392 корневой 129, 147, 148, 150 текущий 148 Кибернетика «черного ящика» 272 Клавиатура 77, 83, 105 Клавиатурный процессор 105 Классификация антивирусных средств 429 баз данных 225 вирусов 426 всеобщая 271 компьютерных сетей 338 компьютеров по сферам применения 86 математических систем 251 моделей 261 прикладного программного обеспечения 182 программного обеспечения 22 угроз информационной безопасности 400 устройств ввода-вывода 138 языков программирования 323 Кластер 148, 149 Клиент 225, 368 FTP 168 почтовый 388, 390 Клиент-сервер 225, 339, 368, 369 Ключ внешний 228 первичный 227 простой 227 составной 227 Ключевое слово 394, 395 Кобол 324 435
Код 42 ASCII 172 байт-код 332 двоичный 165 десятичный 106 дополнительный 33 исполнимый 321 исправления ошибок ЕСС 139 исходный 321 код исправления ошибок ЕСС 139 машинный 318, 319, 320 объектный 321 операции 71, 90 сжатия 171 скан-код 105 циклический 356 Кодирование 19, 23, 172, 354 Количество информации 13, 14, 15, 382, 392 Колонтитул 187, 188 Команда 17, 21, 36, 37, 66, 70, 71, 72, 73, 79, 89, 127, 291, 300, 318, 332 Командная строка 161, 176, 411 Командный процессор 159 Комментарий 188 Компилятор 320, 321 Комплекс средств защиты 399 Компонент 260, 286, 287, 346 Компьютер блокнот 88 карманные 88 микрокомпьютер 88 переносные 88 персональный 77, 82 портативные 88 стационарные (настольные) 88 Компьютерная программа 318 Компьютерные сети 338 гибридные 348 Конвертор 49 Константа 311, 329 Конструктор 233, 235, 278 Контроллер 76, 80, 82 Концентратор 343 Копирование 165, 175, 216, 331, 369, 397 Криптография 420 Курсор 190 Кэш-память 94 Л Линейная структура 43 Линейная шина 342 Логическая структура 98 Логическая структура диска 98 Локальная шина. См. Шина Локальные вычислительные сети (ЛВС) 340, 366, 372, 408 М Магнитный диск 98, 116 Макрокоманда 189, 333 Макрос 333, 428 Манипулятор 106, 108 Маркер 38, 197, 204, 344, 359, 360, 364 Маркер заполнения 211 Маршрутизатор 367, 372, 374, 383, 412 Масштабируемость 193, 339 Математическое обеспечение 326 Машинная команда 21, 91 Меню 130, 165, 166, 177, 178, 190, 191, 192, 193, 194, 195, 197, 199, 200, 202, 208, 213, 285 Метка 38, 151, 288, 403, 406 Модель лабиринтного поиска 272 Модем 83, 114, 370, 372, 375, 376, 379, 380, 381, 382, 383 Модуль загрузочный 322 Модульное проектирование 284 Модуляция 114, 139, 170 Мультимедиа средства 17, 116, 135, 170, 177, 380, 391 Мультиплексор 348, 381, 382 Мэйнфрейм 88, 124 Мягкие цветовые переходы 185 Н Накопитель на жестких магнитных дисках 436
(винчестер) 98 на магнитной ленте 141 на магнитных дисках 98 на оптических дисках 99 Настольные издательские системы 190 Нейрокибернетика 272 Нейрокомпьютер 116 Нейросети 272 Нисходящее проектирование 284 О Обеспечение аппаратное 19 базовое программное 118 прикладное 182 прикладное программное 21 программное 19, 21, 282, 284 системное программное 117, 118 служебное программное 21 Обмен данными 83, 86, 202, 254, 255, 350 Оболочка 122, 159 Обработка данных 15, 210, 368 распределенная 225 централизованная 225 Обработка ошибок 140 Общая шина 95 Объект 258 Объектно-ориентированное программирование 330 Объектно-ориентированное проектирование 285 Ограничение доступа 417 Одноранговые сети 341 Окно 165, 186, 191, 192, 194, 199 Операнд 50, 91, 92 Оперативная память 127 Оперативное запоминающее устройство (ОЗУ) 93 Оператор 215, 319, 323, 324, 328, 329, 383 Операционная система 122, 123, 125, 126, 127, 129, 130, 131, 132 Linux 157 UNIX 154 Windows 161 Операция 50, 53, 275, 286, 417 Отладчик 118, 322, 337 Отношение 226, 230, 288, 330 Отчет 237 П Пакет 115, 141, 251, 339, 362 MathCad 253 MatLab 254 MS Office 185 интегрированный 185 прикладных программ 224 расширения 252 Память 93, 134 буферная 94 виртуальная 127, 137 внешняя 223. См. также Внешняя память иерархическая структура 134 кэш-память 134 локальная 84 менеджер памяти 134 модуль управления памятью 134 оперативная 127 подкачка 137 свопинг (swapping) 137 со свободным доступом 93 флэш-память 101, 102, 416 Панели инструментов 212 Панель 104, 166, 195, 199, 206, 244 Папка 165, 170, 192, 202 Параметры абзаца 204 Параметры страницы 204 Параметры шрифта 203 Передатчик 115, 347, 349 Передача данных 15, 361, 365 Переменная 311, 312 Печатающие устройства 109, ПО Печатающие устройства (принтеры) 108 Пиктограмма 194, 201, 221 Плотность записи 99 Плоттер 108, ПО Поколения ЭВМ 73, 74, 75, 76 Поле 10, 227 437
Порт ввода-вывода 81 Постоянное запоминающее устройство (ПЗУ) 95 Право доступа 417 Предметная область 224, 274 Прерывание 131, 140, 141, 144 Приемник 15, 114, 348, 349, 364 Приложение 45, 133, 168, 202, 249, 279, 366, 428, 430 Принтер 83. См. Печатающие устройства (принтеры) Принцип WYSIWYG 196 Проводник 166 Программа 123, 167, 176, 177, 178, 180, 296 Программирование 291, 328, 329, 330 Пролог 272, 330 Пропускная способность 96, 97 Протокол 352, 365, 367, 373 доступа 385, 386 передачи гипертекста 373, 385, 386, 391 пересылки почты 388 почтового офиса 389 Процессор 76, 80, 89, 121, 318 Псевдокод 293 Путь 24, 44, 129, 148, 270, 374 Р Рабочая книга 211 Рабочая станция 154, 155, 160, 225, 250, 341 Рабочие группы 341 Раздел 204 Размерность 312 Разреженность строк и символов 203 Разрешающая способность монитора 103 принтера 109 сканера 112 Раскрывающийся список 200, 221 Распределенная база данных 225 Расширение файла 45, 147 Региональные или муниципальные сети 340 Регистр 68 Редактор векторный 185 графический 23 растровый 185 текста 38, 168, 184, 189 формул 206 Редиректор 358 Режим графический 42 записи звука 113, 114 индексный 42 конструктора 233, 235 отображения документов 199 разделения времени 126 редактирования 216 Реквизит 268 Реляционная модель данных 226, 270, 271 Реляционная таблица 226, 227, 228, 232 Репитер 344 Ресурс вычислительный 287 информационный 17, 18 Решатель 279 Рынок информационных услуг 18 С Связь 276, 335, 352 многие ко многим 229 один к одному 229 один ко многим 229 Сектор 98, 148 Семантическая сеть 274, 276 Сервер 341 Сетевые драйверы 358 Сжатие информации 42, 171, 173, 174 Системы управления базами данных (СУБД) 185, 224 Сканер 111, 112, 113 Слоты расширения 82 Стационарный компьютер 88 438
Стиль 188 Структурирование данных 185, 224, 270 текста 38, 188 Структурированные данные 312 Структурное программирование 327 Структурное проектирование 285 Сумматор 70, 91 Схема процессора 89 Т Табличный процессор 211 Таймер системный 83 Такт работы процессора 89 шины 96 Тактовая частота процессора 91 шины 95 Текстовые документы 36, 38 Текстовый процессор 189, 190, 198 Текстовый процессор Word Pad 194 Текстовый редактор 187, 188, 189 Теорема Найквиста 40 Терминатор 343 Техническая документация 178 Техническое задание на разработку ИС 229 Технология DPL 385 ODBC 250 plug-and-play 164 внедрения и связывания объектов (OLE) 197 Тип данных 36, 47, 312 Тип файла 147 Топология звезда 343 кольцо 344 комбинированная 345 сети 341 шина 345 ячеистая 345 Трансивер 346 Транспортный уровень 352, 355, 367 Трекпады 107 Трекпоинты 107 Третья информационная революция 16 Триггер 66 У Узел 270, 287 Управляющая структура 331 Управляющие клавиши 106 Уровень 270 канальный 355 канальный (Data Link) 355 командный 78 микроархитектурный 78 представительский 352 прикладной 354 сеансовый 352, 355 сетевой 354, 355 транспортный 352, 355 физический 354, 356 цифровой логический 78 Уровень управления доступом к среде 357 логической связью 357 Усилители 348 Устройство 62, 69 ввода 105-108 печати 108-111 Утилита 21, 160 Ф Файл 45, 46, 48, 146, 147 Файл-сервер 225, 369 Файловая система 45, 46, 127, 146, 149 FAT 148, 149, 150 NTFS 149 Файловая структура 128 Форматирование диска 98 текста 38, 47, 188, 194, 195, 196, 203 ячеек 216 Фрейм 277 Функциональная зависимость 230 Функциональные задачи 257 439
Х Хост 341 Хранение данных 15, 45, 119 Ц Целостность информации -398 Централизованная база данных 225 Цикл 301, 302, 304 Цифровые вычислительные машины (ЦВМ) 62 Ч Четвертая информационная революция 17 Числа 32 действительные числа 33 представление чисел 32 преобразование чисел 28 целые числа 32 числа с плавающей точкой 34 Ш Шаблон 201,331 документа 201, 206 формул 206 Шестнадцатеричная система счисления 27 Шина 342 адреса 96 данных 96 локальная 81, 97 общая 80, 97 системная 96 управления 96 Шифрование 153, 355, 422, 423, 424 Шрифт 193, 203 векторный 193 растровый 193 TrueType 203 Э Эвристика 272 Экспертные системы 279 Электронная почта 387 Электронные документы 184 Электронные таблицы 210 Я Язык 295, 319 HTML 334 Java 331 Microsoft Visual Basic 251 Perl 335 Tcl/Tk 335 UML 285, 286, 288 VBA 333 VRML 335 АДА 327 Алгол 324 Ассемблер 318 Бейсик (BASIC) 325 запросов SQL 334 Кобол 324 Лисп (LISP) 329 машинный 91, 118, 121, 336 моделирования 335 Паскаль (Pascal) 326 ПЛ/1 (PL/1) 326 программирования 312, 319, 329, 334 программирования баз данных 334 Пролог (PROLOG) 329 С (Си) 328 C++ 331 скрипт-язык 334 Смолток (Smalltalk) 330 Фортран 324 Яркость 41, 42, 104, 185, 240 Ярлык 165, 202 Ячейка 33, 43, 47, 66, 73, 93, 211, 215, 311, 418 440
Литературе Анин Б. А. Защита компьютерной информации. — СПб.: БХВ-Петер- бург, 2000. - 384 с. Брант Р. Система безопасности Windows 2000. — М.: Издательский дом «Вильяме», 2001. — 592 с. Брой М. Информатика. Основополагающее введение: В 4 ч. Ч. 1. — М.: Диалог-МИФИ, 1996. — 299 с. Брукшир Дж. Введение в компьютерные науки. — М.: Диалог- МИФИ, 2001. - 688 с. Васильков Ю.В., Василькова Н.Н. Компьютерные технологии вычислений в математическом моделировании. — М.: Финансы и Статистика, 2002. — 256 с. Габбасов Ю.Ф. Internet 2000. - СПб.: БХВ-Петербург, 2000. - 448 с. Гома X. UML проектирование систем реального времени, параллельных и распределенных приложений. — М.: Изд. ДМКПресс, 2002. - 704 с. Грэхем Р., Кнут Д., Паташник О, Конкретная математика. Основание Информатики. — М.: Мит, 1998. — 703 с. Гук М. Аппаратные средства IBM PC. Энциклопедия. 2-е изд. — СПб.: Питер, 2004. — 928 с. Динамические интеллектуальные системы в управлении и моделировании / Под ред. Э.В. Попова. - М.: МИФИ, 1996. - 124 с. Дьяконов В.П. Компьютерная математика. — М.: Нолидж, 2001. — 1210 с. Информатика. Базовый курс / Под ред. СВ. Симоновича. — СПб.: Питер, 2005. - 640 с. Кнут Дональд Э. Искусство программирования. Т. 1. Основные алгоритмы. — 720 с; Т. 2. Получисленные алгоритмы. — 832 с; Т. 3. Сортировка и поиск. — 832 с. — М.: Издательский дом «Вильяме», 2000. Когаловский М.Р Энциклопедия технологий баз данных. — М.: Финансы и Статистика, 2002. — 800 с. 441
Колесникова Ю.В. Microsoft Office 2000: Справочник. — СПб.: Питер, 2001. — 480 с. Компьютерные сети: Учебный курс. — М.: Изд. отдел «Русская редакция» ТОО «Channel Trading Ltd», 1997. - 696 с. Компьютерные сети +. Учебный курс: официальное пособие MS для самостоятельной подготовки. — М.: Издательско-торговый дом «Русская редакция», 2000. — 552 с. Кормен Т., Лейзерсон Ч., Ривест Р Алгоритмы: построение и анализ. - М.: МЦНМО, 2001. - 960 с. Компьютеры, сети, Интернет: Энциклопедия. 2-е изд./ Под общ. ред. Ю.Н. Новикова. — СПб.: Питер, 2003. — 832 с. Олифер В.Г., Олифер НА. Компьютерные сети. Принципы, технологии, протоколы. Учебник. — СПб.: Питер, 2001. — 672 с. Справочник по искусственному интеллекту: В 3 т. / Под ред. Э.В. Попова, ДА, Поспелова — М.: Радио и связь, 1990. Таненбаум Э. Компьютерные сети. — СПб.: Питер, 2002. — 848 с. Таненбаум Э. Современные операционные системы. — СПб.: Питер, 2004. — 1040 с. Хэлворосон М., Янг М. Эффективная работа в Microsoft Office 2000. — СПб.: Питер, 2000. - 912 с. Гэри Хансен, Джеймс Хансен. Базы данных: разработка и управление. - М.: БИНОМ, 1999. - 704 с. Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. — СПб.: Питер, 2002. — 496 с.
Содержание Предисловие 3 Список сокращений 5 1. Информация, информатика, информационные технологии 9 1.1. Информация 10 1.1.1. Понятие информации 10 1.1.2. Свойства информации 12 1.1.3. Понятие количества информации 13 1.1.4. Информационные процессы 15 1.1.5. Информация в жизни человечества 16 1.2. Предмет и структура информатики 18 1.3. Представление (кодирование) данных 23 1.3.1. Представление чисел в двоичном коде 24 1.3.2. Представление символьных и текстовых данных в двоичном коде 36 1.3.3. Представление звуковых данных в двоичном коде 40 1.3.4. Представление графических данных в двоичном коде 43 1.3.5. Понятие сжатия информации 44 1.4. Структуры данных 45 1.5. Хранение данных 47 1.6. Математические основы информатики 49 1.6.1. Алгебра высказываний (булева алгебра) 49 1.6.2. Элементы теории множеств 55 1.6.3. Элементы теории графов 57 2. Технические средства реализации информационных процессов .. 62 2.1. Представление информации в технических устройствах 62 2.2. Базовая система элементов компьютерных систем 64 2.3. Функциональные узлы компьютерных систем 66 2.3.1. Элемент памяти 66 2.3.2. Регистры 68 2.3.3. Устройства обработки информации 69 2.4. Принцип автоматической обработки информации вычислительным устройством 70 2.5. Поколения цифровых устройств обработки информации 73 2.6. Архитектуры вычислительных систем сосредоточенной обработки информации 78 2 6.1. Архитектуры с фиксированным набором устройств 78 2.6.2. Вычислительные системы с открытой архитектурой 80 2.6.3. Архитектуры многопроцессорных вычисли тельных систем 83 2 6.4. Классификация компьютеров по сферам применения 86 2.7. Функциональная организация персонального компьютера 89 2.7.1. Центральный процессор 89 443
2.7.2. Оперативное запоминающее устройство 93 2.7.3. Внутренние шины передачи информации 95 2.7.4. Внешние запоминающие устройства 97 2.7.5. Внешние устройства 102 2.8. Перспективы развития технических средств обработки информации 116 3. Системное программное обеспечение 117 3.1. Базовое программное обеспечение 118 3.2. Операционные системы 120 3.2.1. Назначение операционной системы 120 3.2.2. Виды операционных систем 124 3.2.3. Базовые понятия операционных систем 126 3.2.4. Процессы и потоки 129 3.2.5. Управление памятью 134 3.2.6. Ввод-вывод 138 3.2.7. Драйверы устройств 142 3.2.8. Файловые системы 146 3.2.9. Рассмотрение конкретных операционных систем 154 3.3. Служебные программы 167 4. Прикладное программное обеспечение 182 4.1. Классификация прикладного программного обеспечения 182 4.1.1. Прикладное программное обеспечение общего назначения 182 4.1.2. Прикладное программное обеспечение специального назначения ..186 4.2. Текстовые редакторы, процессоры 187 4.2.1. Программа Блокнот (NotePad) 190 4.2.2. Текстовый процессор WordPad 194 4.2.3. Текстовый процессор Word 198 4.3. Электронные таблицы 210 4.3.1. Общие сведения о табличном процессоре Excel 211 4.3.2. Создание таблиц 215 4.3.3. Работа с формулами, диаграммами, списками 218 4.4. Основы информационных систем. Базы данных 223 4.4.1. Основные понятия 223 4.4.2. Классификация БД 225 4.4.3. Модели данных 226 4.4.4. Проектирование баз данных 229 4.4.5. CASE- системы для разработки информационных сметем 237 4.5. Системы компьютерной графики 239 4.5.1. Растровый редактор Paint 242 4.6. Офисные интегрированные программные средства 248 4.7. Интегрированные пакеты математических расчетов 251 5. Модели решения функциональных и вычислительных задач.... 257 5.1. Основные понятия 257 444
5.2. Системный подход в моделировании систем 260 5.3. Классификация видов моделирования 261 5.4. Математические модели 263 5.4.1. Построение математической модели системы 263 5.4.2. Примеры построения динамических моделей 265 5.5. Информационные модели 268 5.5.1. Информационные объекты и связи 268 5.5.2. Примеры информационных моделей 269 5.6. Моделирование информационных процессов 281 5.6.1. Модели разработки программного обеспечения 282 5.6.2. Методы проектирования программного обеспечения 284 5.7. Унифицированный язык моделирования UML 285 5.7.1. Концептуальная модель UML 286 5.7.2. Отношения в UML 288 5.7.3. Диаграммы 288 5.7.4. Инструментарий проектирования программного обеспечения 289 6. Основы алгоритмизации и технологии программирования 291 6.1. Понятие алгоритма и его свойства 291 6.2. Способы описания алгоритмов 293 6.3. Основные алгоритмические конструкции 296 6.3.1. Линейная алгоритмическая конструкция 296 6.3.2. Разветвляющаяся алгоритмическая конструкция 297 6.3.3. Алгоритмическая конструкция «Цикл» 301 6.3.4. Рекурсивный алгоритм 310 6.4. Простые типы данных: переменные и константы 310 6.5. Структурированные данные и алгоритмы их обработки 312 6.6. Языки программирования 318 6.6.1. Понятие «язык программирования» 319 6.6.2. Компиляторы и интерпретаторы 320 6.6.3. Системы программирования 322 6.6.4. Классификация и обзор языков программирования 323 6.7. Этапы подготовки и решения задач на компьютере 336 7. Компьютерные сети 338 7.1. Назначение и классификация компьютерных сетей 338 7.2. Типы сетей 340 7.3. Топология сетей 341 7.4. Сетевые компоненты 346 7.4.1. Сетевые кабели 346 7.4.2. Беспроводная среда 348 7.4.3. Платы сетевого адаптера 349 7.5. Сетевые стандарты 351 445
7.5.1. Эталонная модель OSI 351 7.5.2. Стандарт IEEE Project 802 357 7.5.3. Драйверы устройств и OSI 358 7.6. Сетевые архитектуры 359 7.6.1. Методы доступа к сетевому ресурсу 359 7.6.2. Передача данных по сети 361 7.6.3. Сети Ethernet 362 7.6.4. Сети Token Ring 363 7.7. Сетевые протоколы 365 7.8. Среда клиент-сервер 368 7.9. Internet как иерархия сетей 369 7.9.1. Протоколы Интернет 373 7.9.2. Адресация в Интернет 375 7.9.3. Доменные имена 377 7.9.4. Варианты доступа в Интернет 379 7.9.5. Система адресации URL 385 7.9.6. Сервисы Интернет 387 7.9.7. Поиск в Интернете 392 7.9.8. Практические рекомендации 395 8. Основы и методы защиты информации 397 8.1. Общие понятия информационной безопасности 397 8.1.1. Основные понятия информационной безопасности 398 8.1.2. Анализ угроз информационной безопасности 400 8.1.3. Юридические основы информационной безопасности 401 8.1.4. Критерии защищенности средств компьютерных систем 402 8.1.5. Политика безопасности в компьютерных системах 405 8.1.6. Меры по поддержанию работоспособности компьютерных систем 407 8.2. Способы и средства нарушения конфиденциальности информации 408 8.2.1. Основные методы реализации угроз информационной безопасности 408 8.2.2. Типичные приемы атак на локальные и удаленные компьютерные системы 410 8.3. Основы противодействия нарушению конфиденциальности информации 413 8.3.1. Методы разграничения доступа 414 8.3.2. Криптографические методы защиты данных 420 8.4. Защита информации от компьютерных вирусов 426 8.4.1. Определение и классификация вирусов 426 8.4.2. Способы защиты от вирусов 429 Алфавитный указатель 432 Литература 441
Серия «Высшая образование» Соболь Борис Владимирович, Галин Александр Борисович, Панов Юрий Викторович, Рашидова Елена Викторовна, Садовой Николай Николаевич Информатика учебник Ответственный редактор И. Жиляков Технический редактор Л. Багрянцева Редактор А.Ю. Дроздов Художник А. Пащенко Корректоры: Н. Никанорова, Г. Бибикова Подписано в печать 04.07.07. Формат 60x84/16. Бумага тип. №2. Гарнитура «NewtonC». Печать офсетная. Усл. печ. л. 26,88. Тираж 3 000 экз. Заказ 2777 Издательство «Феникс», 344082, г. Ростов-на-Дону, пер. Халтуринский, 80. Отпечатано с готовых диапозитивов в ЗАОр «НПП «Джангар», 358000, г. Элиста, ул. Ленина, 245.
ОСУЩЕСТВЛЯЕМ: • Оптовую и розничную торговлю книжной продукцией ГАРАНТИРУЕМ: • Своевременную доставку книг в любую точку страны ЗА СЧЕТ ИЗДАТЕЛЬСТВА, автотранспортом и ж/д контейнерами • МНОГОУРОВНЕВУЮ систему скидок • РЕАЛЬНЫЕ ЦЕНЫ • Надежный ДОХОД от реализации книг нашего издательства Приглашаем к сотрудничеству АВТОРОВ для издания: • учебников для ПТУ, ссузов и вузов; • научной и научно-популярной литературы по МЕДИЦИНЕ и ВЕТЕРИНАРИИ, ЮРИСПРУДЕНЦИИ и ЭКОНОМИКЕ, СОЦИАЛЬНЫМ и ЕСТЕСТВЕННЫМ НАУКАМ; • литературы по ПРОГРАММИРОВАНИЮ и ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКЕ; • ПРИКЛАДНОЙ и ТЕХНИЧЕСКОЙ литературы; • литературы ПО СПОРТУ и БОЕВЫМ ИСКУССТВАМ; • ДЕТСКОЙ и ПЕДАГОГИЧЕСКОЙ литературы; • литературы по КУЛИНАРИИ и РУКОДЕЛИЮ. ВЫСОКИЕ ГОНОРАРЫ!!! ВСЕ финансовые ЗАТРАТЫ БЕРЕМ НА СЕБЯ!!! При принятии рукописи в производство ВЫПЛАЧИВАЕМ гонорар НА 10% ВЫШЕ ЛЮБОГО РОССИЙСКОГО ИЗДАТЕЛЬСТВА!!! Рукописи не рецензируются и не возвращаются! НАШ АДРЕС: 344082, г. Ростов-на-Дону, пер. Халтуринский, 80. Факс: (863) 261-89-50 Сайт издательства «Феникс»: http:/www.phoenixrostov.ru Вы можете получить книги издательства «Феникс» по почте, сделав заказ: 344082, г. Ростов-на-Дону, пер. Халтуринский, 80. издательство «Феникс». Книга-почтой, Лоза Игорю Викторовичу тел. 8-909-4406421, E-mail: tvoyakniga@mail.ru По вопросам издания книг обращаться: тел./факс: (863) 261-89-50; E-mail: office@phoenixrostov.ru РЕДАКЦИОННО-ИЗДАТЕЛЬСКИЙ ОТДЕЛ: Осташов Сергей Александрович (руководитель отдела) Тел.: 8(863) 261-89-75 E-mail: ostashov@phoenixrostov.ru Юсупянц Эдуард Арамович (редактор) Тел.: 8(863) 261-89-75 E-mail: eduard@phoenixrostov.ru Жиляков Илья Юрьевич (редактор) Тел.: 8(863) 261-89-75 E-mail: publish@phoenixrostov.ru Багрянцева Людмила Андреевна (технический редактор) Тел.: 8(863) 261-89-75