Понятие об информации

25





Информация и информатика

Понятие об информации

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

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

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

Сообщение – это информация, представленная в определенном виде и предназначенная для передачи.

Данные – это информация, представленная в формализованном виде и предназначенная для обработки ее техническими средствами, например ЭВМ.

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

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

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

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

Информация достоверна, если она отражает истинное положение дел. Недостоверная информация может привести к неправильному пониманию или принятию неправильных решений. 

Достоверная информация со временем может стать недостоверной, так как она обладает свойством устаревать, то есть перестаёт отражать истинное положение дел. 

Информация полна, если её достаточно для понимания и принятия решений. Как неполная, так и избыточная информация сдерживает принятие решений или может повлечь ошибки. 

Точность информации определяется степенью ее близости к реальному состоянию объекта, процесса, явления и т.п. 

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

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

Если ценная и своевременная информация выражена непонятным образом, она может стать бесполезной. 

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

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

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

сбор данных – накопление информации с целью обеспечения достаточной полноты для принятия решений;

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

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

сортировка данных – упорядочение данных по заданному признаку с целью удобства пользования;

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

защита данных – комплекс мер, направленных на предотвращение утраты, воспроизводства и модификации данных;

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

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

Работа с информацией имеет огромную трудоемкость и требует автоматизации.

Предмет и задачи информатики

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

Предмет информатики составляют:

аппаратное обеспечение средств ВТ;

программное обеспечение средств ВТ;

средства взаимодействия аппаратного и программного обеспечения;

средства взаимодействия человека с аппаратным и программным обеспечением.

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

Методы и средства взаимодействия человека с аппаратными и программными средствами называют пользовательским интерфейсом. Соответственно различают аппаратные интерфейсы, программные интерфейсы и аппаратно-программные интерфейсы.

Основной задачей информатики является систематизация приемов и методов работы с аппаратными и программными средствами ВТ.

В составе основной задачи можно выделить:

архитектура вычислительных систем;

интерфейсы вычислительных систем;

программирование;

преобразование данных;

защита информации;

автоматизация;

стандартизация.

Представление информации в компьютере

При использовании в качестве носителя информации напряжений постоянного тока возможны две формы представления численного значения какой-либо переменной, например, X:

в виде одного сигнала— напряжения постоянного тока, которое сравнимо с величиной X (аналогично ей),

Например, при Х=1845 единиц на вход вычислительного устройства можно подать напряжение 1,845 В, (масштаб представления 0,001 В/ед.) или 9.225 В (масштаб представления 0,005 В/ед.);

в виде нескольких сигналов — нескольких напряжений постоянного тока, которые, например, сравнимы с числом единиц в X, числом десятков в X, числом сотен в X и т. д.  

Первая форма представления информации называется аналоговой или непрерывной (с помощью сходной величины — аналога). Величины, представленные в такой форме, могут принимать принципиально любые значения в каком-то диапазоне. Они могут быть сколь угодно близки друг к другу, малоразличимы, но все-таки, хотя бы в принципе, различимы. Количество значений, которые может принимать такая величина, бесконечно велико. Их бесконечно много даже в случае, когда величина изменяется в ограниченном диапазоне, например 0—2000 или 0—0,0001. Отсюда названия — непрерывная величина и непрерывная информация. Слово непрерывность отчетливо выделяет основное свойство таких величин — отсутствие разрывов промежутков между значениями, которые может принимать данная аналоговая величина.

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

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



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

Система кодирования в ВТ называется двоичным кодированием и основана на представлении данных последовательностью всего двух знаков 0 и 1. Эти знаки называются двоичными цифрами (binary digit) или сокращенно bit (бит). Одним битом могут быть выражены два понятия: 0 или 1, черное или белое, истина или ложь и т. д.. Если количество битов увеличить до двух, то уже можно выразить четыре различных понятия:

00, 01, 10, 11

Тремя битами можно закодировать уже восемь различных значений:

000, 001, 010, 011, 100, 101, 110, 111

Увеличивая на единицу количество разрядов в системе двоичного кодирования, мы увеличиваем в два раза количество значений, которое может быть выражено в данной системе (формула Хартли):

i=log2N;

N=2i,

где N – количество независимых кодируемых значений;

i – разрядность двоичного кодирования.

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

19:2=9(1)

9:2=4(1)

4:2=2(0)

2:2=1(0)

1

1910=100112

Для кодирования целых чисел от 0 до 255 достаточно иметь 8 разрядов двоичного кода (8 бит). 16 бит позволяют закодировать целые числа от 0 до 65535.

Для кодирования действительных чисел их предварительно преобразуют в нормализованную форму:

3.1415926=0,31415926*101

123456789=0,123456789*1010

Первая часть числа называется мантиссой, а вторая характеристикой.

Кодирование текстовых данных

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

Проблема решена для английского языка. Институт стандартизации США (ANSI) ввел в действие систему кодирования ASCII (American Standard Code for Information Interchange) – стандартный код информационного обмена. В системе ASCII закреплены две таблицы кодирования – базовая и расширенная. Базовая закрепляет значения кодов от 0 до 127, расширенная – 128 – 255. 

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

Если кодировать символы не восьмиразрядными двоичными числами, а числами с большим количеством разрядов, то диапазон значений кодов станет значительно больше. Такая система появилась. Она основана на 16-разрядном кодировании и получила название универсальной – UNICODE. Позволяет обеспечить коды для 65536 символов, чего достаточно для размещения в одной таблице большинства языков планеты. Система требует повышенных ресурсов техники – все текстовые документы становятся вдвое длиннее.

Кодирование графических данных

Графические данные кодируются с помощью растра – деления поля на мельчайшие точки – растр. Поскольку линейные координаты и индивидуальные свойства каждой точки (яркость) можно выразить с помощью целых чисел, растровое кодирование позволяет использовать двоичный код для представления графических данных. Для черно-белых изображений считается достаточным иметь комбинации точек с 256 градациями серого цвета и таким образом для кодирования яркости любой точки обычно достаточно 8-разрядного двоичного числа. Для кодирования цвета одной точки нужно затратить 24 разряда. При этом система кодирования обеспечивает 16,5 миллионов различных цветов, что близко к чувствительности человеческого глаза. Такой режим называют полноцветным (True Color). Если уменьшить количество двоичных разрядов до 16, то диапазон цветов снижается до 65536 и такой режим называется High Color. И, наконец, при кодировании цвета с помощью 8 бит данных можно передать 256 цветов. Такой метод называют индексным.

Единицы представления, измерения и хранения данных

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

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

Мы видели, что в некоторых случаях целесообразно использовать 16, 32 разряда. Группа из 16 взаимосвязанных бит (двух байтов) называется словом. Соответственно группы из 4 байтов называются удвоенным словом.

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

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

Более крупная единица – килобайт. Условно можно считать что 1 Кбайт = 1000 байт. Условность в том, что для двоичной системы:

1 Кбайт = 210 байт = 1024 байт;

1 Мбайт = 220 байт = 1024 Кбайт;

1 Гбайт = 230 байт = 1024 Мбайт;

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

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

Хранение файлов организуется в иерархической структуре, которая называется файловой структурой. В качестве вершины структуры служит имя носителя, на котором сохраняются файлы. Далее файлы группируются в каталоги (папки). Путь доступа к файлу начинается с имени устройства и включает все имена папок через которые проходит. В качестве разделителя используется символ \ (обратная косая черта). Уникальность имени файла обеспечивается тем, что полным именем файла считается собственное имя вместе с путем доступа к нему. Форма записи полного имени: 

<имя носителя>:\<имя папки>\...\<имя папки>\<собственное имя >

Технические и программные средства реализации информационных процессов

История развития средств ВТ

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

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

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

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

Джордж Буль занимаясь исследованием законов мышления применил в логике систему формальных обозначений и правил, близкую к математической (первая половина 19 века). Впоследствии эту систему назвали логической или булевой алгеброй. Значение логической алгебры долгое время игнорировалось, поскольку ее приемы и методы не содержали практической пользы для науки и техники того времени. Однако когда появилась возможность создания средств ВТ на электронной основе, операции, введенные Булем оказались очень полезны, так как они изначально ориентировались на работу только с двумя сущностями: истина и ложь. Не вся система была использована, но четыре основные операции: И (пересечение, конъюнкция), ИЛИ (объединение, дизъюнкция), НЕ (обращение или отрицание, ), ИСКЛЮЧАЮЩЕЕ ИЛИ – лежат в основе всех видов процессоров современных компьютеров.

1936 г. Алан Тьюринг и независимо от него Э. Пост выдвинули и разработали концепцию абстрактной вычислительной машины. Они доказали принципиальную возможность решения автоматами любой проблемы при условии возможности её алгоритмизации.

1945 г. Джон фон Нейман в отчёте "Предварительный доклад о машине Эдвак" сформулировал основные принципы работы и компоненты современных компьютеров.

1948 г. В американской фирме Bell Laboratories физики Уильям Шокли, Уолтер Браттейн и Джон Бардин создали транзистор. За это достижение им была присуждена Нобелевская премия.

1952 г. Под руководством С.А. Лебедева в Москве построен компьютер БЭСМ-1 (большая электронная счетная машина) — на то время самая производительная машина в Европе и одна из лучших в мире.

1957 г. Американской фирмой NCR создан первый компьютер на транзисторах.

1958 г. Джек Килби из фирмы Texas Instruments создал первую интегральную схему.

1959 г. Создана машина М-20, главный конструктор С.А. Лебедев. Для своего времени одна из самых быстродействующих в мире (20 тыс. опер./с.). На этой машине было решено большинство теоретических и прикладных задач, связанных с развитием самых передовых областей науки и техники того времени. На основе М-20 была создана уникальная многопроцессорная М-40 — самая быстродействующая ЭВМ того времени в мире (40 тыс. опер./с.). На смену М-20 пришли полупроводниковые БЭСМ-4 и М-220 (200 тыс. опер./с.).

1974 г. Фирма Intel разработала первый универсальный восьмиразрядный микропроцессор 8080 с 4500 транзисторами.

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

1976 г. Студенты Стив Возняк и Стив Джобс, устроив мастерскую в гараже, реализовали компьютер Apple-1, положив начало корпорации Apple.

1981 г. Фирма IBM выпустила первый персональный компьютер IBM PC на базе микропроцессора 8088.

1983 г. Корпорация Apple Computers построила персональный компьютер "Lisa" — первый офисный компьютер, управляемый манипулятором "мышь".

1984 г. Корпорация Apple Computer выпустила компьютер Macintosh — первую модель знаменитого впоследствии семейства Macintosh c удобной для пользователя операционной системой, развитыми графическими возможностями, намного превосходящими в то время те, которыми обладали стандартные IBM-совместимые ПК с MS-DOS. Эти компьютеры быстро приобрели миллионы поклонников и стали вычислительной платформой для целых отраслей, таких например, как издательское дело и образование.



Технические средства реализации информационных процессов

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

Существует два основных класса компьютеров: 

цифровые компьютеры, обрабатывающие данные в виде числовых двоичных кодов;

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

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

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

Любая компьютерная программа представляет собой последовательность отдельных команд. 

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

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

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

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

Устройство компьютера

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

память (запоминающее устройство, ЗУ), состоящую из пронумерованных ячеек;

процессор, включающий в себя устройство управления (УУ) и арифметико-логическое устройство (АЛУ);

устройство ввода;

устройство вывода.

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

Функции памяти: 

приём информации из других устройств;

запоминание информации;

выдача информации по запросу в другие устройства машины.

Функции процессора: 

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

программное управление работой устройств компьютера.

Та часть процессора, которая выполняет команды, называется арифметико-логическим устройством (АЛУ), а другая его часть, выполняющая функции управления устройствами, называется устройством управления (УУ). 

Обычно эти два устройства выделяются чисто условно, конструктивно они не разделены. 

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

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

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

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

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

Некоторые важные регистры имеют свои названия, например: 

сумматор — регистр АЛУ, участвующий в выполнении каждой операции.

счетчик команд — регистр УУ, содержимое которого соответствует адресу очередной выполняемой команды; служит для автоматической выборки программы из последовательных ячеек памяти;

регистр команд — регистр УУ для хранения кода команды на период времени, необходимый для ее выполнения. Часть его разрядов используется для хранения кода операции, остальные — для хранения кодов адресов операндов.

принципы построения компьютеров

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

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

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

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

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

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

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

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

Более того, команды одной программы могут быть получены как результаты исполнения другой программы. На этом принципе основаны методы трансляции — перевода текста программы с языка программирования высокого уровня на язык конкретной машины. 

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

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

Компьютеры, построенные на этих принципах, относятся к типу фон-неймановских. 

архитектура и структура компьютера

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

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

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

Наиболее распространены следующие архитектурные решения. 

· Классическая архитектура (архитектура фон Неймана) — одно арифметико-логическое устройство (АЛУ), через которое проходит поток данных, и одно устройство управления (УУ), через которое проходит поток команд — программа. Это однопроцессорный компьютер. 

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

Физически магистраль представляет собой многопроводную линию с гнездами для подключения электронных схем. Совокупность проводов магистрали разделяется на отдельные группы: шину адреса, шину данных и шину управления. 

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

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

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

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

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

Преимущество в быстродействии многопроцессорных и многомашинных вычислительных систем перед однопроцессорными очевидно.

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

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

В современных машинах часто присутствуют элементы различных типов архитектурных решений. 

центральный процессор

Центральный процессор (CPU, от англ. Central Processing Unit) — это основной рабочий компонент компьютера, который выполняет арифметические и логические операции, заданные программой, управляет вычислительным процессом и координирует работу всех устройств компьютера. 

Центральный процессор в общем случае содержит в себе: 

арифметико-логическое устройство;

шины данных и шины адресов;

регистры;

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

кэш — очень быструю память малого объема (от 256 Кбайт до 4 Мбайт);

математический сопроцессор чисел с плавающей точкой.

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

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

память

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

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

Как правило, в одном машинном слове может быть представлено либо одно целое число, либо одна команда. Однако, допускаются переменные форматы представления информации. 

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

Различают два основных вида памяти — внутреннюю и внешнюю.

В состав внутренней памяти входят оперативная память, кэш-память и специальная память.

Оперативная память

Оперативная память (ОЗУ, англ. RAM, Random Access Memory — память с произвольным доступом) — это быстрое запоминающее устройство не очень большого объёма, непосредственно связанное с процессором и предназначенное для записи, считывания и хранения выполняемых программ и данных, обрабатываемых этими программами. 

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

Объем ОЗУ обычно составляет от 512 Мбайт до 4 Гбайт, а для эффективной работы современного программного обеспечения желательно иметь не менее 1 Гбайт ОЗУ. Обычно ОЗУ исполняется из интегральных микросхем памяти SDRAM (Dynamic RAM — динамическое ОЗУ). Микросхемы SDRAM работают медленнее, чем другие разновидности памяти, но стоят дешевле.

Каждый информационный бит в SDRAM запоминается в виде электрического заряда крохотного конденсатора, образованного в структуре полупроводникового кристалла. Из-за токов утечки такие конденсаторы быстро разряжаются, и их периодически (примерно каждые 2 миллисекунды) подзаряжают специальные устройства. Этот процесс называется регенерацией памяти (Refresh Memory).

Важная характеристика модулей памяти — время доступа к данным.

· Кэш-память

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

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

Кэш-память реализуется на микросхемах статической памяти SRAM (Static RAM), более быстродействующих, дорогих и малоёмких, чем DRAM.

Современные микропроцессоры имеют встроенную кэш-память, так называемый кэш первого уровня. Кроме того, на системной плате компьютера может быть установлен кэш второго уровня .

Специальная память

К устройствам специальной памяти относятся постоянная память (ROM), перепрограммируемая постоянная память (Flash Memory), память CMOS RAM, питаемая от батарейки, видеопамять и некоторые другие виды памяти.

Постоянная память (ПЗУ, англ. ROM, Read Only Memory — память только для чтения) — энергонезависимая память, используется для хранения данных, которые никогда не потребуют изменения. Содержание памяти специальным образом “зашивается” в устройстве при его изготовлении для постоянного хранения. Из ПЗУ можно только читать. 

Перепрограммируемая постоянная память (Flash Memory) — энергонезависимая память, допускающая многократную перезапись своего содержимого с дискеты. 

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

Важнейшая микросхема постоянной или Flash-памяти — модуль BIOS. 

BIOS (Basic Input/Output System — базовая система ввода-вывода) — совокупность программ, предназначенных для: 

автоматического тестирования устройств после включения питания компьютера;

загрузки операционной системы в оперативную память.

Роль BIOS двоякая: с одной стороны это неотъемлемый элемент аппаратуры (Hardware), а с другой строны — важный модуль любой операционной системы (Software). 

Разновидность постоянного ЗУ — CMOS RAM.

CMOS RAM — это память с невысоким быстродействием и минимальным энергопотреблением от батарейки. Используется для хранения информации о конфигурации и составе оборудования компьютера, а также о режимах его работы. 

Содержимое CMOS изменяется специальной программой Setup, находящейся в BIOS (англ. Set-up — устанавливать, читается "сетап"). 

внешняя память

Внешняя память (ВЗУ) предназначена для длительного хранения программ и данных, и целостность её содержимого не зависит от того, включен или выключен компьютер. В отличие от оперативной памяти, внешняя память не имеет прямой связи с процессором. В состав внешней памяти компьютера входят:

накопители на жёстких магнитных дисках;

накопители на гибких магнитных дисках;

накопители на компакт-дисках;

накопители на магнито-оптических компакт-дисках;

накопители на магнитной ленте (стримеры) и др.

Гибкий диск, дискета (англ. floppy disk) — устройство для хранения небольших объёмов информации, представляющее собой гибкий пластиковый диск в защитной оболочке. Используется для переноса данных с одного компьютера на другой и для распространения программного обеспечения. 

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

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

Накопитель связан с процессором через контроллер гибких дисков.

Если гибкие диски — это средство переноса данных между компьютерами, то жесткий диск — информационный склад компьютера. 

Накопитель на жёстких магнитных дисках (англ. HDD — Hard Disk Drive) — это наиболее массовое запоминающее устройство большой ёмкости, в котором носителями информации являются круглые алюминиевые или стеклянные пластины — платтеры, обе поверхности которых покрыты слоем магнитного материала. Используется для постоянного хранения информации — программ и данных. 

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

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

накопители имеют очень большую ёмкость: до сотен Гбайт. У современных моделей скорость вращения шпинделя достигает 10000 оборотов в минуту, среднее время поиска данных — 5-10 мс, скорость передачи данных до 40 Мбайт/с. 

В отличие от дискеты, диск HDD вращается непрерывно. 

накопитель связан с процессором через контроллер жесткого диска. 

Все современные накопители снабжаются встроенным кэшем (8 – 16 Мбайт), который существенно повышает их производительность. 

Накопители на компакт-дисках

CD-R состоит из прозрачной полимерной основы диаметром 12 см и толщиной 1,2 мм. Одна сторона покрыта тонким алюминиевым слоем, защищенным от повреждений слоем лака. Двоичная информация представляется последовательным чередованием углублений (pits — ямки) и основного слоя (land — земля). 

На одном дюйме (2,54 см) по радиусу диска размещается 16 тысяч дорожек с информацией. Для сравнения — на дюйме по радиусу дискеты всего лишь 96 дорожек. Ёмкость CD 700 Мбайт. Информация заносится на диск на заводе и не может быть изменена. 

Достоинства CD-R:

При малых физических размерах CD-R обладают высокой информационной ёмкостью, что позволяет использовать их в справочных системах и в учебных комплексах с богатым иллюстративным материалом; один CD, имея размеры примерно дискеты, по информационному объёму равен почти 500 таким дискетам; 

Считывание информации с CD происходит с высокой скоростью, сравнимой со скоростью работы винчестера; 

CD просты и удобны в работе, практически не изнашиваются;

CD не могут быть поражены вирусами;

На CD-ROM невозможно случайно стереть информацию;

Стоимость хранения данных (в расчете на 1 Мбайт) низкая.

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

Для работы с CD R нужно подключить к компьютеру привод CD-R (CD-R Drive).

Участки CD, на которых записаны символы "0" и "1", отличаются коэффициентом отражения лазерного луча, посылаемого накопителем CD-R. Эти отличия улавливаются фотоэлементом, и общий сигнал преобразуется в соответствующую последовательность нулей и единиц.

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

Программное обеспечение компьютеров

Под программным обеспечением (Software) понимается совокупность программ, выполняемых вычислительной системой. 

К программному обеспечению (ПО) относится также вся область деятельности по проектированию и разработке ПО: 

технология проектирования программ (например, нисходящее проектирование, структурное и объектно-ориентированное проектирование и др.);

методы тестирования программ;

методы доказательства правильности программ;

анализ качества работы программ;

документирование программ;

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

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

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

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

базовый уровень;

системный уровень;

служебный уровень;

прикладной уровень.

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

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

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

Модуль обработки прерываний реализует основные высокоуровневые услуги DOS, поэтому его и называют основным. 

Командный процессор DOS обрабатывает команды, вводимые пользователем. 

Системные программы служат для управления ресурсами компьютера — центральным процессором, памятью, вводом-выводом. 

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

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

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

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

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

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

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

программы оптимизации и контроля качества дискового пространства ;

программы восстановления информации, форматирования, защиты данных ;

коммуникационные программы, организующие обмен информацией между компьютерами;

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

программы для записи DVD, CD-R и многие другие.

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

Прикладная программа — это любая конкретная программа, способствующая решению какой-либо задачи в пределах данной проблемной области. 

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

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

Классификация прикладного ПО самостоятельно.

Назначение и функции операционных систем

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

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

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

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

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

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

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

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

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

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

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

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

Можно попробовать перечислить основные функции операционных систем.

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

	Загрузка в оперативную память подлежащих исполнению программ.

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

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

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

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

	Обслуживание всех операций ввода-вывода.

	Обеспечение работы систем управлений файлами (СУФ) и/или систем управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения.

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

	Планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания.

	Организация механизмов обмена сообщениями и данными между выполняющимися программами.

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

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

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

	Удовлетворение жестким ограничениям на время ответа в режиме реального времени (характерно для операционных систем реального времени).

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

	Предоставление услуг на случай частичного сбоя системы.

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

Понятие операционной среды

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

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

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

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

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

Классификация операционных систем

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

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

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

По режиму обработки задач различают ОС, обеспечивающие однопрограммный и мультипрограммный (мультизадачный) режимы. К однопрограммным ОС относится, например, всем известная, хотя нынче уже практически и не используемая MS DOS. под мультипрограммированием понимается способ организации вычислений, когда на однопроцессорной вычислительной системе создается видимость одновременного выполнения нескольких программ. Любая задержка в решении программы (например, для осуществления операций ввода-вывода данных) используется для выполнения других (таких же либо менее важных) программ. Иногда при этом говорят о мультизадачном режиме, причем термины «мультипрограммный режим» и «мультизадачный режим» — это не синонимы, хотя и близкие понятия. Основное принципиальное отличие этих терминов заключается в том, что мультипрограммный режим обеспечивает параллельное выполнение нескольких приложений, и при этом программисты, создающие эти программы, не должны заботиться о механизмах организации их параллельной работы (эти функции берет на себя сама ОС; именно она распределяет между выполняющимися приложениями ресурсы вычислительной системы, осуществляет необходимую синхронизацию вычислений и взаимодействие). Мультизадачный режим, наоборот, предполагает, что забота о параллельном выполнении и взаимодействии приложений ложится как раз на прикладных программистов. современные ОС для персональных компьютеров реализуют и мультипрограммный, и мультизадачный режимы, поэтому об этом различии часто забывают

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

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

По основному архитектурному принципу операционные системы разделяются на микроядерные и макроядерные (монолитные). В некоторой степени это разделение тоже условно, однако можно в качестве яркого примера микроядерной ОС привести ОСРВ QNX, тогда как в качестве монолитной можно назвать Windows 95/98 и т.д. или ОС Linux. Если ядро ОС Windows мы не можем изменить, нам недоступны его исходные коды и у нас нет программы для сборки (компиляции) этого ядра, то в случае с Linux мы можем сами собрать то ядро, которое нам необходимо, включив в него те программные модули и драйверы, которые мы считаем целесообразным включить именно в ядро (ведь к ним можно обращаться и из ядра).

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

Организация внешней памяти на магнитных дисках

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

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

Основные понятия

За счет того, что при вращении диска магнитная головка, зафиксированная на некоторое время в определенном положении, образует окружность (дорожку — track), блоки данных на таких окружностях называют секторами (sectors). С некоторых пор размер сектора стал стандартным и в абсолютном большинстве случаев он равен 512 байт хранимых данных. Все сектора пронумерованы, и помимо данных пользователя на магнитных дисках размещается и служебная информация, с помощью которой можно находить искомый сектор. Служебная информация, как правило, располагается в межсекторных промежутках. Группы дорожек (треков) одного радиуса, расположенные на поверхностях магнитных дисков, образуют так называемые цилиндры (cylinders). Современные жесткие диски могут иметь по нескольку десятков тысяч цилиндров. Выбор конкретной дорожки в цилиндре осуществляется указанием порядкового номера той головки (head) чтения/записи данных, которая и образует эту дорожку. Таким образом, адрес конкретного блока данных указывается с помощью уже упоминавшихся трех координат C-H-S — номеров цилиндра, головки и сектора. Устройство управления НЖМД обеспечивает позиционирование блока головок на нужный цилиндр, выбирает заданную поверхность и находит требуемый сектор. Второй способ адресации блоков данных основывается на том, что все блоки (секторы) пронумерованы.

Логическая структура магнитного диска

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

Следует, однако, заметить, что не во всех операционных системах используется понятие логического диска. Так, UNIX-системы не имеют логических дисков.

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

Для того чтобы системное программное обеспечение получило информацию о том, как организовано хранение данных на каждом конкретном накопителе, нужно разместить в одном из секторов соответствующие данные. Даже если НЖМД используется как единственный логический диск, все равно нужно указать, что имеется всего один диск, и его размер. Структура данных, несущая информацию о логической организации диска, вместе с небольшой программой, с помощью которой можно ее проанализировать, а также найти и загрузить в оперативную память программу загрузки операционной системы, получила название главной загрузочной записи (Master Boot Record, MBR). MBR располагается в самом первом секторе НЖМД, то есть в секторе с координатами 0-0-1. Программа, расположенная в MBR, носит название внесистемного загрузчика (Non-System Bootstrap, NSB). Вследствие того, что сектор состоит только из 512 байт и помимо программы в нем должна располагаться информация об организации диска, внесистемный загрузчик очень прост, а структура данных, называемая таблицей разделов (Partition Table, РТ), занимает всего 64 байт. Каждый элемент этой таблицы описывает один раздел, причем двумя способами: через координаты C-H-S начального и конечного секторов, а также через номер первого сектора в спецификации LBA (Logical Block Addressing) и общее число секторов в разделе. 

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

Разделы диска могут быть двух типов: первичные (primary) и расширенные (extended). Если первичных разделов несколько, то только один из них может быть активным. Именно загрузчику, расположенному в активном разделе, передается управление при включении компьютера с помощью внесистемного загрузчика.

Согласно принятым спецификациям на одном жестком диске может быть только один расширенный раздел, который, в свою очередь, может быть разделен на большое количество подразделов — логических дисков (logical disks). Расширенный раздел содержит вторичную запись MBR (Secondary MBR, SMBR), в состав которой вместо таблицы разделов входит аналогичная ей таблица логических дисков (Logical Disks Table, LDT). 

Вслед за сектором MBR размещаются собственно сами разделы. В процессе начальной загрузки сектора MBR, содержащего таблицу разделов, работают программные модули BIOS. Начальная загрузка считается выполненной корректно только в том случае, если таблица разделов содержит допустимую информацию. Процедура начальной загрузки (bootstrap loader) определяет первое готовое устройство из списка разрешенных и доступных и пытается загрузить с него в оперативную память короткую главную программу - загрузчик. Для накопителей на жестких магнитных дисках — это уже известный нам главный, или внесистемный, загрузчик (NSB) из MBR, и ему передается управление. Главный загрузчик определяет на диске активный раздел, загружает его собственный системный загрузчик и передает управление ему. И, наконец, этот загрузчик находит и загружает необходимые файлы операционной системы и передает ей управление. Далее операционная система выполняет инициализацию подведомственных ей программных и аппаратных средств. Она добавляет новые сервисы, вызываемые, как правило, тоже через механизм программных прерываний, и расширяет (или заменяет) некоторые сервисы BIOS.

Согласно рассмотренному процессу, каждый раз при запуске компьютера будет загружаться одна и та же операционная система. Это не всегда нас может устраивать. Так называемые менеджеры загрузки (boot managers) предназначены для того, чтобы пользователь мог выбрать среди нескольких установленных на компьютере операционных систем желаемую и передать управление на загрузчик выбранной ОС. Имеется большое количество таких менеджеров. Одним из наиболее мощных менеджеров загрузки является OS Selector от фирмы Acronis. Эта программа имеет следующие основные особенности:

поддержка большого количества операционных систем, включая различные версии DOS (MS DOS, DR-DOS и др.), Windows (9х/МЕ, NT/2000/XP), OS/2, Linux, FreeBSD, SCO Unix, BeOS и др.;

	возможность установки на любой раздел FAT16/FAT32, в том числе и на отдельный раздел, недоступный другим операционным системам;

	возможность с помощью меню загрузки, предоставляемого менеджером, осуществить загрузку с дискеты;

	автоматическая идентификация операционных систем как на первичных разделах, так и на логических дисках расширенного раздела всех НЖМД, доступных через BIOS компьютера;

	поддержка нескольких операционных систем на одном разделе FAT16/FAT32, при этом предотвращаются конфликты по системным и конфигурационным файлам для систем, установленных на одном разделе;

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

	встроенная защита от загрузочных вирусов;

	легкое восстановление в случае повреждения MBR;

	поддержка больших жестких дисков во всех режимах современных подсистем BIOS;

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

Формирование таблицы разделов осуществляется с помощью специальных утилит. Обычно их называют FDisk (от слов «Form Disk» — формирование диска). Хотя есть и иные программы, которые могут делать с разделами намного больше, чем простейшие утилиты FDisk от Microsoft. в последнее время появилось большое количество утилит, которые предоставляют возможность более наглядно представить разбиение диска на разделы, поскольку в них используется графический интерфейс. Эти программы успешно и корректно работают с наиболее распространенными типами разделов (разделы под FAT, FAT32, NTFS). Однако созданы они в основном для работы в среде Win32API, что часто ограничивает возможность их применения. Одной из самых известных и мощных программ для работы с разделами жесткого диска является Partition Magic фирмы Power Quest.

Еще одной мощной утилитой такого рода является Администратор дисков, входящий в состав уже упоминавшегося менеджера загрузки OS Selector от Acronis. Эта утилита позволяет:

	создавать разделы любых типов и форматировать их под файловые системы FAT 16, FAT32, NTFS, Ext2FS (Linux), Linux ReiserFS, Linux Swap, при этом можно выбирать точное или произвольное расположение раздела и указывать его параметры;

	получать подробную информацию о разделах и о самих жестких дисках;

	удалять любые разделы;

	преобразовывать разделы из FAT 16 в FAT32 и обратно;

	копировать и перемещать разделы с FAT16, FAT32, NTFS, Linux Ext2FS, Linux ReiserFS и Linux Swap;

	изменять размеры разделов с вышеперечисленными файловыми системами;

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

	посекторно редактировать содержимое жестких дисков и разделов с помощью встроенного многооконного редактора дисков.

Утилиты формирования дисков первым элементом таблицы разделов всегда делают первичный раздел. Вторым элементом становится расширенный раздел, в котором, в свою очередь, организуется один или несколько логических дисков. При этом создаваемые логические диски помимо известного буквенного именования (диски С:, D:, Е: и т. д.) получают еще и так называемые номера разделов. Диск С: получает в этом случае порядковый номер 1, диск D: — 2, диск Е: — 3, и т. д. Именно номера разделов используются в файле boot.ini, который указывает системному загрузчику Windows NT/2000/XP, где находятся файлы выбранной операционной системы.

Файловые системы

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

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

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

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

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



Функции файловой системы и иерархия данных

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

Благодаря системам управления файлами пользователям предоставляются следующие возможности:

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

	работа с недисковыми периферийными устройствами как с файлами;

	обмен данными между файлами, между устройствами, между файлом и устройством (и наоборот);

	работа с файлами путем обращений к программным модулям системы управления файлами (часть API ориентирована именно на работу с файлами);

	защита файлов от несанкционированного доступа.

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

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

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

Файловая система FAT

Файловая система FAT (File Allocation Table — таблица размещения файлов) получила свое название благодаря простой таблице, в которой указываются:

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

	свободные области дискового пространства;

	дефектные области диска (эти области содержат дефектные участки и не гарантируют чтение и запись данных без ошибок).

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

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

	загрузочной записи (Boot Record, BR);

	зарезервированных секторов (Reserved Sectors, ResSec);

	таблицы размещения файлов (File Allocation Table, FAT);

	корневого каталога (Root Directory, RDir).

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

Таблица размещения файлов

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

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

Каждый файл занимает целое число кластеров. Последний кластер при этом может быть задействован не полностью, что при большом размере кластера может приводить к заметной потере дискового пространства. Для указания номера кластера в файловой системе FAT16 используется 16-разрядное слово, следовательно, можно иметь до 216 = 65 536 кластеров (с номерами от 0 до 65 535).

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

	прежде всего, уменьшается размер самой таблицы FAT;

	уменьшается возможная фрагментация файлов;

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

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

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

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

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

Корневой каталог отличается от обычного файла-каталога тем, что он помимо размещения в фиксированном месте логического диска имеет еще и фиксированное число элементов.

Файловая система FAT32

Одной из важнейших характеристик исходной файловой системы FAT было использование имен файлов формата 8.3. К стандартной системе FAT (имеется в виду прежде всего реализация FAT 16) добавилась еще система FAT32, используемая в последней редакции ОС Windows 95 и Windows 98. Ныне файловая система FAT32 поддерживается и такими последними системами, как Windows Millennium Edition, Windows 2000 и Windows XP. Имеются реализации FAT32 и для Windows NT, и для Linux.

Основными недостатками файловых систем FAT, которые привели к разработке новой реализации файловой системы, основанной на той же идее (таблице размещения файлов), являются большие потери на кластеризацию при больших размерах логического диска и ограничения на сам размер логического диска. Поэтому в Microsoft Windows 95 OEM Service Release 2 на смену системе FAT пришла файловая система FAT32, которая является полностью самостоятельной 32-разрядной файловой системой и содержит многочисленные усовершенствования и дополнения по сравнению с предыдущими реализациями FAT. Самое принципиальное отличие заключается в том, что FAT32 намного эффективнее расходует дисковое пространство. Прежде всего, кластеры в этой системе меньше, чем кластеры в предыдущих версиях, в которых могло быть не более 65 535 кластеров на логический диск (соответственно с увеличением размера диска приходилось увеличивать и размер кластеров). Следовательно, даже для дисков размером до 8 Гбайт FAT32 может использовать 4-килобайтные кластеры. В результате по сравнению с дисками FAT16 экономится значительное дисковое пространство (в среднем 10-15 %). В FAT32 проблема решается за счет того, что собственно сама таблица размещения файлов в этой файловой системе может содержать до 228 кластеров2.

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

Вместе с адресными данными в таблице FAT хранятся атрибуты файла. Шесть из восьми указанных разрядов используются DOS. Они перечислены ниже.

 □ A (Archive — архив). Показывает, что файл был открыт программой таким образом, чтобы у нее была возможность изменить содержимое этого файла. DOS устанавливает этот разряд при открытии файла

	D (Directory — каталог). Показывает, что данный элемент каталога указывает на подкаталог, а не на файл.

	V (Volume — том). Применяется только к одному элементу каталога в корневом каталоге. В нем собственно и хранится имя дискового тома. Этот атрибут также применяется в случае длинных имен файлов.

	S (System — системный). Показывает, что файл является частью операционной системы или специально отмечен подобным образом прикладной программой, что иногда делается для защиты от копирования.

	Н (Hidden — скрытый). К скрытым относятся также файлы с установленным атрибутом S (системный), которые не отображаются по команде DIR.

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

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



Файловая система NTFS

В название файловой системы NTFS (New Technology File System - файловая система новой технологии) входят слова «новая технология». Действительно, файловая система NTFS по сравнению с широко известной FAT 16 (и даже FAT32) содержит ряд значительных усовершенствований и изменений. С точки зрения пользователей файлы по-прежнему хранятся в каталогах, ныне при работе в среде Windows часто называемых папками (folders). Однако в ней появилось много новых особенностей и возможностей.

Основные возможности файловой системы NTFS

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

Надежность

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

Ограничения доступа к файлам и каталогам

Файловая система NTFS поддерживает объектную модель безопасности операционной системы Windows NT и рассматривает все тома, каталоги и файлы как самостоятельные объекты. Система NTFS обеспечивает безопасность на уровне файлов и каталогов. Это означает, что разрешения доступа к томам, каталогам и файлам могут зависеть от учетной записи пользователя и тех групп, к которым он принадлежит. Каждый раз, когда пользователь обращается к объекту файловой системы, его разрешения на доступ проверяются по уже упоминавшемуся списку управления доступом (ACL) для данного объекта. Если пользователь обладает необходимым уровнем разрешений, его запрос удовлетворяется; в противном случае запрос отклоняется. 

Расширенная функциональность

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

Поддержка дисков большого объема

Система NTFS создавалась с расчетом на работу с большими дисками. Она уже достаточно хорошо проявляет себя при работе с томами объемом 300-400 Мбайт и выше. Чем больше объем диска и чем больше на нем файлов, тем больший выигрыш мы получаем, используя NTFS вместо FAT 16 или FAT32. Максимально возможные размеры тома (и размеры файла) составляют 16 Эбайт (один экзабайт равен 264 байт, или приблизительно 16 000 млрд гигабайт), в то время как при работе под Windows NT/2000/XP диск с FAT 16 не может иметь размер более 4 Гбайт, а с FAT32 — 32 Гбайт. Количество файлов в корневом и некорневом каталогах при использовании NTFS не ограничено. Поскольку в основу структуры каталогов NTFS заложена эффективная структура данных, называемая «двоичным деревом», время поиска файлов в NTFS не связано линейной зависимостью с их количеством (в отличие от систем на базе FAT). Наконец, помимо немыслимых размеров томов и файлов, система NTFS также обладает встроенными средствами сжатия, что позволяет экономить дисковое пространство и размещать в нем больше файлов. Напомним, что сжатие можно применять как к отдельным файлам, так и целым каталогам и даже томам (и впоследствии отменять или назначать их по своему усмотрению).

Алгоритмизация и программирование

Понятие алгоритма

Для составления программы, предназначенной для решения на ЭВМ какой-либо задачи, требуется составление алгоритма ее решения.

Алгоритм – это точное предписание, которое определяет процесс, ведущий от исходных данных к требуемому конечному результату. Слово алгоритм происходит от имени математика 9 века Аль-Хорезми.

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

Понятность для исполнителя — т.е. исполнитель алгоритма должен знать, как его выполнять. 

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

Определенность (Детерминированность) — т.е. каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический хаpактеp и не требует никаких дополнительных указаний или сведений о решаемой задаче. 

Результативность (или конечность). Это свойство состоит в том, что алгоритм должен приводить к решению задачи за конечное число шагов. 

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

Для задания алгоритма необходимо описать следующие его элементы:

набор объектов, составляющих совокупность возможных исходных данных, промежуточных и конечных результатов;

правило начала;

правило непосредственной переработки информации (описание последовательности действий);

правило окончания;

правило извлечения результата.

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

Способы описания алгоритмов

На практике наиболее распространены следующие формы представления алгоритмов: 

словесная (записи на естественном языке);

графическая (изображения из графических символов);

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

программная (тексты на языках программирования).

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

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

Например. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел. 

Алгоритм может быть следующим: 

задать два числа;

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

определить большее из чисел;

заменить большее из чисел разностью большего и меньшего из чисел;

повторить алгоритм с шага 2.

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

Словесный способ не имеет широкого распространения по следующим причинам: 

такие описания строго не формализуемы;

страдают многословностью записей;

допускают неоднозначность толкования отдельных предписаний.

Графический способ записи алгоритмов

Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным. 

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

Такое графическое представление называется схемой алгоритма или блок-схемой. 

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

Наименование

Обозначение

Функция

процесс



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

Ввод-вывод



преобразование данных в форму, пригодную для обработки (ввод) или отображение результатов обработки (вывод)

решение



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

предопределенный процесс



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

пуск-останов



Начало, конец, прерывание процесса обработки данных



Псевдокод

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

Он занимает промежуточное место между естественным и формальным языками. 

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

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

Базовые алгоритмические структуры

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

последовательность двух и более операций;

выбор направления;

повторение.

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

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

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

Пример:





1 Начало

2 Ввод

a, b, c

3



4



5



6 Вывод y

7 Окончание

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

Пример:

1 Начало

2 Ввод

a, b, c, х

5



6 Вывод y

7 Окончание

3



4   



3. Базовая структура цикл. Цикл – это многократно повторяемый участок программы. В организации цикла можно выделить следующие этапы:

подготовка (инициализация) цикла (И)

выполнение вычислений цикла (тело цикла) (Т);

модификация параметров (М);

проверка условия окончания цикла (У);

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



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

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

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

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

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

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

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

Этапы подготовки и решения задач на ЭВМ

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

постановка задачи;

математическое описание задачи;

выбор и обоснование метода решения;

алгоритмизация вычислительного процесса;

составление программы;

отладка программы;

решение задачи на ЭВМ и анализ результатов.

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

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

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

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

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

Составление программы. При составлении программы алгоритм решения задачи переводится на конкретный язык программирования. Для программирования обычно используется язык высокого уровня, поэтому составленная программа требует перевода ее на машинный язык.

Отладка программы. Заключается в поиске и устранении синтаксических и логических ошибок в программе.

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

Языки программирования

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

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

По этому критерию можно выделить следующие уровни языков программирования: 

машинные;

машинно-оpиентиpованные (ассемблеры);

машинно-независимые (языки высокого уровня).

Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных. 

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

Языки высокого уровня делятся на: 

алгоритмические (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов.;

логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания.

объектно-ориентированные (Object Pascal, C++, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами. 

Структура объектно-ориентированной модели графически представима в виде дерева, узлами которого являются объекты. Свойства объектов описываются некоторым стандартным типом (например, строковым — string) или типом, конструируемым пользователем (определяется как class).

Значением Свойства типа string является строка символов. Значение свойства типа class есть объект, являющийся экземпляром соответствующего класса. Каждый объект-экземпляр класса считается потомком объекта, в котором он определен как свойство. Объект-экземпляр класса принадлежит своему классу и имеет одного родителя. Родовые отношения в представленной модели образуют связную иерархию объектов.

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

Инкапсуляция ограничивает область видимости имени свойства пределами того объекта, в котором оно определено. Смысл такого свойства будет определяться тем объектом, в который оно инкапсулировано.

Наследование, наоборот, распространяет область видимости свойства на всех потомков объекта. Если необходимо расширить действие механизма наследования на объекты, не являющиеся непосредственными родственниками (например, между двумя потомками одного родителя), то в их общем предке определяется абстрактное свойство типа abs

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

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

Преимущества алгоритмических языков перед машинными

Основные преимущества: 

алфавит алгоритмического языка значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы;

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

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

требуемые операции задаются с помощью общепринятых математических обозначений;

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

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

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

Компоненты, образующие алгоритмический язык

Алгоритмический язык (как и любой другой язык) образуют три его составляющие: 

алфавит, синтаксис и семантика.

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

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

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

Понятия, используемые алгоритмическим языком

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

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

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

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

Опеpации. Типы операций: 

аpифметические опеpации + , - , * , / и дp. ;

логические опеpации и, или, не;

опеpации отношения < , > , <=, >= , = , <> ;

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

Данные — величины, обpабатываемые пpогpаммой. Имеется тpи основных вида данных: константы, пеpеменные и массивы. 

Константы — это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения. 

Пpимеpы констант: 

числовые 7.5, 12;

логические да (истина), нет (ложь);

символьные "А", "+";

литеpные "abcde", "информатика", "" (пустая строка).

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

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

Выражения — предназначаются для выполнения необходимых вычислений, состоят из констант, переменных, указателей функций (напpимеp, exp(x)), объединенных знаками операций. 

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

Различают выражения арифметические, логические и строковые. 

Арифметические выражения служат для определения одного числового значения. Например, (1+sin(x))/2. Значение этого выражения при x=0 равно 0.5, а при x=p/2 - единице.

Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения — "истина" или "ложь" (да или нет). Рассмотрим в качестве примера логическое выражение x*x + y*y < r*r , определяющее принадлежность точки с координатами (x,y) внутренней области круга радиусом r c центром в начале координат. При x=1, y=1, r=2 значение этого выражения — "истина", а при x=2, y=2, r=1 — "ложь".

Значения строковых (литерных) выражений — текcты. В них могут входить литерные константы, литерные переменные и литерные функции, разделенные знаком операции сцепки. Например, А & В означает присоединение строки В к концу строки А. Если А = "куст ", а В = "зеленый", то значение выражения А&В есть "куст зеленый".

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

ключевые слова;

данные;

выражения и т.д.

Операторы подразделяются на исполняемые и неисполняемые. Неисполняемые операторы предназначены для описания данных и стpуктуpы пpогpаммы, а исполняемые — для выполнения различных действий (напpимеp, опеpатоp присваивания, опеpатоpы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и дp.).

Стандартная функция

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

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

В качестве аргументов функций можно использовать константы, переменные и выражения. Например:   

sin(3.05) 
min(a, 5)

 sin(x) 
 min(a, b)

sin(2*y+t/2) 
min(a+b, a*b)

sin((exp(x)+1)**2) 
min(min(a,b),min(c,d))

Каждый язык программирования имеет свой набор стандартных функций.

Запись арифметических выражений

Арифметические выражения записываются по следующим правилам: 

Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.

Индексы элементов массивов записываются в квадратных (школьный АЯ, Pascal) или круглых (Basic) скобках.

Для обозначения переменных используются буквы латинского алфавита.

Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь — сложение и вычитание.

Операции одного старшинства выполняются слева направо. 

Запись логических выражений

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



27



1