Лекция "Метод доступа в сетях Ethernet"

  • Лекции
  • docx
  • 14.03.2017
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Этот метод доступа, разработанный фирмой Xerox в 1975 году, пользуется наибольшей популярностью. Он обеспечивает высокую скорость передачи данных и надежность. Сообщение, отправляемое одной рабочей станцией, принимается одновременно всеми остальными. Сообщение включает в себя адрес станции назначения и адрес станции отправителя. Та станция, которой предназначено сообщение, принимает его, остальные игнорируют. Метод доступа в сетях Ethernet является методом множественного доступа с прослушиванием несущей и разрешением коллизий (конфликтов) (CSMA/CD - Carrier Sense Multiple Access/Collision Detection)
Иконка файла материала Метод доступа в сетях Ethernet.docx
Метод доступа в сетях Ethernet     Этот метод доступа, разработанный фирмой Xerox в 1975 году, пользуется наибольшей    популярностью. Он обеспечивает высокую скорость передачи данных и надежность.     Сообщение, отправляемое одной рабочей станцией, принимается одновременно всеми остальными.  Сообщение включает   в  себя адрес станции назначения и адрес станции отправителя. Та   станция,    которой  предназначено  сообщение, принимает его, остальные игнорируют.     Метод доступа в сетях Ethernet  является   методом   множественного доступа с     прослушиванием    несущей  и  разрешением  коллизий (конфликтов) (CSMA/CD ­ Carrier Sense Multiple Access/Collision  Detection)      Перед началом передачи рабочая станция определяет,  свободен канал или занят. Если канал  свободен, станция начинает передачу. Ethernet не  исключает  возможности  одновременной  передачи  сообщений двумя     или   несколькими   станциями.    Аппаратура автоматически распознает такие  конфликты, называемые коллизиями. После обнаружения   конфликта  станции  задерживают  передачу  на некоторое время, затем передача возобновляется.     Реально конфликты приводят к уменьшению быстродействия  сети только в том случае, если в сети  работают не менее 80­100 станций. ТЕХНОЛОГИЯ ETHERNET     Технология Ethernet стала базой спецификации IEEE 802.3, которая была опубликована в 1980 году.  Вскоре после этого компании DEC, Intel и Xerox совместно разработали и приняли вторую версию  спецификации Ethernet, совместимую с IEEE 802.3. В настоящее время термин Ethernet чаще всего  используют для описания всех локальных сетей, работающих в соответствии с принципами CSMA/CD  ­ множественного доступа с контролем несущей и обнаружением коллизий, что соответствует  спецификации Ethernet IEEE 802.3.     В технологии Ethernet данные могут передаваться по коаксиальному или оптическому кабелю, а  также через витую пару. Приведем основные спецификации Ethernet.     • 10Base2 ­ стандарт сегмента сети Ethernet на тонком коаксиальном кабеле. Обеспечивает скорость  передачи 10 Мбит/с и использует тонкий, гибкий коаксиальный кабель. Этот стандарт известен как  "тонкий Ethernet".      • 10Base5 ­ стандарт сегмента сети Ethernet на толстом коаксиальном кабеле. Как и первая версия  Ethernet, эта спецификация в качестве среды передачи предусматривает толстый коаксиальный кабель.  Из­за этого спецификацию называют "толстым Ethernet".      • 10BaseT ­ стандарт сегмента сети Ethernet на витой паре. Эта разновидность Ethernet получила  наибольшее распространение. 10BaseT использует топологию звезды, в которой каждый узел соединен с центральным концентратором или многопортовым повторителем. Применение дешевых кабелей  является одним из основных преимуществ l0BaseT по сравнению со спецификациями 10Base2 и  10Base5.      • 10BaseFX ­ стандарт сегмента сети Ethernet на оптоволоконном кабеле. Применение  оптоволоконной технологии приводит к высокой стоимости комплектующих. Однако  нечувствительность к электромагнитным помехам позволяет использовать спецификацию в особо  ответственных случаях и для связи далеко расположенных друг от друга объектов.     Fast Ethernet ­ высокоскоростная разновидность сети Ethernet, обеспечивающая скорость передачи  100 Мбит/с (удовлетворяет доработанному стандарту IEEE 802.3, стандарт утвержден в 1995 году).1.3 Характерные черты информационного общества. Под  информатизацией   общества  понимают   организованный   социально­экономический   и научно­технический   процесс   создания   оптимальных   условий   для   удовлетворения   информационных потребностей   и   реализации   прав   физических   и   юридических   лиц   на   основе   формирования   и использования информационных ресурсов – документов в различной форме представления. Характерными чертами информационного общества являются следующие: 1. решена   проблема   информационного   кризиса,   когда   устранено   противоречие   между информационной лавиной и информационным голодом;  2. обеспечен приоритет информации перед другими ресурсами;  3. главная форма развития общества – информационная экономика;  4. в   основу   общества   закладывается   автоматизированная   генерация,   хранение,   обработка   и использование знаний с помощью новейшей информационной техники и технологии;  5. информационные   технологии   приобретают   глобальный   характер,   охватывая   все   сферы социальной деятельности человека;  6. формируется информационное единство всей человеческой цивилизации;  7. с   помощью   средств   информатики   реализован   свободный   доступ   каждого   человека   к информационным ресурсам всей цивилизации;  8. реализованы   гуманистические   принципы   управления   обществом   и   воздействия   на окружающую среду.  Помимо   перечисленных   положительных   результатов   процесса   информатизации   общества, возможны и негативные тенденции, сопровождающие этот процесс: 1. все большее влияние приобретают средства массовой информации;  2. информационные технологии могут разрушить частную жизнь человека;  3. существенное   значение   приобретает   проблема   качественного   отбора   достоверной информации;  4. некоторые люди испытывают сложности адаптации к информационному обществу.  Информацию по области возникновения можно разделить на следующие виды:   техническая информация ­ документированная информация, возникающая в результате  научного и технического развития, а также информация, в которой нуждаются руководители, научные,  инженерные и технические работники в процессе своей деятельности, включая специализированную  экономическую и нормативно­правовую информацию.  биологическая информация – информация, циркулирующая в живой в природе и  формирующая ее структуры. социальная информация ­ совокупность знаний, сведений, данных и сообщений, которые  формируются и воспроизводятся в обществе и используются индивидами, группами, организациями,  различными социальными институтами для регулирования социального взаимодействия, общественных  отношений и процессов Информационная система является средой, составляющими элементами которой являются компьютеры,   компьютерные   сети,   программные   продукты,   базы   данных, люди,   технические   и программные средства связи и т.д. Основная цель информационной системы – организация хранения и передачи информации. Прямой код. Дробная часть числа остается без изменений, в знаковом разряде записывается единица. Пример 19.  X=­,101101; [X]пр = 1,101101. Обратный   код. В   дробной   части   числа   единицы   заменяются   нулями,   а   нули   единицами (производится инверсия числа по разрядам). В знаковом разряде записывается единица. Пример 20. X=­0,101101; [X]обр = 1,010010. Дополнительный код. Образуется дополнением единицы к младшему разряду обратного кода отрицательного числа.  Пример 21.  X=­0,101101; [X]обр = 1,010010; [X]доп = 1,010011.При   выполнении   арифметических   операций   вычитания   (в   общем   случае   алгебраического сложения)   числа   представляются   в   обратном   или     дополнительном   кодах.   Затем   коды   чисел складываются,   в   результате   чего   получается     обратный     (дополнительный)   код   суммы.     При необходимости записи результата в запоминающее устройство его переводят в прямой код. Получение обратного и дополнительного кодов из прямого, а также обратное   преобразование не представляют больших трудностей. Пусть необходимо сложить два числа X1 = +0,0101 и X2 = ­0,1001. Напрямую было бы необходимо:  произвести  логические  и арифметические операции:  оценку модулей  и знаков чисел, выбор большего модуля,  вычитание меньшего, присвоение результату знака числа, имеющего больший модуль.  Получим в итоге В случае применения обратного или дополнительного кодов операция алгебраического сложения сводится к простому сложению всех разрядов, включая знаковый X1 + X2 = 0,0101 ­ 0,1001 = ­0,0100. [X1]обр = 0,0101          [X1]доп = 0,0101 [X2]обр = 1,0110          [X2]доп = 1,0111 [X1 + X2]обр = 1,1011          [X1 + X2]доп = 1,1100 [X1 + X0]пр  = 1,0100         [X1 + X2]обр = 1,1011      [X1 + X2]пр  = 1,0100 X1 + X2 = ­0,0100. Если при сложении есть перенос единицы в знаковой  разряд, то в обратном коде эта единица добавляется к   младшему   разряду   суммы   (циклический   перенос),     а     в   дополнительном   коде отбрасывается. Пример 22. Сложить два числа: X = ­,0101 и X = +0,1001. [X1]обр = 1,1010       [X1]доп = 1,1011 [X2]обр = 0,1001       [X2]доп = 0,1001 [X1 + X2]обр = 10,0011        [X1 + X2]доп = 10,0100    единицу в знаковом разряде    отбрасываем [X1 + X2]обр = 0,0100        [X1 + X2]доп = 0,0100. Так как получилось положительное число, то перевод в прямой код не требуется. Таким образом, в цифровых вычислительных машинах все арифметические операции сводятся к  операции сложения.Цель информационной технологии – производство информации для ее анализа человеком и  Информационная технология принятия на его основе решения по выполнению какого­либо действия. Применяя разные технологии переработки информации, можно получить различные результаты. Основными составляющими информационных технологий являются: ­ сбор данных или первичной информации; ­ обработка данных и получение результатной информации; ­ передача результатной информации пользователю для принятия на ее основе решений. Информационная   технология  является   важной   составляющей   процесса   использования информационных   ресурсов   общества.   К   настоящему   времени   она   прошла   несколько   эволюционных этапов,   смена   которых   определяется   главным   образом   развитием   научно­технического   процесса, появлением новых технических средств переработки информации. Основным техническим средством технологии   переработки   информации   является   персональный   компьютер,   который   существенно повлиял как на концепцию построения и использования технологических процессов, так и на качество результатной   информации.   Внедрение   персонального   компьютера   и   применение телекоммуникационных средств связи определили новый этап развития информационной технологии, на котором она получила название “новая информационная технология”. В новые информационные технологии  включены  коммуникационные  технологии,  которые  обеспечивают передачу информации разными   средствами   (телефон,   телеграф,   телекоммуникации,   факс   и   др.).   Таким   образом,  новая информационная технология – информационная технология с “дружественным” интерфейсом работы пользователя, использующая персональные компьютеры и телекоммуникационные средства. Основные принципы новой (компьютерной) информационной технологии включают: ­ интерактивный (диалоговый) режим работы с компьютером; ­ взаимосвязь с другими программными продуктами; ­ гибкость процесса изменения как данных, так и постановок задач. Реализация   информационных   технологий   осуществляется   с   помощью   технических   средств производства информации, которыми являются: ­ аппаратное обеспечение; ­ программное обеспечение; ­ математическое обеспечение. С их помощью производится переработка первичной информации нового качества.  Рассмотрим   программное   обеспечение.   Оно   представляет   собой   один   или   несколько взаимосвязанных программных продуктов для определенного типа компьютера, технология работы в котором позволяет пользователю достичь поставленной цели. В качестве программного обеспечения могут   быть   использованы   следующие   распространенные   виды   программных   продуктов   для персонального   компьютера:   текстовой   процессор,   настольные   издательские   системы,   электронные таблицы, системы управления базами данных, электронные записные книжки, электронные календари, информационные системы функционального назначения (финансовые, бухгалтерские, маркетинговые и пр.), экспертные системы и др. Информационная технология тесно связана с информационными системами, которые являются для   нас   основной   средой.   При   кажущемся   сходстве   определений   информационной   системы   и информационной технологии это различные понятия. Информационная   технология   является   процессом, состоящим   из   четко   регламентированных правил выполнения операций, действий над данными, хранящимися в компьютерах. Основная цель в информационных   технологиях   –   получение   необходимой   пользователю   информации   в   результате целенаправленных действий по переработке информации. Информационная система является средой, составляющими элементами которой являются компьютеры,   компьютерные   сети,   программные   продукты,   базы   данных, люди,   технические   и программные средства связи и т.д. Основная цель информационной системы – организация хранения и передачи информации. Реализация   функций   информационной   системы   невозможна   без   знания   информационной технологии,  ориентированной   на  информационную   систему.   Информационная  технология   не  может существовать и вне сферы информационной системы.Таким   образом,   обобщая   вышесказанное,   можно   предложить   следующие   определения информационной системы и технологии переработки информации средствами компьютерной техники. Информационные   технологии   –  процесс,   использующий   совокупность   средств   и   методов сбора, обработки и передачи данных для получения информации нового качества о состоянии объекта, процесса или явление.  Информационная система – взаимосвязанная совокупнность средств, методов и персонала,  используемая для хранения, обработки и выдачи Классификация информационных технологий Функциональная   часть   любой   информационной   системы   связана   с   предметной   областью   и понятием информационных технологий. Например, технология выдачи кредита банком может иметь свои   особенности   в   зависимости   от   вида   кредита,   залога   и   т.д.   и   работает   с   соответствующей информацией. Информационные технологии различаются по типу обрабатываемой информации: ­ данные;­ тексты;­ графические документы;­ знания;­ объекты реального мира. Классификация информационных технологий по этому признаку приведена на рис. 1.3. Выделение,   предложенное   на   этом   рисунке,   условное,   так   как   большинство   технологий позволяет поддерживать и другие виды информации. Так, в текстовых процессорах предусмотрена возможность выполнения простых расчетов, а табличные процессоры могут обрабатывать не только цифровую, но и текстовую информацию, и даже графическую. Однако каждая из этих технологий в полном объеме сосредоточена на обработке информации определенного типа. Информационные технологии можно разделить на обеспечивающие и функциональные. Обеспечивающие   информационные   технологии  –   технологии   обработки   информации, которые могут использоваться в различных предметных областях для решения различных задач. Эти технологии   могут   быть   классифицированы   по   типу   задач,   на   которые   они   ориентированы. Обеспечивающие   технологии   могут   базироваться   на   различных   видах   компьютеров   и   программных  Функциональная   информационная   технология  –   модификация   обеспечивающих средах. информационных технологий, при которой реализуется какая­либо из предметных технологий. Так, сотрудник   кредитного   отдела   банка   может   пользоваться   как   обеспечивающими   технологиями: текстовые   и   табличные   процессоры,   так   и   специальными   функциональными   технологиями:   УБД, экспертные системы, реализующие предметные технологии.Основные характеристики и области применения ЭВМ различных классов    .   Первое направление является   традиционным   ­   применение   ЭВМ   для   автоматизации   вычислений.   Научно­техническая революция   во   всех   областях   науки   и   техники   постоянно   выдвигает   новые   научные,   инженерные, экономические   задачи,   которые   требуют   проведения   крупномасштабных   вычислений   (задачи проектирования новых образцов техники, моделирования сложных процессов, атомная и космическая техника   и   др.).   Отличительной   особенностью   этого   направления   является   наличие   хорошей математической основы, заложенной развитием математических наук и их приложений. Первые, а затем и последующие вычислительные машины классической структуры в первую очередь и создавались для автоматизации вычислений.  Вторая сфера применения ЭВМ связана с использованием их в системах управления. Она родилась примерно в 60­е годы, когда ЭВМ стали интенсивно внедряться в контуры управления автоматических и автоматизированных систем. Математическая база этой новой сферы практически отсутствовала, в течение последующих 15­20 лет она была создана.   Новое применение вычислительных машин потребовало видоизменения их структуры. ЭВМ, используемые в управлении, должны были не только обеспечивать вычисления, но и автоматизировать сбор данных и распределение результатов обработки.  Сопряжение с каналами связи потребовало усложнения режимов работы ЭВМ, сделало их многопрограммными и многопользовательскими. Для исключения взаимных помех между программами   пользователей   в   структуру   машин   были   введены   средства   разграничения:   блоки прерываний   и   приоритетов,   блоки   защиты   и   т.п.   Для  управления   разнообразной   периферией   стали использоваться специальные процессоры ввода­вывода данных или каналы. Именно тогда и появился дисплей как средство оперативного человеко­машинного взаимодействия пользователя с ЭВМ.  Новой сфере   работ   в   наибольшей   степени   отвечали   мини­ЭВМ.   Именно   они   стали   использоваться   для управления   отраслями,   предприятиями,   корпорациями.   Машины   нового   типа   удовлетворяли следующим требованиям:  ∙ были более дешевыми по сравнению с большими ЭВМ, обеспечивающими централизованную   обработку   данных;     ∙   были   более   надежными,   особенно   при   работе   в   контуре управления;   ∙  обладали большой гибкостью и адаптируемостью настройки на конкретные условия функционирования;     ∙   имели   архитектурную   прозрачность,   т.е.   структура   и   функции   ЭВМ   были понятны пользователям.  Начало выпуска подобных ЭВМ связано с малыми управляющими машинами PDP фирмы DEC. Термин “мини­ЭВМ” появился в 1968 г. применительно к модели PDP­8. В настоящее время использование мини­ЭВМ сокращается. Исчезает и термин мини­ЭВМ. На смену им приходят ЭВМ других типов: серверы, обеспечивающие диспетчерские функции в сетях ЭВМ, средние ЭВМ или старшие   модели  персональных  ЭВМ  (ПЭВМ).    Одновременно   со  структурными  изменениями   ЭВМ происходило и качественное изменение характера вычислений. Доля чисто математических расчетов постоянно сокращалась, и в настоящее время она составляет около 10% от всех вычислительных работ. Машины все больше стали использоваться для новых видов обработки: текстов, графики, звука и др. Третье   направление   связано   с   применением   ЭВМ   для   решения   задач   искусственного   интеллекта. Напомним, что задачи искусственного интеллекта предполагают получение не точного результата, а чаще всего осредненного в статистическом , вероятностном смысле. Примеров подобных задач много: задачи робототехники, доказательства теорем, машинного перевода текстов с одного языка на другой, планирования   с   учетом   неполной   информации,   составления   прогнозов,   моделирования   сложных процессов и явлений и т.д. Это направление все больше набирает силу. Во многих областях науки и техники   создаются   и   совершенствуются   базы   данных   и   базы   знаний,   экспертные   системы.   Для технического обеспечения этого направления нужны качественно новые структуры ЭВМ с большим количеством   вычислителей   (ЭВМ   или   процессорных   элементов),   обеспечивающих   параллелизм   в вычислениях. По существу, ЭВМ уступают место сложнейшим вычислительным системам.   Уже это небольшое  перечисление областей  применения ЭВМ показывает, что для  решения различных задач нужна соответственно и различная вычислительная техника. Поэтому рынок компьютеров постоянно имеет   широкую   градацию   классов   и   моделей   ЭВМ.   Фирмы­производители   средств   ВТ   очень внимательно отслеживают состояние рынка ЭВМ. Они не просто констатируют отдельные факты и тенденции, а стремятся активно воздействовать на них и опережать потребности потребителей. Так, например, фирма IBM, выпускающая примерно 80% мирового машинного “парка”, в настоящее время выпускает   в   основном   четыре   класса   компьютеров,   перекрывая   ими   широкий   класс   задач пользователей.     •   Большие   ЭВМ   (mainframe),   которые   представляют   собой   многопользовательские машины   с   центральной   обработкой,   с   большими   возможностями   для   работы   с   базами   данных,   с различными формами удаленного доступа. Казалось, что с появлением быстропрогрессирующих ПЭВМбольшие ЭВМ обречены на вымирание. Однако они продолжают развиваться и выпуск их снова стал увеличиваться , хотя их доля в общем парке постоянно снижается. По оценкам IBМ, около половины всего объема данных в информационных системах мира должно храниться именно на больших машинах. Новое их поколение предназначено для использования в сетях в качестве крупных серверов. Начало этого направления было положено фирмой IBM еще в 60­е годы выпуском машин IBM/360, IBM/370. Эти машины получили широкое распространение в мире. Новая серия машин S/390 продолжает эту линию.   Она   насчитывает   более   двух   десятков   моделей:   a)   IBM   S/390   Parallel   Enterprise   Server­ Generation 3 (13 моделей) ­ призваны заменить большие ЭВМ ранних моделей. Они позволяют задавать переменную   конфигурацию   (число   процессоров   ­   1­10,   емкость   оперативной   памяти   ­   512­81292 Мбайта, число каналов ­ 3­256); б) IBM S/ 390 Multiprise 2000 (тоже 13 моделей) ­ ориентированы на использование на средних предприятиях (число процессоров 1­5).Развитие ЭВМ данного класса имеет большое   значение   для   России.   В   1970­1990   гг.   основные   усилия   нашей   страны   в   области вычислительной   техники   были   сосредоточены   на   программе   ЕС   ЭВМ   (Единой   системы   ЭВМ), заимствовавшей   архитектуру   IBM   360/370.   Было   выпущено   несколько   десятков   тысяч   ЭВМ   этой системы. Более пяти тысяч ЭВМ серии ЕС еще продолжают работать в различных учреждениях и производствах.   Большинство   АСУ   верхнего   уровня   государственного   управления   в   РФ   (в   силовых структурах,   банках,   на   транспорте,   связи   и   т.д.)   оснащено   этими   машинами.   Накоплен   громадный программно­информационный   задел,   который   следует   рассматривать   как   элемент   национального достояния   (по   стоимости)   и   элемент   национальной   безопасности   (по   стратегической   значимости). Поэтому принято решение на дальнейшее развитие этого направления. После подписания соглашения с фирмой IBM в марте 1993 г. Россия получила право производить 23 новейшие модели­аналоги ЭВМ IBM S/390 с производительностью от 1,5 до 167 млн. операций в секунду. По расходам на управление и эксплуатацию   эти   машины   оказываются   эффективнее   других   вычислительных   средств.     •   Машины RS/6000 ­ очень мощные по производительности и предназначенные для построения рабочих станций для   работы   с   графикой,   Unix­серверов,   кластерных   комплексов.   Первоначально   эти   машины предполагалось применять для обеспечения научных исследований.  • Средние ЭВМ, предназначенные в первую очередь для работы в финансовых структурах (ЭВМ типа AS/400 (Advanced Portable Model 3) ­“бизнес­компьютеры”,   64­разрядные).   В   этих   машинах   особое   внимание   уделяется   сохранению   и безопасности   данных,   программной   совместимости   и   т.д.   Они   могут   использоваться   в   качестве серверов в локальных сетях.  • Компьютеры на платформе микросхем фирмы Intel. IBM­совместимые компьютеры   этого   класса   составляют   примерно   50%   рынка   всей   компьютерной   техники.   Более половины их  поступает в сферу  малого  бизнеса.  Несмотря на столь внушительный объем выпуска персональных компьютеров этой платформы, фирма ШМ проводит большие исследования и развитие собственной альтернативной платформы, получившей название Power PC. Это направление позволило бы   значительно   улучшить   структуру   аппаратурных   средств   ПК,   а   значит,   и   эффективность   их применения. Однако новые модели этой платформы пока не выдерживают конкуренции с IBM PC. Немаловажным здесь является и неразвитость рынка программного обеспечения. Поэтому у массового пользователя   это   направление   спроса   не   находит,   и   доля   компьютеров   с   процессорами   Power   PC незначительна.     Кроме   перечисленных   типов   вычислительной   техники,   необходимо   отметить   класс вычислительных систем, получивший название “суперЭВМ”, С развитием науки и техники постоянно выдвигаются новые крупномасштабные задачи, требующие выполнения больших объемов вычислений. Особенно эффективно применение суперЭВМ при решении задач проектирования, в которых натурные эксперименты   оказываются   дорогостоящими,   недоступными   или   практически   неосуществимыми.   В этом   случае   ЭВМ   позволяет   методами   численного   моделирования   получить   результаты вычислительных экспериментов, обеспечивая приемлемое время и точность решения, т.е. решающим условием необходимости разработки и применения подобных ЭВМ является экономический показатель “производительность/стоимость”.   Например,   при   создании   суперЭВМ   GF­11   (Gigaflop­11)   с быстродействием 11 млрд. операций в секунду предварительные расчеты, проведенные фирмой ЮМ, показали, что применение этой системы позволит решить целый комплекс новых задач. Одной из таких задач было уточнение массы протона на основе квантовой хромодинамики ­ доминирующей теории, пытающейся описать первичную структуру материи. При использовании новой ЭВМ должна была быть выполнена эта работа за 1,5 ­ 4 месяца с точностью 10%. Решение же этой задачи на существующей вычислительной   технике   требовало   около   15   лет.   Еще   одним   примером   крупномасштабных   задач следует считать задачу разработки новых схем СБИС для следующих поколений ЭВМ. СуперЭВМтороидальные   ферритовые   микротрансформаторы). позволяют по сравнению с другими типами машин точнее, быстрее и качественнее решать подобные задачи, обеспечивая необходимый приоритет в разработках перспективной вычислительной техники.  Поколения   ЭВМ.     Первое   поколение   ЭВМ   1950­1960­е   годы     Логические   схемы   создавались   на дискретных   радиодеталях   и   электронных   вакуумных   лампах   с   нитью   накала.   В   оперативных запоминающих   устройствах   использовались   магнитные   барабаны,   акустические   ультразвуковые ртутные и электромагнитные линии задержки, электронно­лучевые трубки (ЭЛТ). В качестве внешних запоминающих устройств применялись накопители на магнитных лентах, перфокартах, перфолентах и штекерные коммутаторы.  Программирование работы ЭВМ этого поколения выполнялось в двоичной системе счисления на машинном языке, то есть программы были жестко ориентированы на конкретную модель машины и "умирали" вместе с этими моделями.  В середине 1950­х годов появились машинно­ ориентированные   языки   типа   языков   символического   кодирования   (ЯСК),   позволявшие   вместо двоичной   записи   команд  и   адресов   использовать   их   сокращенную  словесную   (буквенную)   запись   и десятичные   числа.   В   1956   году   был   создан   первый   язык   программирования   высокого   уровня   для математических задач ­ язык Фортран, а в 1958 году ­ универсальный язык программирования Алгол. ЭВМ,   начиная   от   UNIVAC   и   заканчивая   БЭСМ­2   и   первыми   моделями   ЭВМ   "Минск"   и   "Урал", относятся к первому поколению вычислительных машин.   Второе поколение ЭВМ: 1960­1970­е годы Логические   схемы   строились   на   дискретных   полупроводниковых   и   магнитных   элементах   (диоды, биполярные   транзисторы,   В   качестве конструктивно­технологической   основы   использовались   схемы   с   печатным   монтажом   (платы   из фольгированного гетинакса). Широко стал использоваться блочный принцип конструирования машин, который   позволяет   подключать   к   основным   устройствам   большое   число   разнообразных   внешних устройств, что обеспечивает большую гибкость использования компьютеров. Тактовые частоты работы электронных схем повысились до сотен килогерц.  Стали применяться внешние накопители на жестких магнитных дисках1 и на флоппи­дисках ­ промежуточный уровень памяти между накопителями на магнитных лентах и оперативной памятью.  В 1964 году появился первый монитор для компьютеров ­ IBM 2250. Это был монохромный дисплей с экраном 12 х 12 дюймов и разрешением 1024 х 1024 пикселов. Он имел частоту кадровой развертки 40 Гц.   Создаваемые на базе компьютеров системы управления   потребовали   от   ЭВМ   более   высокой   производительности,   а   главное   ­   надежности.   В компьютерах стали широко использоваться коды с обнаружением и исправлением ошибок, встроенные схемы   контроля.     В   машинах   второго   поколения   были   впервые   реализованы   режимы   пакетной обработки   и   телеобработки   информации.     Первой   ЭВМ,   в   которой   частично   использовались полупроводниковые   приборы   вместо   электронных   ламп,   была   машина   SEAC   (Standarts   Eastern Automatic Computer), созданная в 1951 году.  В начале 60­х годов полупроводниковые машины стали производиться и в СССР.  Третье поколение ЭВМ: 1970­1980­е годы  В 1958 году Роберт Нойс изобрел малую кремниевую  интегральную  схему,  в которой  на небольшой  площади  можно было  размещать десятки транзисторов. Эти схемы позже стали называться схемами с малой степенью интеграции (Small Scale Integrated circuits ­ SSI). А уже в конце 60­х годов интегральные схемы стали применяться в компьютерах.     Логические   схемы   ЭВМ   3­го   поколения   уже   полностью   строились   на   малых интегральных схемах. Тактовые частоты работы электронных схем повысились до единиц мегагерц. Снизились   напряжения   питания   (единицы   вольт)   и   потребляемая   машиной   мощность.   Существенно повысились   надежность   и   быстродействие   ЭВМ.     В   оперативных   запоминающих   устройствах использовались  миниатюрнее ферритовые  сердечники,  ферритовые  пластины и  магнитные пленки  с прямоугольной   петлей   гистерезиса.   В   качестве   внешних   запоминающих   устройств   широко   стали использоваться   дисковые   накопители.     Появились   еще   два   уровня   запоминающих   устройств: сверхоперативные   запоминающие   устройства   на   триггерных   регистрах,   имеющие   огромное быстродействие, но небольшую емкость (десятки чисел), и быстродействующая кэш­память.  Начиная с момента   широкого   использования   интегральных   схем   в   компьютерах,   технологический   прогресс   в вычислительных   машинах   можно   наблюдать,   используя   широко   известный   закон   Мура.   Один   из основателей компании Intel Гордон Мур в 1965 году открыл закон, согласно которому количество транзисторов   в   одной   микросхеме   удваивается   через   каждые   1,5   года.     Ввиду   существенного усложнения как аппаратной, так и логической структуры ЭВМ 3­го поколения часто стали называть системами.  Так, первыми ЭВМ этого поколения стали модели систем IBM (ряд моделей IBM 360) и PDP (PDP 1). В Советском Союзе в содружестве со странами Совета Экономической Взаимопомощи (Польша, Венгрия, Болгария, ГДР и др1.) стали выпускаться модели единой системы (ЕС) и системымалых (СМ) ЭВМ.  В вычислительных машинах третьего поколения значительное внимание уделяется уменьшению   трудоемкости   программирования,   эффективности   исполнения   программ   в   машинах   и улучшению общения оператора с машиной. Это обеспечивается мощными операционными системами, развитой   системой   автоматизации   программирования,   эффективными   системами   прерывания программ, режимами работы с разделением машинного времени, режимами работы в реальном времени, мультипрограммными режимами работы и новыми интерактивными режимами общения. Появилось и эффективное   видеотерминальное   устройство   общения   оператора   с   машиной   ­   видеомонитор,   или дисплей.  Большое внимание уделено повышению надежности и достоверности функционирования ЭВМ и   облегчению   их   технического   обслуживания.   Достоверность   и   надежность   обеспечиваются повсеместным   использованием   кодов   с   автоматическим   обнаружением   и   исправлением   ошибок (корректирующие   коды   Хеммин­га  и   циклические   коды).     Модульная   организация   вычислительных машин и модульное построение их операционных систем создали широкие возможности для изменения конфигурации   вычислительных   систем.   В   связи   с   этим   возникло   новое   понятие   "архитектура" вычислительной   системы,   определяющее   логическую   организацию   этой   системы   с   точки   зрения пользователя   и   программиста.     Четвертое   поколение   ЭВМ:   1980­1990­е   годы     Революционным событием в развитии компьютерных технологий третьего поколения машин было создание больших и сверхбольших интегральных схем (Large Scale Integration ­ LSI и Very Large Scale Integration ­ VLSI), микропроцессора (1969 г.) и персонального компьютера. Начиная с 1980 года практически все ЭВМ стали   создаваться   на   основе   микропроцессоров.   Самым   востребованным   компьютером   стал персональный.     Логические   интегральные   схемы   в   компьютерах   стали   создаваться   на   основе униполярных полевых CMOS­транзисторов с непосредственными связями, работающими с меньшими амплитудами электрических напряжений (единицы вольт), потребляющими меньше мощности, нежели биполярные, и тем самым позволяющими реализовать более прогрессивные нанотехнологии (в те годы ­ масштаба единиц микрон).   Оперативная память стала строиться не на ферритовых сердечниках, а также   на   интегральных   CMOS­транзисторных   схемах,   причем   непосредственно   запоминающим элементом   в   них   служила   паразитная   емкость   между   электродами   (затвором   и   истоком)   этих транзисторов.   Первый персональный компьютер создали в апреле 1976 года два друга, Стив Джобе (1955 г. р.) ­ сотрудник фирмы Atari, и Стефан Возняк (1950 г. р.), работавший на фирме Hewlett­ Packard.   На   базе   интегрального   8­битного   контроллера   жестко   запаянной   схемы   популярной электронной   игры,   работая   вечерами   в   автомобильном   гараже,   они   сделали   простенький программируемый на языке Бейсик игровой компьютер "Apple", имевший бешеный успех. В начале 1977 года была зарегистрирована Apple Сотр., и началось производство первого в мире персонального компьютера   Apple.     Пятое   поколение   ЭВМ:   1990­настоящее   время     Особенности   архитектуры современного поколения компьютеров подробно рассматриваются в данном курсе.  Кратко основную концепцию   ЭВМ   пятого   поколения   можно   сформулировать   следующим   образом:     Компьютеры   на сверхсложных микропроцессорах с параллельно­векторной структурой, одновременно выполняющих десятки   последовательных   инструкций   программы.     Компьютеры   с   многими   сотнями   параллельно работающих процессоров, позволяющих строить системы обработки данных и знаний, эффективные сетевые   компьютерные   системы.     Электронные   и оптоэлектронные компьютеры с массовым параллелизмом, нейронной структурой, с распределенной сетью   большого   числа   (десятки   тысяч)   микропроцессоров,   моделирующих   архитектуру   нейронных биологических систем.     Шестое   и   последующие   поколения   ЭВМ.   Архитектурные особенности организации ЭВМ различных классов   Введение Краткая история развития вычислительной техники. Классификация компьютеров. Информационно­ логические основы построения ЭВМ. Принципы фон Неймана и классическая архитектура компьютера. Микропроцессорные системы Понятие микропроцессора. Архитектура процессоров. Режимы работы процессоров. Шинная структура связей. Режимы работы микропроцессорной системы. Архитектура микропроцессорных систем. Типы микропроцессорных систем. Принципы функционирования процессоров Адресация операндов: методы адресации, сегментирование памяти, адресация байтов и слов. Регистры процессора:   аккумулятор,   счетчик   команд,   указатель   стека,   индексный   регистр,   регистр   флагов. Система и механизм прерываний микропроцессора. Система команд процессора: команды пересылки данных, арифметические и логические команды, команды переходов, команды управления и обмена данными и другие. Прерывания базовой системы ввода— вывода (BIOS) и операционной системы (ОС). Ассемблирование и дизассемблирование. Отладка и трассировка программ. Организация обмена информацией Типы обмена информацией по шинам. Прохождение сигналов по магистрали. Организация работы с памятью   компьютера.   Работа   устройств   ввода/вывода   с   магистралью.   Распределение   ресурсов компьютера. Интерфейсы компьютера Системная   магистраль   ISA.   Интерфейс   Centronics.   Интерфейс   RS­232C.   Интерфейс   шины   PCI. Стандарт интерфейса PCMCIA. Последовательный интерфейс USB. AGP­порт. Организация персонального компьютера Архитектура   персонального   компьютера.   Процессоры   персональных   компьютеров.   Память персонального компьютера. Системные устройства. Средства интерфейса пользователя. Устройства внешней памяти Жесткие диски, магнитооптические накопители, устройства типа ZIP и JAZ, устройства, записывающие на компакт­диски (CD Recorder). Принцип записи информации. Стримеры: принцип записи, стандарты лент, технические характеристики  стримеров,  сфера  применения, выбор  накопителей на магнитной ленте. Магнитооптические накопители. Отличительные особенности накопителей CD­R, CD­RW, DVD. Видеосистема Мониторы на базе электронно­лучевых трубок (ЭЛТ). Контроллеры дисплея. Графические ускорители (видеоадаптеры). Жидкокристаллические мониторы: пассивная и активная матрицы. Устройства ввода/вывода информации Сканеры.   Цифровые   камеры   и   их   технические   характеристики.   Матричные   принтеры   и   принтеры термопечати. Струйные, лазерные и цветопробные принтеры. Принтеры цветные сублимационные и на твердых чернилах. Плоттеры. Графические планшеты.Звуковые карты..   Структурная организация и взаимодействие узлов и устройств ЭВМ при выполнении основных команд   Взаимодействие   основных   узлов   и   устройств   персонального   компьютера   при   автоматическом выполнении команды Основные этапы автоматического выполнения программы в компьютере с классической трехадресной архитектурой были рассмотрены в лекции 3. В этой лекции рассмотрим особенности этого процесса на примере функционирования персонального компьютера, использующего 16 разрядный микропроцессор типа I8086. Структура такого компьютера приведена на рис. 10.1. В составе ЭВМ кроме традиционных устройств компьютера   с   классической   архитектурой   (оперативное   запоминающее   устройство,   арифметико­ логическое устройство и основные схемы устройства управления) выделим следующие блоки: регистровая память; блок формирования адреса операнда (БФАО); двадцатиразрядные   сумматоры   для   получения   физических   адресов   данных   ( ФАД)   и   физических адресов команд ( ФАК). Σ Σ На   входы   регистровой   памяти   из   БФАО   поступают   номера   регистров,   к   которым   проводится обращение. На входы выбираемых регистров поступают из АЛУ результаты выполнения операции и значения сегментных регистров, устанавливаемых операционной системой ЭВМ. В регистрах хранятся составляющие   эффективных   адресов   данных,   исходные   и   промежуточные   данные,   участвующие   в выполнении операции, старшие 16 разрядов базовых адресов сегментов. На блок формирования адреса операнда поступают: сигналы от тактового генератора микропроцессора; коды полей второго байта выполняемой команды, находящейся в РК; эти коды определяют режимы адресации первого (поля md и r/m) и второго (поле reg) операндов; коды двух младших разрядов первого байта команды (d и w), которые определяют, соответственно, операнд, на место которого записывается результат операции, и разрядность операндов. БФАО вырабатывает следующие выходные сигналы: коды номера выбираемых регистров; сигналы считывания кодов с выбранных регистров; сигналы считывания смещений (disp L и disp H); сигналы считывания непосредственных операндов (data L и data H). Сумматоры физических адресов используются для получения адреса обращения к оперативной памяти с   учетом   ее   сегментной   организации.   Одним   из   слагаемых   выступает   начальный   адрес   сегмента, который   формируется   путем   умножения   на   16   значения   соответствующего   сегментного   регистра. Второе слагаемое ­ это смещение относительно начала сегмента. Для сегмента кода таким смещением является   значение   указателя   команд   IP,   а   для   сегмента   данных   ­   сформированный   блоком формирования адреса операнда эффективный адрес. Суть этапов выполнения команды остается без изменения по сравнению с классической ЭВМ: первый ­ выбор кода команды; второй и третий ­ выбор операндов; четвертый ­ выполнение операции в АЛУ; пятый ­ запись результата в оперативную или регистровую память; шестой ­ формирование адреса следующей выполняемой команды. Но содержание этих этапов изменилось. Рассмотрим выполнение вышеуказанных этапов на примере следующей команды: ADD AL,[BX+disp8] Допустим, что ее первый байт находится в ячейке ОЗУ с адресом i + 24*[CS], то есть [IP] = i.Σ Σ Σ Σ Первый этап. Код IP, то есть [IP] = i, передаётся на сумматор  ФАК. На этот же сумматор поступает код сегментного регистра команд [CS] из РП, умноженный на 16. На выходе  ФАК сформируется код физического   адреса   ОЗУ,   по   которому   находится   первый   байт   команды.   Код   с   выхода   ФАК поступает на регистр адреса ОЗУ. Из ОЗУ выбирается первый байт команды и посылается в регистр команд (для некоторого упрощения предполагаем, что обмен информацией между микропроцессором и ОЗУ происходит байтами). И в завершении этого этапа к IP добавляется 1. Все указанные взаимодействия отметим на схеме знаком 11. Эта последовательность действий будет повторена еще два раза для выбора второго и третьего байтов выполняемой команды. Это отмечено на схеме знаками 12 и 13. Второй этап. В начале второго этапа с помощью ДшКОп расшифровывается код операции выполняемой команды. Если выполняемая команда не нарушает естественного порядка выполняемой программы, то осуществляется формирование адреса первого операнда и выборка этого операнда из РП или ОЗУ ЭВМ. В данной команде для первого операнда используется регистровый относительный режим адресации. Соответственно, эффективный адрес определяется так: EA = [BX] + disp8. В этом случае коды полей md   и   r/m   второго   байта   из   регистра   команд   поступают   в   БФАО   и   таким   образом   коммутируют оборудование БФАО, что на его выходе появляются сигналы, обеспечивающие считывание: кода регистра BX; кода disp L; кода сегментного регистра DS. Все   указанные   коды   поступают   на   сумматор   физического   адреса   данных   ФАД.   При   этом обеспечивается   передача   значения   DS   со   сдвигом   на   4   разряда   влево   (умножение   на   16). Сформированный на  ФАД код поступает на РА ОЗУ. Происходит выборка байта данных, который направляется в АЛУ. Выполнение второго этапа завершено. Все указанные взаимодействия устройств отметим на схеме цифрой 2. Третий этап. Выбор второго операнда. В данном случае БФАО под воздействием сигнала с разряда w и поля reg регистра команд выдает сигнал обращения к регистру AL, код которого подается в АЛУ. Все взаимодействия на этом этапе отметим цифрой 3. Четвертый этап. Выполнение операции сложения в АЛУ. Здесь блок управления операциями выдает те сигналы   в   АЛУ,   которые   необходимы   для   выполнения   операции.   Линии   взаимодействия   отметим цифрой 4. Пятый   этап.  Код   выполненной   операции   из   АЛУ  направляется  в   регистр  AL   (d  =  1)   регистровой памяти. Взаимодействие отмечается цифрой 5. Команда выполнена. В IP находится основная составляющая адреса следующей команды программы: (IP) = i + 3. Здесь шестой этап как отдельный (автономный) этап исключен. Формирование основной составляющей   адреса   следующей   выполняемой   команды   (указателя   команд)   было   реализовано   на первом этапе. Значение сегментного регистра команд в арифметических командах не меняется. ЭВМ готова к выполнению следующих команд программы. ΣСредства   мультипрограммирования.     Мультипрограммирование   является   сегодняшним   уровнем развития   методов   построения   операционных   систем.   Оно   характеризуется   усовершенствованием старых методов и добавлением новых средств.  Мультипрограммирование — это способ организации работы,   который   позволяет   нескольким   заданиям   совместно   использовать   ресурсы   вычислительной системы.   Обычно   различные   задания   совместно   размещаются   в   «основной»   памяти,   а   при необходимости   переносятся   во   вспомогательную   память.   Каждое   задание   получает   управление центральным   обрабатывающим   устройством   в   соответствии   с   алгоритмом   планирования.   Задание выполняется   центральным   обрабатывающим   устройством   до   тех   пор,   пока   не   появится   одно   нз следующих   событий:     1)   программа   приходит   к   естественному   условию   ожидания,   такому,   как операция ввода.   2) программа израсходует выделенный ей квант времени.   Управление центральным обрабатывающим   устройством   передается   затем   другому   заданию,   и   процесс   продолжается.   В последнем случае, называемом квантованием времени, каждый пользователь периодически получает короткий квант времени. Спулииг выполняется программой считывания и программой вывода. Задания вводятся в операционную систему из очереди работ инициатором заданий. Основные цели системы мультипрограммирования   состоят   в   увеличении   пропускной   способности   и   в   уменьшении   времени ответа.   Пропускная   способность   увеличивается   за   счет   использования   времени   «ожидания» центрального обрабатывающего устройства для прогона других программ. Время ответа снижается за счет распознавания приоритета задания при его вводе в систему и за счет обработки заданий с учетом их приоритетов. В этом контексте «время ответа» используется как синоним термина «время цикла обработки».   Упомянутая   выше   операция   спулинга   является   обычной   функцией   системы мультипрограммирования.   Программе   считывания   и   программе   вывода   из   пакета   спулинга   просто приписывается   высокий   приоритет,   так   что   они   получают   время   центрального   обрабатывающего устройства   практически   по   первому   требованию.   Эти   принципы   построения   и   функционирования позволяют устройствам ввода­вывода работать со скоростью, близкой к максимальной.Общие принципы функцио­нальной и структурной организации ЭВМ и вычислительных систем (ВС).   Электронные вычислительные машины включают, кроме аппаратурной части и программного обеспечения (ПО), большое количество функциональных средств. К ним относятся коды, с помощью которых обрабатываемая информация представляется в цифровом виде: арифметические коды ­ для выполнения   арифметических   преобразований   числовой   информации;   помехозащищенные   коды, используемые   для   защиты   информации   от   искажений;     коды   формы,   определяющие,   как   должна выглядеть обрабатываемая в ЭВМ информация при отображении; цифровые коды аналоговых величин (звука, “живого видео”) и др. Кроме кодов на функционирование ЭВМ оказывают влияние алгоритмы их   формирования   и   обработки,   технология   выполнения   различных   процедур   (например,   начальной загрузки операционной системы, принятой в системе технологии обработки заданий пользователей и др.); способы использования различных устройств и организация их работы (например, организация системы   прерываний   или   организация   прямого   доступа   к   памяти),   устранение   негативных   явлений (например,   таких,   как   фрагментация   памяти)   и   др.     Будем   считать,   что   коды,   система   команд, алгоритмы   выполнения   машинных   операций,   технология   выполнения   различных   процедур   и взаимодействия hard и soft, способы использования устройств при организации их совместной работы, составляющие   идеологию   функционирования   ЭВМ,   образуют   функциональную   организацию   ЭВМ. Реализована идеология функционирования ЭВМ может быть по­разному: аппаратурными, программно­ аппаратурными   или   программными   средствами.   При   аппаратурной   и   программно­аппаратурной реализации могут быть применены регистры, дешифраторы, сумматоры; блоки жесткого аппаратурного управления или микропрограммного с управлением подпрограммами (комплексами микроопераций); устройства или комплексы устройств, реализованные в виде автономных систем (программируемых или с жестким управлением) и др. При программной реализации могут быть применены различные виды программ  ­ обработчики прерываний,  резидентные или загружаемые  драйверы, соm­, ехе­ или  tsr ­ программы,   bat­   файлы   и   др.     Будем   считать,   что   способы   реализации   функций   ЭВМ   составляют структурную   организацию   ЭВМ.  Тогда   элементная   база,  функциональные   узлы   и   устройства   ЭВМ, программные модули различных видов (обработчики прерываний, драйверы, соm­, ехе­, tsr­программы, bat­файлы   и   др.)   являются   структурными   компонентами   ЭВМ.     При   серьезных   конструктивных различиях   ЭВМ   могут   быть   совместимыми,   т.е.   приспособленными   к   работе   с   одними   и   теми   же программами (программная совместимость) и получению одних и тех же результатов при обработке одной   и   той   же,   однотипно   представленной   информации   (информационная   совместимость).   Если аппаратурная часть электронных вычислительных машин допускает их электрическое соединение для совместной работы и предусматривает обмен одинаковыми последовательностями сигналов, то имеет место   и   техническая   совместимость   ЭВМ.     Совместимые   ЭВМ   должны   иметь   одинаковую функциональную   организацию:   информационные   элементы   (символы)   должны   одинаково представляться   при   вводе   и   выводе   из   ЭВМ,   система   команд   должна   обеспечивать   в   этих   ЭВМ получение   одинаковых   результатов   при   одинаковых   преобразованиях   информации.   Работой   таких машин должны управлять одинаковые или функционально совместимые операционные системы (а для этого должны быть совместимы методы и алгоритмы планирования и управления работой аппаратурно­ программного   вычислительного   комплекса).   Аппаратурные   средства   должны   иметь   согласованные питающие   напряжения,   частотные   параметры   сигналов,   а   главное   ­   состав,   структуру   и последовательность   выработки   управляющих   сигналов.     При   неполной   совместимости   ЭВМ   (при наличии   различий   в   их   функциональной   организации)   применяют   эмуляторы,   т.е.   программные преобразователи функциональных элементов.  Состав функциональных блоков и структурных средств неоднороден.   Поэтому   в   большинстве   случаев   функциональная   и   структурная   организация   будут рассматриваться в тех разделах, которые посвящены соответствующим аппаратурной части (hardware) или   программному   обеспечению   (Software).     Создание   вычислительных   систем   (ВС)—наиболее реальный   путь     разрешения   противоречия   между   непрерывно   растущими   потребностями   в быстродействующих и надежных средствах вычислений и пределом  технических возможностей ЭВМ на данном этапе развития.  Вычислительная система представляет собой сложный комплекс,  состоящий из разнообразных технических средств соответствующего   программного обеспечения. Как технические, так и программные средства  имеют модульную структуру построения, позволяющую наращивать ее в зависимости от назначения и условий эксплуатации системы. Программная  автоматизация управления вычислительным процессом осуществляется с   помощью ОС.   Первыми ВС были однопроцессорные   высокая   производительность   которых   была   достигнута   за   счет мультипрограммные   ЭВМ,распределения  во времени основных устройств системы между программами.  Дальнейшее повышение производительноти ЭВМ было достигнуто за   счет мультиобработки программ (задач), т. е. за счет разбиения   программ   на     отдельные   блоки   и   параллельной   обработки   этих   блоков   на   нескольких обрабатывающих устройствах, входящих в состав ВС. Мультиобработка  позволяет не только повысть производительность,   но   и   сократить   время     выполнения   отдельных   программ,   которые   могут разбиваться на части и  распределяться между различными обрабатывающими устройствами.  Первым типом ВС с мультиобработкой был многомашинный комплекс  МК ­ многомашинная ВС. В состав МК объединялись   различные   ЭВМ   с     классической   структурой,   имеющие   возможность   обмениваться информацией.  На рис. 10.1 представлена структура двухмашинной ВС. Каждая ЭВМ  имеет ОП, ВЗУ, ПфУ, подключаемые к центральной части ЭВМ ­ процессору  (ПР) с помощью каналов ввода­вывода (КВВ),   и   работает   под   управлением     своей   ОС.   Обмен   информацией   между   ЭВМ1   и   ЭВМ2 осуществляется   через     системные   средства   обмена  (ССО)   в  результате   взаимодействия   ОС   машин между собой.   Основной недостаток многомашинной ВС ­ недостаточно эффективно   используется оборудование комплекса. Достаточно, в ВС в каждой ЭВМ выйти  из строя по одному устройству (даже разных   типов),   как   вся   ВС   становится     неработоспособной.     Следующим   шагом   в   направлении дальнейшего   увеличения     производительности   ВС   явилось   создание   многопроцессорных   ВС   с мультиобработкой, в составе которых содержится два или несколько  процессоров (ПР), работающих с единой ОП, общий набор каналов ввода­  вывода (КВВ) и ВЗУ (рис. 10.2). Наличие единой ОС делает возможным     автоматическое   распределение   ресурсов   системы   на   различных   этапах   ее     работы.   В результате достигается высокая «живучесть» ВС, позволяющая в   случае отказа отдельных. модулей перераспределить   нагрузку   между     работоспособными,   обеспечив   тем   самым   выполнение   наиболее важных для ВС   функций.   К недостаткам многопроцессорных ВС относят трудности, возникающие при реализации общего поля ОП, ВЗУ, а также при разработке специальной ОС.  Дальнейшее развитие идей   мультиобработки   привело   к   созданию     крупных   многопроцессорных   систем   высокой производительности,  получивших назначение высокопараллельных ВС. Такие ВС в зависимости от  ее структуры могут одновременно обрабатывать множественный поток данных  или команд. Под потоком команд   понимается   последовательность   команд,     выполняемых   ВС,   а   потоком   данных   ­ последовательность данных,  обрабатываемых под управлением потока команд.юю Определе­ние, классификация и особенности архитектуры ВС различных типов.   Компь тер (англ. computer — «вычислитель») — многозначный термин в современной литературе, наиболее   часто   употребляется   в   качестве   обозначения   программно   управляемого   электронного устройства обработки информации. Термин   «компьютер»   и   аббревиатура   «ЭВМ»,   принятая   в   русскоязычной   научной   литературе,   не являются  синонимами.[источник?] Электр нная  вычисл тельная  маш на (ЭВМ) — вычислительная машина, построенная с использованием в качестве функциональных элементов электронных устройств вместо   механических.   Термин   употреблялся   в   качестве   исторического   преемника   (механической) вычислительной машины. ию ою ию В   настоящее   время   словосочетание   «электронная   вычислительная   машина»   почти   вытеснено   из бытового употребления.   Аббревиатуру   «ЭВМ»   в   основном   используют   как   правовой   термин   в   юридических   документах, инженеры цифровой электроники, также в историческом смысле — для обозначения компьютерной техники   1940­1980­х   годов,   и   для   обозначения   больших   вычислительных   устройств,   в   отличие   от персональных.   Также   «ЦВМ»   —   «цифровая   вычислительная   машина»   в   противовес   «АВМ»   —   «аналоговая вычислительная машина». При помощи вычислений компьютер способен обрабатывать информацию по определённому алгоритму. Любая задача для компьютера является последовательностью вычислений. Физически компьютер может функционировать за счёт перемещения каких­либо механических частей, движения электронов, фотонов, квантовых частиц или за счёт использования эффектов любых других физических явлений. Архитектура компьютеров может непосредственно моделировать решаемую проблему, максимально близко   (в   смысле   математического   описания)   отражая   исследуемые   физические   явления.   Так, электронные потоки могут использоваться в качестве моделей потоков воды при моделировании дамб или плотин. Подобным образом сконструированные аналоговые компьютеры были обычны в 1960­х годах, однако сегодня стали достаточно редким явлением. В большинстве современных компьютеров проблема сначала описывается в понятном им виде (при этом вся необходимая информация как правило представляется в двоичной форме — в виде единиц и нулей, хотя существовали и компьютеры на троичной системе счисления), после чего действия по её обработке сводятся к применению простой алгебры логики. Поскольку практически вся математика может быть сведена к выполнению булевых операций, достаточно быстрый электронный компьютер может быть применим для решения большинства математических задач, а также и большинства задач по обработке информации, которые могут быть сведены к математическим. Было обнаружено, что компьютеры могут решить не любую математическую задачу. Впервые задачи, которые не могут быть решены при помощи компьютеров, были описаны английским математиком Аланом Тьюрингом. Результат выполненной задачи может быть представлен пользователю при помощи различных устройств ввода­вывода информации, таких, как ламповые индикаторы, мониторы, принтеры, проекторы и т. п. Начинающие пользователи и особенно дети зачастую с трудом воспринимают идею того, что компьютер —   просто   машина   и   не   может   самостоятельно   «думать»   или   «понимать»   те   слова,   которые   он показывает. Компьютер лишь механически отображает заданные программами точки, линии и цвета при помощи устройств ввода­вывода. Человеческий мозг сам узнаёт в показанном те или иные образы, числа и слова и придаёт им те или иные значения. Точнее, основное различие компьютера и человеческого мозга — в способности к абстрактному мышлению, которым обладает лишь мозг человека, и, благодарякоторому,   человек   обладает   разумом.   В   том   числе   сюда   относятся   —   творчество,   фантазия, размышления, самообучение, эстетическое восприятие и т. п Типизация по назначению: 1Калькулятор 2Консольный компьютер 3Миникомпьютер 4Мейнфрейм 5Персональный компьютер  5.1Настольный компьютер 5.2Ноутбук (Лэптоп)  5.2.1Субноутбук  5.2.1.1Нетбук 5.2.1.2Смартбук 5.3Планшетный компьютер  5.3.1Планшетный ПК  5.3.2Интернет­планшет 5.3.3Электронная книга (устройство) 5.4Игровая приставка (Игровая консоль) 5.5Карманный компьютер (КПК) 5.6Коммуникатор 5.7Смартфон 5.8Надеваемый компьютер (носимый компьютер) 6Рабочая станция 7Сервер 8Суперкомпьютер Характеристика современных автоматизированных информационных систем (АИС).  В широком смысле информационная система есть совокупность технического, программного и организационного обеспечения,   а   также   персонала,   предназначенная   для   того,   чтобы   своевременно   обеспечивать надлежащих людей надлежащей информацией[1].   Федеральный закон Российской Федерации от 27 июля 2006 г. N 149­ФЗ «Об информации, информационных технологиях и о защите информации» даёт следующее определение: «информационная  система — совокупность содержащейся в базах данных информации и обеспечивающих ее обработку информационных технологий и технических средств»[1]. По мнению одних авторов, ИС в широком смысле включает в себя персонал, её эксплуатирующий, по мнению других — нет.   В узком смысле информационной системой называют только подмножество компонентов   ИС   в   широком   смысле,   включающее   базы   данных,   СУБД   и   специализированные прикладные программы.  В любом случае основной задачей ИС является удовлетворение конкретных информационных потребностей в рамках конкретной предметной области. Современные ИС де­факто немыслимы без использования баз данных и СУБД, поэтому термин «информационная система» на практике сливается по смыслу с термином «система баз данных».Информационное обеспечения АИС    .   Во всех областях человеческой деятельности, где необходимо проводить   исследования,   анализ,   выработку   и   принятие   решений   с   последующим   их   контролем   – основным ресурсом этих действий является информация. Информационные ресурсы – это все виды информации, доступные пользователю и необходимые для выполнения стоящих перед ним задач и (или) повышающие   эффективность   его   деятельности.     Если   провести   аналогию   с   природными   и производственными ресурсами, то можно сказать, что для превращения природных ресурсов (полезные ископаемые,   вода   и   т.д.)   в   производственные   их   подвергают   определенной   первичной   обработке, например, обогащение полезных ископаемых. Информационные ресурсы, для того, чтобы они могли быть использованы в вышеперечисленных процессах, также должны быть подвергнуты определенной обработке. После первичной обработки они накапливаются в информационных фондах предприятий, организаций   и   др.   Информационные   фонды   –   это   информационные   ресурсы,   организованные специальным образом для повышения эффективности информационной работы.  Сбор, упорядочение, хранение,   обработку   и   выдачу   пользователям   информационных   ресурсов   осуществляют   АИС.   Под информационным   обеспечением   АИС   понимается   система   реализованных   решений   по   объемам, размещению и формам организации информации, циркулирующей в АИС при ее функционировании. Специфическими   формами   организации   информации   в   АИС   являются:     база   данных   (БД)   – поименованная,   целостная,   единая   система   данных,   организованная   по   определенным   правилам, которые предусматривают общие принципы описания, хранения и обработки данных;  база знаний (БЗ) –   формализованная   система   сведений   о   некоторой   предметной   области,   содержащая   данные   о свойствах   объектов,   закономерностях   процессов   и   явлений   и   правила   использования   в   задаваемых ситуациях   этих   данных   для   принятия   новых   решений.     В   БЗ   центральным   понятием   является   – представление знаний в информационных системах, т.е. формализация метапроцедур, используемых биологическими объектами при решении интеллектуальных задач.   В современных АИС все средства обработки   данных   организовываются   в   виде   системы   управления   базами   данных   (СУБД)   – совокупности   программных   и   языковых   средств,   предназначенных   для   управления   данными   в   базе данных,   ведения   базы   данных,   обеспечения   многопользовательского   доступа   к   данным.   В   СУБД информация   описывается   с   помощью   метаданных   –   данных,   которые   являются   описанием   других данных, их характеристик, местонахождения, способов использования и тому подобное.   Кроме того вводится понятие – автоматизированного банка данных (АБД), как совокупности системы управления базами данных и конкретной базы (баз) данных, находящейся (находящихся) под ее управлением.   В последнее время в публикациях по информационным системам все чаще стало использоваться понятие хранилища   данных,   которые   работают   по   принципу   центрального   склада.   Хранилища   данных отличаются  от традиционных  БД тем, что они проектируются  для поддержки процессов принятия решений, а не просто для эффективного сбора и обработки данных. Как правило хранилище содержит многолетние версии обычной БД, физически размещаемые в той же самой базе. Данные в хранилище не обновляются   на   основании   отдельных   запросов   пользователей.   Вместо   этого   вся   база   данных периодически обновляется целиком. Хранилища данных могут быть очень внушительных  размеров. Например банк Chase Manhatten Bank имеет хранилище объемом более 560 Гбайт, компания MasterCard OnLine – 1200 Гбайт.   Банки   данных.     Банк   данных   ­   автоматизированная   информационная   система   централизованного хранения и коллективного использования данных. В состав банка данных входят одна или несколько баз данных, справочник баз данных, СУБД, а также библиотеки запросов и прикладных программ.   Базы   знаний    .    аза   знаний   в   информатике   и   исследованиях   искусственного   интеллекта   (БЗ;   англ. knowledge   base,   KB)  —   это  особого   рода   база   данных,   разработанная  для   оперирования   знаниями (метаданными).   Под   базой   знаний   понимают   совокупность   фактов   и   правил   вывода,   допускающих автоматические   умозаключения   и   осмысленную   обработку   информации.   Область   наук   об искусственном   интеллекте,   изучающая   базы   знаний   и   методы   работы   со   знаниями,   называется инженерией знаний.  Современные базы знаний обычно работают совместно с продвинутыми системами поиска   информации   и   имеют   тщательно   продуманную   структуру   и   формат   представления   знаний. Иерархический   способ   представления   в   базе   знаний   набора   понятий   и   их   отношений   называетсяонтологией.   Онтологию   некоторой   области   знаний   вместе   со   сведениями   о   свойствах   конкретных объектов также можно назвать базой знаний.     . Информационное обеспечение АИС Информационное обеспечение сетевых АИС                                                                               Основные понятия Во   всех   областях   человеческой   деятельности,   где   необходимо   проводить   исследования,   анализ, выработку и принятие решений с последующим их контролем – основным ресурсом этих действий является информация. Информационные ресурсы – это все виды информации, доступные пользователю и необходимые для выполнения стоящих перед ним задач и (или) повышающие эффективность его деятельности.  Если провести аналогию с природными и производственными ресурсами, то можно сказать, что для превращения   природных   ресурсов   (полезные   ископаемые,   вода   и   т.д.)   в   производственные   их подвергают   определенной   первичной   обработке,   например,   обогащение   полезных   ископаемых. Информационные   ресурсы,   для   того,   чтобы   они   могли   быть   использованы   в   вышеперечисленных процессах, также должны быть подвергнуты определенной обработке. После первичной обработки они накапливаются в информационных фондах предприятий, организаций и др. Информационные фонды – это информационные ресурсы, организованные специальным образом для повышения эффективности информационной работы.  Сбор,   упорядочение,   хранение,   обработку   и   выдачу   пользователям   информационных   ресурсов осуществляют   АИС.   Под  информационным   обеспечением  АИС   понимается   система   реализованных решений по объемам, размещению и формам организации информации, циркулирующей в АИС при ее функционировании. Специфическими формами организации информации в АИС являются: база   данных   (БД)  –   поименованная,   целостная,   единая   система   данных,   организованная   по определенным правилам, которые предусматривают общие принципы описания, хранения и обработки данных; база знаний (БЗ) – формализованная система сведений о некоторой предметной области, содержащая данные   о   свойствах   объектов,   закономерностях   процессов   и   явлений   и   правила   использования   в задаваемых ситуациях этих данных для принятия новых решений. В   БЗ   центральным   понятием   является   –  представление   знаний   в   информационных   системах,   т.е. формализация   метапроцедур,   используемых   биологическими   объектами   при   решении интеллектуальных задач. В современных АИС все средства обработки данных организовываются в виде  системы управления базами   данных   (СУБД)  –   совокупности   программных   и   языковых   средств,   предназначенных   для управления   данными   в   базе   данных,   ведения   базы   данных,   обеспечения   многопользовательского доступа   к   данным.   В   СУБД   информация   описывается   с   помощью  метаданных  –   данных,   которые являются описанием других данных, их характеристик, местонахождения, способов использования и тому подобное.Множества   и   операции   над   мно­жествами    .    Теоретико­множественные   операции     Поскольку реляционная   теория   базируется   на   теории   множеств,   естественно   предположить,   что   теоретико­ множественные   операторы   можно   применять   и   для   отношений.   Как   мы   увидим   далее,   это предположение вполне справедливо.  Итак, рассмотрим четыре оператора:  Объединение  Пересечение Вычитание     Декартово   произведение     Объединение     Оператор   объединения   применим   только   к отношениям, совместимым по типу, т.е. к отношениям, имеющим одно и то же множество атрибутов, причем одноименные атрибуты определены на одинаковых доменах.  Операция объединения отношений A и B обозначается следующим образом:   A UNION B   Результат операций теории множеств можно сделать   нагляднее   посредством   диаграмм   Эйлера­Венна.   Построим   диаграмму   для   операции объединения:     Мы   видим,   что   результатом   объединения   двух   множеств   является   множество, включающее в себя все элементы исходных множеств.  В случае, когда A и B ­ отношения, результатом их   объединения   является   отношение,   заголовок   которого   совпадает   с   заголовками   A   и   B,   а   тело включает   кортежи   из   обоих   отношений   (исключая   возможные   дубликаты).     Например,   отношение COMP_BOOKS содержит данные по компьютерным книгам в библиотеке, а отношение MATH_BOOKS ­ по математическим книгам. Отношение, являющееся результатом оператора (COMP_BOOKS UNION MATH_BOOKS), содержит перечень книг из обоих разделов, причем книги, включенные в оба раздела (например, по численным методам), будут представлены в результирующем отношении в единственном экземпляре.  Пересечение  Для этого оператора отношения­операнды также должны быть совместимы по   типу.   Обозначается   пересечение   следующим   образом:     A   INTERSECT   B     Диаграмма   для пересечения:     Результатом   пересечения   двух   множеств   является   множество,   элементы   которого принадлежат одновременно обоим множествам.   В случае пересечения двух отношений результат ­ отношение,   заголовок   которого   совпадает   с   заголовками   исходных   отношений,   а   тело   включает кортежи,   имеющиеся   в   обоих   отношениях.     Если   продолжить   пример   с   библиотекой,   то   оператор (COMP_BOOKS INTERSECT MATH_BOOKS) определяет множество книг, включенных в оба раздела одновременно.  Вычитание  Как и в предыдущем случае, отношения­операнды должны быть совместимы по типу. Обозначение вычитания:  A MINUS B  Продолжая иллюстрацию для пересечения множеств, изобразим их разность графически:   Как видно на диаграмме, результирующее множество состоит из элементов,   принадлежащих   A   и   не   принадлежащих   B.   Нетрудно   догадаться,   что   применительно   к отношениям   эта   операция   дает   отношение,   заголовок   которого   совпадает   с   заголовками   исходных отношений, а тело включает все кортежи первого отношения, не включенные во второе.  Возвращаясь к примеру с библиотекой, заметим, что оператор (COMP_BOOKS MINUS MATH_BOOKS) выбирает все компьютерные книги, которых нет в математическом разделе.  Декартово произведение  Для декартова произведения   двух   множеств   нарисовать   наглядную   диаграмму   довольно­таки   затруднительно,   во всяком   случае,   для   меня.   Поэтому   придется   ограничиться   словесным   описанием   этой   операции   в применении к отношениям.  Если даны два отношения A и B, то их декартовым произведением является отношение,   заголовок   которого   образован   сцеплением   заголовков   исходных   отношений,   а   тело   ­ сцеплением кортежей этих отношений.   Обозначается эта операция так:   A TIMES B   В отличие от предыдущих операций, совместимости по типу исходных отношений не требуется. Более того, если отношения   содержат   атрибуты   с   одинаковыми   именами,   атрибут   одного   из   отношений   придется переименовать,   чтобы   избежать   неоднозначности   имен   в   результирующем   отношении.     Операция кажется гораздо причудливее, чем три предыдущих. Следует добавить, что и особой самостоятельной ценности она не имеет. Применяется она обычно только в сочетании с реляционными операциями   Алгебра высказываний  .   Алгебра логики — раздел математической логики, в котором изучаются   логические   операции   над   высказываниями[1].   Высказывания   могут   быть   истинными,   ложными   или содержащими истину и ложь в разных соотношениях.   Базовыми элементами, которыми оперирует алгебра логики являются высказывания. Высказывания строятся над множеством {B, , , , 0, 1}, где B — непустое   множество,   над   элементами   которого   определены   три   операции:     отрицание   (унарная операция),     конъюнкция   (бинарная),     дизъюнкция   (бинарная),     константы   —   логический   ноль   0   и логическая единица 1.   Моделирование   и   описание   предметной   области   АИС.     Инфологическая   или   информационная модель   (схема   данных)   и   ее   описание   предполагает   моделирование   входных,   промежуточных   и результатных   информационных   массивов   предметной   области   и   их   характеристика.   Необходимо детально   освятить   как   на   основе   входных   документов   и   нормативно   справочной   информациипроисходит обработка с использованием массивов оперативной информации и формирования выходных данных.    .  Концептуальные модели и Концептуальная схема предметной области. Основные модели данных   схемы   баз   данных     Широкое   распространение   реляционных   СУБД   и   их   использование   в   самых разнообразных   приложениях   показывает,   что   реляционная   модель   данных   достаточна   для моделирования предметных областей. Однако проектирование реляционной базы данных в терминах отношений на основе кратко рассмотренного нами механизма нормализации часто представляет собой очень сложный и неудобный для проектировщика процесс.   При этом проявляется ограниченность реляционной модели данных в следующих аспектах:   Модель не предоставляет достаточных средств для представления смысла данных. Семантика реальной предметной области должна независимым от модели   способом   представляться   в   голове   проектировщика.   В   частности,   это   относится   к упоминавшейся   нами   проблеме   представления   ограничений   целостности.     Для   многих   приложений трудно   моделировать   предметную   область   на   основе   плоских   таблиц.   В   ряде   случаев   на   самой начальной стадии проектирования проектировщику приходится производить насилие над собой, чтобы описать предметную область в виде одной (возможно, даже ненормализованной) таблицы.   Хотя весь процесс   проектирования   происходит   на   основе   учета   зависимостей,   реляционная   модель   не предоставляет каких­либо средств для представления этих зависимостей. Несмотря на то, что процесс проектирования   начинается   с   выделения   некоторых   существенных   для   приложения   объектов предметной области ("сущностей") и выявления связей между этими сущностями, реляционная модель данных   не   предлагает   какого­либо   аппарата   для   разделения   сущностей   и   связей.     Потребности проектировщиков баз данных в более удобных и мощных средствах моделирования предметной области вызвали   к   жизни   направление   семантических   моделей   данных.   При   том,   что   любая   развитая семантическая модель данных, как и реляционная модель, включает структурную, манипуляционную и целостную   части,   главным   назначением   семантических   моделей   является   обеспечение   возможности выражения   семантики   данных.     Прежде,   чем   мы   коротко   рассмотрим   особенности   одной   из распространенных   семантических   моделей,   остановимся   на   их   возможных   применениях.     Наиболее часто на практике семантическое моделирование используется на первой стадии проектирования базы данных. При этом в терминах семантической модели производится концептуальная схема базы данных, которая затем вручную преобразуется к реляционной (или какой­либо другой) схеме. Этот процесс выполняется   под   управлением   методик,   в   которых   достаточно   четко   оговорены   все   этапы   такого преобразования.   Менее часто реализуется автоматизированная компиляция концептуальной схемы в реляционную. При этом известны два подхода: на основе явного представления концептуальной схемы как исходной информации для компилятора и построения интегрированных систем проектирования с автоматизированным созданием концептуальной схемы на основе интервью с экспертами предметной области. И в том, и в другом случае в результате производится реляционная схема базы данных в третьей   нормальной   форме   (более   точно   следовало   бы   сказать,   что   автору   неизвестны   системы, обеспечивающие более высокий уровень нормализации).  Наконец, третья возможность, которая еще не вышла   (или   только   выходит)   за   пределы   исследовательских   и   экспериментальных   проектов,   ­   это работа с базой данных в семантической модели, т.е. СУБД, основанные на семантических моделях данных. При этом снова рассматриваются два варианта: обеспечение пользовательского интерфейса на основе семантической модели данных с автоматическим отображением конструкций в реляционную модель данных (это задача примерно такого же уровня сложности, как автоматическая компиляция концептуальной схемы базы данных в реляционную схему) и прямая реализация СУБД, основанная на какой­либо   семантической   модели   данных.   Наиболее   близко   ко   второму   подходу   находятся современные объектно­ориентированные СУБД, модели данных которых по многим параметрам близки к семантическим моделям (хотя в некоторых аспектах они более мощны, а в некоторых ­ более слабы).Концепция БД.  В информационной системе с использованием технологии баз данных решается задача информационного   моделирования   какой­либо   предметной   области   (ПО)   или   её   фрагмента. Хранилищем данных о ПО является, как правило, внешняя память, данные лежат в файлах внешней памяти.     До   появления   концепции   БД   и   соответствующих   этой   концепции   программных   средств управление   данными   во   внешней   памяти   производилось   с   помощью   файловых   систем,   которые являются подсистемой ОС. Но их возможности для информационного моделирования ПО ограничены. Файловые   системы   обеспечивают   хранение   слабоструктурированной   информации,   оставляя дальнейшую структуризацию прикладным программам (пакетам ПП). Поэтому для ПО, для которой структура   информации   не   является   простой,   требуется   создание   специализированной   программной надстройки   для   работы   с   такой   информацией,   которая   включала   бы   в   свой   состав   не   только специальные программы, но и специальные данные, описывающие, например, взаимосвязь информации, размещаемой   в   различных   файлах.     Кроме   того,   файловые   системы   не   имеют   в   своём   составе специальных   языковых   средств   для   формирования   информационных   запросов   пользователей,   не позволяют восстанавливать согласованные состояния данных, если по какой­либо причине произошло нарушение   их   целостности,   имеют   неразвитые   средства,   обеспечивающие   параллельную   работу   с данными   нескольких   пользователей.     Стремление   увеличить   возможности   файловых   систем   в соответствии   с   указанными   и   некоторыми   другими   пользовательскими   потребностями,   стремление стандартизировать   программные   средства   для   моделирования   различных   ПО   и   привело   к возникновению концепции баз данных.   Основные черты концепции БД:   данные отделяются от ПП, появляется   специальная   программная   надстройка   для   управления   данными,   называемая   системой управления базами данных (СУБД); СУБД управляет данными и служит посредником между ними и ПП;   ПП   упрощаются,   освобождаются   от   функций   структуризации,   хранения   и   поиска   данных; появляются   стандартизированные   данные   о   фактографических   данных   –   метаданные,   управляемые СУБД; метаданные описывают информационные параметры и взаимосвязи фактографических данных о ПО;     СУБД   совместно   с   метаданными   представляет   собой   стандартизированное   инструментальное средство для моделирования ПО различной природы;  происходит централизация (интеграция) данных, их многоаспектное использование для различных приложений, что сокращает избыточность данных, позволяет   обеспечить   более   высокий   уровень   достоверности   данных   и   оптимизировать   различные процедуры ведения и использования БД.   Иерархические структуры данных  .  Введение  Архитектура реляционных баз данных ориентирована   на хранение внутри таблиц БД информации о сущностях информационной системы и связях между ними. Каждая из записей таблицы содержит информацию об одном экземпляре. Организация хранения информации  о независимых  друг  от друга  экземплярах  сущностей  (т.е.  так называемых  «плоских» данных) не вызывает никаких затруднений. Однако, наряду с «плоскими» данными, при построении даже простых информационных систем, приходится хранить в БД и информацию о «вложенных» друг в друга сущностях, т.е иерархические данные. Организация хранения такой информации в реляционных БД проста, но не всегда очевидна для тех, кто впервые сталкивается с подобной задачей. В данной статье я попытаюсь поделиться накопленным опытом.   Примеры, приводимые далее, были созданы и протестированы   с   помощью   Interbase   6.     Иерархии   данных     Чтобы   обсудить   проблему   хранения иерархии в реляционной БД, мы вначале рассмотрим вопрос о том, какие же иерархии данных могут встретиться на практике. В реальной жизни иерархии имеют, как правило, некоторые ограничения. Учитывая эти ограничения, можно построить более эффективные процедуры обработки иерархических данных.  Так, в общем случае, дерево может иметь любое количество уровней иерархии. Но в частных случаях число уровней может, и часто оказывается, конечным. Может быть ограничено количество непосредственных   потомков   одного   элемента   иерархии.     Рассмотрим   некоторые   варианты представления иерархических структур в реляционных БД.   Возможные варианты структур БД для хранения иерархий  Наиболее общим случаем является дерево с неограниченным уровнем вложенности и неограниченным количеством потомков. Для хранения такого рода иерархии необходимо добавить в описание   сущности   дополнительное   поле   –   ссылку   на   первичный   ключ   предка.   Такой   способ организации   иерархии   является   самым   распространенным   и   универсальным.   Однако   ему   присущи следующие   недостатки:     Необходимость   рекурсивных   запросов   для   получения   полного   пути   от произвольного   элемента   до   корня   дерева   Сложность   получения   всех   (в   том   числе   и   не   прямых) потомков   данного   узла.     Дальнейшее   рассмотрение   мы   будем   вести   на   примере   построения иерархической   структуры   –   тематического   каталога   библиотеки.   Данный   каталог   применяется   дляклассификации, сортировки и поиска книг по их содержанию. Будем считать, что каждый элемент каталога описывается собственным неуникальным символьным именем. Для обеспечения уникальности записей для каждого элемента каталога необходимо ввести первичный ключ.  Сетевые   структуры   данных    .    Сетевой   подход   к   организации   данных   является   расширением иерархического. В иерархических структурах запись­потомок должна иметь в точности одного предка; в сетевой структуре данных потомок может иметь любое число предков.  Сетевая БД состоит из набора записей и набора связей между этими записями, а если говорить более точно, из набора экземпляров каждого типа из заданного в схеме БД набора типов записи и набора экземпляров каждого типа из заданного набора типов связи.   Тип связи определяется для двух типов записи: предка и потомка. Экземпляр типа связи состоит из одного экземпляра типа записи предка и упорядоченного набора экземпляров типа записи потомка. Для данного типа связи L с типом записи предка P и типом записи потомка C должны выполняться следующие два условия:  Каждый экземпляр типа P является предком только   в   одном   экземпляре   L;     Каждый   экземпляр   C   является   потомком   не   более,   чем   в   одном экземпляре   L.     На   формирование   типов   связи   не   накладываются   особые   ограничения;   возможны, например, следующие ситуации:  Тип записи потомка в одном типе связи L1 может быть типом записи предка в другом типе связи L2 (как в иерархии).  Данный тип записи P может быть типом записи предка в любом числе типов связи.   Данный тип записи P может быть типом записи потомка в любом числе типов связи.  Может существовать любое число типов связи с одним и тем же типом записи предка и одним и тем же типом записи потомка; и если L1 и L2 ­ два типа связи с одним и тем же типом записи предка P и одним и тем же типом записи потомка C, то правила, по которым образуется родство, в разных связях могут различаться.  Типы записи X и Y могут быть предком и потомком в одной связи и потомком и предком ­ в другой.  Предок и потомок могут быть одного типа записи.Физическое   размещение   данных    .    Организация   хранения     Основными   единицами   физического хранения являются блок данных, экстент, файл (либо раздел жесткого диска). Логический уровень представления   информации   включает   пространства   (либо   табличные   пространства).   Блок   данных (block)   или   страница   (page)   является   единицей   обмена   с   внешней   памятью.   Размер   страницы фиксирован   для   базы   данных   (Oracle)   или   для   ее   различных   структур   (DB2,   Informix,   Sybase)   и устанавливается при создании. Очень важно сразу правильно выбрать размер блока: в работающей базе изменить   его   практически   невозможно   (для   этого   часто   проводят   ряд   испытаний   базы   данных­ прототипа).   Размер блока оказывает большое влияние на производительность базы данных — при больших   размерах   скорость   операций   чтения/записи   растет   (особенно   это   характерно   для   полных просмотров таблиц и операций интенсивной загрузки данных), однако возрастают накладные расходы на хранение (база увеличивается) и снижается эффективность индексных просмотров. Меньший размер блока позволяет более экономно расходовать память, но вместе с тем относительно дорог. Длинные блоки   (16,   32   или   64   Кбайт)   лучше   использовать   для   больших   объектов   данных:   полнотекстовые фрагменты,   мультимедиа­объекты,   длинные   строки   и   т.п.   Короткие   блоки   (2   или   4   Кбайт)   лучше подходят для значений числовых типов, недлинных строк, значений даты и времени. Следует также учитывать размер блока ОС, он должен быть кратен размеру блока базы данных. Малый размер блока лучше подходит для систем оперативной обработки транзакций, потому что, если сервер блокирует данные на уровне блоков, то это позволяет большему числу пользователей работать, не мешая друг другу (рис. 1). В системах поддержки принятия решений, для которых более критичным является не общая пропускная способность (количество транзакций в единицу времени), а среднее время отклика (response time), больший блок предпочтительнее.   Рис. 1. Зависимость размера блока данных от типа приложения  Администратор отводит пространство для базы данных на внешних устройствах большими фрагментами:   файлами   и   разделами   диска.   В   первом   случае   доступ   к   диску   осуществляется операционной системой, что дает определенные преимущества, например, работа с файлами средствами ОС.   Во   втором   случае   с   внешним   устройством   работает   сам   сервер.   При   этом   достигается   более высокая производительность; кроме того, использование дисков необходимо в случае, если кэш ОС не может работать в режиме сквозной (write­through) записи. Диски особенно эффективны для ускорения операций записи данных (подобный механизм поддерживается Oracle, DB2 и Informix; например, в DB2 данная единица размещения называется контейнером).   Пространством внешней памяти, отведенным ему   администратором,   сервер   управляет   с   помощью   экстентов   (extent),   т.е.   непрерывных последовательностей блоков. Информация о наличии экстентов для объекта схемы данных находится в специальных   управляющих   структурах,   реализация   которых   зависит   от   СУБД.   На   управление экстентами   (выделение   пространства,   освобождение,   слияние)   тратятся   определенные   ресурсы, поэтому для достижения эффективности нужно правильно определять их параметры. СУБД от Oracle, IBM, Informix позволяют определять параметры этих структур, а в Sybase экстенты имеет постоянный размер, равный 8 страницам. Уменьшение размера экстента будет способствовать более эффективному использованию   памяти,   однако   при   этом   возрастают   накладные   расходы   на   управление   большим количеством экстентов, что может замедлить операции вставки большого количества строк в таблицу. Кроме того, сервер может иметь ограничение на максимальное количество экстентов для таблицы. При слишком большом размере экстентов могут возникнуть проблемы с выделением для них необходимого количества   памяти.   Обычно   определяется   размер   начального   экстента,   размер   второго   и   правило определения размеров следующих экстентов. На рис. 2 иллюстрируется взаимосвязь блоков, экстентов и файлов баз данных.  Рис. 2. Блоки, экстенты и файлы базы данных  В Informix существует еще одна единица физического хранения, промежуточная между файлом (или разделом диска) и экстентом, — это «чанк» (от английского chunk, что дословно переводится как «емкость»). Чанк позволяет более гибко   управлять   очень   большими   массивами   внешней   памяти.   В   одном   разделе   диска   или   файле администратор может создать несколько чанков. Чанк также служит единицей зеркалирования.  Общим для СУБД Oracle, DB2 и Informix является понятие пространства (для Oracle и DB2 это табличное пространство). Различные логические  структуры данных, такие  как таблицы  и индексы,  временные таблицы и словарь данных размещены в табличных пространствах. В DB2 и Informix дополнительно можно устанавливать размер страницы отдельно для каждой из этих структур. Группировка хранимых данных по пространствам производится по ряду признаков: частота изменения данных, характер работы с данными (преимущественно чтение или запись и т.п.), скорость роста объема данных, важность и т.п. Таким образом, например, только читаемые таблицы помещаются в одно пространство, для которогоустановлены одни параметры хранения, таблицы транзакций размещаются в пространстве с другими параметрами и т.д. (рис. 3).  Рис. 3. Физическое размещение данных по устройствам  Одна логическая единица данных (таблица или индекс) размещается точно в одном пространстве, которое может быть отображено   на   несколько   физических   устройств   или   файлов.   При   этом   физически   разнесены (располагаться на разных дисках) могут не только логические единицы данных (таблицы отдельно от индексов), но и данные одной логической структуры (таблица на нескольких дисках). Такой способ хранения называется горизонтальной фрагментацией: таблица делится на фрагменты по строкам. В Oracle вместо термина «фрагментация» используется «секционирование» (partitioning). Фрагментация — один из способов повышения производительности.   Могут применяться различные схемы записи данных во фрагментированные таблицы. Одна из них — круговая (round­robin), когда некоторая часть вставляемых в таблицу строк записывается в первый фрагмент, другая часть — в следующий и так далее по кругу. В данном случае за счет распараллеливания может быть увеличена производительность операций   модификации   данных   и   запросов.   Существует   и   другая   схема,   включающая   логическое разделение строк таблицы по ключу («кластеризация»). Данная схема позволяет избежать перерасхода процессорного времени и уменьшить общий объем операций ввода/вывода. Ее суть в том, что при создании таблицы все пространство значений ключа таблицы разбивается на несколько интервалов, а строкам с ключами, принадлежащими разным интервалам, назначаются различные месторасположения. Впоследствии,   при   обработке   запроса,   данная   информация   учитывается   оптимизатором.   Если производится поиск по ключу, то оптимизатор может удалять из рассмотрения фрагменты таблицы, не удовлетворяющие условию выборки. Например, создание кластеризованной таблицы будет выглядеть следующим образом (этот и все остальные SQL­скрипты приведены для Oracle)   Использование   SQL   в   прикладном   программировании    .    Введение     Накопленная   информация   в современных информационных технологиях хранится и организованна в базах данных. Эти базы данных создаются и работают с помощью систем управления базами данных (СУБД).  Развитие компьютерных технологий,   увеличение   объема   и   структурной   сложности   хранимых   данных,   увеличение   числа пользователей информационных систем привели к распространению реляционных СУБД.  Пользоваться базами данных из разных уголков мира, с разных архитектур ЭВМ по сети можно посредствами одного стандартного языка манипулирования данными. Разработанный в 1974 году язык SQL фирмой IBM для экспериментальной   реляционной   СУБД   System   R   стал   стандартом   (сначала   де­факто),   благодаря распространению двух СУБД (той же фирмы) – SQL/DS (1981 год) и DB2 (1983 год), а признание SQL международным   стандартом   произошло   в   1987   году.     Реализация   в   SQL   концепции   операций, ориентированных   на   табличное   представление   данных,   позволило   создать   компактный   язык   с небольшим   (менее   30)   набором   предложений.   SQL   может   использоваться   как   интерактивный   (для выполнения   запросов)   и   как   встроенный   (для   построения   прикладных   программ).     Программисты пользуются языком SQL, чтобы писать приложения, в которых содержатся обращения к базам данных. Одни и те же операторы SQL используются как для интерактивного, так и для программного доступа, поэтому   части   программ,   содержащие   обращения   к   базе   данных,   можно   вначале   тестировать   в интерактивном   режиме,   а   затем   встраивать   в   программу.   В   традиционных   базах   данных   для программного   доступа   используются   одни   программные   средства,   а   для   выполнения   немедленных запросов — другие, без какой либо связи между этими двумя режимами доступа.  Многие современные СУБД   имеют   собственные   языки   программирования,   ряд   которых   включает   в   себя   SQL.   Другие работают с программами, написанными на одном из распространенных алгоритмических языков (Си, Паскаль или Фортран), в которые включаются предложения SQL. Для обмена информацией с частями программы,   написанными   на   любых   из   этих   языков,   существуют   специальные   конструкции   SQL, позволяющие работать с переменными и (или) отдельными строками таблиц.   В письменной работе будет рассмотрено использование SQL в прикладном программировании.  В первой главе речь пойдет о структуре модуля SQL и встроенном SQL. Определение процедур.  Во второй главе описаны операторы манипулирования   данными.   Операторы,   связанные   с   курсором,   а   так   же   одиночные   операторы манипулирования данными.  В третьей главе будет рассмотрен динамический SQL в Oracle V.6.  1. Язык модулей и встроенный SQL   В стандарте SQL/89 определены два способа взаимодействия с БД из прикладной   программы,   написанной   на   традиционном   языке   программирования.     Первый   способ состоит в том, что все операторы SQL, с которыми может работать данная прикладная программа, собраны   в   один   модуль   и   оформлены   как   процедуры   этого   модуля.   Для   этого   SQL/89   содержит специальный   подъязык   ­   язык   модулей.   При   использовании   такого   способа   взаимодействия   с   БДприкладная   программа   содержит   вызовы   процедур   модуля   SQL   с   передачей   им   фактических параметров   и   получением   ответных   параметров.     Второй   способ   состоит   в   использовании   так называемого   встроенного   SQL,   когда   с   использованием   специального   синтаксиса   в   программу   на традиционном языке программирования встраиваются операторы SQL. В этом случае с точки зрения прикладной программы оператор SQL выполняется "по месту". Явная параметризация операторов SQL отсутствует,  но  во  встроенных  операторах  SQL  могут  использоваться имена  переменных  основной программы,   и   за   счет   этого   обеспечивается   связь   между   прикладной   программой   и   СУБД. Концептуально   эти   два   способа   эквивалентны.   Более   того,   в   стандарте   устанавливаются   правила порождения   неявного   модуля   SQL   по   программе   со   встроенным   SQL.   Однако   в   большинстве реализаций   операторы   SQL,   содержащиеся   в   модуле   SQL,   и   встроенные   операторы   SQL обрабатываются существенно по­разному. Модуль SQL обычно компилируется отдельно от прикладной программы, в результате чего порождается набор так называемых хранимых процедур (в стандарте этот термин не используется, но распространен в коммерческих реализациях). Т.е. в случае использования модуля SQL компиляция операторов SQL производится один раз, и затем соответствующие процедуры сколько угодно раз могут вызываться из прикладной программы.  В отличие от этого, для операторов SQL, встроенных в прикладную программу, компиляция этих операторов обычно производится каждый раз   при   их   использовании   (правильнее   сказать,   при   каждом   первом   использовании   оператора   при данном запуске прикладной программы).  Конечно, пользователи не обязаны знать об этом техническом различии в обработке двух видов взаимодействия  с СУБД. Существуют и такие системы, которые производят одноразовую компиляцию встроенных операторов SQL и сохраняют откомпилированный код.   Но   все­таки   лучше   иметь   это   в   виду.     При   использовании   языка   модулей   текст   прикладной программы имеет меньший размер, взаимодействия с СУБД более локализованы за счет наличия явных параметров   вызова   процедур.   С   другой   стороны,   для   понимания   смысла   поведения   прикладной программы   потребуется   одновременное   чтение   двух   текстов.   Кроме   того,   как   кажется,   синтаксис модуля SQL может существенно различаться в разных реализациях. Встроенный SQL предоставляет возможность   производства   более   "самосодержащихся"   прикладных   программ.   Имеется   больше оснований рассчитывать на простоту переноса  такой программы  в среду  другой СУБД, поскольку стандарт встраивания более или менее соблюдается. Основным недостатком является некоторый PL­ подобный вид таких программ, независимо от выбранного основного языка.  Источник   Организация БД в корпоративных распределенных АИС    .    Основной   причиной   разработки   систем,   использующих   базы   данных,   является   стремление интегрировать   все   обрабатываемые   в   организации   данные   в   единое   целое   и   обеспечить   к   ним контролируемый   доступ.   Распределенные   системы   призваны   разрешить   проблему  островов информации. Базы данных иногда рассматривают как некие электронные острова, представляющие со­ бой   отдельные   и,   в   общем   случае,   труднодоступные   места,   подобные   удаленным   друг   от   друга островам.   Данное   положение   может   являться   следствием   географической   разобщенности, несовместимости   используемой   компьютерной   архитектуры,   несовместимости   используемых коммутационных   протоколов   и   т.д.   Интеграция   отдельных   баз   данных   в   одно   логическое   целое способна изменить подобное положение дел.  Распределенная база данных – это набор логически связанных между собой разделяемых данных (и   их   описаний),   которые   физически   распределены   в   некоторой   компьютерной   сети.   Тогда распределенная   СУБД  –  это   программный   комплекс,   предназначенный   для   управления распределенными базами данных и позволяющий сделать распределенность информации прозрачной для конечного пользователя. Система управления распределенными базами данных (СУРБД) состоит из единой логической базы данных, разделенной на некоторое количество фрагментов. Каждый фрагмент базы данных сохраняется на одном или нескольких компьютерах, которые соединены между собой линиями связи и каждый из которых работает под управлением отдельной СУБД. Любой из сайтов способен   независимо   обрабатывать   запросы   пользователей,   требующие   доступа   к   локально сохраняемым  данным  (что  создает  определенную  степень  локальной  автономии),  а  также   способен обрабатывать данные, сохраняемые на других компьютерах сети. Пользователи взаимодействуют с распределенной базой данных через приложения. Приложения могут   быть   классифицированы   следующим   образом:   приложения,   которые   не   требуют   доступа   к данным   на   других   сайтах  (локальные   приложения),  и   приложения,   которые   требуют   подобногодоступа  (глобальные  приложения).  В   распределенной   СУБД   должно   существовать   хотя   бы   одно глобальное приложение, поэтому любая СУРБД должна отвечать следующим требованиям: • иметь набор логически связанных разделяемых данных; • сохраняемые данные разбиты на некоторое количество фрагментов; • между фрагментами может быть организована репликация данных; • фрагменты и их реплики распределены по различным сайтам; • сайты связаны между собой сетевыми соединениями; • работа с данными на каждом сайте управляется СУБД; • СУБД на каждом сайте способна поддерживать автономную работу локальных приложений; • СУБД каждого сайта поддерживает хотя бы одно глобальное приложение. Выбор методов и средств создания БД.   Методы и средства проектирования составляют центральную часть выполнения проекта любой  БД. Метод проектирования БД представляет собой организованную  совокупность процессов  создания ряда моделей, которые описывают различные аспекты разрабатываемой системы с  использованием четко определенной нотации. Средства проектирования БД обеспечивают моделирование данных и генерацию схем данных на  языке SQL для наиболее распространенных СУБД. Средства проектирования БД имеются в составе  таких CASE­средств, как Oracle Designer, Paradigm Plus, Power Designer. Наиболее известным  средством, ориентированным только на проектирование БД, является Erwin. CASE­средства представляет собой основную технологию, используемую  для создания  и  эксплуатации систем ПО. Под CASE­средством  понимается программное средство, поддерживающее  процессы ЖЦ ПО, включая анализ требований к системе, проектирование прикладного ПО и БД,  генерацию кода, тестирование, документирование, обеспечение качества, управление конфигурацией  ПО и управление проектом и др. процессы. Проектирование ­ поиск способа удовлетворения функциональных требований средствами  имеющейся технологии с учетом заданных ограничений. В 1976 г. Ченом была предложена технология моделирования взаимосвязей, позволяющая  формализовать процесс проектирования логической структуры данных. Методика диаграмм взаимосвязей между объектами учитывает семантику (смысл) данных по  отношению к той предметной области, в которой будет использоваться проектируемая система. Эта  методика лежит в основе реляционной модели. 1. Этап анализа. Результаты: Модель «сущность­отношение» Диаграммы потока данных ЖЦ сущностей Определение сущностей Уникальные идентификаторы Функциональные определения Функциональная декомпозиция 2. Этап проектирование. Результаты: Определение таблиц Определение столбцов Ограничения таблиц Триггеры Физическая БД Спецификация модулей План тестирования системы. 3. Реализация. Системы   управления   файлами  .    Простейшая   база   данных   организована   в   виде   набора   обычных   файлов. Эта модель напоминает картотечную организацию документов, при которой папки хранятся вящиках, а в каждой папке подшито некоторое число страниц.   Системы управления файлами нельзя классифицировать как СУБД, так как обычно они являются частью операционной систем и ничего не знают о внутреннем содержимом файлов. Это знание заложено в прикладных программах, работающих с файлами. В качестве примера можно привести таблицу пользователей UNIX, хранящуюся в файле /etc/passwd. Программы, обращающиеся к этому файлу, знают, что в его первом поле находится имя пользователя,   оканчивающееся   двоеточием.   Если   приложению   нужно   отредактировать   эту информацию,   оно   должно   непосредственно   открыть   файл   и   позаботиться   о   правильном форматировании   полей.     Такая   модель   базы   данных   очень   неудобна,   поскольку   она   требует использовать   язык   третьего   поколения   (3GL).   В   результате   время   программирования   запросов увеличивается, а программист должен обладать более высокой квалификацией, так как ему нужно продумать не только логическую, но и физическую структуру хранения данных. Это приводит к тому, что   между   приложением   и   файлом   образуется   тесная   связь.   Вся   информация   о   полях   таблиц закодирована   в   приложении.   Другое   приложение,   обращающееся   к   тому   же   файлу,   вынуждено дублировать существующий код.  По мере увеличения числа приложений растет сложность управления базой данных. Изменения схемы данных приводят к необходимости изменения каждого программного компонента, для которого это актуально. Формирование новых запросов занимает столько времени, что зачастую   теряет   всякий   смысл.     Системы   управления   файлами   не   могут   помешать   дублированию информации.   Хуже   того,   не   существует   механизмов,   предотвращающих   несогласованность   данных. Представьте себе файл, содержащий сведения обо всех служащих компании. В каждой строке есть поле, где записано имя начальника. Под руководством одного начальника работает много служащих, поэтому  его   имя   будет  неизбежно   повторяться.  Если   где­то   это   имя   будет  записано  неправильно, формально получится, что у служащего другой начальник. При замене начальника его имя придется "вылавливать"   по   всей   базе   данных.     Безопасность   обычных   файлов   контролируется   операционной системой. Отдельный файл может быть заблокирован для просмотра или модификации со стороны того или иного пользователя, но это выполняется только на уровне операционной системы. В конкретный момент   времени   лишь   одно   приложение   может   осуществлять   запись   в   файл,   что   снижает   общую производительность.  Этапы решения задач на ЭВМ.  1. Этапы решения задачи на ЭВМ  Программирование (programming) ­   теоретическая   и   практическая   деятельность,   связанная   с   созданием   программ.   Решение   задач   на компьютере включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера.  1. Постановка задачи:  • сбор информации о задаче;  • формулировка условия задачи;  • определение конечных целей решения задачи;  • определение формы выдачи результатов;  • описание данных (их типов, диапазонов величин, структуры и т. п.).  2. Анализ и исследование задачи, модели:  • анализ   существующих   аналогов;     •   анализ   технических   и   программных   средств;     •   разработка математической модели;   • разработка структур данных.   3. Разработка алгоритма:   • выбор метода проектирования алгоритма;  • выбор формы записи алгоритма (блок­схемы, псевдокод и др.);  • выбор тестов и метода тестирования;   • проектирование алгоритма.   4. Программирование:   • выбор языка программирования;  • уточнение способов организации данных;  • запись алгоритма на выбранном языке программирования.   5. Тестирование и отладка:   • синтаксическая отладка;   • отладка семантики и логической структуры;  • тестовые расчеты и анализ результатов тестирования;  • совершенствование программы.     6.   Анализ   результатов   решения   задачи   и   уточнение   в   случае   необходимости математической   модели   с   повторным   выполнением   этапов   2­5.     7.   Сопровождение   программы:     • доработка программы для решения конкретных задач;  • составление документации к решенной задаче, к математической модели, к алгоритму, к программе, к набору тестов, к использованию.   Структурный   подход   к   разработке   ал­горитмов.     Указанный   структурный   подход   к   разработке алгоритмов позволяет осуществить перевод записи алгоритма с языка блок­схем на язык процедурного программирова­ния без внесения изменений в конструкцию  алгоритмических предписаний.   В ходе поиска   решения   задачи   учащиеся   не   всегда   получают   блок­схему   в   структурном   ви­де.   Поэтому учителю необходимо овладеть приемами приведения алгоритмического предписания к структурной записи.   Такими   специальными   приемами   являются   инвертирование   условия   со­ставной   команды, дублирование блока, соединение условий составных команд и введение допол­нительной переменной – признака   [3,   стр.113­122].     Рассмотрим   несколько   примеров   иллюстрирующих   указанный   подход. Пример 1. Две блок­схемы одного и того же фрагмента алгоритма приведены на рис. 2. В схеме слева довольно трудно выделить базовые структуры алгоритма, найти точки входа и выхода в составныхкомандах, определить имеется ли вложенность одной базовой конструкции в другую или же соединение идет последовательно. Инвертировав условие команды повторения, соединив стрелки до выхода из команды ветвления и представив запись в соответствии с шаблонами ко­манд, получаем структурную запись алгоритма.   Характеристика языка Турбо Паскаль. по своей идеологии Паскаль наиболее близок к современной методике   и   технологии   программирования.   он   достаточно   полно   отражает   идеи   структурного программирования,   что   довольно   хорошо   видно   даже   из   основных   управляющих   структур   языка. Паскаль   хорошо   приспособлен   для   применения   технологии   разработки   программ   сверху­вниз (пошаговой детализации). Паскаль содержит большое разнообразие различных структур данных, что обеспечивает простоту алгоритмов, а следовательно снижение трудоемкости при разработке программ. Основные отличия алгоритмических языков от машинных языков:   ­ алгоритмический язык обладает гораздо   большими   выразительными   возможностями,   т.е.   его   алфавит   значительно   шире   алфавита машинного   языка,   что   существенно   повышает   наглядность   текста   программы;     ­   набор   операций, допустимых   для   использования,   не   зависит   от   набора   машинных   операций,   а   выбирается   из соображений удобства формулирования алгоритмов решения задач определенного класса;   ­формат предложений   достаточно   гибок   и   удобен   для   использования,   что   позволяет   с   помощью   одного предложения   задать   достаточно   содержательный   этап   обработки   данных;     ­   требуемые   операции задаются   в   удобном   для   человека   виде,   например,   с   помощью   общепринятых   математических обозначений;   ­ для задания операндов операций, используемым в алгоритме данным присваиваются уникальные имена, выбираемые программистом, и ссылка на операнды производится в основном по именам;   ­ в  языке  может быть предусмотрен  значительно  более широкий набор типов  данных  по сравнению с набором машинных типов данных.  следует, что алгоритмический язык является машинно­ независимым.  Для описания синтаксиса алгоритмического языка используется специальный метаязык, позволяющий   в   компактной   форме   отразить   все   особенности   конкретных   конструкций алгоритмического языка. Мы воспользуемся для этих целей металингвистическими формулами Бэкуса­ Наура   (язык   БНФ).     При   описании   синтаксиса   языка   используются   некоторые   понятия:   определив простейшие из них, с их помощью можно уже достаточно просто определить более сложные понятия и т.д., пока не будет определено наиболее сложное понятие ­ программа. С точки зрения синтаксиса каждое определяемое понятие есть метапеременная языка БНФ, значением которой может быть любая конструкция из некоторого фиксированного для этого понятия набора конструкций.   Для каждого понятия языка должна существовать единственная метаформула, в левой части которой указывается определяемое   понятие,   т.е.   метапеременная   языка   БНФ,   а   правая   часть   формулы   тем   или   иным способом   задает   все   множество   значений   этой   метапеременной,   т.е.   все   допустимые   конструкции, которые объединяются в это понятие. Все метапеременные заключаются в специальные угловые скобки <   и   >,   которые   не   принадлежат   алфавиту   определяемого   языка,   т.е.   являются   метасимволами, например, <выражение>, <число> и т.д. Левая и правая части метаформулы разделяются специальным знаком : : = Обычно в качестве значений метапеременной может приниматься любая из нескольких допустимых   конструкций.   Все   допустимые   конструкции   указываются   в   правой   части   формулы   и разделяются метасимволом "|", смысл которого можно передать словом «или» Кроме перечисления всех возможных значений метапеременной в правой части метаформулы может быть указано правило построения значений.   Структура программы на языке Турбо Пас­каль.  Написанная по правилам стандарта языка Паскаль программа будет иметь в своем полном варианте структуру:   PROGRAM Имя_Программы;   USES Список используемых библиотек (модулей);   LABEL   Список меток в основном блоке программы; CONST  Определение констант;  TYPE  Описание типов;  VAR  Определение глобальных переменных программы;  ОПИСАНИЕ ПРОЦЕДУР;  ОПИСАНИЕ ФУНКЦИЙ;  BEGIN  Основной блок программы (операторы)  END.  Таким образом, программа содержит два раздела: (I) раздел описаний (блоки USES,LABEL,   CONST,   TYPE,   VAR,   а   также   описание   процедур   и   функций)   и   (II)   исполняемую   часть (основной блок). Раздел описаний, в принципе, не является обязательным и может вовсе отсутствовать. Заголовок   программы,   начинающийся   с   ключевого   слова   PROGRAM,   выполняет   исключительно декоративную функцию, и поэтому также может отсутствовать.    Классификация   типов   данных.     I.   Простые   типы:   порядковые,   вещественные,   дата­время. Порядковый тип в свою очередь делится на:  1. целые типы;  2. логический тип или булевский тип;  3. символьный   тип;     4.   перечисляемые   типы;     5.   ограниченные   типы   или   тип­диапазон.     На   основе стандартных скалярных типов имеется возможность образовывать пользовательские скалярные типы. Есть два способа порождения новых скалярных типов ­ ограниченные и перечислимые типы.   Любой скалярный   тип   характеризуется   множеством   его   различных   значений,   среди   которых   установлен линейный порядок. Все скалярные типы, кроме вещественных, называются дискретными.  II. Составные типы:   структурированные   типы,   указатели,   строки,   процедурные,   объекты,   классы,   варианты. Структурированные   типы   в   свою   очередь   делятся   на:     2. комбинированные типы (записи);  3. множественные типы;  4. файловые типы;     1.   регулярные   типы   (массивы);   Простые типы данных.   1. Целые типы   Эта группа типов обозначает  множество целых чисел в различных диапазонах. Имеется пять целых типов, различающихся допустимым диапазоном значений и размером   занимаемой   памяти.   Целые   типы   обозначаются   идентификаторами   Integer,   Byte,   ShortInt, Word, LongInt; их характеристики приведены в таблице 1.  Таблица 1  Тип  Диапазон значений  Размер памяти  ShortInt  ­128..127  1 байт  Integer  ­32768..32767  2 байта  LongInt  ­2147483648..2147483647  4 байта   Byte   0..255   1 байт   Word   0..65535   2 байта   Значения целых типов могут изображаться в программе двумя способами: в десятичном виде и в шестнадцатеричном коде. В последнем случае в начале такого кода ставится символ `$'.  Примеры:  123  ­1  $F1 (десятичное представление 241)  0$B80 2. Булевский (логический) тип   К логическим относятся типы Boolean, ByteBool, Bool, wordBool и LongBool. В стандартном Паскале определен только тип Boolean, остальные логические типы введены в Object Pascal  для совместимости с Windows: типы Boolean и ByteBool занимают по одному байту каждый, Bool и WordBool ­ по 2 байта, LongBool ­ 4 байта.   Имеется два значения булевского типа, представляющие   логические   истинностные   значения   (истина/ложь).   Эти   значения   обозначаются посредством   стандартных   идентификаторов:     true   (истина)     false   (ложь).     3.   Символьный   тип Значениями символьного типа являются символы из множества ASCII (American Standard Code for Information Interchange ­ американский стандартный код для обмена информацией). Это множество состоит   из   256   различных   символов,   упорядоченных   определенным   образом,   и   содержит   символы заглавных и строчных букв, цифр и различных других символов, включая специальные управляющие символы.   Допускаются   некоторые   отклонения   от   стандарта   ASCII,   в   частности,   при   наличии соответствующей системной поддержки это множество может содержать буквы русского алфавита. Порядковые   номера   (кодировку)   значений   символьного   типа   можно   узнать   из   соответствующих разделов технических описаний. Эти значения занимают один байт. Если символьное значение имеет графическое представление, то оно изображается соответствующим знаком, заключенным в одинарные кавычки (апострофы), например:  `*' `a' `X' `:' `'''  Для представления самого апострофа его изображение удваивается.     Если   символ,   который   нужно   изобразить,   не   имеет   графического   представления,   то можно воспользоваться следующей эквивалентной формой записи, состоящей из символа `#' (решетка, диез) и целочисленного кода символа (от 0 до 255):  #10 #$A  4. Перечислимые типы  Скалярные типы, введенные ранее, в целом не выходят за рамки интуитивно понятной трактовки типа как множества традиционных   (целых,   вещественных   или   символьных)   значений   из   определенного   диапазона. Перечислимые   типы   вводят   некоторое   простое   обобщение   такой   трактовки   посредством абстрагирования от “физической” природы значений.   Иными словами, можно определить новый тип путем   явного   перечисления   всех   возможных   его   значений,   причем   каждое   такое   значение   будет определяться   только   именем.     Например:   Пусть   необходимо   разработать   программу   управления уличным светофором. Ясно, что программа будет моделировать светофор с помощью указания его текущего состояния, т.е. включенного в данный момент света. Таким образом, переменная программы, представляющая   светофор,   может   принимать   одно   из   трех   значений,   соответствующих   красному, желтому и зеленому цветам. Можно было бы ввести для этого переменную целого типа и установить, что,   например,   значения   1,   2,   3   соответствуют   указанным   цветам.   Однако   очевидно,   что   числа, кодирующие  цвета,  не  имеют прямого  отношения   к решаемой  задаче и,  следовательно,  усложняютСинтаксис   определения   перечислимого   типа:   программу и затемняют ее смысл. Поэтому наиболее естественным решением в данном случае будет введение   перечислимого   типа   из   трех   значений,   обозначаемых   именами   Red,   Yellow,   Green,   и переменной   этого   типа.     (идентификатор   1, идентификатор 2,...,идентификатор N)  Примеры перечислимых типов:  (Red, Yellow, Green)  (Monday, Tuesday,  Wednesday,  Thursday,  Friday,  Saturday,  Sunday)     (On,  Off)     (Left,  Up,  Right,  Down) Перечислимые типы считаются дискретными типами. Над значениями перечислимых типов определены операции   сравнения   (считается,   что   значения   перечислимого   типа   указаны   в   списке   в   порядке возрастания). Кроме того, допускается образование ограниченных типов из перечислимых по обычным правилам,   например:     Monday..Friday     Left..Up     Имена   из   списка   перечислимого   типа   считаются константами соответствующего перечислимого типа. Эти идентификаторы должны быть уникальны в пределах   блока;   недопустимы   описания   двух   и   более   перечислимых   типов   с   совпадающими константами.   5. Ограниченные типы (тип­диапазон)   Стандартные скалярные типы, перечисленные ранее, являются предопределенными в языке Паскаль; их смысл в языке фиксирован и его не нужно описывать.   На   основе   стандартных   скалярных   типов   программист   может   определить   новые, собственные скалярные типы, руководствуясь несколькими достаточно простыми правилами.  Самым простым способом образования новых типов из уже существующих является ограничение (а именно, сужение) допустимого диапазона значений некоторого стандартного скалярного типа. Это ограничение определяется заданием минимального и максимального значений диапазона.   Синтаксис определения такого типа:   минимальное_ значение..максимальное_значение   Например:   1..10   ­100..100   `a'..'z'   В данном   примере   показано   определение   трех   новых   типов   значений.   Первые   два   типа   образованы ограничениями   диапазона   некоторого   целого   типа,   третий   тип   является   производным   целого   типа. Введенный таким образом тип можно обозначить именем и использовать для определения переменных, а также строить с его помощью другие типы.  Допускается создание ограниченных типов из дискретных типов,   то   есть   из   всех   скалярных   типов,   кроме   вещественного.   Ограниченный   тип   наследует   все свойства   базового   типа   (в   частности,   набор   базовых   операций).     Нужно   всячески   приветствовать активное использование в программе ограниченных типов. Всякий раз, когда заранее известно, что значения   некоторой   переменной   лежат   внутри   некоторого   диапазона,   следует   использовать ограниченный тип. Это существенно повышает наглядность программ, а, кроме того, позволяют более надежно   контролировать   ошибочные   выходы   значений   за   пределы   заданного   диапазона   (как   при трансляции,   так   и   в   процессе   исполнения   программы).     6.   Вещественные   типы     Эта   группа   типов обозначает множества вещественных значений в различных диапазонах Паскаль поддерживает четыре различных  вещественных типа. Они именуются идентификаторами Real, Single,  Double, Extended  и Comp и имеют характеристики, представленные в таблице 2.  Таблица 2  Вещественный тип  Диапазон значений  Число цифр мантиссы  Размер памяти  Real  2.9 E­39..1.7E38  11­12  6 байт   Single   1.5E­ 45..3.4E38  7­8  4 байта  Double  5.0E­324..1.7E308  15­16  8 байт  Extended  3.4E­4932..1.1E493  19­20 10 байт   Comp   ­2E+63..+2E+63­1   8 байт   Примечания   1. Хотя тип Comp считается вещественным типом, он содержит только целые числа из весьма значительного диапазона, которые представляются в вычислениях как вещественные (с нулевой мантиссой).  2. Все вещественные типы, кроме Real, могут использоваться   в   программе,   вообще   говоря,   только   если   сделаны   соответствующие   опции компилятора.   Для   корректной   компиляции   программы,   использующей   эти   типы,   можно   также применить   директиву   компилятора   {+N}.     Вещественные   значения   могут   изображаться   в   форме   с фиксированной   точкой   и   в   форме   с   плавающей   точкой.   В   первом   случае   целая   и   дробная   части вещественного числа отделяются друг от друга символом `.' (точка). Обе эти части должны обязательно присутствовать, например:  17.384  0.5  Вещественное число в форме с плавающей точкой записывается как пара вида:  <мантисса>Е<порядок>  Такое обозначение понимается как “мантисса, умноженная на 10   в   степени,   равной   порядку”.   Например:     7Е­2   эквивалентно   7∙   10­2     12.25   Е+6   или   12.25   Е6 эквивалентно 12.25∙ 106  7. Дата/время  Тип дата­время определяется стандартным идентификатором TDateTime   и   предназначен   для   одновременного   хранения   и   даты,   и   времени.   Во   внутреннем представлении   он   занимает   8   байт   и   подобно   currency   представляет   собой   вещественное   число   с фиксированной   дробной   частью:   в   целой   части   числа   хранится   дата,   в   дробной   ­   время.   Дата определяется как количество суток, прошедших с 30 декабря 1899 года, а время ­ как часть суток, прошедших с 0 часов, так что значение 36444,837 соответствует  дате 11.10.1999 и времени 20:05. Количество суток может быть и отрицательным, однако значения меньшие ­693594 (соответствует дате 00.00.0000 от Рождества Христова) игнорируются функциями преобразования даты к строковому типу.Структуированные   типы   данных   и   их   обработка.  МАССИВЫ  В   Турбо   Паскале   четыре   типа структурированных  данных:  массивы,   записи,   множества   и   файлы.   Переменная   или   константа структурированного типа всегда имеет несколько компонентов. Каждый компонент, в свою очередь, может   принадлежать   структурированному   типу,   что   позволяет   говорить   о   возможной   вложенности типов. Массивовый тип – это одномерная или многомерная совокупность фиксированного числа однотипных элементов. Массивы   (регулярные   типы   данных)  представляют   собой   упорядоченную   последовательность переменных одного типа. Элементы массива являются его компонентами. Все компоненты относятся к одному   типу,   его   называют   типом   компонент.   Каждая   компонента   может   быть   явно   обозначена   с помощью имени переменной массива, за которым в квадратных скобках следует индекс. Индекс – это величина, характеризующая положение элемента относительно начала массива. Индексом может быть произвольное   выражение   порядкового   типа,   заключенное   в   квадратные   скобки.   Переменные   b[1], b[2],   ...,  b[40]   являются   элементами   массива   b;   с[1],  c[2],   ...,   c[40]  –   элементы   массива   с.   b[12]  – двенадцатый элемент массива b, c[39] – тридцать девятый элемент массива с. Если массив состоит только из 40 элементов, то нельзя использовать переменную b[41], так как такой переменной нет в массиве. В качестве индекса может использоваться выражение, например: a [ i + 2 ], b [2 * ( i + 1) + 1]. Каждому массиву, используемому в программе, выделяется место в памяти. Но в отличие от простых переменных массиву отводится не одна ячейка, а последовательность расположенных друг за другом ячеек, в каждую из которых записывается значение соответствующего элемента.  Массивы, как и простые переменные, подлежат описанию в разделе переменных. Например, var a : array [1 .. 40] of real;b,c : array [1 .. n] of real;d : array [5 .. 20] of integer;p : real; В приведенном  примере описаны четыре массива: a, b, c, d и простая переменная р. Ключевое слово array  означает,   что   описываемый   объект   является   массивом.   В   описании   массива   содержатся следующие сведения: 1) сведения о типе элементов массива (элементы массивов a, b, c – вещественные, массива d – целые); 2) диапазон изменения индексов, определяемый граничной парой, например: 1.. 40, 1 .. n, 5 .. 20. Нижняя граница отделяется от верхней двумя точками. Нижняя граница показывает наименьшее возможное значение индекса, верхняя – наибольшее. Очевидно, что нижняя граница не может превосходить верхнюю. Пример.  Программа чтения элементов массива и вывода элементов этого массва, помноженных на число p. program pri; const n = 1; m = 10; var i : integer;k : array [n .. m] of integer; begin  end. Массивовый   тип   является   типом,   определяемым   пользователем,   его   можно   определить   в   разделе описания типов: type ar = array [n .. m] of integer. Тогда в разделе переменных необходимо указать k : ar. Синтаксис описания типа массива: <имя типа> = array [<сп. инд. типов>] of < тип> Здесь <имя типа> – правильный идентификатор; array, of – зарезервированные слова (массив, из); <сп. инд. типов> – список из одного или нескольких индексных (порядковых) типов, разделенных запятыми; квадратные   скобки,   обрамляющие   список,   –   требование   синтаксиса;   <   тип>   –   любой   тип   Турбо Паскаля. В качестве индексных типов в Турбо Паскале можно использовать любые порядковые типы, кроме longint. ЗАПИСНЫЕ ТИПЫ   Запись  ­   это   структура   данных,   состоящая   из   фиксированного   числа   компонентов   разного   типа. Составляющие   запись   компоненты   называется  полями   записи        Записной   тип   еще   называют комбинированным типом. Записной   тип   данных   предоставляет   программисту   возможность   объединить   в   одну   связанную структуру различные по типу и смыслу элементы. Элементами записи могут быть и структурированные типы данных, например массивы и другие подчиненные записи. Для обработки доступна как вся запись целиком, так и отдельные ее поля. Понятие записи рассмотрим на примере ведомости списка учащихся с их оценками. Каждая строка в этой ведомости состоит из отдельных элементов  данных различного типа: for i:= n to m do write (k[i] * pi) for i:= n to m do read (k[i]);list = record n : integer; fio : array [1..20] of char; mark : array [1..3] of integer  end;   отделяемых   друг   от   друга   запятыми. а) порядковый номер – целое десятичное число; б) Фамилия И. О. – массив символов;в) оценки – массив целых чисел. Эти данные можно объединить в одну группу и считать записью. Введем следующие обозначения: В – имя всей записи; n – порядковый номер; fio – фамилия, имя, отчество; mark – оценки. Обращение к элементу записи в программе выполняется с помощью уточненного (составного) имени. Уточненное имя содержит имя записи и имя элемента и записывается в следующем виде: имя записи.имя элемента Например,                 B.n                 B.fio                 B.mark Записи, как и другие данные, объявляются в разделе описаний и используются в разделе операторов. Структура объявления типа записи такова: <имя типа> = record  <список полей> end Здесь <имя типа> – правильный идентификатор; record, end – зарезервированные слова (запись, конец); <список полей> – последовательность разделов записи, между которыми   ставится   точка   с   запятой.   Каждый   раздел   записи   состоит   из   одного   или   нескольких идентификаторов   полей,   За   идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей). Для представленной ведомости объявление записи выглядит следующим образом: type  var B : list;                                                             МНОЖЕСТВЕННЫЕ ТИПЫ Множество – это некоторый ограниченный неупорядоченный набор различных элементов одинакового типа.  Можно   говорить,   например,   о   множестве   фигур   на   плоскости   (прямоугольник,   круг,   ромб, квадрат), о множестве радиодеталей, транспортных средств, станков и т. д.  В Турбо Паскале существует множественный тип для ввода множеств и организации операций над множествами.  Множественный тип  представляет собой некоторую совокупность элементов, которая является подмножеством допустимых значений определенного порядкового типа, именуемого базовым. Множественный   тип   описывает   наборы   однотипных   логически   связанных   друг   с   другом   объектов. Характер связей между объектами лишь подразумевается программистом и никак не контролируется Турбо Паскалем. Количество элементов, входящих в множество, может меняться в пределах от 0 до 256. Множество, не содержащее элементов, называется  пустым.  Именно непостоянством количества своих элементов множества отличаются от массивов и записей.  Множества должны быть объявлены либо в разделе переменных var, либо с использованием раздела типов type. Описание типа множества имеет вид:               <имя типа> = set of <базовый тип> Здесь <имя типа> – правильный идентификатор;  set, of  – зарезервированные слова (множество, из); <базовый тип> – базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме word, integer, longint. Синтаксическая диаграмма: Пример: var   Year – множество, которое может состоять из элементов диапазона 198 ... 200, с – множество всех символов.  Конструкторы множеств Множественное значение можно задать с помощью  конструктора множества,  в котором содержатся описания   элементов   множества,   отделенные   друг   от   друга   запятыми   и   заключенные   в   квадратные скобки.  Описанием элемента могут быть константы или выражения базового типа, а также – тип–диапазон того же базового типа  вида min..max, где значения выражений min и max представляют собой нижнюю и верхнюю границы группы элементов. Если нижняя граница больше верхней границы (т. е. min > max), то никакой элемент не описывается, то есть описывается пустое множество. Все выражения должны относиться к одному порядковому типу, представляющему собой базовый тип для   множественного   типа   данного   конструктора.   Конструктор   множества   [   ]   обозначает   пустое множество для любого множественного типа  Примеры   конструкторов   множеств: Операции над множествами Если Х – переменная–множество, а Е – множественное выражение, то присваивание: Х := Е допустимо только в том случае, если все элементы Е относятся к базовому типу Х.   К   любым   объектам   со   структурой   множества   применимы   операции:  объединение,   пересечение, разность. Если предположить, что А и В – выражения одного типа, то: year : set of 198..200;  j   ]   [   ‘0’..’9'] c : set of char;  [13]   [   i   +   j   ,   i   –– вхождение в множество; результат true, если е элемент А,  иначе   – – множество из элементов А и В (объединение); – множество общих для А и В элементов (пересечение); – множество элементов А, не входящих в В (разность). А + В А * В А – В К   множественным   операндам   применимы   пять   операций   отношения.   Предположим,   А   и   В   – множественные выражения одного типа, а е – порядковое выражение базового типа. е in A false; А = В А <>В А <= В А >= В Два множества считаются  эквивалентными  тогда и только тогда, когда все их элементы одинаковы, причем порядок следования элементов в множестве безразличен. Если все элементы одного множества входят   также   и   в   другое,   говорят   о   включении   первого   множества   во   второе.   Пустое   множество включается в любое другое. – равенство множеств; – неравенство множеств; – включение; результат true, если А  подмножество В; – включение; результат true, если В подмножество А.   Строковый   тип   данных    Далее   познакомимся   с   типом   данных,   который   относится   к   числу структурированных. Это строковый тип данных (строка). Строка — это последовательность символов. Каждый символ занимает 1 байт памяти (код ASCII). Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами   и   переменными.   Особенностью   строки   в   Turbo   Pascal   является   то,   что   с   ней   можно работать как с массивом символов, с одной стороны, и как с единым объектом, — с другой. За счет этого   обработка   строк   достаточно   гибка   и   удобна.   Строковая   константа   есть   последовательность символов,   заключенная   в   апострофы.   Например:   'это   строковая   константа',   ‘272’.   Строковая переменная описывается в разделе описания переменных следующим образом:  Var <идентификатор> : string[<максимальная длина строки>];  Например:  Var Name : string[20].  Параметр длины может и не указываться в описании. В таком случае подразумевается, что он равен максимальной величине — 255. Например: Var slovo : string.  Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один (нулевой) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины.   Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например:   N[5],   S[i],   slovo[k+l].   Индекс   может   быть   положительной   константой,   переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.   Тип string и стандартный   тип   char   совместимы.   Строки   и   символы   могут   употребляться   в   одних   и   тех   же выражениях.  Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операции сцепления и операции отношения.  Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные.   Пример: 'Мама ' + 'мыла ' + 'раму'. В результате получится строка: 'Мама мыла раму'. Длина результирующей строки не должна превышать 255.  Операции отношения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в   результате   чего   получается   логическое   значение   (true   или   false).   Операция   отношения   имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но   в   общей   части   символы   совпадают,   считается,   что   более   короткая   строка   меньше,   чем   более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы. Строковые типы.  Var <идентификатор> : string[<максимальная длина строки>];Процедуры и функции обработки строковых данных.   Функция Copy(S, Pozition, N) выделяет из строки   S   подстроку   длиной   N   символов,   начиная   с   позиции   Pozition.   Здесь   N   и   Pozition   — целочисленные выражения  Функция Concat(S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку.  Функция Length(S) — определяет текущую длину строки S. Результат — значение целого типа.  Функция Pos(S1, S2) — обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0.  Процедура Delete(S, Poz, N) — удаление N символов из строки S, начиная с позиции Poz.   Процедура Insert(S1, S2, Poz) — вставка строки S1 в строку S2, начиная с позиции Poz.   Формальные и фактические параметры.   Формальные и фактические параметры   Чтобы отличать параметры подпрограммы, описанные в её заголовке и теле, от параметров, указываемых при вызове подпрограммы,   первые   принято   называть   формальными   параметрами,   вторые   —   фактическими параметрами. Так, в последнем примере параметр Line в заголовке и теле подпрограммы subprog — это формальный параметр, а строка 'Good bye' , использованная в первом вызове этой подпрограммы — фактический   параметр.   При   вызове   подпрограммы   фактические   параметры,   указанные   в   команде вызова,   становятся   значениями   соответствующих   формальных   параметров,   чем   и   обеспечивается передача данных в подпрограмму.   Процедуры и Функции. Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных   и   выходных   параметров.   Входными   параметрами   называют   величины,   передающиеся   из вызывающего   блока   в   подпрограмму   (исходные   данные   для   подпрограммы),   а   выходными   ­ передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).   Программирование рекурсивных алгоритмов.  В математике рекурсией называется способ описания функций или процессов через самих себя.   Пользуясь рекурсией, мы избавляемся от необходимости утомительного последовательного описания конструкции и ограничиваемся выявлением взаимосвязей между   различными   уровнями   этой   конструкции.     В   последнее   время   в   связи   с   широким распространением   прикладных   программ,   не   связанных   с   проведением   расчетов,   бытует   взгляд   на рекурсию   как   на   интересное,   но   необязательное   украшение   системы   программирования.   Даже   в некоторых последних книгах по Турбо Паскалю не находится места для описания рекурсии. Файлы. Типы файлов. Процедуры и функции для работы с файлами.  Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.  Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.  При работе с файлами выполняются операции ввода ­ вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную  память   ЭВМ,  операция  вывода   ­   это  пересылка   данных   из   основной   памяти  на   внешнее устройство (в выходной файл).  Файлы на внешних устройствах часто называют физическими файлами. Их   имена   определяются   операционной   системой.   В   программах   на   языке   Паскаль   имена   файлов задаются   с   помощью   строк.   Например,   имя   файла   на   диске   может   иметь   вид:     'LAB1.DAT' 'c:\ABC150\pr.txt'  'my_files'  Типы файлов Турбо Паскаль  Турбо Паскаль поддерживает три файловых типа:     текстовые   файлы;     типизированные   файлы;     нетипизированные   файлы.     Доступ   к   файлу   в программе   происходит   с   помощью   переменных   файлового   типа.   Переменную   файлового   типа описывают одним из трех способов:  file of тип ­ типизированный файл (указан тип компоненты);  text ­ текстовый файл;  file ­ нетипизированный файл.  Примеры описания файловых переменных:  var  f1: file of char;  f2: file of integer;  f3: file;  t: text;  Стандартные процедуры и функции  Любые дисковые файлы становятся   доступными   программе   после   связывания   их   с   файловой   переменной,   объявленной   в программе. Все операции в программе производятся только с помощью связанной с ним файловой переменной.  Assign(f, FileName)  связывает файловую переменную f с физическим файлом, полное имя которого   задано   в   строке   FileName.   Установленная   связь   будет   действовать   до   конца   работы программы, или до тех пор, пока не будет сделано переназначение.  После связи файловой переменной с дисковым именем файла в программе нужно указать направление передачи данных (открыть файл). В зависимости от этого направления говорят о чтении из файла или записи в файл.  Reset(f)  открывает для чтения файл, с которым связана файловая переменная f. После успешного выполнения процедурыReset файл готов к чтению из него первого элемента. Процедура завершается с сообщением об ошибке, если указанный файл не найден.  Если f ­ типизированный файл, то процедурой reset он открывается для чтения и записи одновременно.  Rewrite(f)   открывает для записи файл, с которым связана файловая переменная   f.   После   успешного   выполнения   этой   процедуры   файл   готов   к   записи   в   него   первого элемента.   Если   указанный   файл   уже   существовал,   то   все   данные   из   него   уничтожаются.     Close(f) закрывает открытый до этого файл с файловой переменной f. Вызов процедуры Close необходим при завершении работы с файлом. Если по какой­то причине процедура Close не будет выполнена, файл все­ же будет создан на внешнем устройстве, но содержимое последнего буфера в него не будет перенесено. EOF(f): boolean  возвращает значение TRUE, когда при чтении достигнут конец файла. Это означает, что уже прочитан последний элемент в файле или файл после открытия оказался пуст.   Rename(f, NewName)  позволяет переименовать физический файл на диске, связанный с файловой переменной f. Переименование возможно после закрытия файла.   Erase(f)   уничтожает физический файл на диске, который был связан с файловой переменной f. Файл к моменту вызова процедуры Erase должен быть закрыт.  IOResult  возвращает целое число, соответствующее коду последней ошибки ввода ­ вывода. При   нормальном   завершении   операции   функция   вернет   значение   0.   Значение   функции   IOResult необходимо присваивать какой­либо переменной, так как при каждом вызове функция обнуляет свое значение. Функция IOResult работает только при выключенном режиме проверок ошибок ввода ­ вывода или с ключом компиляции {$I­}.   Работа с типизированными файлами   Типизированный файл ­ это последовательность компонент любого заданного типа (кроме типа "файл"). Доступ к компонентам файла   осуществляется   по   их   порядковым   номерам.   Компоненты   нумеруются,   начиная   с   0.   После открытия файла указатель (номер текущей компоненты) стоит в его начале на нулевом компоненте. После каждого чтения или записи указатель сдвигается к следующему компоненту.   Запись в файл: Write(f, список переменных);  Процедура записывает в файл f всю информацию из списка переменных. Чтение из файла:  Read(f, список переменных);  Процедура читает из файла f компоненты в указанные переменные. Тип файловых компонент и переменных должны совпадать. Если будет сделана попытка чтения несуществующих  компонент, то произойдет ошибочное завершение программы. Необходимо либо точно рассчитывать количество компонент, либо перед каждым чтением данных делать проверку их существования (функция eof, см. выше)  Смещение указателя файла:  Seek(f, n);  Процедура смещает указатель файла f на n­ную позицию. Нумерация в файле начинается с 0.   Определение количества компонент:  FileSize(f): longint;  Функция возвращает количество компонент в файле f.  Определение позиции указателя:  FilePos(f): longint;  Функция возвращает порядковый номер текущего компонента файла  f.   Отсечение  последних  компонент  файла:   Truncate(f);     Процедура  отсекает  конец  файла, начиная  с текущей позиции включительно.   Работа с текстовыми файлами   Текстовый файл ­ это совокупность строк, разделенных метками конца строки. Сам файл заканчивается меткой конца файла. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Одновременная запись и чтение   запрещены.     Чтение   из   текстового   файла:     Read(f,   список   переменных);     ReadLn(f,   список переменных);  Процедуры читают информацию из файла f в переменные. Способ чтения зависит от типа переменных,   стоящих   в   списке.   В   переменную   char   помещаются   символы   из   файла.   В   числовую переменную: пропускаются символы­разделители, начальные пробелы и считывается значение числа до появления   следующего   разделителя.   В   переменную   типа   string   помещается   количество   символов, равное длине строки, но только в том случае, если раньше не встретились символы конца строки или конца файла. Отличие ReadLn от Read в том, что в нем после прочтения данных пропускаются все оставшиеся   символы   в   данной   строке,   включая   метку   конца   строки.   Если   список   переменных отсутствует,   то   процедура   ReadLn(f)   пропускает   строку   при   чтении   текстового   файла.     Запись   в текстовый   файл:     Write(f,   список   переменных);     WriteLn(f,   список   переменных);     Процедуры записывают информацию в текстовый файл. Способ записи зависит от типа переменных в списке (как и при выводе на экран). Учитывается формат вывода. WriteLn от Write отличается тем, что после записи всех значений из переменных записывает еще и метку конца строки (формируется законченная строка файла).  Добавление информации к концу файла:  Append(f)  Процедура открывает текстовый файл для добавления   информации   к   его   концу.   Используйте   эту   процедуру   вместо   Rewrite.     Работа   с нетипизированными   файлами     Нетипизированные   файлы   ­   это   последовательность   компонент произвольного   типа.     Открытие   нетипизированного   файла:     Reset(f,   BufSize)     Rewrite(f,   BufSize) Параметр   BufSize   задает   число   байтов,   считываемых   из   файла   или   записываемых   в   него   за   одно обращение. Минимальное значение BufSize ­ 1 байт, максимальное ­ 64 К байт. Если BufSize не указан,то   по   умолчанию   он   принимается   равным   128.     Чтение   данных   из   нетипизированного   файла: BlockRead(f,  X,  Count,  QuantBlock);     Эта   процедура   осуществляет   за   одно   обращение   чтение   в переменную X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера. Значение Count не может быть меньше 1. За одно обращение нельзя прочесть больше, чем 64 К байтов.     Необязательный   параметр   QuantBlock   возвращает   число   блоков,   прочитанных   текущей операцией BlockRead. В случае успешного завершения операции чтения QuantBlock = Count, в случае аварийной ситуации параметр QuantBlock будет содержать число удачно прочитанных блоков. Отсюда следует,   что   с   помощью   параметра   QuantBlock   можно   контролировать   правильность   выполнения операции чтения.  Запись данных в нетипизированный файл:  BlockWrite(f, X, Count, QuantBlock);  Эта процедура   осуществляет   за   одно   обращение   запись   из   переменной   X   количества   блоков,   заданное параметром Count, при этом длина блока равна длине буфера.  Необязательный параметр QuantBlock возвращает число блоков, записанных успешно текущей операцией BlockWrite.  Для нетипизированных файлов   можно   использовать   процедуры   Seek,   FIlePos   и   FileSize,   аналогично   соответствующим процедурам типизированных файлов.   Списки, стеки, деревья.  Главная возможность, которую предоставляет наличие ссылочных типов и ссылочных переменных в Паскале, – это возможность построения с их помощью объектов со сложной, меняющейся структурой. Примерами таких структур являются списки, стеки, деревья. Список – это набор записей, каждая из которых имеет поле данных и указатель (ссылку) на следующую запись в списке. Та, в свою очередь, тоже содержит поле данных и ссылку на продолжение списка. Последний элемент списка содержит значение Nil, т.е. уже ни на что не ссылается. Начало списка формирует переменная типа “указатель”, содержащая адрес первого элемента списка (рис. 6). Поле данных еще называют информационной частью списка. Указатель в списке должен быть типизированным. Базовым типом для него является тот же тип данных, что и тип информационной части списка.  Рассмотрим методы работы со списками, информационная часть которых состоит из одного поля типа Integer. Такие списки естественно называть списками целых чисел. Обозначим тип элемента списка идентификатором Elem, а ссылочный тип на элемент списка – идентификатором Uk. Type  Uk = ^Elem; {Описание типизированного указателя} Elem = Record{Описание базового типа} x : Integer; next  :  Uk; End;Var p, q : Uk;  В Паскале допускается описывать сначала типизированные указатели, а затем уже их базовый тип. Стек – линейный список, в котором добавления и исключения элемента производятся с одного конца, называемого вершиной стека (рис. 8). Соблюдается принцип “первым пришел – последним ушел”. Считается, что доступ возможен только к верхнему элементу (в списках мы называли его первым). Стек оптимален для случаев, когда требуется просчитать и запомнить большое число структур данных, а потом обработать их в обратном порядке.  Работа со стеком осуществляется через указатель стека. При выполнении загрузки элемента в стек данные   записываются   на   место,   определяемое   указателем   стека,   а   указатель   стека   изменяет   свое состояние и задает следующую свободную ячейку блока памяти. При извлечении элемента из стека указатель стека возвращается назад на один шаг. Добавить элемент в стек:New(q); Readln(q^.x); q^.next := p; p := q; Считать значение элемента из стека и исключить его из стека: q := p; p := q^.next; y := q^.x; dispose(q);Считать элемент, не удаляя его из стека:y := p^.x; Списки   могут   быть   не   только   линейными,   но   и  кольцевыми.   В   кольцевом   списке   для   последнего элемента следующим является первый, а если список двунаправленный, то для первого предыдущим является   последний.   Как   и   линейный,   кольцевой   список   определяется   указателем   на   свой   первый элемент. При просмотре линейного списка переход от одного элемента к другому осуществляется до тех   пор,   пока   рабочий   указатель   не   станет   равен   Nil.   При   просмотре   кольцевого   списка   надо переходить к следующему элементу до тех пор, пока рабочий указатель не совпадет с указателем на первый элемент. Поэтому первый элемент должен обрабатываться отдельно, а просмотр при помощи цикла следует начинать со второго элемента.Деревья При   решении   многих   задач   математики   используется   понятие   графа.  Граф –   это   набор   точек   на плоскости (эти точки называются вершинами графа), некоторые из которых соединены отрезками (эти отрезки   называются  ребрами  графа).   Примером   графа   служит   схема   линий   метрополитена.   Граф называется  связным,   если   любые   две   его   вершины   соединены   некоторым   путем.   Состоящий   из различных   ребер   замкнутый   путь   называется  циклом.   В   графе,   изображенном   на   рис.   9,   циклами являются, например, ABCA и BCDB. Рис. 9. Пример графа                Связанный граф, в котором нет циклов, называется деревом (рис. 10, 11). Рекурсивное определение дерева выглядит следующим образом: дерево либо пусто, либо состоит из элемента, содержащего указатели на непересекающиеся деревья, называемые поддеревьями. Элементы, в которые не входит никаких ветвей, называются корневыми. Элементы, из которых не выходят ветви, называются  листьями. То, что для списка принято называть элементом, для дерева часто называют узлом. Принципы   объектно­ориентированного   программирования.     Три   основных   принципа   языков объективно­ориентированного программирования   По Бьерну Страуструпу, автору C++, язык может называться   объектно­ориентированным,  если   в  нем  реализованы  три   концепции:   объекты,   классы  и наследование. Однако теперь принято считать, что такие языки должны держаться на других трех китах: инкапсуляции, наследовании и полиморфизме. Этот философский сдвиг произошел из­за того, что со временем мы стали понимать: построить объектно­ориентированные системы без инкапсуляции и полиморфизма так же невозможно, как без классов и наследования.  Инкапсуляция  Как я уже говорил, инкапсуляция, или утаивание информации (information hiding), — это возможность скрыть внутреннее устройство объекта от его пользователей, предоставив через интерфейс доступ только к тем членам объекта, с которыми клиенту разрешается работать напрямую. Поскольку в том же контексте я говорил также об абстрагировании, то считаю нужным пояснить разницу между этими похожими понятиями. Инкапсуляция   подразумевает   наличие   границы   между   внешним   интерфейсом   класса   (открытыми членами,   видимыми   пользователям   класса)   и   деталями   его   внутренней   реализации.   Преимущество инкапсуляции   для   разработчика   в   том,   что   он   может   открыть   те   члены   класса,   которые   будут оставаться   статичными,   или   неизменяемыми,   скрыв   внутреннюю   организацию   класса,   более динамичную и в большей степени подверженную изменениям. Как уже говорилось, в С# инкапсуляция достигается путем назначения каждому члену класса своего модификатора доступа — public, private или protected.  Абстрагирование  Абстрагирование связано с тем, как данная проблема представлена в пространстве программы. Во­первых, абстрагирование заложено в самих языках программирования. Постарайтесь вспомнить, давно ли вам приходилось заботиться  о стеке или регистрах процессора. Возможно, когда­то вы  изучали  программирование  на  ассемблере,  но держу  пари,  что  много  воды утекло с тех пор, когда вас занимали детали реализации программы на низшем, машинно­зависимом уровне. Причина проста: большинство языков отстраняют вас (абстрагируют) от таких подробностей, позволяя   сосредоточиться   на   решении   прикладной   задачи.     При   объявлении   классов   в   объектно­ ориентированных языках вы можете использовать такие имена и интерфейсы, которые отражают смысл и назначение объектов предметной области. "Удаление" элементов, не связанных напрямую с решением задачи,  позволит  вам  полностью сосредоточиться   на самой  задаче  и  решить  ее  более  эффективно. Перефразируя высказывание из книги Брюса Эккеля (Вшсе Eckel) "Thinking in Java", можно сказать: в большинстве   случаев   умение   достичь   решения   проблемы   сводится   к   качеству   применяемого абстрагирования.  Однако язык — это один уровень абстрагирования. Если вы пойдете дальше, то, как разработчику класса, вам нужно придумать такую степень абстрагирования, чтобы клиенты вашего класса могли сразу сосредоточиться на своей задаче, не тратя время на изучение работы класса. На очевидный вопрос — какое отношение интерфейс класса имеет к абстрагированию? — можно ответить так: интерфейс класса и есть реализация абстрагирования.   Наследование   Наследованием называют возможность при описании класса указывать на его происхождение (kind­of relationship) от другого класса. Наследование позволяет создать новый класс, в основу которого положен существующий. В полученный таким образом класс можно внести свои изменения, а затем создать новые объекты данного типа. Этот механизм лежит в основе создания иерархии классов. После абстрагирования наследование — наиболее значимая часть общего планирования системы. Производным (derived class) называется создаваемый класс, производный от базового (base class). Производный класс наследует все методы базового, позволяя задействовать результаты прежнего труда.Статистические и виртуальные методы.  Метод ­ это процедура или функция, объявленные внутри объявления элемента типа объект и предназначенная в обычно для работы с полями этого объекта. Формат обьявления Procedure <ИмяМетода>(<Параметры, как у процедуры>);  Метод имеет доступ к полям данных объекта, не требуя передачи их ему в виде параметров.   Объявление метода внутри объявления объектного типа содержит только заголовок. Тело метода определяется вне объявления объекта. Его заголовок должен содержать имя объекта, которому принадлежит метод.   Например: Procedure Объект.Метод;   (<  параметры >);   Begin   .......   .......   End;    Методы подразделяются на статические и виртуальные. Виртуальный метод отличается от статического тем, что реализующий его код подсоединяется к вызову не в процессе компиляции, а в процессе выполнения, что достигается так называемым поздним связыванием. Это дает возможность строить иерархию объектов с одинаковыми названиями методов, реализуемыми, однако, различными кодами.  Синаксис объявления виртуального метода: Procedure Метод(< параметры >); virtual;   Динамические объекты.  Указатели используются при создании и обработке динамических объектов. Заранее определяемые объекты создаются с помощью определений. Динамические объекты, в отличие от   заранее   определяемых,   создаются   динамически   и   явно   в   процессе   выполнения   программы.   Для создания динамических объектов служат функции malloc и calloc. В отличие от заранее определенных объектов, число динамических объектов не фиксировано тем, что записано в тексте программы, ­ по желанию   динамические   объекты   могут   создаваться   и   уничтожаться   в   процессе   ее   выполнения. Динамические   объекты,   в   отличие   от   заранее   определенных,   не   имеют   имен,   и   ссылка   на   них выполняется с помощью указателей.   Жизненный цикл программного обеспечения.  Жизненный цикл программного обеспечения (ПО) — период   времени,   который   начинается   с   момента   принятия   решения   о   необходимости   создания программного продукта и заканчивается в момент его полного изъятия из Источникэксплуатации[1]. Этот цикл — процесс построения и развития ПО.   Интегрированная среда обработки Delphi.  Основой Delphi является графическая среда разработки приложений,   называемая   интегрированной   средой   разработки   (Integrated   Development   Environment, IDE). Многие известные в данный момент приложения для Windows имеют MDI (Multiple Document Interface), который определяет особый способ управления нескольких дочерних окон внутри одного большого окна. Представителем MDI­приложения является текстовый редактор Word. Среда Delphi является   представителем   спецификации,   называемой   Single   Document   Interface   (SDI),  и   состоит   из нескольких отдельно расположенных окон. SDI ближе к той модели приложений, что используется в Windows 95. Окна могут перемещаться по экрану, частично или полностью перекрывать друг друга. Каждое окно предназначено для решения определенных задач. На рис. 1 показан вид экрана после запуска Delphi. На рис. 1 приведено окно Delphi 3. Для других версий окна будут иметь незначительные отличия. После   запуска   Delphi   на   экране   открываются   четыре   окна   интегрированной   среды   разработки приложений.  Главные составные части среды программирования: 1. Главное окно. 2. Окно формы. 3. Окно редактора кода программы. 4. Инспектор объектов. Разработка приложения в Delphi.  Создание новой программы на Delphi начинается с выбора опции File/New Application. Это означает, что начинается работа над новым приложением для Windows. В этом   случае   появляется   проект   Windows­окна   программы   (см.   рис.   1).   В   окне   текста   программы представлен   минимально   необходимый   код,   обеспечивающий   функционирование   окна   в   Windows.Простейшая   программа   уже   готова.   Для   того   чтобы   запустить   первую   программу,   нужно   нажать клавишу F9. Эта клавиша соответствует команде Run из пункта меню Run главного меню Delphi. При выполнении этой команды программа последовательно проходит три главных этапа своего жизненного цикла   –   этапы   компиляции,   компоновки   и   исполнения.   На   этапе   компиляции   осуществляется преобразование подготовленного текста программы в последовательность машинных инструкций, на этапе   компоновки   к   ней   подключаются   необходимые   вспомогательные   подпрограммы,   а   на   этапе исполнения готовая программа загружается в оперативную память и ей передается исполнение.  Полученная программа ничего не умеет делать, кроме как реагировать на нажатие стандартных кнопок минимизации, максимизации окна и вывода системного меню. В заголовке полученного окна высветится имя окна – Form1. По умолчанию заголовок окна совпадает с заголовком формы. Для того чтобы закрыть работающее приложение, необходимо нажать стандартную кнопку закрытия окна Windows. Обратившись   к   инспектору   объектов,   можно   изменить   свойство   Caption   формы.   Caption   означает заголовок. Щелкнув мышью по строке Caption окна инспектора объектов, активизируем эту строку свойств  и   в  правой   колонке  запишем  новый  заголовок  “Моя   первая  программа   на  Delphi”.   Новый прогон   помощью   окна   инспектора   объектов   мы   изменили   одно   из   свойств   окна   программы   –   его заголовок. Структура проекта в Delphi. Программа на Delphi – это совокупность файлов, называемая проектом.  Проект – это совокупность файлов, обеспечивающих разработку приложения в Delphi. Проект Delphi  состоит из файла проекта, из файлов форм, модулей, установок параметров проекта, ресурсов и т.д.  Многие из этих файлов создаются Delphi, когда только начинается работа над проектом.  рекомендуется создавать отдельный каталог. На рис. 14 представлено окно, содержащее файлы одного  простого приложения. Файл проекта имеет расширение .dpr. Он содержит программу, написанную на языке Object Pascal. Для каждого проекта может быть только один такой файл. В файле проекта содержатся ссылки на все формы проекта и относящиеся к ним модули.  Он связывает вместе все файлы, из которых состоит приложение,  и,   таким   образом,   среда   Delphi   “знает”,   какие   файлы   необходимы   для   создания приложения. В файле проекта также содержится код инициализации приложения. Этот файл создается автоматически.   DPR­файл   может   быть   открыт   для   просмотра   или   редактирования   при   помощи команды View/Source меню Project. Этот файл обычно не редактируется. Управление   проектами.  При   загрузке   Delphi   автоматически   создается   новый   проект.   Можно использовать этот проект для создания нового приложения или открыть уже существующий проект, либо   использовать   один   из   предоставляемых   средой   шаблонов   в   качестве   основы   для   нового приложения. Для того чтобы создать новый проект или открыть уже существующий, сохранить проект или закрыть его, необходимо воспользоваться командами, расположенными в меню  File: New, Open, Save, Save As, Save Project As, Save All, Close и Close All (см. приложение 2 файла материалов). Менеджер проектов Менеджер проектов – инструмент, обеспечивающий доступ ко всем файлам, содержащимся в проекте. Он   позволяет   переключаться   между   файлами,   добавлять   или   удалять   модули   из   проекта,   при необходимости вызывать файлы в редактор для внесения изменений. Менеджер проектов вызывается командой View/Project Manager (рис. 16). Полоса кнопок менеджера проекта предоставляет доступ к следующим командам: Add – добавить модуль к проекту; Remove – удалить модуль из проекта; Unit – добавить новый модуль в проект; Form – добавить новую форму в проект; Options – вызывает диалоговое окно установки параметров проекта; Все кнопки в окне менеджера проекта дублируют пункты основного меню. Библиотека   визуальных   компонентов.  Палитра   компонентов   Delphi   содержит   большое   число визуальных   компонентов,   предназначенных   для   конструирования   пользовательского   интерфейса. Стандартные визуальные компоненты На   странице   Standard   палитры   компонентов   Delphi   расположены   стандартные   компоненты, соответствующие интерфейсным элементам Windоws.TMainMenu Интерфейсный элемент, называемый меню, предусмотрен стандартными соглашениями по требованию к интерфейсным прикладным программам и используется практически во всех Windows­приложениях. TМainMenu определяет главное меню формы (см. рис. 20). На форму можно поместить сколько угодно объектов этого класса, но отображаться в полосе меню в верхней части формы будет тот из них, который указан в свойстве Menu формы. Основные   возможности,   обеспечивающие   функционирование   меню,   реализованы   в   базовом   классе TМenu. В основе данного класса лежит свойство, представляющее собой коллекцию элементов меню. Каждый элемент представляет собой отдельную команду, которая может быть конечной (вызывать функцию приложения) или раскрывать меню более низкого уровня. К отдельному элементу меню можно обратиться следующим образом: SomeMenu.Items[1].Caption := ‘Edit’; Каждому элементу меню можно придать собственное изображение. Для этого используется свойство Images : TImageList. Картинки должны содержаться в компоненте TImageList. TPopupMenu Локальное меню – это меню, которое становится доступным, когда пользователь нажимает правую кнопку мыши в рабочей области формы или компонента. Может быть создано для любого оконного компонента.   Чтобы   связать   щелчок   правой   клавиши   мыши   на   компоненте   с   раскрытием вспомогательного меню, в свойство PopupMenu компонента необходимо поместить имя компонента­ меню. Свойство AutoPopup : Boolean обеспечивает разворачивание меню при щелчке правой кнопкой мыши на элементе управления. Процессы создания и свойства аналогичны TMainMenu. TLabel С   помощью   статического   интерфейсного   элемента   создаются   заголовки   для   других   интерфейсных элементов. Элемент этого типа обычно используется, когда необходимо отобразить текст, который не может   быть   отредактирован   пользователем,   например   заголовки   компонентов,   которые   не   имеют собственного   свойства   Caption.   Для   отображения   текста,   который   можно   изменять,   используются компоненты TEdit или TMemo. Свойство Autosize указывает, будет ли метка изменять свои размеры в зависимости от помещенного в ее свойство Caption текста: True – будет. Layout   определяет   выравнивание   текста   по   вертикали   относительно   границ   метки   (tlTop,   tlCenter, tlBottom). Transparent определяет прозрачность фона метки. WordWrap   –   разрешает/запрещает   разрыв   строки   на   границе   слова.   Для   вывода   многострочных надписей: AutoSize=False, WordWrap=True. TEdit Строка редактирования – это прямоугольное окно, в котором возможен ввод и редактирование текста. С помощью компонента TEdit можно отображать и нередактируемый текст. Для этого необходимо присвоить свойству ReadOnly значение True. TMemo Компонент TМemo предназначен для ввода, редактирования и/или отображения достаточно длинного текста. Текст хранится в поле класса TStrings и, таким образом, представляет собой набор строк. К содержимому компонента обращаются, используя свойства Text или Lines. Свойство Text используется для доступа ко всему содержимому компонента, а свойство Lines – для построчного доступа. Многие свойства аналогичны соответствующим свойствам класса TЕdit. Свойство WordWrap, как у TLabel.  Специфичные свойства: ScrollBars – полосы прокрутки; если WantReturns = True, то нажатие Enter вызывает   переход   на   новую   строку,   в   противном   случае   –   обрабатывается   системой;   аналогично WantTabs для клавиши Tab Методы Add, Delete и Insert используются для добавления, удаления и вставки строк. Для работы с областью обмена используются методы CopyToClipboard, CutToClipboard и PasteFromClipboard. Для того   чтобы   выделить   весь   текст,   используется   метод   SelectAll,   выделенный   текст   доступен   через свойство   SelText.   Для   того   чтобы   заполнить   Memo   содержимым   текстового   файла,   можно воспользоваться методом LoadFromFile:– – –”–”– –”–”– OK; –”–”– –”–”– –”–”– Retry; Yes; All; Memo1.Lines.LoadFromFile(‘c:\autoexec.bat’); Cancel;mrAbort mrIgnore  – mrNo – была нажата кнопка –”–”– Abort; Ignore; No; – модальное окно не закрывается;mrOk –была нажата кнопка – – – If FileExists(‘c:\autoexec.bat’) Then  TButton Компонент   TButton   представляет   собой   стандартную   кнопку.   Кнопка   может   содержать   текст, описывающий   выполняемое   при   ее   нажатии   действие.   Обычно   кнопки   используются   в   качестве управляющих элементов в диалоговых панелях. Кнопкой по умолчанию считается кнопка, которая посылает событие OnClick при нажатии клавиши Enter. Чтобы создать кнопку по умочанию, необходимо присвоить свойству кнопки Default значение True. Кнопкой “Cancel” считается кнопка, которая посылает событие OnClick при нажатии клавиши Esc. Для того чтобы кнопка стала кнопкой “Cancel”, необходимо присвоить свойству Cancel значение True. Модальными   окнами  называются   такие   специальные   окна,   которые,   раз   появившись   на   экране, блокируют работу пользователя с другими окнами вплоть до своего закрытия. Обычно с их помощью реализуется диалог, требующий от пользователя принятия некоторого решения. Для этого в состав модального   окна   включается   несколько   кнопок.   Если   у   кнопки   определено   свойство   ModalResult, нажатие на нее приводит к закрытию модального окна и возвращает в программу значение ModalResult как   результат   диалога   с   пользователем.   В   Delphi   определены   следующие   стандартные   значения ModalResult: mrNone mrCancel mrRetry mrYes mrAll TCheckBox Кнопка с независимой фиксацией TСheckBox используется для того, чтобы пользователь мог указать свое решение типа Да/Нет или Да/Нет/Не знаю. Это решение отражается в свойстве State компонента (содержит состояние компонента: cbUnchecked – нет; cbСhecked – да; cbGrayed – не знаю), доступном как для чтения, так и для записи. Переключатели не зависят друг от друга. Checked – содержит выбор пользователя типа Да/Нет. TRadioButton В отличие от TCheckBox компоненты TRadioButton   представляют собой зависимые переключатели, предназначенные   для   выбора   одного   из   нескольких   взаимоисключающих   решений.   На   форму помещается, по меньшей мере, два таких компонента. Если в одном компоненте свойство  Checked принимает   значение   True,   во   всех   других   компонентах,   расположенных   в   том   же   контейнере,   это свойство автоматически принимает значение False.  TListBox Интерфейсный   элемент   этого   типа   содержит   список   элементов,   которые   могут   быть   выбраны   при помощи клавиатуры или мыши.  В компоненте предусмотрена возможность программной прорисовки элементов, поэтому список может содержать не только строки, но и произвольные изображения. Определены события: OnDrawItem   –   возникает   в   момент,   когда   программа   должна   нарисовать   очередной   элемент. Обработчик получает ссылку на список выбора Control, индекс изображаемого элемента Index, границы элемента Rect и его состояние State. Прорисовка ведется с помощью свойства Canvas.  OnMeasureItem   –   возникает   только   для   Style=lbOwnerDrawVariable.   Оно   предшествует   событию OnDrawItem   и   в   ходе   его   обработки   программа   должна   установить   нужную   высоту   очередного элемента. Canvas – канва для программной прорисовки элементов. Style   –   определяет   способ   прорисовки   элементов:   lbStandart   –   элементы   рисует   Windows;   для остальных программная прорисовка. (Fixed – элементы имеют одинаковую высоту). TComboBox Комбинированный список – это интерфейсный элемент, включающий в себя список, статический текст или   строку   редактирования.   Представляет   собой   комбинацию   списка   TListBox   и   редактора   TЕdit. Большинство его свойств и методов заимствованы у этих компонентов.TScrollBar Управляющий элемент, похожий на полосу прокрутки окна. Используется для визуального управления значением числовой величины. Свойства: Kind – ориентация компонента.  LargeChange – “большой” сдвиг бегунка. Max – максимальное значение диапазона изменения числовой величины. Min – минимальное значение диапазона изменения числовой величины. Position – текущее значение числовой величины. SmallChange – “малый” сдвиг бегунка. С   помощью   метода   SetParams   (Aposition,   Amax,   Amin:integer)   можно   сразу   установить   свойства Position, Max и Min. Событие OnScroll возникает при любом изменении свойства Position. Событие OnChange – при изменении параметров методом SetParams. TGroupBox Компонент   представляет   собой   стандартную   группу   элементов.   Группа   элементов   –   это прямоугольник, который обрамляет несколько интерфейсных элементов (обычно кнопок с зависимой или   независимой   фиксацией).   Заголовок   группы   (который   отображается   в   левом   верхнем   углу прямоугольника) задается с помощью свойства Caption.  TRadioGroup Этот компонент представляет собой комбинацию GroupBox с набором RadioButton. TRadioGroup – специальный   контейнер   для   размещения   зависимых   переключателей   класса   TRadioButton.   Каждый размещаемый в нем переключатель помещается в специальный список Items и доступен по индексу, что упрощает обслуживание группы. Свойства:  Columns – количество столбцов переключателей;  ItemIndex – индекс выбранного переключателя;  Items – список строк с заголовками элементов. TPanel Панель служит для группирования элементов управления и меньших контейнеров. С помощью свойства панели   Align   можно   добиваться   пропорционального   расположения   компонентов   при   изменении размеров окна. Дополнительные визуальные компоненты Компоненты, расположенные на странице Additional (рис. 30) являются дополнением к стандартным визуальным интерфейсным элементам Windows. TBitBtn Этот компонент является разновидностью стандартной кнопки TВutton. Отличительная особенность – свойство Glyph, с помощью которого определяется растровое изображение, рисуемое на поверхности кнопки. В состав поставки Delphi входит множество рисунков, разработанных для размещения в этих кнопках (каталог Images/Buttons).  Часть свойств кнопка TВitBtn унаследовала у своего родительского класса TВutton. TSpeedButton Компонент   SpeedButton   –   специализированная   кнопка   для   использования   с   компонентом   Panel. Применяется для создания линеек инструментов и специальных наборов, включающих в себя постоянно нажатые   кнопки.   Быстрые   кнопки   позволяют   реализовать   функции,   которые   с   другими   кнопками получить не удается.  TMaskEdit Компонент   предназначен   для  ввода  текста,  соответствующего  некоторому  шаблону,  задаваемому  в свойстве String. Если это свойство не задано, то работает как Edit. Свойство EditText содержит текст до наложения на него маски шаблона, а свойство Text – может содержать либо исходный текст, либо результат наложения на него маски шаблона.Для удобства ввода шаблонов в Delphi есть специальный редактор, содержащий несколько наборов наиболее распространенных шаблонов. Он запускается при нажатии кнопки в поле свойства EditMask в Инспекторе объектов.  TStringGrid Компонент предназначен для представления данных в табличном виде. Он организует представление фрагментов текста в прямоугольных ячейках по строкам и столбцам, добавляет и удаляет строки и столбцы, организует их прокрутку. В верхней и левой части таблицы имеется фиксированная область, предназначенная для размещения заголовков. Эта область не участвует в прокрутке. Каждая отдельная ячейка таблицы представляет собой строку текста типа String. 39­2  Класс   TStringGrid   является   потомком   класса   TCustomGrid   и   наследует   от   него   большинство свойств и методов. TDrawGrid Компонент создает и обслуживает табличные структуры. В отличие от TSringGrid может содержать графические изображения. Свойства аналогичны свойствам TStringGrid.  TImage Служит   для   размещения   на   форме   одного   из   трех   поддерживаемых   Delphi   типов   изображений: растровой картинки, пиктограммы или метафайла. В свойстве Canvas компонента содержится канва, с помощью которой при необходимости программа может отредактировать растровое изображение. TShape Компонент рисует одну из простейших геометрических фигур, определяемых следующим множеством: stRectangle,   stSquare,   stRoundRect,   stRoundSquare,   stEllipse,   stCircle   –   прямоугольник,   квадрат, скругленный прямоугольник, скругленный квадрат, эллипс, окружность. Фигура полностью занимает все пространство компонента. Вид геометрической фигуры определяется свойством Shape. TBevel Предназначен   для   оформления,   например   для   выделения   группы   элементов.   Свойство   Shape определяет вид компонента: прямоугольник, рамка, верхняя линия, нижняя линия, левая линия, правая линия. Style задает стиль компонента. TScrollBox Служит   контейнером   для   размещения   других   компонентов.   Его   отличительная   особенность   – возможность   прокрутки   и,   следовательно,   экономия   пространства   формы   при   необходимости размещения на ней большого количества управляющих элементов. TCheckListBox Группирует независимые переключатели, позволяя обратиться к любому из них по индексу.  Свойство Checked[Index] cодержит выбор пользователя типа Да/Нет для переключателя с индексом Index. State[Index] – состояние переключателя с индексом Index:cbUnchecked – нет; cbCheked – да; cbGrayed – не знаю Событие OnClickCheck наступает при изменении состояния любого переключателя. TSplitter Компонент   TSplitter   используется   для   разделения   клиентской   области   формы   на   панели,   размер которой можно изменять. TStaticText Компонент   StaticText   имеет   ту  же   функциональность,   что   и  компонент   Label.   В   отличие   от  Label компонент StaticText является наследником класса TWinControl и благодаря этому имеет ссылку на окно. TChart Этот компонент предназначен для графического представления числовых данных. Компонент содержит большое количество специфических свойств. Общая схема его использования такова.Визуальные компоненты интерфейса Win32 TTabControl Набор закладок. Каждая закладка представляет собой прямоугольное поле с надписью и/или текстом. Выбор той или иной закладки распознается программой и используется для управления содержимым окна.  Свойство Tabs определяет названия и количество закладок. Событие OnChange возникает при выборе новой закладки и позволяет управлять содержимым окна компонента. Свойство TabIndex  определяет индекс выбранной закладки. TРageControl Набор панелей с закладками. Каждая панель может содержать свой набор интерфейсных элементов и выбирается щелчком по связанной с ней закладке. TImageList Контейнер   для   хранения   набора   графических   изображений   одного   размера.   Позволяет   извлекать изображения по индексу. TRichEdit Полнофункциональный   текстовый   редактор.   Этот   компонент   является   оболочкой   вокруг   мощного редактора, который лежит в основе утилиты WordPad. Благодаря использованию этого компонента можно   добавить   в   приложение   текстовый   редактор,   обладающий   возможностями   управления атрибутами всего текста, выделенного текста, форматирования, изменения шрифтов и т. п. TТrackBar Используется для плавного изменения значений. TProgressBar Используется для отображения процесса выполнения операции. Свойство Step позволяет задать шаг позиционирования   индикатора   внутри   компонента,   а   свойство   Position   –   текущее   положение индикатора. TUpDown Цифровой регулятор. Две кнопки этого компонента предназначены для увеличения или уменьшения связанной с компонентом числовой величины. Ассоциация с любым другим компонентом задается с помощью свойства Associate. THotKey Используется для задания клавиши активизации (“горячей” клавиши). Клавиша задается через свойство HotKey того или иного интерфейсного элемента. TAnimate Представляет собой стандартный элемент Windows 95, в котором отражается содержимое AVI­файла. AVI­файлом   может   быть   небольшая   анимация,   поясняющая   происходящие   действия.   Компонент воспроизводит видеочасть файла AVI и игнорирует его звуковое сопровождение. TDateTimePicker Представляет   собой   список   для   ввода   даты   и   времени.   Этот   элемент   напоминает   список   или комбинированный список. Выпадающий список в нем заменен на календарь, из которого пользователь может выбрать дату. Дата и время также могут вводиться с помощью стрелок “вверх” и “вниз” или простым набором в строке ввода. TTreeView Этот   компонент   представляет   собой   окно,   используемое   для   отображения   иерархических   списков, например каталогов на диске или уровней заголовков в документе. Каждый элемент списка состоит из описания и набора необязательных графических изображений. TListView Панель пиктограмм. Организует просмотр нескольких пиктограмм и выбор нужной. Непосредственный способ отображения – колонкой, вертикально, горизонтально, с иконками и т. п. – задается значением свойства ViewStyle.THeaderControl Управляющий заголовок. Представляет собой горизонтальную или вертикальную полосу, разделенную на   ряд   смежных   секций   с   надписями.   Размеры   секций   можно   менять   мышью   на   этапе   работы программы. Обычно используется для изменения размеров столбцов или строк в разного рода таблицах. TStatusBar Используется   для   создания   строк   состояния   –   строк,   в   которых   указывается   статус   выполнения операций, текущие дата и время, положение манипулятора мышь и т. п. TToolBar Инструментальная панель. Применяется для организации группы управляющих элементов. Способен автоматически изменять размеры и положение командных кнопок. TCoolBar Инструментальная   панель.   В   отличие   от   ToolBar,   используется   как   контейнер   для   размещения стандартных интерфейсных компонентов Windows, таких как Edit, ListBox, ComboBox и т.д. Компоненты системных интерфейсов Windows TTimer Таймер   служит   для  отсчета  интервалов  реального  времени.   Свойство  Interval   определяет   интервал времени в миллисекундах, который должен пройти от включения таймера до наступления события OnTimer. Таймер включается при установке значения True в его свойство Enabled. Раз включенный таймер все время будет возбуждать события OnTimer, пока его свойство Enabled не примет значения False. TPaintBox Окно для рисования. Создает прямоугольную область, предназначенную для прорисовки графических изображений. TMediaPlayer Мультимедийный   проигрыватель.   С   помощью   этого   компонента   можно   управлять   различными мультимедийными устройствами. Пример простого приложения с использованием MediaPlayer дан на рис. 39. Поместим на форму панель Panel1   и   компонент   MediaPlayer1   на   панель.   Дадим     свойству   FileName   значение   Cool.Аvi.   Файл Cool.Avi   должен   располагаться   в   текущем   каталоге.   Свойству   AutoOpen   присвоим   значение   True. Устанавливая   значения   свойств   MediaPlayer,   можно   менять   характер   того,   как   компонент взаимодействует с файлами­носителями TOleContainer OLE­контейнер   служит   приемником   связываемых   или   внедряемых   объектов.   Особенностью   OLE­ объекта является то, что двойной щелчок по этому компоненту приводит к активизации связанной с объектом программы. TDDEClientConv, TDDEClientItem, TDDEServerConv, TDDEServerItem Компоненты используются для организации динамического обмена данными между приложениями или для создания сервисной программы в DDE­связи. Примеры визуальных компонентов К их числу относятся: TGauge – индикатор состояния. Предназначен для отображения хода выполнения какой­либо операции, например, копирования группы файлов или считывания полей из таблицы данных. Компонент имеет несколько видов. Используется аналогично компоненту ProgressBar. TColorGrid – таблица цветов. Этот компонент предназначен для выбора основного и фонового цветов из 16­цветовой палитры. TSpinButton – двойная кнопка. Щелчок по кнопке с треугольником, направленным вверх, приводит к возникновению   события   OnUpClick.   Щелчок   по   другой   кнопке   –   к   возникновению   события OnDownClick. TSpinEdit – редактор числа. Он объединяет в себе три компонента – две конпки с изображенными на них треугольниками, направленными вверх и вниз, и компонент строка ввода. TDirectoryOutline   –   список   каталогов.   Предназначен   для   отображения   древовидной   структуры каталогов. Свойство Drives задает имя диска, каталог которого должен отображать данный компонент. Свойство Directory содержит текущий каталог. При изменении каталога происходит событие OnChange.TCalendar   –   представляет   собой   пример   использования   компонента   Grid   и   является   календарем   с возможностью выбора даты и месяца. IBEventAlerter – компонент, реагирующий на изменения в базах данных, связанных с приложением.  Компоненты доступа к базам данных В Delphi развиты средства построения клиент­серверных приложений, рассчитанных на работу с базами данных. Эти компоненты собраны на странице Data Access. Панель содержит невизуальные компоненты. На панели DataControls расположены  компоненты,  представляющие  собой  расширения стандартных интерфейсных элементов Windows, предназначенные для совместного использования с компонентами для управления базами данных. На панели QReport расположены компоненты, обеспечивающие простой способ создания отчетов по результатам выборки данных из базы данных. Визуальные компоненты стандартных диалогов Windows­интерфейса Компоненты панели:TOpenDialog – диалоговая панель выбора открываемого файла по шаблону. TSaveDialog – диалоговая панель создания файла.TFontDialog – диалоговая панель выбора шрифта и его характеристик. TColorDialog – диалоговая панель выбора цвета.TPrintDialog – диалоговая панель вывода на устройство печати. TPrinterSetupDialog – диалоговая панель настройки устройства печати. TFindDialog – диалоговая панель поиска.TReplaceDialog – диалоговая панель замены. TOpenPictureDialog – диалоговая панель выбора графического изображения с просмотром. TSavePictureDialog – диалоговая панель сохранения графического изображения с просмотром.Основные принципы управления процессором и процессами. Подсистема управления процессами является   одной   из   наиболее   важных   в   операционной   системе.   В   ее   функции   входит   создание, уничтожение и обеспечение взаимодействия между процессами, а также распределение между ними процессорного времени. Определим понятия процесса и потока. Однако   начиная с 1960­х годов в вычислительных системах используется мультипрограммирование, или мультизадачность (multitasking) – способ организации вычислительного процесса, при котором на одном процессоре выполняются сразу несколько программ. В совместном использовании этих программ находятся и другие ресурсы системы: оперативная память, дисковое пространство, данные.  Основными критериями для оценки эффективности вычислительной  системы являются: ­  пропускная   способность  –   количество   задач,   выполняемых   вычислительной   системой   в   единицу времени;­  удобство   работы   пользователей,   заключающееся,   например,   в   том,   что   они   могут одновременно работать в интерактивном режиме с несколькими приложениями на одном компьютере; ­ реактивность системы. Для   поддержки   мультипрограммирования   в   операционной   системе   (ОС)   определяются   внутренние единицы   работы,   между   которыми   и   разделяются   ресурсы.   В   настоящее   время   в   большинстве операционных   систем   определены   два   типа   единиц   работы.   Под  процессом  (задачей)   при   этом понимается более крупная единица работы, требующая для своего выполнения несколько единиц более мелких работ, называемых “поток”, или “нить”. Объясним   принципиальные различия, существующие между этими понятиями. В   самом   простейшем   случае   процесс   может   состоять   только   из   одного   потока   и   тогда   понятие “процесс” полностью включает в себя понятие “поток” и остается только один вид единицы работы и потребления   всех   ресурсов   вычислительной   системы   –   процесс.   Мультипрограммирование осуществляется в таких ОС на уровне процессов.  Каждый процесс должен иметь возможность влиять только на принадлежащие ему коды и данные, поэтому   в   задачи   ОС   при   управлении   процессами   входит   изоляция   одного   процесса   от   другого. Реализация   этих   задач   подразумевает   выделение   операционной   системой   каждому   процессу виртуального   адресного   пространства  –   совокупность   адресов,   которыми   может   манипулировать программный   модуль   процесса.   Отображение   этого   виртуального   пространства   на   реальную отведенную данному процессу физическую память также осуществляется операционной системой. В тех случаях, когда нескольким процессам необходимо взаимодействовать, например с целью обмена данными,   они   обращаются   к   операционной   системе,   которая,   выполняя   функции   посредника, предоставляет им средства межпроцессной связи. Потоки  возникли   в  операционных  системах   как  средство   распараллеливания  вычислений.  Конечно, задача   распараллеливания   вычислений   в   рамках   одного   приложения   может   быть   решена   и традиционными способами.Во­первых, прикладной программист может взять на себя сложную задачу организации параллелизма, выделив   в   приложении   некоторую   подпрограмму­диспетчер,   которая   периодически   передает управление   той   или   иной   ветви   вычислений.   При   этом   программа   получается   логически   весьма запутанной,  с многочисленными передачами  управления,  что существенно затрудняет  ее  отладку и модификацию. Во­вторых, решением является создание для одного приложения нескольких процессов для каждой из параллельных   работ.   Однако   использование   для   создания   процессов   стандартных   средств   ОС   не позволяет учесть тот факт, что эти процессы решают единую задачу, а значит, имеют много общего между собой – они могут работать с одними и теми же данными, использовать один и тот же кодовый сегмент, наделяться одними и теми же правами доступа к ресурсам вычислительной системы.  Таким   образом,   в   операционной   системе   наряду   с   процессами   нужен   другой   механизм распараллеливания   вычислений,   который   учитывал   бы   тесные   связи   между   отдельными   ветвями вычислений одного и  того же  приложения. Для этих целей  современные  ОС предлагают  механизм мпогопоточной   обработки  (multithreading).   При   этом   вводится   новая   единица   работы   –   поток выполнения,   а   понятие   “процесс”   в   значительной   степени   меняет   смысл.   Понятию   “поток” соответствует   последовательный   переход   процессора   от   одной   команды   программы   к   другой.   ОС распределяет процессорное время между потоками. Процессу ОС назначает адресное пространство и набор ресурсов, которые совместно используются всеми его потоками. Создание   потоков,   а   не   процессов,   требует   от   ОС   меньших   накладных   расходов.   В   отличие   от процессов, которые принадлежат разным, вообще говоря, конкурирующим приложениям, все потоки одного процесса всегда принадлежат одному приложению, поэтому ОС изолирует потоки в гораздо меньшей степени, нежели процессы в традиционной мультипрограммной системе. Все потоки одного процесса используют общие файлы, таймеры, устройства, одну и ту же область оперативной памяти, одно   и   то   же   адресное   пространство.   Это   означает,   что   они   разделяют   одни   и   те   же   глобальные переменные. Поскольку каждый поток может иметь доступ к любому виртуальному адресу процесса, один поток может использовать стек другого потока. Между потоками одного процесса нет полной защиты,   потому   что,   во­первых,   это   невозможно,   а   во­вторых,   не   нужно.   Чтобы   организовать взаимодействие   и   обмен   данными,   потокам   вовсе   не   требуется   обращаться   к   ОС,   им   достаточно использовать общую память – один поток записывает данные, а другой читает их. С другой стороны, потоки разных процессов по­прежнему хорошо защищены друг от друга. Итак, мультипрограммирование более эффективно на уровне потоков, а не процессов. Каждый поток имеет собственный счетчик команд и стек. Задача, оформленная в виде нескольких потоков в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе) выполнения ее отдельных частей. Например, если электронная таблица была разработана с учетом возможностей многопоточной обработки, то пользователь может запросить пересчет своего рабочего листа и одновременно продолжать заполнять таблицу. Особенно эффективно можно   использовать   многопоточность   для   выполнения   распределенных   приложений,   например многопоточный сервер может параллельно выполнять запросы сразу нескольких клиентов. Использование потоков связано не только со стремлением повысить производительность системы за счет   параллельных   вычислений,   но   и   с   целью   создания   более   читабельных,   логичных   программ. Введение   нескольких   потоков   выполнения   упрощает   программирование.   Например,   в   задачах   типа “писатель­читатель” один поток выполняет запись в буфер, а другой считывает записи из него. По­ скольку они разделяют общий  буфер, не стоит их  делать  отдельными  процессами.  Другой  пример использования потоков – управление сигналами, такими, как прерывание с клавиатуры (del или break). Вместо обработки сигнала прерывания один поток назначается для постоянного ожидания поступления сигналов.   Таким   образом,   использование   потоков   может   сократить   необходимость   в   прерываниях пользовательского уровня. В этих примерах не столь важно параллельное выполнение, сколь важна ясность программы. Свопинг   и   виртуальная   память    .    Вирту льная   п мять   (англ.   Virtual   memory)   —   технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. При использовании данной   технологии   для   каждой   программы   используются   независимые   схемы   адресации   памяти, отображающиеся тем или иным способом на физические адреса в памяти ЭВМ. Позволяет увеличить эффективность   использования   памяти   несколькими   одновременно   работающими   программами, аю аюɔ организовав   множество   независимых   адресных   пространств,   и   обеспечить   защиту   памяти   между разными приложениями. Также позволяет программисту использовать больше памяти, чем установлено в компьютере, за счет откачки неиспользуемых страниц на вторичное хранилище При использовании виртуальной памяти упрощается программирование, так как программисту больше не нужно учитывать ограниченность   памяти,   или   согласовывать   использование   памяти   с   другими   приложениями.   Для программы   выглядит   доступным   и   непрерывным   все   допустимое   адресное   пространство,   вне зависимости от наличия в ЭВМ соответствующего объема ОЗУ.  Применение механизма виртуальной памяти позволяет:  упростить адресацию памяти клиентским программным обеспечением;  рационально управлять оперативной  памятью компьютера (хранить в ней  только активно используемые области памяти);     изолировать   процессы   друг   от   друга   (процесс   полагает,   что   монопольно   владеет   всей памятью).    В  настоящее  время   эта  технология   имеет  аппаратную  поддержку  на  всех   современных бытовых процессорах. В то же время во встраиваемых системах и в системах специального назначения, где требуется либо очень быстрая работа, либо есть ограничения на длительность отклика (системы реального времени) виртуальная память используется относительно редко. Также в таких системах реже встречается многозадачность и сложные иерархии памяти.   Источник   Свопинг (от англ. swap, /sw p/); Подкачка страниц (англ. термин — англ. Paging) — один из механизмов виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ на жёсткий диск, освобождая ОЗУ для загрузки других фрагментов памяти. Такими фрагментами в современных ЭВМ являются страницы памяти.   Временно выгруженные из памяти страницы могут сохраняться на внешних  запоминающих  устройствах  как  в   файле,  так  и  в   специальном   разделе   на  жёстком  диске (partition),   называемые   соответственно   swap­файл   и   swap­раздел.   В   случае   откачки   страниц, соответствующих   содержимому   какого­либо   файла   (например,   memory­mapped   files),   они   могут удаляться.   При   запросе   такой   страницы   она   может   быть   считана   из   оригинального   файла.     Когда приложение   обратится   к   откаченной   странице,   произойдет   исключительная   ситуация   PageFault. Обработчик этого события должен проверить, была ли ранее откачена запрошенная страница, и, если она есть в свопе, загрузить ее обратно в память.  Источник   Основные понятия безопасности. Базовые технологии безопасности ОС  .  ть несколько причин для   реализации защиты. Hаиболее очевидная ­ помешать внешним вредным попыткам нарушить доступ к конфоденциальной информации. Не менее важно, однако, гарантировать, что каждый программный компонент в системе использует системные ресурсы только способом, совместимым с установленной политикой   использования   этих   ресурсов.   Эти   требования   абсолютно   необходимы   для   надежной системы.   Наличие   защитных   механизмов   может   увеличить   надежность   системы   в   целом   за   счет обнаружения скрытых ошибок интерфейса между компонентами системы. Ранее обнаружение ошибок может предотвратить влияние неисправной подсистемы на здоровую.  Политика в отношении ресурсов может меняться в зависимости от приложения и во времени. По этой причине защита не может быть исключительно   предметом   дизайна   ОС.   Она   также   должна   давать   инструменты   прикладным программистам   для   создания   и   поддержки   защищенных   ресурсов.   Важный   принцип   ­   отделение политики   от   механизмов.   Механизмы   определяют   то,   как   что­то   может   быть   сделано,   тогда,   как политика решает, что должно быть сделано. Отделение политики от механизмов важно для гибкости системы. Политика может меняться в зависимости от места и времени. Желательно по возможности наличие   общих   механизмов,   тогда   как   изменение   политики   требует   лишь   модификации   системных параметров или таблиц.  Введем еще несколько понятий (см. также [30]).  Безопасная система обладает свойствами   конфиденциальности,   доступности   и   целостности.     Конфиденциальность(confidentiality) уверенность в том, что секретные данные будут доступны только тем пользователям, которым этот доступ   разрешен   (такие   пользователи   называются   авторизованными).     Доступность   (availability) гарантия   того,   что   авторизованные   пользователи   всегда   получат   доступ   к   данным.     Целостность (integrity)   уверенность   в   том,   что   данные   сохраняют   правильные   значения.   Это   требует   средств проверки целостности и обеспечивается запретом для неавторизованных пользователей, каким либо образом   модифицировать   данные.     Любое   действие,   которое   направлено   на   нарушение конфиденциальности,   целостности   и   доступности   информации   называется   угрозой.   Реализованная угроза называется атакой.  15.2 Классификация угроз  Знание возможных угроз, а также уязвимых мест защиты, которые эти угрозы обычно эксплуатируют, необходимо для того, чтобы выбирать наиболее экономичные средства обеспечения безопасности.  Общей классификации угроз не существует. Имеет смысл различать неумышленные и умышленные угрозы.  Неумышленные угрозы связаны с:  Ошибкамиоборудования   или   матобеспечения:   сбои   процессора,   питания,   нечитаемые   дискеты,   ошибки   в коммуникациях,   ошибки   в   программах.     Ошибками   человека:   некорректный   ввод,   неправильная монтировка   дисков   или   лент,   запуск   неправильных   программ,   потеря   дисков   или   лент.     Форс­ мажорными   обстоятельствами     Умышленные   угрозы,   в   отличие   от   случайных,   преследуют   цель нанесения ущерба пользователям ОС и, в свою очередь, подразделяются на активные и пассивные. Пассивная угроза ­ несанкционированный доступ к информации без  изменения состояния системы, активная   ­   несанкционированное   изменение   системы.   Можно   выделить   следующие   типы   угроз   : Незаконное   проникновение   под   видом   легального  пользователя     Нарушение   функционирования системы с помощью программ­вирусов или программ­червей.   Нелегальные действия легального пользователя.  Типизация угроз не слишком строгая.  А.Таненбаум  приводит свой список наиболее успешных атак на ОС:   Попытки чтения страниц памяти, дисков и лент, которые сохранили информацию   предыдыдущего   пользователя.     Попытки   выполнения   нелегальных   системных вызовов, или системных вызовов с нелегальными параметрами   Внедрение программы, которая выводит на экран слово login . Многие легальные пользователи, видя такое, начинают пытаться входить  в систему, и их попытки могут протоколироваться  (вариант Троянского коня).   Попытки торпедировать программу проверки входа в систему путем многократного нажатия клавиш del, break, rubout,   cancel   и.т.д.   В   некоторых   системах   проверочная   программа   погибает,   и   вход   в   систему становится возможным.  Подкуп персонала. Hапример, малооплачиваемого секретаря.  Использование закладных элементов (дыр), специально оставленных дизайнерами системы.   И т.д.   Много говорят и пишут   и   о   программных   вирусах,   червях,   троянских   конях.   В   этой   связи   обратим   внимание   на следующий факт, несмотря на экспоненциальный рост числа известных вирусов, аналогичного роста количества   инцидентов,   вызванных   вирусами,   не   зарегистрировано.   Соблюдение   несложных   правил компьютерной   гигиены   сводит   риск   заражения   практически   к   нулю.   Многопользовательские компьютеры меньше страдают от вирусов по сравнению с персональными компьютерами, поскольку там имеются системные средства защиты. Мы не будем останавливаться на уточнении понятий "зловредный код", "вирус", "червь", "Троянский конь", бомба (см., например, [15]).   Таковы основные угрозы, на долю   которых   приходится   львиная   доля   урона,   наносимого   информационным   системам.     15.3 Формализация   подхода   к   обеспечению   информационной   безопасности.   Классы   безопасности Существует  ряд основополагающих документов, в которых регламентированы основные подходы к проблеме   информационной   безопасности:     оранжевая   (по   цвету   обложки)   книга   МО   США   [2] гармонизированные  критерии  европейских  стран [3]   руководящие  документы  Гостехкомиссии  при Президенте РФ [17­21]  рекомендации X.800 по защите распределенных систем [7]  федеральный закон Об информации, информатизации и защите информации.  и др.  Основополагающие документы открыли путь   к   ранжированию   информационных   систем   по   степени   надежности.   Так,   в   Оранжевой   книге определяется четыре уровня безопасности ­ D , С , В и А. По мере перехода от уровня D до А к надежности систем предъявляются все более жесткие требования. Уровни С и В подразделяются на классы (C1, С2, В1, В2, ВЗ). Чтобы система в результате процедуры сертификации могла быть отнесена к   некоторому   классу,   ее   политика   безопасности   и   гарантированность   должны   удовлетворять оговоренным   требованиям.     В   качестве   примера   рассмотрим   требования   класса   C2,   которому удовлетворяют некоторые популярные ОС (Windows NT, отдельные реализации Unix и др.):  Каждый пользователь   должен   быть   идентифицирован   уникальным   входным   именем   и   паролем   для   входа   в систему.   Система   должна   быть   в   состоянии   использовать   эти   уникальные   идентификаторы,   чтобы следить за действиями пользователя.  Операционная система должна защищать объекты от повторного использования.     Владелец   ресурса   (например,   такого   как   файл)   должен   иметь   возможность контролировать доступ к этому ресурсу.  Системный администратор должен иметь возможность учета всех событий, относящихся к безопасности.  Система должна защищать себя от внешнего влияния или навязывания,   такого   как   модификация   загруженной   системы   или   системных   файлов,   хранимых   на диске.   15.4 Политика безопасности   Основополагающие документы содержат определения многих ключевых понятий связанных с информационной безопасностью. Так, например, важность и сложность проблемы   обеспечения   безопасности   требует   выработки   политики   информационной   безопасности, которая подразумевает ответы на следующие вопросы [29]:   Какую информацию защищать?   Какого рода   атаки   на   безопасность   системы   могут   быть   предприняты?     Какие   средства   использовать   для защиты каждого вида информации?  В дальнейшем мы будем оперировать понятиями субъект и объект безопасности.   Субъект   безопасности   ­   активная,   а   объект   ­   пассивная   системные   составляющие,   к