Предмет: Технология
разработки программных продуктов.
Ознакомление с модульным программированием
Развивать умение слушать других, делать выводы и обобщать
полученные знания
Воспитывать чувство значимости предмета в профессиональной
деятельности, аккуратности в работе
Основы алгоритмизации и программирования
Оборудование: доска, мел, письменные принадлежности,
проектор, ПК
Тип урока: комбинированный
Метод обучения: Объяснительно иллюстративный
– Проверка
готовности кабинета
2. Постановка цели урока
3. Повторение пройденного материала
4. Сообщение новых знаний
Основные
характеристики программного модуля
Модульная
структура программных продуктов
5. Восприятие и осознание учащимися нового материала
6. Осмысление обобщение и систематизация знаний
7. Подведение итогов урока и
постановка домашнего задания
Гагарина Л. Г. стр.
3,4.1. Понятие модуля
Приступая к разработке программы, следует иметь в виду, что
она, как правило, является большой системой, поэтому необходимо принять меры для ее упрощения. Для
этого программу разрабатывают по частям, которые называются программными
модулями. Такой метод создания программ называют модульным программированием.
Модульное программирование основано на понятии модуля —
программы или функционально завершенного фрагмента программы.
• один вход и один выход. На входе программный модуль получает определенный набор исходных данных,
выполняет их обработку и возвращает один набор выходных данных;
• функциональная завершенность. Модуль выполняет набор
определенных операций для реализации каждой отдельной функции, достаточных для завершения
начатой обработки данных;
• логическая независимость. Результат работы данного фрагмента программы не зависит от работы
других модулей;
• слабые информационные связи с другими программными
модулями. Обмен информацией между отдельными
модулями должен быть минимален;
• размер и сложность программного элемента в разумных
рамках.
Таким образом, модули содержат описание исходных данных, операции обработки данных и структуры
взаимосвязи с другими модулями.
Программный модуль является самостоятельным программным продуктом. Это означает, что
каждый программный модуль
разрабатывается, компилируется и отлаживается отдельно от других модулей
программы. Более того, каждый
разработанный программный модуль может включаться в состав разных
программных систем при условии выполнения требований, предъявляемых к его
использованию в документации к этому модулю. Таким образом, программный модуль
может
рассматриваться и как средство упрощения сложных программ, и
как средство накопления и многократного использования программистских знаний.
3.4.2. Основные
характеристики программного модуля
Как разработать хороший модуль, который действительно будет
способствовать упрощению программы?
В литературе приводятся различные критерии оценки приемлемости модуля. Были предложены
следующие критерии:
• хороший модуль снаружи проще, чем внутри;
• хороший модуль проще использовать, чем построить.
Предлагается использовать следующие характеристики программного модуля для оценки его
приемлемости: размер модуля, прочность модуля, сцепление с другими модулями и
рутинность
Размер модуля измеряется числом содержащихся в нем операторов. Модуль не должен быть слишком
маленьким или слишком большим. Большие
модули, как правило, сложны для
понимания и неудобны для внесения изменений, они могут существенно увеличить суммарное время
повторных трансляций программы при отладке. Маленькие модули усложняют общую
структурную схему программы и могут не окупать накладных
расходов, связанных с их оформлением. Обычно рекомендуются программные модули
размером от нескольких десятков до
нескольких сотен операторов.
Прочность модуля — это мера его внутренних связей. Чем выше
прочность модуля, тем больше связей скрыто от внешней по отношению к нему части
программы и, следовательно, тем
проще сама программа. Самой слабой степенью прочности обладает модуль, прочный по совпадению. В
данном случае в программный модуль
оформляется повторяющаяся в нескольких местах программы последовательность
операторов. Если вдруг возникнет необходимость
изменения этой последовательности в одном из контекстов, придется изменять сам
модуль, что может сделать
его использование в других контекстах ошибочным. Такой класс
программных модулей не рекомендуется для использования.
Функционально прочный модуль — это модуль, реализующий одну
какую-либо определенную функцию. При этом он может использовать и другие
модули. Такой вид прочности модулей
Высшей степенью прочности обладает информационно прочный модуль — это модуль, выполняющий
несколько операций над одной и той же структурой данных, которая неизвестна вне
этого модуля. Для каждой из этих операций в таком
модуле имеется свой вход со своей формой
обращения к нему.
Информационно прочный модуль может реализовывать,
например, абстрактный тип данных.
Сцепление модуля — это мера его зависимости по способу передачи данных от других модулей. Чем слабее
сцепление модуля с другими модулями, тем сильнее его независимость от других
модулей. Для оценки степени сцепления существует шесть видов
сцепления модулей по:
• внешним ссылкам;
• общей области данных;
Худшим видом сцепления модулей является сцепление по содержимому. Таким является сцепление двух
модулей, когда один из них имеет прямые ссылки на содержимое другого
модуля
(например, на константу, содержащуюся в другом модуле).
Такое сцепление модулей недопустимо.
Не рекомендуется использовать также сцепление по общей области — это такое сцепление модулей, когда
несколько модулей используют одну и ту же область памяти.
Сцепление по образцу предполагает, что модули обмениваются
данными, объединенными в структуры. Этот тип обеспечивает неплохие
характеристики по сравнению с предыдущими.
Недостаток заключается в том, что конкретные передаваемые
данные «спрятаны» в структуры, и потому уменьшается «прозрачность» связи между
модулями. Кроме того, при изменении структуры
передаваемых данных необходимо модифицировать все использующие ее модули.
При сцеплении по управлению один модуль посылает другому
некоторый информационный объект (флаг), предназначенный для управления
внутренней логикой модуля. Таким способом
часто выполняют настройку режимов работы программного обеспечения. Подобные настройки также снижают
наглядность взаимодействия модулей и
потому обеспечивают не лучшие
характеристики технологичности разрабатываемого
программного обеспечения.
Единственным видом сцепления модулей, который рекомендуется для использования современной
технологией программирования, является
сцепление по данным (параметрическое
сцепление) — это случай, когда данные передаются модулю либо при
обращении к нему как значения его параметров, либо как результат его обращения к другому модулю для
вычисления некоторой функции. Такой вид
сцепления модулей реализуется на языках программирования при использовании
обращений к процедурам (функциям).
Рутинность модуля — это его независимость от предыстории
обращений к нему. Модуль будем называть рутинным, если
результат обращения к нему зависит только от значений его параметров и не зависит от результатов
предыдущих обращений к нему. Модуль будем называть зависящим от предыстории,
если результат обращения к нему зависит от внутреннего состояния этого модуля,
хранящего следы предыдущих обращений к нему.
именно зависящий от предыстории модуль является наиболее
информационно прочным. Поэтому более приемлема следующая рекомендация:
• всегда следует использовать рутинный модуль, если это не
приводит к плохим сцеплениям модулей;
• зависящие от предыстории модули следует использовать
только в случае, когда это необходимо для обеспечения параметрического сцепления;
• в спецификации зависящего от предыстории модуля должна быть четко сформулирована эта
зависимость таким образом, чтобы было
возможно прогнозировать поведение данного модуля при разных последующих
обращениях к нему.
Связность модулей — мера прочности соединения функциональных и информационных объектов
внутри одного модуля.
Размещение сильно связанных элементов в одном модуле уменьшает межмодульные связи, в то время как
помещение сильно связанных элементов в разные модули не только усиливает
межмодульные связи, но и усложняет понимание их взаимодействия. Объединение слабо связанных
элементов также уменьшает технологичность модулей, делая их сложнее для
понимания.
• информационную (коммуникативную);
При функциональной связности модуль предназначен для выполнения одной функции. Его исходные данные
и операции предназначены для решения одной конкретной задачи. Такой
модуль имеет максимальную связность и, как следствие, хорошую технологичность (простота компиляции,
тестирования, сопровождения).
При последовательной связности модуля результат обработки
данных одной функцией служит исходными данными для другой функции. Такой модуль
реализует одну подпрограмму,
выполняющую две функции. Модуль с последовательной
связностью функций можно разбить на два модуля или более, как с последовательной, так и с функциональной связностью.
При этом
данные, используемые последовательными функциями, также связаны последовательно. Такой модуль
выполняет несколько функций, и, следовательно, его технологичность хуже с точки
зрения понимания и тестирования.
Информационно связанными считают функции, обрабатывающие одни и те же данные.
Информационно связанный модуль имеет неплохие показатели технологичности, так
как все
функции, работающие с одними и теми же данными, собраны в
один модуль, что позволяет при изменении формата данных корректировать только его. Данные, которые
обрабатываются одной
функцией, также считают информационно связанными.
Процедурно связаны функции или данные, которые являются
частями одного процесса. При процедурной связности отдельные элементы модуля связаны крайне
слабо, так как
реализуемые ими операции связаны лишь общим процессом, следовательно, технологичность такого модуля
хуже, чем у предыдущих.
Временная связность функций подразумевает, что эти функции выполняются параллельно или в течение
некоторого периода времени. Временная
связность данных означает, что они
используются в некотором временном интервале. Отличительной особенностью
временной связности является то, что действия, реализуемые такими функциями,
обычно могут выполняться в любом порядке. Например, временную связность
имеют функции, выполняемые при
инициализации некоторого процесса.
Большая вероятность модификации функции еще больше уменьшает
показатели технологичности модулей данного вида по сравнению с предыдущими,
кроме того, содержание модуля с
временной связностью функций может изменяться: в него могут
включаться новые действия и/или исключаться старые.
Логическая связь строится на основе объединения данных или
функций в одну логическую группу, например, логически связаны компоненты
модуля, содержащего функции обработки текстовой информации или данные одного и
того же типа. При выполнении модуля с логически связанными компонентами всегда будет вызываться одна какая-либо его
часть, при этом вызывающий и вызываемый
модули будут связаны по управлению.
Показатели технологичности таких модулей ниже предыдущих,
так как сложно понять логику их работы.
Модуль, элементы которого имеют случайную связность, имеет самые низкие показатели
технологичности, так как его элементы
вообще не связаны.
Анализ табл. 3.1 показывает, что при проектировании программных модулей лучше всего использовать
функциональную, последовательную и информационную связности.
3.4.3. Модульная
структура программных продуктов
Модульная структура программы представляет собой древовидную структуру, в узлах которой
размещаются программные модули, а направленные дуги показывают статическую подчиненность модулей. Если в тексте модуля
имеется ссылка на другой модуль, то их
на структурной схеме соединяет дуга, которая исходит из первого и входит во
второй модуль. Другими словами, каждый
модуль может обращаться к подчиненным ему модулям. При этом модульная структура
программной системы, кроме структурной схемы, должна включать в себя еще и
Функция верхнего уровня обеспечивается главным модулем;
он управляет выполнением нижестоящих функций, которым соответствуют подчиненные модули.
При определении набора модулей, реализующих функции
конкретного алгоритма, необходимо учитывать следующее:
1) модуль вызывается на выполнение вышестоящим по иерархии
модулем и, закончив работу, возвращает ему управление;
2) принятие основных решений в алгоритме выносится на
максимально высокий по иерархии уровень;
3) если в разных местах алгоритма используется одна и та же
функция, то она оформляется в отдельный модуль, который будет вызываться по мере необходимости.
Состав, назначение и характер использования программных
модулей в значительной степени определяются
инструментальными средствами.
Например, при разработке СУБД используются следующие
программные модули:
1) экранные формы ввода и/или редактирования информации базы данных;
4) стандартные средства для обработки информации;
5) меню для выбора функции обработки и др.
Ответы на вопросы по курсу “Системное программирование” История развития вт в связи с историей развития системного программного обеспечения.
Современные
компьютерные системы наряду с прикладным
ПО всегда содержат системное, которое
обеспечивает организацию вычислительного
процесса. История системного программного
обеспечения связана с появлением первой
развитой в современном понимании ОС
UNIX.
1965
– Bell
labs
разрабатывает операционную систему
Multix
– прообраз UNIX,
имеющий далеко не все части современной
системы. До этого времени не существовало
мобильных ОС (переносимых на разные
типы машин) и Multix
также не был мобильной ОС.
1971
– написан UNIX
для работы на мощнейшей платформе того
времени PDP
– 11
1977
– Становится переносимой системой, т.к.
переписан на языке C
(AT&T
system
V)
1981
– платформа Intel
начинает резко наращивать свои
возможности. Колоссальным прорывом
было создание 8088, затем 8086, 80286, etc.
Появляется однопользовательская ОС
MS-DOS,
на 10 лет ставшая стандартом де-факто
для пользователей персональных
компьютеров. Но для машин с процессором
Intel
появляются и версии UNIX.
Конец
80 – начало 90 гг. – аппаратные средства
резко увеличивают свою мощность.
Microsoft
создает новую ОС Windows
NT
и появляется стандарт Win32.
Позже появляется Windows
95 – ОС для одного рабочего места, но
имеющая многие возможности NT,
призванная вытеснить MS-DOS.
Аппаратные средства позволяют создавать
64-битные версии такой ОС, как UNIX,
и в скором времени она появляется и
используется на платформе Alpha
фирмы DEC.
С наращиванием мощности аппаратных
средств системное программное обеспечение
становится все более изощренным и
имеющим большие возможности.
Общая классификация вычислительных машин. Современные архитектурные линии эвм. Системное по и его место в современной информатике.
ЭВМ
являются преобразователями информации.
В них исходные данные задачи преобразуются
в результат ее решения. В соответствии
с используемой формой представления
информации машины делятся на два класса:
непрерывного действия – аналоговые и
дискретного действия – цифровые. В силу
универсальности цифровой формы
представления информации цифровые
электронные вычислительные машины
представляют собой наиболее универсальный
тип устройства обработки информации.
Основные свойства ЭВМ – автоматизация
вычислительного процесса на основе
программного управления, огромная
скорость выполнения арифметических и
логических операций, возможность
хранений большого количества различных
данных, возможность решения широкого
круга математических задач и задач
обработки данных. Особое значение ЭВМ
состоит в том, что впервые с их появлением
человек получил орудие для автоматизации
процессов обработки информации.
Управляющие ЭВМ – предназначены для
управления объектом или производственным
процессом. Для связи с объектом их
снабжают датчиками. Непрерывные значения
сигналов с датчиков преобразуются с
помощью аналогово-цифровых преобразователей
в цифровые сигналы, кот. вводятся в ЭВМ
в соотв с алгоритмом упр-я. После анализа
сигналов формируются упр. воздействия,
которые с пом. цифро-аналоговых
преобразователей преобразуются в
аналоговые сигналы. Через исполнительные
механизмы изменяется состояние объекта.
Универсальные
ЭВМ – предназначены для решения большого
круга задач, состав которых при разаработке
ЭВМ не конкретизируется.
Пример
современных архитектурных линий ЭВМ:
персональные ЭВМ (IBM
PC
и Apple
Macintosh
– совместимые машины), машины для
обработки специфической информации
(графические станции Targa,
Silicon
Graphics),
большие ЭВМ (мэйнфреймы IBM,
Cray,
ЕС ЭВМ).
Общее
назначение системного ПО – обеспечивать
интерфейс между программистом или
пользователем и аппаратной частью ЭВМ
(операционная система, программы-оболочки)
и выполнять вспомогательные функции
(программы-утилиты) Современная
операционная система обеспечивает
следующее:
1) Управление
процессором путем передачи управления
программам.
2) Обработка
прерываний, синхронизация доступа к
ресурсам.
4) Управление
устройствами ввода-вывода.
5) Управление
инициализацией программ, межпрограммные
связи.
Управление
данными на долговременных носителях
путем поддержки файловой системы.
См. также стандарты
в
.
Способы передачи управления между модулями. Применение стека для организации связи в подпрограммах и функциях.
Переписать 26 без
первых 2 предложений.
Параметры подпрограмм и функций. Способы передачи параметров – по значению, по ссылке, по имени.
До
вызова подпрограммы в стек помещаются
фактические параметры – аргументы
подпрограммы. Если требуется изменит
аргумент в процедуре, то передается не
сам аргумент, а его адрес. Существует
два способа передачи параметров в
подпрограмму для 8086 – соглашения о
передаче параметров в С и Паскале. При
передаче параметров первым способом
запись аргументов в стек идет с последнего
до первого, в Паскале наоборот.
Передача
самого аргумента – передача параметра
по значению. Передача адреса аргумента
– передача по ссылке.
В
С можно писать подпрограммы с переменным
числом параметров, однако это не
рекомендуется, т.к. стек имеет ограниченный
размер и не желательно передавать по
значению элементы данных большого
размера.
После
выполнения пролога все параметры
подпрограммы имеют отрицательное
смещение от регистра BP.
После выполнения пролога, как правило,
в стеке выделяется место под локальные
переменные.
По
окончании работы процедуры стек очищается
от локальных переменнных и параметров.
Общая структура программного модуля для микропроцессора 80х86 – регистр bp, локальные переменные, глобальные переменные, параметры.
Обобщение 26, 28 (см.
их для того, чтобы написать более
подробно)
Регистр
BP
– относительно него с отрицательным
смещением происходит адресация параметров
после выполнения кода пролога в
подпрограмме.
mov bp, sp
Локальные переменные
– размещаются в стеке после вызова
процедуры и выполнения кода пролога и
удаляются перед завершением.
Глобальные
переменные – размещаются в сегменте
данных программы и существуют в течение
всей жизни программы.
Параметры
– могут передаваться по значению и по
ссылке, размещаются в стеке перед вызовом
процедуры, после выполнения кода пролога
к ним возможно адресоваться через
регистр BP,
при завершении подпрограммы удаляются
из стека.
Сегментация памяти. Типы программных сегментов, их использование в программах.
Любая программа
состоит из многих частей. Как правило
некоторые функции пишутся самостоятельно,
другие используются готовыми. Чтобы
обеспечить взаимодействие между частями
программы, применяют ряд механизмов.
а) унитарная
структура объектного модуля.
б)
механизм внешних ссылок позволяет
устанавливать связи между отдельными
частями.
в)
Способ объединения отдельных частей в
общий исполняемый модуль. В современных
системах основой 3-го способа и является
сегментация.
Сегменты – бывают
4 видов.
а)
кодовые – содержат коды исполняемой
программы. Вряде случаев там можно
располагать и данные. Модификация
сегмента кода в процессе работы программы
считается плохим стилем программирования,
но иногда это приходится делать, напр.
при сохранении регистров перед запуском
программы функцией EXEC.
Сегменты данных
бывают 3 типов:
а) сегмент
инициализированных данных – содержит
данные статического типа с уже присвоенными
значениями
б) сегмент стека
– как правило, ничем не инициализирован
в)
сегмент неинициализированных данных.
В него попадают данные, не имеющие
начального значения (BSS).
Исполняемый
модуль содержит образ начального
состояния всех сегментов, и не обязан
содержать только образ BSS.
При
использовании указателей в программах
с не более чем одним сегментом данных
и не более чем одним – кода достаточно
16-битового короткого указателя, т.к.
значения сегментов фиксиованы и хранятся
в регистрах DS
и CS
соответственно. Для большего количества
сегментов требуются длинные указатели.
Существует
несколько моделей памяти – способов
распределения программ по сегментам.
Поддержка переключения моделей памяти
есть в компиляторах C
и ASSEMBLER,
в остальных, например Trubo
Pascal,
чаще всего используется модель памяти
LARGE.
TINY
(крошечная) – и данные и код в одном
сегменте (64К). Короткие указатели.
Полученный исполняемый модуль может
быть пригоден для конверсии в формат
типа COM.
SMALL
(малая) – 2 сегмента – код и данные
(128K). Короткие
указатели.
COMPACT
(компактная) – 1 сегмент кода и много
сегментов данных. Первая модель, где
нужны дальние указатели.
MEDIUM
(средняя) – наоборот, много сегментов
кода, 1 данных.
LARGE
(большая) – много сегментов кода и
данных. Наиболее распространена.
HUGE
(огромная) – то же, что и LARGE
+ все указатели программно приводятся
к виду длинных. Используется для
построения очень больших программ.
В 32-битовом режиме
модели памяти не нужны, т.к. размер
сегмента достигает 4ГБ.
31. Особенности
указателей в 80х86. Модели памяти.
Современные компьютерные системы наряду с прикладным ПО всегда содержат системное,
которое обеспечивает организацию вычислительного процесса. История системного
программного обеспечения связана с появлением первой развитой в современном
понимании ОС UNIX.
1965 – Bell labs разрабатывает
операционную систему Multix – прообраз UNIX, имеющий далеко не все части современной системы. До этого времени не
существовало мобильных ОС (переносимых на разные типы машин) и Multix также не был
мобильной ОС.
1971 – написан UNIX для работы на
мощнейшей платформе того времени PDP – 11
1977 – Становится переносимой системой, т.к. переписан на языке C (AT&T system V)
1981 – платформа Intel начинает резко наращивать свои возможности. Колоссальным прорывом было
создание 8088, затем 8086, 80286, etc. Появляется однопользовательская ОС MS-DOS, на 10 лет ставшая
стандартом де-факто для пользователей персональных компьютеров. Но для машин с
процессором Intel появляются и версии UNIX.
Конец 80 – начало 90 гг. – аппаратные средства резко увеличивают свою
мощность. Microsoft создает новую ОС Windows NT и появляется
стандарт Win32. Позже появляется Windows 95 – ОС для одного
рабочего места, но имеющая многие возможности NT, призванная вытеснить MS-DOS. Аппаратные средства
позволяют создавать 64-битные версии такой ОС, как UNIX, и в скором времени она появляется и
используется на платформе Alpha фирмы DEC. С наращиванием
мощности аппаратных средств системное программное обеспечение становится все
более изощренным и имеющим большие возможности.
Общая классификация вычислительных машин. Современные архитектурные линии
ЭВМ. Системное ПО и его место в современной информатике.
ЭВМ являются преобразователями информации. В них исходные данные задачи преобразуются
в результат ее решения. В соответствии с используемой формой представления
информации машины делятся на два класса: непрерывного действия – аналоговые и
дискретного действия – цифровые. В силу универсальности цифровой формы
представления информации цифровые электронные вычислительные машины представляют
собой наиболее универсальный тип устройства обработки информации. Основные
свойства ЭВМ – автоматизация вычислительного процесса на основе программного
управления, огромная скорость выполнения арифметических и логических операций,
возможность хранений большого количества различных данных, возможность решения
широкого круга математических задач и задач обработки данных. Особое значение
ЭВМ состоит в том, что впервые с их появлением человек получил орудие для
автоматизации процессов обработки информации. Управляющие ЭВМ – предназначены
для управления объектом или производственным процессом. Для связи с объектом их
снабжают датчиками. Непрерывные значения сигналов с датчиков преобразуются с
помощью аналогово-цифровых преобразователей в цифровые сигналы, кот. вводятся в
ЭВМ в соотв с алгоритмом упр-я. После анализа сигналов формируются упр.
воздействия, которые с пом. цифро-аналоговых преобразователей преобразуются в
аналоговые сигналы. Через исполнительные механизмы изменяется состояние
объекта.
Универсальные ЭВМ – предназначены для решения большого круга задач, состав
которых при разаработке ЭВМ не конкретизируется.
Пример современных архитектурных линий ЭВМ: персональные ЭВМ (IBM PC и Apple Macintosh – совместимые
машины), машины для обработки специфической информации (графические станции Targa, Silicon Graphics), большие ЭВМ
(мэйнфреймы IBM, Cray, ЕС ЭВМ).
Общее назначение системного ПО – обеспечивать интерфейс между программистом
или пользователем и аппаратной частью ЭВМ (операционная система,
программы-оболочки) и выполнять вспомогательные функции (программы-утилиты)
Современная операционная система обеспечивает следующее:
1) Управление процессором путем передачи управления программам.
2) Обработка прерываний, синхронизация доступа к ресурсам.
3) Управление памятью.
4) Управление устройствами ввода-вывода.
5) Управление инициализацией программ, межпрограммные связи.
Управление данными на долговременных носителях путем поддержки файловой системы.
См. также стандарты в
.
Общее понятие архитектуры. Принципы построения ВС 4-го поколения.
Архитектура – совокупность технических средств и их конфигураций, с помощью
которых реализована ЭВМ. Э ВМ 4 поколения, имеет, как правило, шинную
архитектуру, что означает подключение всех устройств к одной электрической
магистрали, наз. шиной. Если устройство выставило сигнал на шину, другие могут
его считать. Это свойство используется для организации обмена данными. С этой
целью шина разделена на 3 адреса – шина адреса, шина данных и шина управляющего
сигнала. Все современные ЭВМ также включают устройство, наз. арбитром шины,
которое определяет очередность занятия ресурсов шины разными устройствами. В PC распространены шины ISA, EISA, PCI, VLB.
Состав и функции основных блоков ВС: процессора, оперативной памяти,
устройства управления, внешних устройств.
Структурная схема машины фон Неймана:
Процессор (ЦП) – устройство, выполняющее вычислительные операции и
управляющее работой машины. Содержит устройство управления, выбирающее машинные
команды из памяти и выполняющее их, и арифметико-логическое устройство,
выполняющее арифметические и логические операции. Работа всех электронных
устройств машины координируется сигналами, вырабатываемыми ЦП. В современных ПК
процессор представлен одной СБИС, содержащей свыше миллиона транзисторов.
Оперативная память – предназначена для хранения программ и данных, которыми
они манипулируют. Физически выполнена в виде некоторого числа микросхем.
Логически ОП можно представить как линейную совокупность ячеек, каждая из
которых имеет свой номер, называемый адресом. Время записи и чтения из ОП в
современных машинах занимает доли микросекунды, а для других устройств это
время в 10-1000 раз больше.
Внешние устройства – устройства ввода и вывода информации. Поскольку, как
правило, они работают значительно меделенне остальных, управляющее устройство
должно приостанавливать программу для завершения операции ввода-вывода с
соответствующим устройством.
Программная модель ЭВМ. Основной командный цикл процессора. Понятие системы
команд.
Адресация. Данные в ЭВМ: структура и форматы представления.
Адресация на примере процессора 8086.
Числа, устанавливаемые процессором на адресной шине, являются адресами,
т.е. номерами ячеек оперативной памяти, из которых необходимо считывать
очередную команду или данные. Размер ячейки оперативной памяти составляет 8
разрядов, т.е. 1 байт. Поскольку процессор использует 16-разрядные адресные
регистры, то это обеспечивает ему доступ к 65536 (FFFFh) байт или 64К (1K=1024 байт) основной памяти. Такой блок
непосредственно адресуемой памяти называется сегментом. Любой адрес формируется
из адреса сегмента (всегда кратен 16) и адреса ячейки внутри сегмента (этот
адрес называют смещением). На компьютерах, оснащенных процессором 8086,
оперативная память обычно имеет размер, равный 640К. Для того чтобы работать с
памятью такого размера, процессор осуществляет пересчет адресов с помощью
процедуры, называемой вычислением эффективного адреса (рис.2.3).
Физический 20-разрядный адрес вычисляется сложением сдвинутого влево на 4
разряда 16-разрядного адреса сегмента оперативной памяти со значением
16-разрядного смещения относительно начала этого сегмента. Используя
20-разрядные адреса, можно адресовать 1М оперативной памяти ( 1M=1024K=1048576 байт). В программе на ассемблере
полный адрес записывается в виде SSSS:0000, гдe SSSS значение сегмента;
0000 – значение смещения. Участок оперативной памяти размером 16 байт
называется параграфом.
Данные в ЭВМ – подразделяются на числовые и нечисловые.
Целые типы – для представления целых чисел.
Вещественные типы – для представления рациональных чисел. Бывают:
а) с фиксированной точкой;
б) с плавающей точкой.
Логические данные – принимающие значение истина или ложь.
Произвольные данные (текст, звук, графика).
Организация ввода-вывода, классификация внешних устройств.
Организация ввода-вывода в современных ЭВМ осуществлена с использованием
прерываний. Это связано с тем, что УВВ работают намного медленнее, чем
процессор и оперативная память. Поэтому управляющее устройство должно
приостанавливать выполнение программы и ждать завершения операции ввода-вывода
с внешним устройством. При выводе все результаты выполненной программы должны
быть выведены на ВУ, после чего процессор переходит к ожиданию сигналов от ВУ.
При вводе, например, с клавиатуры получение значений нажатых клавиш
осуществляется при поступлении прерывания от клавиатуры.
Системные особенности архитектур ЭВМ. Примеры эволюции современных ВК – IBM 370, PDP11/VAX, Intel 80X86, RISC.
Системные особенности архитектур ЭВМ заключаются в отличиях аппаратных
средств, на которых реализована машина.
Единая система электронных вычислительных машин (ЕС ЭВМ, аналог IBM 370) представляет
собой семейство программно-совместимых машин третьего поколения. Каждая и машин
семейства состоит из :
– оперативной памяти;
– каналов устройств, обеспечивающих операции обмена данными между памятью и
внешними устройствами независимо от процессора;
– набора внешних устройств ввода-вывода, выполняющих обмен информацией
между внешними носителями и каналами.
Для ЕС ЭВМ характерно наличие каналов – специализированных процессоров,
позволяющих освободить процессор от выполнения операций ввода-вывода и тем
самым повысить скорость обмена с внешними устройствами. В машинах семейства ЕС
с помощью каналов обеспечивается параллельная работа процессора и внешних
устройств, а также параллельное выполнение операций ввода-вывода с несколькими
внешними устройствами.
В основу построения ЕС ЭВМ положен принцип модульности, позволяющий по
желаланию пользователя наращивать вычислительную мощность (заменять
процессоры), расширять емкость оперативной памяти, добавлять внешние
устройства.
Машины имеют большие наборы команд, развитое системное программное
обеспечение, включающее трансляторы языков программирования Ассемблер, ФОРТРАН,
ПЛ/1, КОБОЛ, АЛГОЛ, ПАСКАЛЬ, операционные системы с различными функциональными
возможностями.
Основная особенность управляющих вычислительных машин типа PDP-11 заключается в
том, что взаимодействие между всеми устройствами, входящими в состав комплексов
, включая процессор , и оперативным запоминающим устройством ( ОЗУ )
осуществляется при помощи единого унифицированного интерфейса, получившего
название “Oбщая шина” ( ОШ
). Oбщая шина является
каналом, через который передаются адреса, данные, управляющие сигналы на все
устройства комплекса, включая процессор и память. Физически ОШ представляет
собой высокочастотную магистраль передачи данных, состоящую из 56 линий.
Процессор использует установленный набор сигналов для связи с памятью и для
связи с внешними устройствами, благодаря чему в системе отсутствуют специальные
команды ввода-вывода.
Все устройства комплекса подключаются в ОШ по единому принципу. Некоторым
регистрам процессора, регистрам внешних устройств, которые являются источниками
или приемниками при передачи информации, на ОШ отводятся адреса. В программах
адреса регистров устройств рассматриваются как адреса ячеек памяти, что
позволяет обращаться к ним с помощью адресных инструкций. Так, программирование
операций вывода данных на внешнее устройство практически сводится к пересылке
этих данных по определенному адресу.
VAX – 11 – более
развитая машина, чем PDP-11. Это 32-битовая машина с адресным пространством свыше 4Г. Она по
архитектуре похожа на PDP-11, но имеет 2 шинных адаптера – адаптер общей шины и адаптер массовой
шины. Все совместимые с общей шиной периферийные устройства могут быть подключены
к ней, тогда как высокоскоростные устройства могут быть подключены к массовой
шине через собственные контроллеры. V AX – сокр. от английских слов “виртуальное адресное
расширение”, т.е. машина имеет виртуальную память и многозадачность.
Обычно персональные компьютеры IBM PC состоят из трех частей : – системного блока;
Системный блок содержит все основные узлы компьютера :
– электронные схемы, управляющие работой компьютера (микропроцессор,
оперативная память, контроллеры устройств и т.д.);
– блок питания;
– накопители для гибких магнитных дисков;
– накопитель на жестком магнитном диске.
К системному блоку можно подключить ряд дополнительных устройств ввода –
вывода. Кроме клавиатуры и монитора такими устройствами являются:
– принтер – для вывода на печать текстовой и графической информации;
– мышь – устройство, облегчающее ввод информации в компьютер;
– стример – для хранения данных на магнитной ленте;
– модем – для обмена информацией с другими компьютерами через телефонную
сеть;
– сканер – прибор для ввода рисунков и текстов в компьютер.
Двоичное кодирование информации. Представление элементарных типов данных
Состояния “установлен” и “сброшен” соотв. 2 цифрам двоичной системы
счисления, фундаментальной для ЭВМ. Эти цифры называются битами. Двоичное
кодирование – представление данных последовательностью битов. При двоичном
кодировании числовой информации степень двойки при каждой двоичной цифре на
единицу больше, чем у предшествующей цифры. Пример конструкции двоичного кода:
1012=(1*22)+(0*21)+(1*20)=510.
Таким образом осуществляется представление целых чисел без знака.
Отрицательные числа со знаком представляются в дополнительном коде – в форме
дополнения до двух. Чтобы найти двоичное представление отрицательного числа,
надо взять его полжительную форму, проинвертировать ее и добавить к полученному
результату 1.
Числами с плавающей точкой называются числа вида x=M*Pq, где М – мантисса, P – порядок, q – основание системы счисления.
Нормализованная форма таких чисел:
Q – фиксировано.
P – целое число со
знаком.
В машине в двоичных кодах хранится M и P. Порядок, как правило, выравнивается, т.е. приводится к
большему по модулю порядку, путем сдвига мантиссы вправо с меньшим порядком на
кол-во разрядов, равное (Pmax-Pmin)log2Q.
Свойства точности вычислений при работе с плавающей точкой. Приемы программирования,
обеспеч. необходимую точность вычислений.
При работе с плавающими числами следует иметь в виду, что результат не
полностью соответствует арифметике действительных чисел. Диапазон представления
чисел: -1*Qp
а) Поглощение меньших операндов большими.
б) Ситуация потери точности (lost precision). Данный эффект проявляется, когда вычитаются 2 почти
одинаковых числа.
в) Ситуация переполнения. В результате операции порядок превышает
максимально допустимое значение.
г) Ситуация обратная переполнению (underflow) – если порядок становится меньше
минимального значения.
д) Потеря значимости – если мантисса стала равна нулю при ненулевом
порядке.
Представление нечисловой информации. Текстовые данные, символьные коды ASCII, EBSDIC, UNICODE. Особенности
кодирования русского алфавита.
Любой текст представляет собой послдовательность литер 0.9 A. Z a.z А. Я а.я. Набор литер весьма широк за счет наличия
национальных языков. Первые машины имели алфавит только из цифр и латинских
букв. Эти литеры образовали набор
символов ASCII, EBSDIC. В этих кодировках
общее количество символов не превышает 128 (7 бит).
При представлении в памяти текст имеет вид последовательности байтов.
Способы представления текста
Для представления национальных языков, в частности русского, 128 символов в
общем случае недостаточно. Здесь используется:
Расширение ASCII – испольование 8
бита, теперь можно кодировать 256 символов;
UNICODE – использование 7
битов, но более чем 1 символа кодировки для представления большего количества
литер (например для совместимости с сетями, отсекающими 8-й бит при передаче).
В настоящее время почти повсеместно используется 8-битовое кодирование символов.
Кодовая таблица – графическое представление символов, по которым можно
определить код. Проблемы при представлении русского алфавита – а) необходимость
сортировки по кодам; б) при этом надо оставить на старых местах символы
рисования рамок и заполнения (псевдографики) для совместимости с иностранными
программами. Русская кодировка – основная ГОСТ – имела расположение символов по
алфавиту, но в ней были смещены символы псевдографики. В настоящее время исп.
альтернативная кодировка ГОСТ – в ней псевдографика оставлена на старом месте,
но малые буквы русского алфавита разорваны (160-175, 224-239, 240-241). Это
немного затрудняет сортировку – единственный недостаток. Кроме того, есть и
другие кириллические кодировки – MIC, КОИ-8, ISO-8859, т.п.
Представление графической информации – растровое и векторное представления,
разрешающая способность, полутоновые и цветные изображения, палитры.
Использование ЭВМ в автоматизированных системах управления, различных
информационно-вычислительных системах, системах коллективного пользования (см.
гл. 13) требует их укомплектования удобными средствами связи человека с
машиной. Одним из таких средств является устройство ввода-вывода с
электронно-лучевой трубкой (ЭЛТ), называемое монитором. В зависимости от типа
монитора на экран может выводиться как алфавитно-цифровая, так и графическая
информация. Устройство вывода графической информации состоит из видеопамяти
(буфера образа), монитора и устройства сопряжения, передающего на монитор
содержимое видеопамяти. В современных машинах первое и третье объединено в
видеоадаптере.
При векторном представлении графической информации электронный луч на
мониторе непрерывно пробегает между заданными точками, порождая отрезок –
вектор. Такое представление наиболее удобно для изображений, состоящих из линий
и простых геометрических фигур. В этом случае векторное изображение легко
масштабируется и требует малый объем памяти для хранения.
Если изображение состорит из многих точек разных оттенков (полутоновое
изображение), то векторный способ будет слишком сложен в реализации, и
используется растровый способ представления – разбиение изображения на
мельчайшие “клетки” и вывод на экран сетки точек – растра (bitmap). Разрешающая способность
растра – величина, показывающая, сколько точек может быть выведено на
квадратную единицу изображения (ед. измерения – dpi (точек на дюйм)). Для видеосистемы единицей
измерения может быть размер выводимой точки и общее количество пикселов,
выводимое на экран монитора (например, 1024х768).
В случае монохромного изображения для кодирования 1 точки в буфере образа
достаточно одного бита – светится или нет. В случае полутонового или цветного
изображения количество бит на точку буфера должно быть таково, чтобы
представить все возможные цвета или оттенки. Например, 8 битами можно
представить 256 цветов или оттенков. В таких системах программист имеет доступ
к палитре – ресурсу видеоадаптера, позволяющему устанавливать цвета или оттенки
для каждого кода цвета.
Представление звуковой информации – общее понятие о дискретизации и квантовании
звуковых сигналов, точность представления звуковых колебаний.
Представление звуковой информации в ЭВМ:
а) Преобразование в цифровую форму с помощью аналого-цифрового
преобразователя. При этом звук превращается в цепочку импульсов, сост. из 8 или
16 бит (фактически в вектор 8-битовых ил 16-битовых чисел)
б) Дискретизация этого сигнала с постоянной частотой. Если например голос
человека дискретизируется с частотой 8КГц, используя 8 бит, на протяжении 10с,
это займет 80К. По дискретизированным значениям можно восстановить сигнал с
заданной точностью и направить его в цифро-аналоговый преобразователь. Усилив
сигнал с выхода ЦАП, получим звук.
При малой частоте дискретизации часть данных теряется вследствие т.н. шума
квантования, и мы не можем достаточно точно воспроизвести данные. Закон Шеннона
для дискретизации: для достижения полного соответствия восстановленного сигнала
исходному следует дискретизировать последний с частотой, в 2 раза превышающей
его максимальную частоту. C D-проигрыватели работают с частотой 44KГц, и на такой частоте звук не теряет в
качестве.
Равномерная дискретизация – замена сигнала последовательностью его
мнгновенных значений, взятых через равные промежутки времени.
Квантование – разбиение функции сигнала через определенный шаг на интервалы
– уровни квантования и замена сигнала значениями, взятыми с этих интервалов.
Форматы хранения оцифрованного звука в файлах:
VOC – стандарт де-факто
от Creative.
WAV – формат
оцифрованного звука от Microsoft.
Layer 1, 2, 3 audio MPEG – эффективно
закодированный (сжатый примерно в 10 раз) формат хранения оцифрованного звука –
сейчас приобретает наибольшее распространение.
Общее описание языка ASM. Типы данных. Оформление программ. Формат записи команд.
Ассемблер – машинно-ориентированный язык, имеющий 2 основных достоинства.
1)позволяет писать программы на уровне команд процессора 2)не требует знания
этих команд, каждая из них заменяется удобной для запоминания мнемоникой –
сокращением английских слов. Транслятор переводит мнемоники в их числовые
эквиваленты.
Собственно команды ассемблера процессора – м.б. без операндов, с одним или
двумя операндами, использовать различные типы адресации (см. 19)
Псевдооператоры – 5 групп: определение идентификаторов (EQU), данных (DB), внешние ссылки (PUBLIC, EXTRN), определение
сегментов и подпрограмм (SEGMENT, PROC), управление трансляцией (END).
Константы – м.б. числовые и литералы (последовательность букв, закл. в
апострофы).
Метки – предназначены для организации переходов в программе. М.б. локальные
и глобальные. Представляют собой символьные имена, заканчивающиеся на :.
Типы данных языка.
BYTE – байт (однобайтовое
целое число, код символа, элемент строки)
WORD – слово (целое число
со знаком или без знака)
DWORD – двойное слово,
длинное целое
Полный 32-битовый указатель или 16-битовое смещение.
Вещественные типы (типы мат.сопроцессора) – действительные числа длиной 32,
64, 80 бит.
В ассемблере возможно объявление массивов чисел.
Перичислимые и составные типы
ENUM – набор значений,
заним. определенное кол-во бит.
RECORD – запись с битовыми
полями, каждое из которых имеет длину опр. количество бит и инициализируется
некоторыми значениями.
STRUC – структура, элемент
содержащий 1 или более типов данных, называемых членами структуры.
UNION (объединение) – то
же самое, что и структура, за исключением того, что все члены объединения
занимают 1 и тот же участок памяти.
Формат команды языка:
По умолчанию заглавные и строчные буквы в языке не различаются.
Директива открытия сегмента
Текст программы или описание
данных
Директива закрытия сегмента
Директива окончания программного файла
Константы, метки, условная компиляция.
Константы – м.б. числовые (десятичные, двоичные, шестадцатеричные)
и литералы – символьные
s EQU ‘string data”
Метки – служат для присваивания имени команде языка ассемблера.
Предназначены для организации переходов в программе. Представляют собой
символьные имена, заканчивающиеся на :. Глобальные метки действуют во всей
программе. Локальные – только внутри подпрограммы.
Директивы условной трансляции предназначены для обозначения блока
программного кода, который включается в объектный файл только тогда, когда
выполняется заданное условие. Cинтаксис:
;операторы, помещаемые в файл при выполнении условия
;операторы, помещаемые в файл, если условие не выполнено
Существуют также дрективы ELSEIF, которые позволяют создавать множественные конструкции IF.
Компилятор ассемблер-программ, редактор связей (загрузчик).
Компилятор с ассемблера обрабатывает исходный код, преобразуя его в код
команд на машинном языке. Результат его работы называется объектным кодом. В
объектном коде необязательно находится весь код программы – в нем могут быть
т.н. внешние ссылки на библиотечные процедуры или процедуры в других модулях, а
также на данные.
Следующий шаг – создание исполняемой программы. Сборкой всех частей
программы занимается редактор связей. Он размещает все модули в памяти и
настраивает адресные константы внутри них так, чтобы они соответствовали
фактическому местоположению в памяти.
Редакторы бывают 3 разновидностей.
Загрузчик – загружает объектный модуль и передает управление на точку входа
программы.
Компоновщик – формирует исполняемый файл, точно соответствующий образу
программы в памяти, привязывая его к абсолютным адресам.
Компоновщик, генерирующий псевдоперемещаемый код – записывает в исполняемый
файл таблицу перемещений (relocation table), где содержатся данные о ячейке внутри кода, которая
зависит от местоположения в памяти. Такой исполняемый файл перед запуском
программы требует настройки. Этим занимается операционная система, в формате
которой создается исполняемый модуль.
Основная память ЭВМ. Адресация, адресное пространство.
Число микросхем памяти, физически присутствующих в компьютере, определяет объем памяти, которую можно использовать
для программ и данных. Это число может меняться от машины к машине. Объем
памяти обычно можно наращивать с помощью плат расширения, вставляемых в
специальные разъемы. Для процессора
память – это не более чем несколько тысяч 8-разрядных ячеек, каждая из
которых имеет уникальный адрес.
Говорят обычно не о физическом объеме памяти, а об адресуемой памяти. 8086
может адресоваться к 1024 К, то есть к 1048576 байтам памяти. Другими словами, это – максимальное количество различных
адресов и, следовательно, максимальное количество байт данных, к которым может
обратиться процессор.
Обращение к байту памяти производится с помощью 20-разрядного адреса. В
схеме использования памяти процессором 8086 адреса имеют “ширину” 20
бит, поскольку они передаются по 20- разрядной шине адреса. Обычно адреса
представляются в шестнадцатеричной системе исчисления. Таким образом, допустимый
диапазон адресов памяти – от ООООО до FFFFF в шестнадцатеричной системе исчисления. При рассмотрении 1024 Кбайтного адресного
пространства PC его делят на 16
блоков по 64 Кбайт и обозначают каждый из этих блоков шестнадцатеричной цифрой,
совпадающей со старшей цифрой адреса. Например, первые 64 Кбайт памяти – блок
О, адреса байтов этого блока от ООООО до OFFFF, последние 64 Кбайт – блок F, адреса байтов этого блока от FOOOO до FFFFF.
Структура основной памяти, адресуемой 8086
Теоретически, любая область памяти может представлять собой либо
неизменяемое ПЗУ, либо ОЗУ. Однако принято первые десять блоков (блоки с нулевого по девятый общим
объемом 640 Кбайт) заполнять оперативной памятью. Оперативная память в PC устанавливается
начиная с блока О и последовательно, без пропусков, наращивается до блока 9 включительно. Если не все десять блоков
заполнены, то программы не должны использовать адреса несуществующей памяти.
Обращение по этим адресам может вызывать
различные последствия в зависимости от модели машины, однако обычно эта
ошибка никак не обнаруживается и программа продолжает работу.