I. Теоретические основы информатики.

Введение

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

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

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


1.  ИНФОРМАТИКА КАК НАУКА И КАК ВИД ПРАКТИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ

 

1.1. ИСТОРИЯ РАЗВИТИЯ ИНФОРМАТИКИ

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

До настоящего времени толкование термина «информатика» (в том смысле, как он используется в современной научной и методической литературе) еще не является установившимся и общепринятым.

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

За время развития кибернетики (1948-1970гг.) миру (в осн. США) удалось накопить значительный опыт создания информационных систем и систем управления технико-экономическими объектами. Требовалось выделить из кибернетики научное и техническое ядра и консолидировать силы для развития новых направлений в этой науке, что и произошло на рубеже 60-70х годов. Термин «кибернетика» был постепенно вытеснен английским «Computer Science», а спустя несколько лет новая наука получила имя «Informatique», введенное французами.

В русском языке термин «Информатика» ранее был связан с узкоконкретной областью изучения структуры и общих свойств научной информации, передаваемой посредством научной литературы. В современных условиях термин «информатика» вводится в русский язык в новом и куда более широком значении – как название фундаментальной естественной науки, изучающей процессы передачи и обработки информации. При таком толковании информатика оказывается тесно связанной с философскими и общенаучными категориями, проясняется и ее место в кругу традиционных академических научных дисциплин.

В 1978г. Международный конгресс по информатики дал такое определение: «Понятие информатики охватывает области, связанные с разработкой, созданием, использованием и материально-техническим обслуживанием систем обработки информации, включая машины, оборудование, математическое обеспечение, организационные аспекты, а также комплекс промышленного, коммерческого, административного и социального воздействия».

 

 1.2. ИНФОРМАТИКА КАК ЕДИНСТВО НАУКИ И ТЕХНОЛОГИИ

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

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

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

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

АСУТП – автоматизированные системы управления технологическими процессами. Например, такая система управляет работой станка с числовым программным управлением (ЧПУ), процессом запуска космических кораблей и т.д.

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

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

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

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

 

 1.3. СТРУКТУРА СОВРЕМЕННОЙ ИНФОРМАТИКИ

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

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

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

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

Информационные системы – раздел информатики, связанный с решением вопросов по анализу потоков информации в различных сложных системах, их оптимизации, структурировании, принципах хранения и поиска информации. Сюда относятся информационно-справочные системы, информационно-поисковые системы, современные мировые системы хранения и поиска информации (Internet). Для огромных объемов информации, обрабатываемы подобными системами, необходимы единые принципы поиска и анализа, их теоретическое обоснование и практическая реализация. Примером удачного решения подобной проблемы на глобальном уровне может служить гипертекстовая поисковая система WWW, на значительно более низком уровне – справочная система 09.

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

 

1.4.  МЕСТО ИНФОРМАТИКИ В СИСТЕМЕ НАУК

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

По определению акад. А.П. Ершова, информатика – «фундаментальная естественная наука». Академик Б.П. Наумов определил информатику как «естественную науку, изучающую общие свойства информации, процессы, методы и средства ее обработки (сбор, хранение, преобразование, перемещение, выдача)».

Уточним, что такое фундаментальная и естественная наука.

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

Естественные науки – физика, химия, биология и др. – имеют дело с объективными сущностями мира, имеющими место независимо от нашего сознания. Отнесение к ним информатики отражает единство законов обработки информации в системах самой разной природы – искусственных, биологических, общественных.

Информатика имеет характерные черты и других групп наук – технических и гуманитарных (общественных).

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

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

 

1.5. СОЦИАЛЬНЫЕ АСПЕКТЫ ИНФОРМАТИКИ

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

Последние полвека информатизация является одной из причин перетока людей из сферы материального производства в сферу информационную. Промышленные рабочие и крестьяне, составлявшие в середине XX века 2/3 населения, сегодня (в развитых странах) составляют не более 1/3. Появились и новые «пограничные» специальности. Например, рабочий, управляющий станками с ЧПУ, больше занят умственным трудом (обработка получаемой им с компьютера информации), чем физическим. К середине 90-х годов численность «информационных работников» достигла в США 65% (в 1970 – 41,5%; 1980 – 44,4%). В то же время производительность труда в США за счет научно-технического прогресса (а информатизация – его главная движущая сила) выросла в среднем на 37%.

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

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

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

Трудно, живя в самом разгаре подобных процессов, взвесить, чего в них больше – положительного или отрицательного, да и четких критериев для этого не существует. В конце XVIII века английские рабочие сжигали станки, лишавшие их работы, но это не могло остановить прогресс. Для избежания подобных явлений правительство и общество должны помнить об отрицательных социальных последствиях информатизации и научно-технического прогресса в целом и искать компенсационные механизмы. Одним словом, жизнь в «информационном обществе» легче не становится, а вот то, что она значительно меняется - несомненно.

 

1.6.  ПРАВОВЫЕ АСПЕКТЫ ИНФОРМАТИКИ

Деятельность специалистов в области информатики все чаще выступает в качестве объекта правового регулирования. На многие возникающие при этом вопросы ответы далеко не очевидны, а иногда казуистически запутаны. Остановимся более подробно на правовом регулировании в области информатики в России.

Необходимо отметить, что регулирование в сфере информационных технологий является для российского законодательства принципиально новым, развивающимся направлением. В 1992 году был принят закон «О ПРАВОВОЙ ОХРАНЕ ПРОГРАММ ДЛЯ ЭЛЕКТРОННЫХ ВЫЧИСЛИТЕЛЬНЫХ МАШИН И БАЗ ДАННЫХ», содержащий обширный план приведения российского законодательства в сфере информатики в соответствие с мировыми нормами. Действие этого закона распространяется на отношения, связанные с созданием и использованием программ для ЭВМ и баз данных.

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

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

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

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

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

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

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

·        выпуск в свет программы для ЭВМ или базы данных;

·        воспроизведение программы для ЭВМ или базы данных (полное или частичное) в любой форме, любыми способами;

·        распространение программы для ЭВМ или базы данных;

·        модификация программы для ЭВМ или базы данных, в том числе перевод с одного языка на другой;

·        иное использование программы для ЭВМ или базы данных.

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

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

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

·        адаптацию программы для ЭВМ или базы данных;

·        изготавливать или поручать изготовление копии программы для ЭВМ или базы данных при условии, что эта копия будет предназначена только для архивных целей;

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

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

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

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

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

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

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

I)        преступления, связанные с вмешательством в работу компьютеров;

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

·        ввод в программное обеспечение так наз. «логических бомб», изменяющих нормальную работу программ при определенных условиях. (Логические бомбы, угрожающие уничтожением или порчей данных, применяются для шантажа владельцев информационных систем; они также могут выполнять новые, не планирующиеся владельцем программы функции – скрывать денежные поступления, переводить их на другие счета и др.);

·        разработка и распространение компьютерных вирусов;

·        преступная небрежность в разработке, изготовлении и эксплуатации программно-вычислительных комплексов, приведшая к тяжким последствиям;

·        подделка компьютерной информации (продукции), например, подделка результатов выборов, референдумов;

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

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

Отметим, что в Гражданский кодекс РФ, Уголовный кодекс РФ и другие законодательные акты, связанные с правовой охраной программ для ЭВМ и баз данных постоянно вносятся изменения и дополнения.

 

1.7.  ЭТИЧЕСКИЕ АСПЕКТЫ ИНФОРМАТИКИ

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

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

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

 

2. ИНФОРМАЦИЯ, ЕЕ ВИДЫ И СВОЙСТВА.

2.1. Общее представление об информации

Ранее мы неоднократно употребляли термин «информация», никак его при этом не раскрывая.

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

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

 

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

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

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

 

   2.2. непрерывная и дискретная информация

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

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

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

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

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

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

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

2.3. ИНформация и физический мир

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

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

Перечислим набор основных свойств информации:

·        запоминаемость;

·        передаваемость;

·        преобразуемость;

·        воспоизводимость;

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

2.4. измерение количества информации

Определить понятие «количество информации» довольно сложно из-за неопределенности самого понятия «информация». В решении этой проблем известны два подхода – кибернетический (вероятностный) и количественный (объемный).

Кибернетический подход.

Кибернетический подход сейчас применяется в основном в теории вероятностей и позволяет подсчитать количество информации, которое несет результат какого-то опыта (например, бросания монеты, игральной кости, раунд в рулетке и т.д.). Этот подход был развит в конце 40-х годов XX века математиками Хартли и Шенноном. Основные полученные ими результаты заключаются в следующем:

a)     если какой-то опыт может иметь N равновероятных исходов, количество информации, появляющейся после его однократного проведения, вычисляется по формуле Хартли:                                                                   (1)

b)    При введении какой-либо величины является вопрос о том, что принимать за единицу ее измерения. Из формулы (1) следует, что H=1 при N=2. Иначе говоря, в качестве единицы измерения принимается количество информации, связанное с однократным проведением опыта, состоящего в получении одного из двух равновероятных исходов. Результаты исходов обозначаются двоичными цифрами 0 и 1, а единица информации называется «бит» (от англ. BInary digiTs – двоичные цифры).

c)     Если проводится опыт с исходами, вероятности появления которых различны, то количество информации определяется формулой Шеннона:    (2)

Здесь N – количество исходов опыта, Piвероятность каждого исхода. Если проводится несколько независимых опытов, суммарное количество полученной информации равно сумме количеств информации, полученной после каждого из опытов.

Например, определим количество информации, связанное с появлением каждого символа в сообщении, записанном русскими буквами. Русский алфавит (упрощенно) состоит из 33 букв и пробела, и, по формуле (1), бит. Однако, в русских словах (и в словах других языков) различные буквы встречаются неодинаково часто. Если воспользоваться таблицей частотности букв русского языка и формулой (2), то получится несколько меньший результат: 4,72бит.

Объемный подход.

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

Вся информация в компьютере хранится, передается и обрабатывается в виде двоичных кодов – последовательностей двоичных цифр 0 и 1. Двоичная система выбрана потому, что в техническом устройстве наиболее просто реализовать два противоположных физических состояния – есть ток / нет тока, направление намагниченности и т.д. В компьютере бит является наименьшей возможной единицей информации. Доказано, что любая дискретная информация может быть представлена последовательностью битов (это вопрос из раздела кодирования), а, так как мы уже знаем о возможности дискретизации непрерывной информации с любой степенью точности, то можно считать, что любая информация может быть представлена последовательностью битов с любой степенью точности. Суммарный объем какой-либо информации подсчитывается просто по количеству требуемых для такой записи битов. При этом, очевидно, невозможно нецелое число битов, в отличие от вероятностного подхода.

Для удобства использования введены и более крупные единицы:

                         1 байт                    =     8 бит

                         1 килобайт (кБ)     =     1024 байт

                         1 мегабайт (МБ)   =     1024 кБ

                         1 гигабайт (ГБ)     =     1024МБ.

 

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

 

3. Кодирование информации

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

3.1. системы счисления

Система счисления – принятый способ записи чисел и сопоставления этим записям реальных значений. Все системы счисления можно разделить на два класса – позиционные и непозиционные.

Позиционные системы счисления.

В позиционных системах счисления для записи чисел используется некоторое количество отличных друг от друга знаков - цифр. Их число является основанием системы счисления. В позиционной системе счисления число может быть представлено в виде суммы произведений коэффициентов на соответствующие степени основания системы. Например, в привычной нам десятичной системе используется десять цифр – 0,1,...,9, и число записанное с их помощью, может быть подсчитано по формуле:

   (3)

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

                                                 (4)

Здесь l – основание системы счисления (целое положительное число, не меньшее 2); в левой части формулы – формальная запись числа в l – ной системе счисления; справа – формула для подсчета реального значения числа.

Если основание системы счисления меньше 10, то используется нужное количество привычных цифр, а если больше 11 – к цифрам добавляются буквы. Так, общепринятая база двенадцатиричной системы счисления: 0,1,2,3,4,5,6,7,8,9,А,В; а шестнадцатеричной – 0,1,2,3,4,5,6,7,8,9,А,В,С, D,E,F. При этом буква А соответствует цифре 10, В – 11 и т.д.

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

Существуют правила перевода чисел из одной системы в другую.

Перевод числа из системы с произвольным основанием в десятичную дается формулой (4).

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

Кроме позиционных систем счисления существуют такие, в которых значение знака не зависит от того места, которое он занимает в записи числа. Такие системы называются непозиционными, и примером такой системы является римская. В этой системе используется 7 знаков: I –1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000. Запись числа представляет собой перечисление ряда из этих символов, а значение числа подсчитывается суммированием значений всех записанных символов. Например: III – 1+1+1=3; DCCLXXVII – 500+100+100+50+10+10+5+1+1= 777. Недостатком таких систем, из-за которых они имеют лишь ограниченное декоративное применение, является отсутствие формальных правил записи чисел и, соответственно, правил действий над ними.

Двоичная система счисления.

Особая значимость двоичной системы счисления в информатике определяется тем, что внутреннее представление любой информации в компьютере является двоичным, т.е. описывается наборами только из двух знаков – 0 и 1.

Покажем пример перевода чисел из десятичной системы счисления в двоичную и обратно:

 

Число 28,73 требуется перевести в двоичную систему с точностью 4 знака после запятой. Целая и дробная части переводятся отдельно. Все действия проводятся в десятичной системе.

Целая часть:

                   Частное                      Остаток

                   28:2=14                            0

                   14:2=7                              0

                   7:2=3                                1

                   3:2=1                                1

                   1:2=0                                1

Т. о. 2810=111002.

Дробная часть:

                                                 Произведение                         Целая часть

                   0,73*2=                          1,46                                           1

                   0,46*2=                          0,92                                           0

                   0,92*2=                          1,84                                           1

                   0,84*2=                          1,68                                           1

                   ...

Т. о. 0,7310=0,1011...2.

В итоге 28,7310=11100,1011...2.

Обратный перевод осуществляется по формуле (4):

 

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

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

                                                                      Таблица 1.

 

Арифметические операции с многоразрадными числами в двоичной системе осуществляются так же, как и в десятичной. При двоичном сложении 1+1 возникает перенос единицы в старший разряд.

Восьмеричная и шестнадцатеричная системы счисления.

 

Эти системы представляют большой интерес с точки зрения изучения принципов представления и обработки информации в компьютере. Хотя компьютер «знает» только двоичную систему счисления, часто с целью уменьшения количества записываемых знаков пользуются восьмеричной или шестнадцатеричной системами счисления. Эти системы выбраны потому, что числа 8 и 16 являются целыми степенями числа 2, и правила взаимного перевода чисел между этими тремя (2, 8, 16) системами очень просты.

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

Пример:

1101101,01101112 = 001 101 101, 011 011 100 = 155,3348.

     172,3468=001 111 010, 011 100 110 =1111010,011100112.

Перевод чисел из двоичной системы в шестнадцатеричную и обратно производится аналогично переводу чисел из двоичной системы в восьмеричную и обратно, но двоичные числа разбиваются на группы по 4 символа (двоичные тетрады), приведенные в табл.2.

 

Таблица 2.

Арифметические действия с числами в восьмеричной и шестнадцатеричной системах выполняются, исходя из соответствующих таблиц сложения и умножения (табл. 3 – для восьмеричной системы; табл. 4 – для шестнадцатеричной системы).

                 Таблица 3.

Таблица 4.

 

3.2 абстрактный алфавит, кодирование и декодирование.

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

Примеры алфавитов:

1.      Алфавит прописных русских букв: А Б ... Я

2.      Алфавит клавиатурных символов ЭВМ;

3.      Алфавит арабских цифр: 0 1 2 3 4 5 6 7 8 9;

4.      Алфавит шестнадцатиричных цифр: 0 1 2 3 4 5 6 7 8 9 A B C D E F;

5.      Алфавит двоичных цифр: 0 1.

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

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

Примеры кодов:

1)      Азбука Морзе: алфавиту, составленному из букв и арабских цифр ставится в соответствие алфавит Морзе (. и -);

2)      Код Трисиме: знакам латинского алфавита ставятся в соответствие комбинации из трех знаков (0,1,2):

          A  000    B  001    C  002   D  010    E  011    F   012   G  020    H  021        I           022      J          100        K  101    L  102   M 110    N  111    O  112   P   120    Q  121        R         122      S          200        T   201    U  202   V  210    W 211    X  212   Y  220    Z  221        пробел                      222

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

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

 

Помехоустойчивое кодирование  

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

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

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

Для двоичного кода одним из способов помехоустойчивого кодирования может служить троекратное повторение каждого бита (т. е. ...10011... кодируется как ...111000000111111...), а при декодировании полученный код разбивается на триады, и каждая триада заменяется одним символом, который присутствует в ней по меньшей мере в двух позициях. (т.е. ...000 110 010 110 111 101 110... = ...0101111...). Такая система не будет полностью помехоустойчивой, но позволяет защититься от одиночных искажений. Так, если после каждого искаженного символа следует минимум два неискаженных, то такая система будет полностью помехоустойчивой. Однако, для реализации подобного метода кодирования необходимо, чтобы пропускная способность канала минимум втрое превышала производительность источника сообщений (код обладает тройной избыточностью), что бывает далеко не всегда. Вообще, построение помехоустойчивых кодов с малой избыточностью – сложная математическая задача, которая полностью не решена до сих пор.

3.3 кодирование текстовой информации.

Информатика и ее приложения интернациональны. Это связано с объективными потребностями человечества в единых правилах и законах хранения информации.

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

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

Попробуем подсчитать наиболее короткую длину такой комбинации. Общее количество символов, которые необходимо закодировать: 52 буквы английского алфавита (26 прописных и 26 строчных), 10 цифр, около 25 знаков препинания и разделительных знаков (три вида скобок, пробел и пр.), 5 знаков математических операций (включая корень), около 10 специальных символов (%, $, #, @ и др.) – всего порядка 100 символов. Равномерный код из групп по N двоичных знаков способен образовать 2N различных комбинаций. При N=7 имеем 128 комбинаций – достаточно, чтобы закодировать все вышеперечисленные знаки.

Но для кодирования нескольких (хотя бы двух) естественных алфавитов этого недостаточно. Минимальное достаточное значение N = 8: имея 256 двоичных комбинаций, можно закодировать минимум два алфавита и нужные специальные символы. Поскольку 8 символов (бит) образуют байт, говорят о «международных системах байтового кодирования».

Наиболее распространены две такие системы»: EBCDIC (Extended Binary Coded Decimal Interchange Code) и ASCII (American Standard Coded Information Interchange). Первая используется в «больших» машинах, вторая на мини- и микро- ЭВМ, включая персональные компьютеры.

Система ASCII была создана в 1963г. В своей первоначальной версии это – система семибитного кодирования, которая ограничивалась одним естественным языком (английским), цифрами, набором специальных символов, а также «управляющими» символами (например, DEL – знак удаления символа справа, символы начала и конца строки, символ сброса – ESC, и некоторые другие). В следующей версии  ASCII вышла как система байтового кодирования. В ней первые 128 символов (базовая часть) совпадают с исходными в первой версии и имеют коды с первым битом 0. Остальные коды (расширенная часть) отданы под буквы национальных алфавитов и символы псевдографики. В каждой стране своя система ASCII, но во всех странах базовые части таблиц совпадают. Таким образом, текст, записанный символами из базовой части является «интернациональным», а текст, в котором присутствуют символы «расширенной» части ASCII не может быть расшифрован в другой стране.

Для представления букв русского языка (кириллицы) в рамках ASCII было предложено несколько версий. Первоначально разработанный ГОСТ КОИ – 7 оказался по ряду причин крайне неудачным, и сейчас он не используется. В Росси сейчас используется система МАК (модифицированная альтернативная кодировка).

Ниже приведена структура МАК – версии ASCII.

Символы располагаются в таблице 16x16. Строки и столбцы пронумерованы шестнадцатиричными цифрами. Каждому символу ставится в соответствии двузначное шестнадцатиричное число по правилу: первая цифра – номер строки; вторая – номер столбца. Двузначное шестнадцатиричное число затем преобразовывается в восьмизначный двоичный код согласно табл. 2.

Коды с номерами 00 – 1F отданы под управляющие символы; номера 20 – 2F, 3А – 40, 5В – 60, 7В – 7А  занимают спецсимволы и знаки препинания; 30 –39 – цифры; 41 – 5А – прописные латинские буквы; 61 – 7А – строчные латинские буквы; 80 – 9F – прописная кириллица; А0 – AF и E0 – EF – прописная кириллица; B0 – DF – символы псевдографики, позволяющие строить несложные таблицы и схемы (эта часть также является интернациональной); F0 – FF – специальные символы (№, ±, √ и др.).

Одним из достоинств этой системы кодирования русских букв является их естественное упорядочение, что очень существенно при решении ряда задач обработки текстов.

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

3.4 кодирование чисел

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

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

Кодирование целых чисел без знака

Натуральные (целые положительные) числа кодируются записью значения числа в двоичной системе счисления. В зависимости от длины двоичной записи закодированного числа различают короткие целые беззнаковые (формат byte) и целые беззнаковые (формат word) числа. Первые (короткие) числа кодируются байтом (длина двоичного кода – 8 бит), и диапазон представимости чисел в этом формате в двоичной системе от 00000000 до 11111111, или в шестнадцатиричной системе от 00 до FF, а в десятичной от 0 до 255. При кодировании десятичных чисел код получается сложным, а при кодировании шестнадцатиричных – прямым, поэтому программисты в расчетах часто используют шестнадцатиричную систему. Код формата word имеет длину 2 байта (16 бит), и, соответственно, многократно возрастает диапазон представимости: от 0000 до FFFF в шестнадцатиричной системе (от 0 до 65536 в десятичной).

Такая кодировка позволяет не только записать число в память компьютера, но и определить правила операций сравнения и арифметических операций (в соответствии с этими правилами в двоичной системе счисления).

Кодирование целых чисел со знаком

Для кодирования целых знаковых чисел применяются три формата – короткое целое (формат Shortint), целое (формат Integer) и длинное целое (формат Longint). В первом случае величина числа задается семью битами, а значение старшего бита определяет знак числа (0 – положительное, 1 – отрицательное). Например, в этом формате код 01101011 означает число +6В (в шестнадцатиричной системе). Однако, код 11101011 не означает, как можно подумать, код –6В, так как для кодирования отрицательных чисел применяется дополнительный код. Он строится следующим образом:

¨        находится восьмиразрядное двоичное представление абсолютной величины числа;

¨        найденный код инвертируется, т.е. в нем нули заменяются на единицы и наоборот;

¨        к полученному коду арифметически добавляется единица.

Например, процесс получения дополнительного кода числа –6В таков:

-6В16    01101011     10010100    10010101.

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

Обратная процедура – восстановление значения числа по дополнительному коду – происходит по тем же правилам, но в обратном порядке. Диапазон представимости чисел в формате Shortint – от –80 до +7F в шестнадцатиричной системе (от –128 до 127 в десятичной).

В формате Integer код имеет длину 2 байта, соответственно старший бит определяет знак, а остальные 15 – абсолютное значение числа. Правила построения дополнительного кода остаются те же, а диапазон представимости чисел в этом формате – от –8000 до +7FFF в шестнадцатиричной системе (от –32768 до +32767 в десятичной).

В формате Longint код имеет длину 4 байта, поэтому диапазон представимости чисел от –80000000 до +7FFFFFFF в шестнадцатиричной системе (от –2147483648 до 2147483647 в десятичной).

Кодирование вещественных чисел

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

Для кодирования вещественных чисел требуется специальный подход, отличный от подхода к кодированию целых чисел. Это связано с тем, что на любом отрезке числовой оси целых чисел ограниченное количество, а вещественных - неограниченное. Поэтому, в силу того, что двоичный код любой длины содержит ограниченное количество комбинаций, невозможно каждому вещественному числу поставить в соответствие свой двоичный код. Вещественные числа кодируются с некоторой точностью. Точность с точки зрения информатики – количество знаков после разделителя, которые способен распознать и обработать компьютер. Так, если кодирование происходит с точностью 4 знака, то числа 2,35756 и 2,35757 будут закодированы одинаково.

Кодирование вещественных чисел разбивается на два этапа. На первом этапе вещественное число преобразуется к нормализованному виду, а на втором – число в нормализованном виде кодируется в двоичный код.

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

Примеры:

a)      123,456 = 1,23456*102 (десятичная система счисления);

b)      -0,00123456 = -1,23456*10-3 (десятичная система счисления);

c)      1011,11011 = 1,01111011*1011 (двоичная система счисления; 102=210; 112=310;

d)     -0,000000000000С = -С*10-D (шестнадцатиричная система счисления; 1016=1610; D16=1310.

Часть числа с разделителем в нормализованном виде называется мантисса (в примерах 1,23456; 1,01111011; С), а показатель степени 10 называется порядок (в примерах 2; -3; 11; -D). Таким образом, любое вещественное число в любой системе счисления может быть приведено к нормализованному виду, т.е. представлено в виде мантиссы (вещественного числа с одной позицией в целой части) и порядка (целого числа со знаком). Понятие «точность» в применении к нормализованным вещественным числам применяется только к мантиссе, т.е. число 123456 в нормализованном виде запишется 1,235456*105, и при точности 4 знака запишется как 1,2345*105, т.е. 123450.

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

Кодирование нормализованных вещественных чисел происходит отдельно для мантиссы и отдельно для порядка. Мантисса кодируется как целое знаковое число с абсолютной величиной в диапазоне от 10...0 до 99...9, где нулей – n штук (n – точность кодирования), а девяток  - n+1. Так, если кодирование происходит с точностью 12 знаков, то диапазон кодирования модуля мантиссы – от 1000000000000 до 9999999999999. Порядок кодируется как обычное целое знаковое число.

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

Примеры:

a)      формат 33бит (мантисса) + 7бит (порядок) = 40бит (5байт).

Модуль мантиссы: 33бит – 1бит (под знак) = 32бит; позволяет кодировать целые беззнаковые числа в диапазоне от 0 до 4294967296 (232), т.е. поддерживается диапазон от 10000000 до 999999999, т.е. с точностью 8 знаков. Порядок: 7бит – 1бит (под знак) = 6бит, т.е. диапазон представления порядка от –64 (26) до +63 (26-1). Такой формат называется Real.

b)        формат 56бит (мантисса) + 8бит (порядок) = 64бит (8байт).

Модуль мантиссы: 56бит – 1бит = 55бит, позволяет кодировать целые беззнаковые числа в диапазоне от 0 до 36028797018963968 (255), т.е. с точностью 1000000000000000 до 9999999999999999 – 15 знаков. Порядок может быть в диапазоне от –128 (27) до 127 (27-1). Такой формат называется Double – вещественные числа двойной точности.

3.5 кодирование изображений.

Существует два способа реализации построения изображений на экране дисплея и хранения их в памяти – векторный (функциональный) и растровый.

Векторная кодировка изображений

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

Растровая кодировка изображений

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

Количество пикселов по вертикали и горизонтали называется разрешением. Так, если говорят, что разрешение 800х600, то это значит, что картинка состоит из 800 точек по горизонтали и 600 по вертикали, т.е. всего имеется 480000 пикселов, каждый из которых, условно, имеет свои координаты – вертикальную и горизонтальную. 

Каждый пиксел имеет свой цвет, который определяется номером. Построить по этому номеру точку нужного цвета – дело видеоадаптера и монитора, здесь же мы рассматриваем принципиальный вопрос кодирования. Для того, чтобы определить, сколько бит нужно отводить под кодировку номера цвета, требуется знать, сколько всего цветов присутствует в палитре, т.к. каждый присутствующий в палитре цвет должен иметь свой номер. Номер цвета может быть записан как целое беззнаковое число (см. соотв. раздел). В силу приоритета равномерного двоичного кодирования палитры строятся таким образом, чтобы количество цветов в ней было равно 2N, где в зависимости от N – количество бит под кодировку номера цвета - получается разное количество цветов. Так, при N=1 имеем палитру в 2 цвета (черно-белое или монохромное изображение); при N=4 – 16 цветов (изображение формата CGA); при N=8 – 256 цветов (изображение формата VGA), N=16 – 65536 цветов (палитра High Color); N=24 – 16777216 цветов (палитра True Color) и т.д.

Чтобы подсчитать, какой размер будет занимать то или иное изображение, нужно общее количество пикселов, на которое оно разбито, умножить на количество бит, которое занимает номер цвета для одного пиксела. Так, черно-белое изображение с разрешением 800х600 будет размером 480000 бит или 5,86 кБ. Это же изображение в цветах High Color занимает 800*600*16=7680000 бит = 937,5 кБ.

В зависимости от того, как организована таблица, в которой определяются координаты и цвет пикселов, различают два формата построения растровых изображений: табличный (статический, формат .bmp) и линейный (динамический).

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

В линейном формате все пикселы выстраиваются в линию, причем длина этой линии – M*N, где M, N – параметры разрешения. Т. е., например, записывается сначала первая строчка таблицы, затем вторая, затем третья и т.д. (В зависимости от того, в какой последовательности записываются строчки друг за другом, различают несколько динамических форматов. Самый распространенный – формат .gif.) Далее, если в такой (линейной) записи находится последовательность идущих друг за другом пикселов одного цвета, то они записываются как два целых беззнаковых числа, одно из которых характеризует номер цвета, а второе – количество идущих подряд пикселов этого цвета. Размер записи изображения в динамическом формате существенно зависит не от палитры и от разрешения, а от сложности картинки. Как правило, размер gif – изображения картинки на 30-50% меньше bmp – изображения этой же картинки.

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

 

 

4. структуры данных

II.         Вычислительная техника

введение

Настоящий раздел посвящен принципиальным вопросам устройства и функционирования ЭВМ.

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

Аппаратное обеспечение – это «тело» компьютера, т.е. все его материальные составляющие: микросхемы, провода, корпус и т.д. Программное обеспечение – это «душа» компьютера, т.е. все нематериальные составляющие: операционная система, прикладные программы, драйверы устройств и т.д. Программное обеспечение не менее важно, чем аппаратное – без наличия необходимых программ любой, даже самый современный и мощный компьютер не сможет сложить два числа. Зачастую хорошее программное обеспечение более дорогостоящее, чем аппаратное. С другой стороны, для того, чтобы запустить современные программы, необходимо иметь современные компьютеры – с мощной аппаратной составляющей. На всех программах указывается, для какой аппаратной базы компьютера они предназначаются.

Таким образом, в разделе «вычислительная техника» изучается не только (и не столько) аппаратная составляющая компьютера, но и программы, необходимые для его нормальной работы. Аппаратные составляющие компьютера изучаются в разделе «устройство ЭВМ», а программные – в разделе «программное обеспечение ЭВМ».

1.  УСТРОЙСТВО эвм

При изучении аппаратной базы ЭВМ можно выделить несколько уровней.

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

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

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

1.1 История развития ЭВМ

АЦВМ и принципы Бэббиджа

Первая действующая вычислительная машина была построена в 1642 г. французским ученым Блезом Паскалем. Спустя 250 лет появился первое практически полезное и широко используемое устройство – арифмометр, который прослужил человечеству почти 70 лет. Арифмометр и его ближайший родственник – калькулятор – являются цифровыми вычислительными машинами (ЦВМ), но не являются автоматическими цифровыми вычислительными машинами (АЦВМ). Принципы, согласно которым работает АЦВМ, были высказаны в 1822 г. английским математиком Бэббиджем, и они настолько фундаментальны, что им подчиняются все автоматические вычислительные устройства вплоть до сегодняшнего дня.

Принципы работы АЦВМ заключаются в следующем:

·        Автоматическое выполнение операций.

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

·          Работа по вводимой по ходу программе.

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

·        Необходимость специального устройства – памяти – для хранения данных.

Эти идеи было невозможно реализовать на основе механической техники, и впервые автоматически действующие вычислительные устройства появились в середине XX века. Это были механические конструкции, снабженные электрическими реле. Первая релейная машина – «MARK-I» – была создана в США в 1944 г., и эту дату принято считать датой рождения компьютеров.

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

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

Поколения ЭВМ

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

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

В табл. 5 приведены основные принципы разделения ЭВМ по поколениям.

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

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

Переход к машинам третьего поколения стал возможен с появлением интегральных технологий в электронике. На одной плате (интегральной схеме – ИС) без пайки «выращивались» сложные схемы, содержащие десятки транзисторов и резисторов.

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

В третьем поколении ЭВМ появились крупные унифицированные серии машин, родственных по архитектуре и программному обеспечению. Для таких серий разрабатывалось единое программное обеспечение, и некоторые узлы внутри разных машин одной серии были взаимозаменяемы. Например, в США было популярное семейство больших и средних машин IBM 360/370, в СССР – ЕС ЭВМ (единая серия ЭВМ), СМ ЭВМ (система малых ЭВМ) и «Электроника» (серия мини-ЭВМ).

Табл. 5

Персональные компьютеры

В 1971 г. компанией «Intel» (США) был создан микропроцессор – устройство, реализующее на одной микросхеме функции процессора – центрального узла ЭВМ. Последствия этого оказались огромны как для вычислительной техники, так и для научно-технического прогресса в целом. Были созданы персональные компьютеры (ПК, PC – Personal Computer) – небольшие и недорогие ЭВМ, способные аккумулировать и усиливать интеллектуальные возможности своего персонального хозяина (впрочем, как и всякое техническое устройство, ПК способен и на обратный эффект). Началом массового появления ПК стал 1976 г. – год появления компьютера «Apple». За несколько лет было продано более 2 млн. экземпляров этих компьютеров, и ПК стал объектом массового производства.

В 1981 г. фирма IBM представила свой персональный компьютер IBM PC. Его модели XT (1983), AT (1984), Pentium (1990) стали, каждая в свое время, ведущими на мировом рынке. Основным успехом компьютеров IBM стали принципы открытой архитектуры и программной совместимости сверху вниз. Согласно этим принципам, ПК представляет собой не единое целое, а связанный набор необходимых для работы узлов. Любой узел может быть заменен на аналогичный или на более современный без ущерба для остальных составляющих ПК (это принцип открытой архитектуры, или принцип аппаратной совместимости). Любая программа, предназначенная для компьютера более старшего поколения, может быть выполнена на компьютере более молодого поколения, т.е. с большими возможностями (это принцип программной совместимости сверху вниз). Благодаря этим принципам, пользователь мог приобретать ПК минимальной конфигурации, и затем вставлять в него дополнительные или более современные устройства, вплоть до главных – процессора и запоминающего устройства – без ущерба для остального аппаратного и программного обеспечения компьютера.

Принципы открытой архитектуры и аппаратной совместимости  оказались настолько привлекательными, что компьютеры семейства IBM PC занимают сейчас более 90% рынка персональных компьютеров, а остальные семейства ПК (Macintosh фирмы «Apple», Yamaha и др.), не обладающие этими свойствами, занимают все вместе не более 10% рынка (в основном в США в узконаправленных областях). Благодаря открытой архитектуре IBM PC появилось множество разных производителей устройств для него, и вскоре фирма IBM утратила лидерство в производстве ПК. Когда сейчас говорят о компьютерах IBM, имеют ввиду не фирму - производитель (а их несколько тысяч по всему миру), а семейство компьютеров.

Перечислим основные характеристики ПК:

·        невысокая стоимость (доступная для приобретения в личное пользование);

·        наличие «дружественной» операционной и интерфейсной систем, которые максимально облегчают пользователю работу с компьютером;

·        наличие развитого и недорогого (сравнимого со стоимостью компьютера) набора периферийных устройств в настольном исполнении;

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

За четверть века, прошедшие с момента создания ПК, сменилось несколько их поколений: 8-, 16-, 32-, 64-битные. Многократно усовершенствовались внешние устройства, программное обеспечение, операционное окружение, включая сети, системы связи и многое другое. Персональный компьютер, изначально разрабатывавшийся как «персональный усилитель интеллекта», стал в ряде случаев ядром автоматизированного рабочего места – в банке, офисе, магазине и др.

1.2 архитектура эвм

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

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

К архитектуре относятся:

·             составляющие (узлы) ЭВМ, их связи и взаимодействие;

·             структура памяти ЭВМ;

·             способы доступа к памяти и внешним устройствам;

·             возможность изменения конфигурации ЭВМ;

·             система команд;

·             форматы данных;

·             организация интерфейса.

Классическая архитектура ЭВМ и принципы фон Неймана

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

Принципы фон Неймана заключаются в следующем:

1)    Использование двоичной системы для представления, обработки и хранения информации в памяти ЭВМ.

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

3)    Структура ЭВМ, которая в точности воспроизводилась на машинах первых двух поколений, и, с некоторыми изменениями и дополнениями, реализуется на современных машинах.

рис. 4

Основными блоками по Нейману являются: устройство управления (УУ) и арифметико-логическое устройство (АЛУ), запоминающее устройство (ЗУ), разделяемое на оперативное ЗУ (ОЗУ) и внешнее ЗУ (ВЗУ), устройства ввода и вывода. Схема устройства такой ЭВМ показана на рис. 4. Отметим, что внешняя память отличается от устройств ввода и вывода тем, что данные в нее заносятся в виде, удобном компьютеру, но недоступном для непосредственного восприятия.

Виды компьютерной памяти

Память (ЗУ) хранит информацию (данные) и программы. ЗУ у современных компьютеров «многоярусно» и состоит из:

è  ОЗУ, хранящее ту информацию, с которой компьютер работает непосредственно в данное время (исполняемая программа, часть необходимых для нее данных, некоторые управляющие программы). Эта память отличается быстрым временем доступа к ней, малым объемом, большой стоимостью в расчете на 1 байт хранимой информации, невозможностью длительного хранения информации и недоступностью для пользователя. Тем не менее, это одна из основных составляющих вычислительной машины, без которой невозможна ее работа. Размер оперативной памяти существенно влияет на производительность всей машины в целом. В современных ПК оперативная память выполнена в виде микросхем, объем ОЗУ колеблется от 32 до 256 мБ.

è  ВЗУ, гораздо большей емкости, чем ОЗУ, но с существенно более медленным доступом и значительно меньшей стоимостью в пересчете на 1 байт. ВЗУ отличается возможностью длительного хранения больших объемов информации и доступно для пользователя. На ВЗУ вся информация хранится в виде файлов, которые организованы в файловую систему. Обычно на ВЗУ хранятся периодически используемые программы, данные и пр. На современных компьютерах ВЗУ представляет из себя магнитный диск (винчестер), находящийся внутри системного блока. Емкости современных винчестеров – от 10 до 100 гБ, скорость доступа – на несколько порядков меньше, чем к ОЗУ, но и на несколько порядков больше, чем к периферийным ЗУ.

è  Постоянное ЗУ (ПЗУ), в котором хранятся базовые программы, тестирующие вычислительную машину, запускающие систему ввода-вывода информации и подготавливающие ЭВМ к работе. ПЗУ (в ПК семейства IBM чаще применяется термин BIOS – базовая систем ввода-вывода) в виде микросхемы находится на материнской плате, и при его отсутствии или поломке компьютер не сможет начать работу. ПЗУ работает только при включении компьютера, в дальнейшей работе оно не участвует. Программы, находящиеся («зашитые») в ПЗУ, недоступны для просмотра и редактирования, с их помощью можно лишь настроить компьютер и подготовить его к нормальной работе.

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

Внутренняя структура современных ЭВМ

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

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

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

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

 

рис. 5

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

·        шина данных, по которой передается непосредственно информация;

·        шина адреса, определяющая, куда передаются данные;

·        шина управления, регулирующая процесс обмена информацией.

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

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

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

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

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

Завершая рассмотрение внутренней структуры современных ЭВМ, укажем характерные тенденции ее развития.

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

Основной цикл работы ЭВМ

Рабочий цикл в общем виде одинаков для всех фон-неймановских машин.

В процессоре есть специальный внутренний регистр, указывающий на адрес ячейки ОЗУ, в которой хранится следующая команда программы. Этот регистр называется счетчик адреса команд. При включении питания или при нажатии на кнопку сброса (перезагрузка компьютера) в счетчик аппаратно заносится стартовый адрес «зашитой» в ПЗУ программы инициализации внешних устройств и начальной загрузки (BIOS). Дальнейшее функционирование компьютера определяется программой, и, в конечном счете, вся деятельность компьютера – непрерывное выполнение тех или иных программ, причем программы могут в свою очередь вызывать и передавать управление другим программам и т.д.

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

При выполнении каждой команды ЭВМ проделывает определенные стандартные действия:

1)    согласно содержимому счетчика адреса команд считывается очередная команда программы в специальный регистр процессора - регистр команд;

2)    счетчик команд автоматически изменяется так, чтобы в нем содержался адрес следующей команды (в простейшем случае для этого достаточно к текущему значению счетчика прибавить некоторую константу, определяющуюся длиной команды);

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

4)    Если не было команды останова или команды наступления прерывания, то повторяются пп. 1-3 для следующей команды. Если же выполнена команда останова или произошло прерывание, то ЭВМ прекращает обработку программы. Для выхода из этого состояния требуется перезапуск машины или запрос от внешних устройств.

В компьютерах на базе микропроцессоров Intel 80286 и более поздних для ускорения основного цикла используется метод конвейеризации (или опережающей выборки). Идея состоит в том, что несколько внутренних устройств процессора работают параллельно: одно считывает команду, другое дешифрует операцию, третье вычисляет адреса и т.д. В результате чаще всего оказывается, что по окончании основного цикла следующая команда уже выбрана из ОЗУ, дешифрована и подготовлена к исполнению.

Архитектура микропроцессоров

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

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

Счетчик адреса команд сохраняет адрес очередной команды программы и автоматически вычисляет адрес следующей. Благодаря наличию этого регистра в ЭВМ реализуется основной цикл исполнения команд программы. Не во всех процессорах счетчик адреса команд программно доступен.

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

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

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

Информация из одного регистра всегда может быть передана в другой (хотя не всегда это удается сделать одной командой). Все регистры имеют одинаковую разрядность – количество битов, которые можно записать в регистр и обработать за один такт. Первые процессоры были 4-х разрядные, далее появлялись 8- и 16- разрядные процессоры, современные процессоры (начиная с 80386) 32-разрядные и 64-разрядные (для серверов и рабочих станций).

Разрядность регистров МП существенно влияет на максимальный объем ОЗУ и возможности всей ЭВМ. Максимальный объем ОЗУ для 16-разрядного процессора составляет 216 ячеек (1 ячейка - 1 байт) = 64 кБ (при использовании сегментного метода адресации можно работать с 1мБ ОЗУ - см. ниже); для 32-разрядного процессора = 4ГБ.

Понятие «разрядность ЭВМ» включает в себя:

·        разрядность внутренних регистров процессора (m);

·        разрядность шины данных (n);

·        разрядность шины адреса (k).

рис. 6

Схема обмена информацией между процессором и ОЗУ представлены на рис. 6. Разрядности шин адресов и данных могут не совпадать, но обычно m=k а n<=m и n кратно 8. Когда говорят о разрядности ЭВМ, то имеют ввиду значение m, которое и является определяющим для n и k.  

Система команд ЭВМ

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

1.     Команды передачи данных (перепись), копирующие информацию из одного места в другое;

2.     Арифметические операции. Основная арифметическая операция – сложение, все остальные (вычитание, умножение, деление) сводятся к нему;

3.     Логические операции, позволяющие компьютеру анализировать обрабатываемую информацию. Сюда относятся команды сравнения, логические операции И, ИЛИ, НЕ, анализ отдельных битов кода;

4.     Сдвиги двоичного кода влево и вправо;

5.     Команды ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ внешние устройства являются специальными служебными адресами ОЗУ, поэтому ввод и вывод осуществляется с помощью команд переписи;

6.     Команды управления, реализующие нелинейные алгоритмы. Сюда относятся условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). К этой же группе относятся команды «останов», «нет операции» и прерывания;

7.     Команды преобразования данных из одного формата в другой (например, из 8-битного в 16-битный). Эти команды заметно упрощают обработку данных разного типа, но, в принципе, могут быть заменены последовательностью из нескольких более простых команд. Команды этой группы реализуются лишь на дорогих мощных современных процессорах.

Рассматривая систему команд, нельзя не сказать о двух взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд (CISC – Complex Instruction Set Computer) и с ограниченным набором (RISC – Reduced Instruction Set Computer). Разделение возникло из-за того, что в основном компьютер пользуется лишь небольшой частью из своего арсенала команд, остальные же используются эпизодически. Если существенно ограничить набор операций, зато тщательно оптимизировать их, получится эффективная, быстродействующая и недорогая RISC - машина. Правда, за это приходится платить необходимостью программной реализации «отброшенных» команд, но часто эта плата бывает оправданной – RISC – машины существенно быстрее и дешевле аналогичных по возможностям CISC - машин.

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

Команда ЭВМ состоит из двух частей – операционной и адресной. Операционная часть (код операции, КОП) указывает, какое действие необходимо выполнить с информацией. Адресная часть (АДЧ) описывает, где в ОЗУ хранится нужная информация. У некоторых команд (напр., «останов») адресная часть отсутствует, операционная остается всегда.

КОП можно представить себе как некоторый условный номер в общем списке команд.

 АДЧ может иметь до трех операндов, соответственно, команды могут быть нуль-, одно-, двух- и трехадресные.

Первые ЭВМ имели простую и наглядную трехадресную систему команд. Например: взять числа из адресов А1 и А2, сложить и результат записать в адрес А3. Если для операции требовалось меньшее количество адресов (например, в операции переписи), то лишние просто не использовались. Трехадресная команда легко расшифровывалась, была удобна в использовании, но с ростом объема ОЗУ ее длина становилась непомерно большой. Длина команды складывается из длины КОП и длины АДЧ. Для ОЗУ из 1024 ячеек (1кБ) для записи только АДЧ трехадресной команды требуется 30 бит, что в технической реализации не очень удобно. Появились двухадресные системы команд (результат операции записывался в специальный регистр процессора – сумматор, из которого затем командой переписи записывался по нужному адресу) и одноадресные системы команд. Последние оказались наиболее эффективными, и используются в современных процессорах.

Пример одноадресной системы команд:

Пусть надо сложить числа, хранящиеся в ячейках А1 и А2, а результат записать в А3. Для решения такой задачи одноадресной машине потребуется выполнить три команды:

·                 извлечь содержимое А1 в сумматор;

·                 сложить сумматор с числом из А2;

·                 записать результат из сумматора в А3.

Одноадресная машина, хотя и использует большее количество команд для выполнение каждой операции, на самом деле эффективней двух- или трехадресной, так как не производит ненужной записи в память промежуточных результатов при последовательных вычислениях типа a+b/c-d*e и т.п.

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

Рассмотрим вопрос об организации адресов ячеек ОЗУ. Начиная с машин IV поколения, доминирует байтовая система организации памяти, и минимально адресуемой единицей является байт. Адреса байтов записываются в шестнадцатиричной системе начиная с нуля. Например, для ОЗУ емкостью 1мБ адреса байтов будут 00000 ... FFFFF (в десят. системе 1024*1024-1=1048575), или 20 двоичных разрядов.

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

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

1)    данные находятся в одном из регистров процессора;

2)    данные входят непосредственно в состав команды, т.е. размещаются после кода операции (операции с константой);

3)    данные находятся в ячейке ОЗУ, адрес которой содержится в одном из регистров процессора;

4)    данные находятся в ячейке ОЗУ, адрес которой вычисляется по формуле:   адрес = сегмент + смещение.

Сегмент (базовый адрес) хранится в одном из регистров процессора и является начальной точкой массива данных. Смещение может быть как некоторой константой, так и содержимым другого регистра. Такой способ доступа к ОЗУ впервые появился в процессоре Intel 8088 для того, чтобы с помощью 16-разрядных регистров получить 20-разрядный адрес, и тем самым, увеличить максимальный объем ОЗУ для 16-разрядного процессора с 64кБ до 1мБ.

Современные процессоры стали 32-разрядными, их регистров хватает для адресации 4ГБ ОЗУ, и такой способ адресации становится излишним, хотя и сохраняется как вариант ради обеспечения программной совместимости.

5)    Стек – неявный способ адресации, в котором информация записывается и считывается только последовательным образом с использованием указателя стека – структуры, работающей по принципу стека. Этот способ применяется в основном при работе с кэш-памятью - СОЗУ. Также на аппаратном уровне процессор «обучен» сохранять в стеке текущий адрес программы при передаче управления другой программе, что дает возможность работы с подпрограммами: программа вызывает подпрограмму, а затем, после окончания работы подпрограммы, продолжает работу с адреса, указанного в стеке. Использование стека дает возможность вызова нескольких вложенных подпрограмм. Часто программа перед вызовом подпрограммы заносит в тот же самый стек необходимые параметры: исходные данные, режимы работы и т.д.