Все устройства ЭВМ делятся на центральные и периферийные. Центральные устройства - полностью электронные, периферийные устройства могут быть либо электронными, либо электромеханическими с электронным управлением.
В центральных устройствах основным узлом, связывающим микропроцессорный комплект в единое целое, является системная магистраль. Она состоит из трех узлов, называемых шинами: шина данных (ШД), шина адреса (ША), шина управления (ШУ). В состав системной магистрали входят регистры защелки, в которых запоминается передаваемая инфор-мация, шинные формирователи, шинные арбитры, определяющие очередность доступа к системной магистрали, и др.
Логика работы системной магистрали, количество разрядов (линий) в шинах данных, адреса и управления, порядок разрешения конфликтных ситуаций, возникающих при одновременном обращении различных устройств ЭВМ к системной магистрали, образуют интерфейс системной шины.
В состав центральных устройств ЭВМ входят: центральный процессор, основная память и ряд дополнительных узлов, выполняющих служебные функции.
Периферийные устройства делятся на два вида: внешние ЗУ (НМД, НГМД, НМЛ) и устройства ввода-вывода (УВВ): клавиатура, дисплей, принтер, мышь, адаптер каналов связи (КС) и др.
Управляющая работой ЭВМ программа перед началом выполнения загружается операционной системой в
В
Результат выполнения операции выставляется микропроцессором на шину данных, на шину адреса ставится адрес ОП, по которому этот результат необходимо записать, а на
В каждом цикле, получив команду в
ЦП, получив сигнал отклика, в простейшем случае выставляет имеющуюся у него команду на шину данных и сопровождает ее по шине управления сигналом "передаю команду". Получив сигнал о приеме команды, ЦП переходит к выполнению очередной своей команды, выставляя на шину адреса содержимое
В более сложных случаях, получив сигнал, что устройство откликнулось, прежде чем передавать команду, ЦП запрашивает устройство о его состоянии. Текущее состояние устройства закодировано в байте состояния, который откликнувшееся устройство передает процессору через ШД системной магистрали. Если устройство включено и готово к работе, то байт состояния - нулевой. Наличие в нем единиц свидетельствует о нештатной ситуации, которую ЦП пытается проанализировать и в необходимых случаях извещает оператора о сложившейся ситуации.
Взаимодействие МП с внешними устройствами предусматривает выполнение логической последовательности действий, связанных с поиском устройства, определением его технического состояния, обменом командами и информацией. Эта логическая последовательность действий вместе с устройствами, реализующими ее, получила название "
Для различных устройств могут использоваться разные логические последовательности действий, поэтому интерфейсов ввода-вывода может в одной и той же ЭВМ использоваться несколько. Если их удается свести к одному, универсальному, то такой интерфейс называется стандартным. В IBM PC есть три стандартных интерфейса для связи ЦП с внешними устройствами: параллельный (типа ) и два последовательных (типа и USB).
Интерфейсы постоянно совершенствуются, поэтому с появлением новых ЭВМ, новых внешних устройств и даже нового программного обеспечения появляются и новые интерфейсы. Так, в программном обеспечении, разработанном ведущими фирмами (в том числе фирмой Microsoft) все шире используется новый интерфейс "Plug and Play" ("Включи и играй"), который предназначен для облегчения системной настройки ЭВМ при подключении новых устройств к машине. Этот интерфейс позволяет подключить с помощью кабеля новое устройство, а после включения ЭВМ ее программное обеспечение автоматически определяет состав подключенных устройств, их типы и настраивает машину на работу с ними без вмешательства системного оператора.
Если при обращении ЦП к внешнему устройству продолжение выполнения основной программы ЦП возможно только после
Для ликвидации таких простоев и повышения эффективности работы оборудования внешние устройства сделаны автономными: получив от ЦП необходимую информацию, они самостоятельно организуют свою работу по обмену данными. Процессор же, запустив внешнее устройство, пытается продолжить выполнение программы. При необходимости (если встретятся соответствующие команды) он может запустить в работу несколько других устройств (так как внешние устройства работают значительно медленнее процессора). Если же ему приходится переходить в
Организация процессов ввода, преобразования и отображения результатов в ЭВМ относится к сфере системного программного обеспечения. Это сложные процессы, которые чаще всего делаются "прозрачными", т.е. незаметными для пользователя. Один из них - реализация задания пользователя: профессиональный пользователь (программист) пишет задание для ЭВМ в виде программы на алгоритмическом языке. Написанное задание (программа) представляет собой исходный модуль, сопровождаемый управляющими предложениями, указывающими операционной системе ЭВМ, на каком языке написана программа и что с ней надо делать. Если программа пишется на алгоритмическом языке, то управляющие предложения - на Windows всех версий это скрипты, оформляемые в виде командных файлов).
Исходный модуль перед исполнением должен быть переведен на внутренний язык машины. Эта операция выполняется специальной программой -
(рис 16.1) Реализация задания пользователя
Результат работы компилятора может быть записан в библиотеку объектных модулей (БОМ) или передан другим программам для дальнейшей обработки, поскольку полученная машинная программа не готова к исполнению по двум причинам. Во-первых, она содержит неразрешенные 0h, тогда как для исполнения программа должна быть "привязана" к конкретным физическим адресам основной памяти.
Недостающие программы должны быть взяты из библиотек компилятора (которые могут быть написаны в виде исходных либо в виде объектных модулей) и добавлены к основной программе. Эту операцию выполняет
Привязка к памяти загрузочного модуля производится программой выборки, которая переносит загрузочный модуль из библиотеки загрузочных модулей (обычно хранящейся на магнитном носителе) в
Представление машинной программы в виде исходных, объектных и загрузочных модулей позволяет реализовать наиболее эффективные программные комплексы. Например, если по одной и той же программе необходимо много раз производить расчеты, то неэффективно тратить каждый раз время на трансляцию и редактирование программы - ее нужно оформить в виде загрузочного модуля и хранить в соответствующей библиотеке. При обращении к такой программе сразу будет вызываться программа выборки для загрузки соответствующего модуля (а этапы компиляции и редактирования связей будут опускаться), и время на выполнение программы существенно сократится.
Если же программа только отлаживается или после каждого просчета ее нужно будет модернизировать, то получение загрузочного модуля и обращение к программе выборки будут лишними операциями. Для их обхода вместо
Алгоритмы распределения, использования,
Для выполнения программы при ее загрузке в
Выделение ресурсов может быть осуществлено самим программистом (особенно если он работает на языке, близком машинному), но может производиться и операционной системой.
Если выделение ресурсов производится перед выполнением программы, такой процесс называется статическим перемещением, в результате которого программа "привязывается" к определенному месту в памяти вычислительной машины. Если же ресурсы выделяются в процессе выполнения программы, это называется динамическим перемещением, в этом случае программа не привязана к определенному месту в реальной памяти. Динамический режим можно реализовать только с помощью операционной системы.
При статическом перемещении могут встретиться два случая.
Реальная память больше требуемого адресного пространства программы (рис.16.2):
(рис 16.2) Загрузка программы в реальную память
В этом случае загрузка программы в реальную память производится, начиная с нулевого адреса.
Загружаемая программа А является абсолютной программой, так как никакого изменения адресов в адресном пространстве, подготовленном компилятором, при загрузке в 0h.
Реальная память меньше требуемого адресного пространства программы (рис.16.3):
(рис 16.3) Загрузка при реальной памяти меньше требуемого адресного пространства
В этом случае программист (или операционная система) вынужден решать проблему, как организовать выполнение программы. Методов решения проблемы существует несколько: можно создать
В некоторых операционных системах адреса откомпилированной (с адреса 0h) программы могут быть преобразованы в адреса реальной памяти, отличные от 0h. При этом создается абсолютный модуль, который требует размещения его в памяти всегда с одного и того же адреса.
Тогда, при мультипрограммном режиме, если имеем программы А, В и С, для которых известно, что программа А выполняется при размещении в памяти с адреса 60 Кбайт до 90 Кбайт, В - с 60 Кбайт до 90 Кбайт, С - с 50 Кбайт до 120 Кбайт, организовать их совместное выполнение невозможно, так как им необходим один и тот же участок реальной памяти. Эти программы будут ждать друг друга, либо их нужно заново редактировать с другого адреса.
При работе в мультипрограммном режиме может сложиться ситуация, когда между программами образуются незанятые участки памяти. Такое состояние называется фрагментацией реальной памяти. Оно характерно для систем со статическим перемещением (рис.16.4).
(рис 16.4) Фрагментация памяти
В системах с динамическим перемещением программ перемещающий загрузчик размещает программу в свободной части памяти и допускает использование несмежных ее участков (рис.16.5).
(рис 16.5) Динамическое перемещение программ
В этом случае имеется больше возможностей для организации мультипрограммной работы, а следовательно, и для более эффективного использования временных ресурсов ЭВМ.
При больших размерах реализуемых программ возникают некоторые противоречия в организации мультипрограммного режима работы и трудности динамического распределения ресурсов.
В настоящее время разработано несколько способов решения этих противоречий. Например, для борьбы с фрагментацией основной памяти адресное пространство программы может быть разбито на отдельные сегменты, слабо связанные между собой. Тогда программа, которая имеет длину, превышающую размеры свободных участков памяти, может быть представлена в виде ряда сегментов, загружаемых в различные области ОП. Это позволяет использовать реальную память, теряемую из-за фрагментации.
Адреса в каждом сегменте начинаются с 0h. При статическом перемещении программы в процессе загрузки ее в
Для динамической трансляции адресов (т.е. при определении абсолютных адресов по известным относительным, содержащим номер сегмента и смещение) операционная система строит специальные таблицы, устанавливающие соответствие между сегментируемым адресным пространством программы и действительными адресами сегментов в реальной памяти (рис.16.7).
(рис 16.6) Динамическое перемещение программ
(рис 16.7) Динамическая трансляция адресов
Каждая строка таблицы сегментов содержит адрес начала сегмента в реальной памяти. Для каждого сегмента имеется одна строка таблицы.
Таблицу сегментов содержит каждая выполняемая программа.
В дополнение к таблице сегментов для динамической РНТС, или STOR (). В этот регистр занесен адрес таблицы сегментов выполняемой в данный момент программы. В МП Pentium в качестве РНТС используются 3 регистра: GDTR, LDTR и IDTR.
Использованием
Если
Формирование сегментно-страничной структуры выполняется автоматически с помощью операционной системы.
Все преимущества динамического перемещения с применением
Современная ЭВМ представляет собой комплекс автономных устройств, каждое из которых выполняет свои функции под управлением местного устройства управления независимо от других устройств машины. Включает устройство в работу центральный процессор (ЦП). Он передает устройству команду и все необходимые для ее исполнения параметры. После начала работы устройства центральный процессор отключается от него и переходит к обслуживанию других устройств или к выполнению других функций.
Можно считать, что центральный процессор переключает свое внимание с устройства на устройство и с функции на функцию. На что именно обращено внимание ЦП в каждый данный момент, определяется выполняемой им программой. Во время работы в ЦП поступает (и вырабатывается в нем самом) большое количество различных сигналов. Сигналы, которые выполняемая в ЦП программа способна воспринять, обработать и учесть, составляют
Например, если процессором исполняется программа сложения двух двойных слов, которая анализирует регистр флагов ЦП, то в "поле ее зрения" находятся флаги микропроцессора, определяющие знаки исходных данных и результата, наличие переноса из тетрады или байта, переполнения разрядной сетки и др. Такая программа готова реагировать на любой из сигналов, находящихся в ее зоне внимания (а поскольку именно программа управляет работой ЦП, она определяет и "зону внимания" центрального процессора). Но если во время выполнения такой программы нажать какую-либо клавишу, то эта программа "не заметит" сигнала от этой клавиши, так как он не входит в ее "
Для того чтобы ЦП, выполняя свою работу, имел возможность реагировать на события, которые происходят вне его зоны внимания и наступления которых он "не ожидает", существует система прерываний ЭВМ. При отсутствии системы прерываний все заслуживающие внимания события должны находиться в
Кроме сокращения потерь на ожидание, режим прерываний позволяет организовать выполнение такой работы, которую без него реализовать просто невозможно. Например, при появлении неисправностей, нештатных ситуаций режим прерываний позволяет организовать работу по диагностике и автоматическому восстановлению в момент возникновения нештатной ситуации, прервав выполнение основной работы таким образом, чтобы сохранить полученные к этому времени правильные результаты, тогда как без режима прерываний обратить внимание на наличие неисправности система могла только после окончания выполняемой работы (или ее этапа) и получения неправильного результата.
Таким образом, система прерываний позволяет микропроцессору выполнять основную работу, не отвлекаясь на проверку состояния сложных систем при отсутствии такой необходимости, или прервать выполняемую работу и переключиться на анализ возникшей ситуации сразу после ее появления.
Помимо требующих внимания нештатных ситуаций, которые могут возникнуть при работе микропроцессорной системы, процессору полезно уметь "переключать внимание" и на различные виды работ, одновременно выполняемые в системе. Поскольку управление работой системы осуществляется программой, этот вид прерываний должен формироваться программным путем.
В зависимости от места нахождения источника прерываний они могут быть разделены на: внутренние (программные и аппаратные) и внешние прерывания (поступающие в ЭВМ от внешних источников, например, от клавиатуры или модема).
Принцип действия системы прерываний заключается в следующем: при выполнении программы после каждого рабочего такта микропроцессора изменяется содержимое регистров, счетчиков, состояние отдельных управляющих триггеров, т. е. изменяется состояние процессора. Информация о состоянии процессора лежит в основе многих процедур управления вычислительным процессом. Не вся информация одинаково актуальна, есть существенные элементы, без которых невозможно продолжение работы. Эта информация должна сохраняться при каждом "переключении внимания процессора".
Совокупность значений наиболее существенных информационных элементов называется вектором состояния или словом состояния процессора (в некоторых случаях оно называется словом
Вектор состояния в каждый момент времени должен содержать информацию, достаточную для продолжения выполнения программы или повторного пуска ее с точки, которая соответствует моменту формирования данного вектора.
Вектор состояния формируется в соответствующем регистре процессора или в группе регистров, которые могут использоваться и для других целей.
Наборы информационных элементов, образующих векторы состояния, отличаются у ЭВМ разных типов. В IBM PC вектор состояния включает содержимое АХ). В более поздних версиях основу вектора состояния образуют такие регистры, как слово состояния машины (Mashine status word - ), TR) и др.
При возникновении события, требующего немедленной реакции со стороны машины, ЦП прекращает обработку текущей программы и переходит к выполнению другой программы, специально предназначенной для данного события, по завершению которой возвращается к выполнению отложенной программы. Такой режим работы называется прерыва-нием.
Каждое событие, требующее прерывания, сопровождается специальным сигналом, который называется
Запросы на прерывание могут возникать из-за сбоев в аппаратуре (зафиксированных схемами
Некоторые из этих запросов порождаются самой программой, но время их возникновения невозможно предсказать заранее.
При наличии нескольких источников запросов прерывания часть из них может поступать одновременно. Поэтому в ЭВМ устанавливается определенный порядок (дисциплина) обслуживания поступающих запросов. Кроме того, в ЭВМ предусматривается возможность разрешать или запрещать прерывания определенных видов.
Программы - обработчики прерываний могут находиться в различных частях основной памяти (место их расположения в разных версиях операционных систем может быть различным). Для обеспечения совместимости программ под разными версиями операционной системы обращение к обработчикам прерываний осуществляется по их номерам.
В реальном режиме связь между номером прерывания и адресом основной памяти, соответствующим точке входа в обработчик прерывания, осуществляется через
В 32-битных микропроцессорах число n в команде INTn определяет номер индекса вызываемого прерывания в таблице дескрипторов прерываний . Таблица в режиме реальной адресации является массивом четырехбайтных дальних указателей. Линейный базовый адрес таблицы определяется содержимым регистра IDTR. При переходе в IDTR равно нулю (т.е. начало таблицы совпадает с началом вектора прерываний IBM PC).
Вычислительный процесс - это последовательность целенаправленных действий по обработке информации, приводящих к достижению поставленной цели.
Вычислительный процесс характеризуется тремя параметрами:
Графически вычислительный процесс может изображаться трассой, временной диаграммой, ярусно-параллельным графом, и др.
Трасса представляется в виде упорядоченного
Трасса характеризует динамику процесса, т.е. развитие его во времени. Обычно она изображается в виде последовательности событий, нанесенных в масштабе на ось времени.
Развитие процесса в пространстве и во времени характеризуется временной диаграммой. Временная диаграмма обычно изображается на нескольких осях времени, причем каждая ось содержит трассу, которая характеризует загрузку одного из устройств, выделенных процессу.
Ярусно-параллельный граф характеризует параллельность (одновременность, параллелизм) выполнения действий, составляющих процесс.
Простейший вид параллелизма реализован в мультипрограммных системах - этот вид параллелизма называется "совмещение во времени различных этапов разных задач".
Мультипрограммная обработка возможна и в однопроцессорной системе, так как реализует совмещение во времени выполнение различных частей разных задач. Для такого совмещения лишь необходимо, чтобы однопроцессорная система состояла из относительно независимых, автономных частей, каждая из которых может выполнять свою работу одновременно с работой других. При этом каждая задача все-таки будет решаться последовательно, но разные части вычислительной системы будут одновременно работать над разными задачами, не мешая друг другу.
В вычислительных системах, содержащих несколько обрабатывающих устройств, возможен другой тип параллелизма: одновременное решение различных задач или одновременное решение независимых ветвей одной задачи.
Если в систему поступает непрерывный поток не связанных между собой задач (т. е. таких задач, для которых характерно, что решение любой задачи не зависит от результатов решения других задач), использование нескольких обрабатывающих устройств позволяет совместить решение этих задач во времени. Это - "естественный параллелизм независимых задач".
При решении большой задачи в ней так же могут быть выделены отдельные независимые части - ветви, которые при наличии нескольких обрабатывающих устройств могут выполняться параллельно и независимо друг от друга. Это - "параллелизм независимых ветвей".
Для естественного параллелизма независимых задач и параллелизма независимых ветвей наиболее наглядной формой графического представления является ярусно-параллельная.
Ярусно-параллельный граф представляет вычислительный процесс в виде совокупности ветвей, расположенных в нескольких уровнях (ярусах). Ветви обозначаются кружками с цифрами внутри. Длина ветви характеризуется цифрой, стоящей около кружка. Стрелками показаны входные данные и результаты обработки. Входные данные обозначаются символами "x", выходные - символами "y". Индексы при "y" есть нижние и верхние. Верхние индексы соответствуют номеру ветви, при выполнении которой получен данный результат. Нижний индекс обозначает порядковый номер результата, полученного при реализации данной ветви программы.
Ветви каждого яруса не связаны друг с другом, т.е. результаты решения какой-нибудь ветви данного яруса не являются входными данными для другой ветви этого же яруса.
На примере ярусно-параллельных графов можно выявить преимущества вычислительных систем, имеющих несколько обрабатывающих устройств, и проблемы, возникающие в таких системах.
Рассмотрим возможности ярусно-параллельного графа на примере параллелизма независимых ветвей одной задачи. Пусть необходимо в параллельной системе произвести вычисление по формуле:
$$y=\frac{x_1+x_2*x_3}{x_1-x_2*x_3}*x_4-x_1x_2x_3$$и определить продолжительность вычислений по сравнению с однопроцессорной системой. Будем считать, что сложение и вычитание выполняются за 100 единиц времени, умножение - за 600, деление - за 1000.
В однопроцессорной системе последовательность действий может быть такая:
| № | Действие | Время |
|---|---|---|
| 1 | $$a=x_2*x_3$$ | 600 |
| 2 | $$b=x_1-a$$ | 100 |
| 3 | $$c=x_1+a$$ | 100 |
| 4 | $$d=c/b$$ | 1000 |
| 5 | $$e=d*x_4$$ | 600 |
| 6 | $$g=x_1*a$$ | 600 |
| 7 | $$h=e-g$$ | 100 |
| Итого: | 3100 |
Время $$t$$ на выполнение такой последовательности действий составляет 3100 единиц.
При наличии нескольких процессоров последовательность действий может измениться (рис.16.8):
(рис 16.8) Пример 1 ярусно-параллельного графа
затем на разных процессорах одновременно вычисляется:
Здесь цифры обозначают ярусы.
Продолжительность операции на 1 ярусе - 600 единиц, на втором - тоже 600 (сложение и вычитание закончатся раньше, но критическим для яруса является умножение), на третьем ярусе - 1000 единиц, на четвертом - 600, и на пятом - 100. Итого t1 = 2900 единиц.
Можно самую длинную операцию 2 яруса перенести на 3 ярус. Тогда граф изменится (рис.16.9), ветвь 4 со 2-го яруса переместится на 3.
(рис 16.9) Пример 2 ярусно-параллельного графа
В этом случае продолжительность 2 яруса станет 100, т.е. уменьшится на 500 единиц, и общее время вычислений станет равным 2400 единиц.
В случае естественного параллелизма независимых задач и большом числе задач ярусно-параллельный граф становится значительно сложнее и допускает значительно большее количество вариантов, как например, на рис.16.10.
Для такого графа характерно, что выигрыш во времени может существенно колебаться в зависимости от последовательности выполнения ветвей каждым обрабатывающим блоком (процессором), поэтому каждый процессор должен выбирать новую ветвь с учетом этого обстоятельства. Перед началом выполнения очередной ветви каждый процессор должен иметь информацию о готовности данных для этого.
(рис 16.10) Пример 3 ярусно-параллельного графа
Таким образом, чтобы с помощью нескольких обрабатывающих устройств решить задачи, имеющие независимые параллельные ветви, необходима соответствующая организация вычислительного процесса, которая будет определять пути решения задач и вырабатывать необходимую информацию о готовности каждой ветви.
При этом возникают следующие трудности:
Однако при решении многих сложных задач одно только программирование с выделением независимых ветвей уже позволяет существенно сократить время решения.
Хорошо поддаются параллельной обработке такого типа задачи матричной алгебры (в том числе - и компьютерной графики), линейного программирования, спектральной обработки сигналов, преобразования Фурье, задачи кластерного анализа, математической статистики, автоматической классификации, и т.д.
Все устройства ЭВМ делятся на центральные и периферийные. Центральные устройства - полностью электронные, периферийные устройства могут быть либо электронными, либо электромеханическими с электронным управлением.
В центральных устройствах основным узлом, связывающим микропроцессорный комплект в единое целое, является системная магистраль. Она состоит из трех узлов, называемых шинами: шина данных (ШД), шина адреса (ША), шина управления (ШУ). В состав системной магистрали входят регистры защелки, в которых запоминается передаваемая инфор-мация, шинные формирователи, шинные арбитры, определяющие очередность доступа к системной магистрали, и др.
Логика работы системной магистрали, количество разрядов (линий) в шинах данных, адреса и управления, порядок разрешения конфликтных ситуаций, возникающих при одновременном обращении различных устройств ЭВМ к системной магистрали, образуют интерфейс системной шины.
В состав центральных устройств ЭВМ входят: центральный процессор, основная память и ряд дополнительных узлов, выполняющих служебные функции.
Периферийные устройства делятся на два вида: внешние ЗУ (НМД, НГМД, НМЛ) и устройства ввода-вывода (УВВ): клавиатура, дисплей, принтер, мышь, адаптер каналов связи (КС) и др.
Управляющая работой ЭВМ программа перед началом выполнения загружается операционной системой в
В
Результат выполнения операции выставляется микропроцессором на шину данных, на шину адреса ставится адрес ОП, по которому этот результат необходимо записать, а на
В каждом цикле, получив команду в
ЦП, получив сигнал отклика, в простейшем случае выставляет имеющуюся у него команду на шину данных и сопровождает ее по шине управления сигналом "передаю команду". Получив сигнал о приеме команды, ЦП переходит к выполнению очередной своей команды, выставляя на шину адреса содержимое
В более сложных случаях, получив сигнал, что устройство откликнулось, прежде чем передавать команду, ЦП запрашивает устройство о его состоянии. Текущее состояние устройства закодировано в байте состояния, который откликнувшееся устройство передает процессору через ШД системной магистрали. Если устройство включено и готово к работе, то байт состояния - нулевой. Наличие в нем единиц свидетельствует о нештатной ситуации, которую ЦП пытается проанализировать и в необходимых случаях извещает оператора о сложившейся ситуации.
Взаимодействие МП с внешними устройствами предусматривает выполнение логической последовательности действий, связанных с поиском устройства, определением его технического состояния, обменом командами и информацией. Эта логическая последовательность действий вместе с устройствами, реализующими ее, получила название "
Для различных устройств могут использоваться разные логические последовательности действий, поэтому интерфейсов ввода-вывода может в одной и той же ЭВМ использоваться несколько. Если их удается свести к одному, универсальному, то такой интерфейс называется стандартным. В IBM PC есть три стандартных интерфейса для связи ЦП с внешними устройствами: параллельный (типа ) и два последовательных (типа и USB).
Интерфейсы постоянно совершенствуются, поэтому с появлением новых ЭВМ, новых внешних устройств и даже нового программного обеспечения появляются и новые интерфейсы. Так, в программном обеспечении, разработанном ведущими фирмами (в том числе фирмой Microsoft) все шире используется новый интерфейс "Plug and Play" ("Включи и играй"), который предназначен для облегчения системной настройки ЭВМ при подключении новых устройств к машине. Этот интерфейс позволяет подключить с помощью кабеля новое устройство, а после включения ЭВМ ее программное обеспечение автоматически определяет состав подключенных устройств, их типы и настраивает машину на работу с ними без вмешательства системного оператора.
Если при обращении ЦП к внешнему устройству продолжение выполнения основной программы ЦП возможно только после
Для ликвидации таких простоев и повышения эффективности работы оборудования внешние устройства сделаны автономными: получив от ЦП необходимую информацию, они самостоятельно организуют свою работу по обмену данными. Процессор же, запустив внешнее устройство, пытается продолжить выполнение программы. При необходимости (если встретятся соответствующие команды) он может запустить в работу несколько других устройств (так как внешние устройства работают значительно медленнее процессора). Если же ему приходится переходить в
Организация процессов ввода, преобразования и отображения результатов в ЭВМ относится к сфере системного программного обеспечения. Это сложные процессы, которые чаще всего делаются "прозрачными", т.е. незаметными для пользователя. Один из них - реализация задания пользователя: профессиональный пользователь (программист) пишет задание для ЭВМ в виде программы на алгоритмическом языке. Написанное задание (программа) представляет собой исходный модуль, сопровождаемый управляющими предложениями, указывающими операционной системе ЭВМ, на каком языке написана программа и что с ней надо делать. Если программа пишется на алгоритмическом языке, то управляющие предложения - на Windows всех версий это скрипты, оформляемые в виде командных файлов).
Исходный модуль перед исполнением должен быть переведен на внутренний язык машины. Эта операция выполняется специальной программой -
(рис 16.1) Реализация задания пользователя
Результат работы компилятора может быть записан в библиотеку объектных модулей (БОМ) или передан другим программам для дальнейшей обработки, поскольку полученная машинная программа не готова к исполнению по двум причинам. Во-первых, она содержит неразрешенные 0h, тогда как для исполнения программа должна быть "привязана" к конкретным физическим адресам основной памяти.
Недостающие программы должны быть взяты из библиотек компилятора (которые могут быть написаны в виде исходных либо в виде объектных модулей) и добавлены к основной программе. Эту операцию выполняет
Привязка к памяти загрузочного модуля производится программой выборки, которая переносит загрузочный модуль из библиотеки загрузочных модулей (обычно хранящейся на магнитном носителе) в
Представление машинной программы в виде исходных, объектных и загрузочных модулей позволяет реализовать наиболее эффективные программные комплексы. Например, если по одной и той же программе необходимо много раз производить расчеты, то неэффективно тратить каждый раз время на трансляцию и редактирование программы - ее нужно оформить в виде загрузочного модуля и хранить в соответствующей библиотеке. При обращении к такой программе сразу будет вызываться программа выборки для загрузки соответствующего модуля (а этапы компиляции и редактирования связей будут опускаться), и время на выполнение программы существенно сократится.
Если же программа только отлаживается или после каждого просчета ее нужно будет модернизировать, то получение загрузочного модуля и обращение к программе выборки будут лишними операциями. Для их обхода вместо
Алгоритмы распределения, использования,
Для выполнения программы при ее загрузке в
Выделение ресурсов может быть осуществлено самим программистом (особенно если он работает на языке, близком машинному), но может производиться и операционной системой.
Если выделение ресурсов производится перед выполнением программы, такой процесс называется статическим перемещением, в результате которого программа "привязывается" к определенному месту в памяти вычислительной машины. Если же ресурсы выделяются в процессе выполнения программы, это называется динамическим перемещением, в этом случае программа не привязана к определенному месту в реальной памяти. Динамический режим можно реализовать только с помощью операционной системы.
При статическом перемещении могут встретиться два случая.
Реальная память больше требуемого адресного пространства программы (рис.16.2):
(рис 16.2) Загрузка программы в реальную память
В этом случае загрузка программы в реальную память производится, начиная с нулевого адреса.
Загружаемая программа А является абсолютной программой, так как никакого изменения адресов в адресном пространстве, подготовленном компилятором, при загрузке в 0h.
Реальная память меньше требуемого адресного пространства программы (рис.16.3):
(рис 16.3) Загрузка при реальной памяти меньше требуемого адресного пространства
В этом случае программист (или операционная система) вынужден решать проблему, как организовать выполнение программы. Методов решения проблемы существует несколько: можно создать
В некоторых операционных системах адреса откомпилированной (с адреса 0h) программы могут быть преобразованы в адреса реальной памяти, отличные от 0h. При этом создается абсолютный модуль, который требует размещения его в памяти всегда с одного и того же адреса.
Тогда, при мультипрограммном режиме, если имеем программы А, В и С, для которых известно, что программа А выполняется при размещении в памяти с адреса 60 Кбайт до 90 Кбайт, В - с 60 Кбайт до 90 Кбайт, С - с 50 Кбайт до 120 Кбайт, организовать их совместное выполнение невозможно, так как им необходим один и тот же участок реальной памяти. Эти программы будут ждать друг друга, либо их нужно заново редактировать с другого адреса.
При работе в мультипрограммном режиме может сложиться ситуация, когда между программами образуются незанятые участки памяти. Такое состояние называется фрагментацией реальной памяти. Оно характерно для систем со статическим перемещением (рис.16.4).
(рис 16.4) Фрагментация памяти
В системах с динамическим перемещением программ перемещающий загрузчик размещает программу в свободной части памяти и допускает использование несмежных ее участков (рис.16.5).
(рис 16.5) Динамическое перемещение программ
В этом случае имеется больше возможностей для организации мультипрограммной работы, а следовательно, и для более эффективного использования временных ресурсов ЭВМ.
При больших размерах реализуемых программ возникают некоторые противоречия в организации мультипрограммного режима работы и трудности динамического распределения ресурсов.
В настоящее время разработано несколько способов решения этих противоречий. Например, для борьбы с фрагментацией основной памяти адресное пространство программы может быть разбито на отдельные сегменты, слабо связанные между собой. Тогда программа, которая имеет длину, превышающую размеры свободных участков памяти, может быть представлена в виде ряда сегментов, загружаемых в различные области ОП. Это позволяет использовать реальную память, теряемую из-за фрагментации.
Адреса в каждом сегменте начинаются с 0h. При статическом перемещении программы в процессе загрузки ее в
Для динамической трансляции адресов (т.е. при определении абсолютных адресов по известным относительным, содержащим номер сегмента и смещение) операционная система строит специальные таблицы, устанавливающие соответствие между сегментируемым адресным пространством программы и действительными адресами сегментов в реальной памяти (рис.16.7).
(рис 16.6) Динамическое перемещение программ
(рис 16.7) Динамическая трансляция адресов
Каждая строка таблицы сегментов содержит адрес начала сегмента в реальной памяти. Для каждого сегмента имеется одна строка таблицы.
Таблицу сегментов содержит каждая выполняемая программа.
В дополнение к таблице сегментов для динамической РНТС, или STOR (). В этот регистр занесен адрес таблицы сегментов выполняемой в данный момент программы. В МП Pentium в качестве РНТС используются 3 регистра: GDTR, LDTR и IDTR.
Использованием
Если
Формирование сегментно-страничной структуры выполняется автоматически с помощью операционной системы.
Все преимущества динамического перемещения с применением
Современная ЭВМ представляет собой комплекс автономных устройств, каждое из которых выполняет свои функции под управлением местного устройства управления независимо от других устройств машины. Включает устройство в работу центральный процессор (ЦП). Он передает устройству команду и все необходимые для ее исполнения параметры. После начала работы устройства центральный процессор отключается от него и переходит к обслуживанию других устройств или к выполнению других функций.
Можно считать, что центральный процессор переключает свое внимание с устройства на устройство и с функции на функцию. На что именно обращено внимание ЦП в каждый данный момент, определяется выполняемой им программой. Во время работы в ЦП поступает (и вырабатывается в нем самом) большое количество различных сигналов. Сигналы, которые выполняемая в ЦП программа способна воспринять, обработать и учесть, составляют
Например, если процессором исполняется программа сложения двух двойных слов, которая анализирует регистр флагов ЦП, то в "поле ее зрения" находятся флаги микропроцессора, определяющие знаки исходных данных и результата, наличие переноса из тетрады или байта, переполнения разрядной сетки и др. Такая программа готова реагировать на любой из сигналов, находящихся в ее зоне внимания (а поскольку именно программа управляет работой ЦП, она определяет и "зону внимания" центрального процессора). Но если во время выполнения такой программы нажать какую-либо клавишу, то эта программа "не заметит" сигнала от этой клавиши, так как он не входит в ее "
Для того чтобы ЦП, выполняя свою работу, имел возможность реагировать на события, которые происходят вне его зоны внимания и наступления которых он "не ожидает", существует система прерываний ЭВМ. При отсутствии системы прерываний все заслуживающие внимания события должны находиться в
Кроме сокращения потерь на ожидание, режим прерываний позволяет организовать выполнение такой работы, которую без него реализовать просто невозможно. Например, при появлении неисправностей, нештатных ситуаций режим прерываний позволяет организовать работу по диагностике и автоматическому восстановлению в момент возникновения нештатной ситуации, прервав выполнение основной работы таким образом, чтобы сохранить полученные к этому времени правильные результаты, тогда как без режима прерываний обратить внимание на наличие неисправности система могла только после окончания выполняемой работы (или ее этапа) и получения неправильного результата.
Таким образом, система прерываний позволяет микропроцессору выполнять основную работу, не отвлекаясь на проверку состояния сложных систем при отсутствии такой необходимости, или прервать выполняемую работу и переключиться на анализ возникшей ситуации сразу после ее появления.
Помимо требующих внимания нештатных ситуаций, которые могут возникнуть при работе микропроцессорной системы, процессору полезно уметь "переключать внимание" и на различные виды работ, одновременно выполняемые в системе. Поскольку управление работой системы осуществляется программой, этот вид прерываний должен формироваться программным путем.
В зависимости от места нахождения источника прерываний они могут быть разделены на: внутренние (программные и аппаратные) и внешние прерывания (поступающие в ЭВМ от внешних источников, например, от клавиатуры или модема).
Принцип действия системы прерываний заключается в следующем: при выполнении программы после каждого рабочего такта микропроцессора изменяется содержимое регистров, счетчиков, состояние отдельных управляющих триггеров, т. е. изменяется состояние процессора. Информация о состоянии процессора лежит в основе многих процедур управления вычислительным процессом. Не вся информация одинаково актуальна, есть существенные элементы, без которых невозможно продолжение работы. Эта информация должна сохраняться при каждом "переключении внимания процессора".
Совокупность значений наиболее существенных информационных элементов называется вектором состояния или словом состояния процессора (в некоторых случаях оно называется словом
Вектор состояния в каждый момент времени должен содержать информацию, достаточную для продолжения выполнения программы или повторного пуска ее с точки, которая соответствует моменту формирования данного вектора.
Вектор состояния формируется в соответствующем регистре процессора или в группе регистров, которые могут использоваться и для других целей.
Наборы информационных элементов, образующих векторы состояния, отличаются у ЭВМ разных типов. В IBM PC вектор состояния включает содержимое АХ). В более поздних версиях основу вектора состояния образуют такие регистры, как слово состояния машины (Mashine status word - ), TR) и др.
При возникновении события, требующего немедленной реакции со стороны машины, ЦП прекращает обработку текущей программы и переходит к выполнению другой программы, специально предназначенной для данного события, по завершению которой возвращается к выполнению отложенной программы. Такой режим работы называется прерыва-нием.
Каждое событие, требующее прерывания, сопровождается специальным сигналом, который называется
Запросы на прерывание могут возникать из-за сбоев в аппаратуре (зафиксированных схемами
Некоторые из этих запросов порождаются самой программой, но время их возникновения невозможно предсказать заранее.
При наличии нескольких источников запросов прерывания часть из них может поступать одновременно. Поэтому в ЭВМ устанавливается определенный порядок (дисциплина) обслуживания поступающих запросов. Кроме того, в ЭВМ предусматривается возможность разрешать или запрещать прерывания определенных видов.
Программы - обработчики прерываний могут находиться в различных частях основной памяти (место их расположения в разных версиях операционных систем может быть различным). Для обеспечения совместимости программ под разными версиями операционной системы обращение к обработчикам прерываний осуществляется по их номерам.
В реальном режиме связь между номером прерывания и адресом основной памяти, соответствующим точке входа в обработчик прерывания, осуществляется через
В 32-битных микропроцессорах число n в команде INTn определяет номер индекса вызываемого прерывания в таблице дескрипторов прерываний . Таблица в режиме реальной адресации является массивом четырехбайтных дальних указателей. Линейный базовый адрес таблицы определяется содержимым регистра IDTR. При переходе в IDTR равно нулю (т.е. начало таблицы совпадает с началом вектора прерываний IBM PC).
Вычислительный процесс - это последовательность целенаправленных действий по обработке информации, приводящих к достижению поставленной цели.
Вычислительный процесс характеризуется тремя параметрами:
Графически вычислительный процесс может изображаться трассой, временной диаграммой, ярусно-параллельным графом, и др.
Трасса представляется в виде упорядоченного
Трасса характеризует динамику процесса, т.е. развитие его во времени. Обычно она изображается в виде последовательности событий, нанесенных в масштабе на ось времени.
Развитие процесса в пространстве и во времени характеризуется временной диаграммой. Временная диаграмма обычно изображается на нескольких осях времени, причем каждая ось содержит трассу, которая характеризует загрузку одного из устройств, выделенных процессу.
Ярусно-параллельный граф характеризует параллельность (одновременность, параллелизм) выполнения действий, составляющих процесс.
Простейший вид параллелизма реализован в мультипрограммных системах - этот вид параллелизма называется "совмещение во времени различных этапов разных задач".
Мультипрограммная обработка возможна и в однопроцессорной системе, так как реализует совмещение во времени выполнение различных частей разных задач. Для такого совмещения лишь необходимо, чтобы однопроцессорная система состояла из относительно независимых, автономных частей, каждая из которых может выполнять свою работу одновременно с работой других. При этом каждая задача все-таки будет решаться последовательно, но разные части вычислительной системы будут одновременно работать над разными задачами, не мешая друг другу.
В вычислительных системах, содержащих несколько обрабатывающих устройств, возможен другой тип параллелизма: одновременное решение различных задач или одновременное решение независимых ветвей одной задачи.
Если в систему поступает непрерывный поток не связанных между собой задач (т. е. таких задач, для которых характерно, что решение любой задачи не зависит от результатов решения других задач), использование нескольких обрабатывающих устройств позволяет совместить решение этих задач во времени. Это - "естественный параллелизм независимых задач".
При решении большой задачи в ней так же могут быть выделены отдельные независимые части - ветви, которые при наличии нескольких обрабатывающих устройств могут выполняться параллельно и независимо друг от друга. Это - "параллелизм независимых ветвей".
Для естественного параллелизма независимых задач и параллелизма независимых ветвей наиболее наглядной формой графического представления является ярусно-параллельная.
Ярусно-параллельный граф представляет вычислительный процесс в виде совокупности ветвей, расположенных в нескольких уровнях (ярусах). Ветви обозначаются кружками с цифрами внутри. Длина ветви характеризуется цифрой, стоящей около кружка. Стрелками показаны входные данные и результаты обработки. Входные данные обозначаются символами "x", выходные - символами "y". Индексы при "y" есть нижние и верхние. Верхние индексы соответствуют номеру ветви, при выполнении которой получен данный результат. Нижний индекс обозначает порядковый номер результата, полученного при реализации данной ветви программы.
Ветви каждого яруса не связаны друг с другом, т.е. результаты решения какой-нибудь ветви данного яруса не являются входными данными для другой ветви этого же яруса.
На примере ярусно-параллельных графов можно выявить преимущества вычислительных систем, имеющих несколько обрабатывающих устройств, и проблемы, возникающие в таких системах.
Рассмотрим возможности ярусно-параллельного графа на примере параллелизма независимых ветвей одной задачи. Пусть необходимо в параллельной системе произвести вычисление по формуле:
$$y=\frac{x_1+x_2*x_3}{x_1-x_2*x_3}*x_4-x_1x_2x_3$$и определить продолжительность вычислений по сравнению с однопроцессорной системой. Будем считать, что сложение и вычитание выполняются за 100 единиц времени, умножение - за 600, деление - за 1000.
В однопроцессорной системе последовательность действий может быть такая:
| № | Действие | Время |
|---|---|---|
| 1 | $$a=x_2*x_3$$ | 600 |
| 2 | $$b=x_1-a$$ | 100 |
| 3 | $$c=x_1+a$$ | 100 |
| 4 | $$d=c/b$$ | 1000 |
| 5 | $$e=d*x_4$$ | 600 |
| 6 | $$g=x_1*a$$ | 600 |
| 7 | $$h=e-g$$ | 100 |
| Итого: | 3100 |
Время $$t$$ на выполнение такой последовательности действий составляет 3100 единиц.
При наличии нескольких процессоров последовательность действий может измениться (рис.16.8):
(рис 16.8) Пример 1 ярусно-параллельного графа
затем на разных процессорах одновременно вычисляется:
Здесь цифры обозначают ярусы.
Продолжительность операции на 1 ярусе - 600 единиц, на втором - тоже 600 (сложение и вычитание закончатся раньше, но критическим для яруса является умножение), на третьем ярусе - 1000 единиц, на четвертом - 600, и на пятом - 100. Итого t1 = 2900 единиц.
Можно самую длинную операцию 2 яруса перенести на 3 ярус. Тогда граф изменится (рис.16.9), ветвь 4 со 2-го яруса переместится на 3.
(рис 16.9) Пример 2 ярусно-параллельного графа
В этом случае продолжительность 2 яруса станет 100, т.е. уменьшится на 500 единиц, и общее время вычислений станет равным 2400 единиц.
В случае естественного параллелизма независимых задач и большом числе задач ярусно-параллельный граф становится значительно сложнее и допускает значительно большее количество вариантов, как например, на рис.16.10.
Для такого графа характерно, что выигрыш во времени может существенно колебаться в зависимости от последовательности выполнения ветвей каждым обрабатывающим блоком (процессором), поэтому каждый процессор должен выбирать новую ветвь с учетом этого обстоятельства. Перед началом выполнения очередной ветви каждый процессор должен иметь информацию о готовности данных для этого.
(рис 16.10) Пример 3 ярусно-параллельного графа
Таким образом, чтобы с помощью нескольких обрабатывающих устройств решить задачи, имеющие независимые параллельные ветви, необходима соответствующая организация вычислительного процесса, которая будет определять пути решения задач и вырабатывать необходимую информацию о готовности каждой ветви.
При этом возникают следующие трудности:
Однако при решении многих сложных задач одно только программирование с выделением независимых ветвей уже позволяет существенно сократить время решения.
Хорошо поддаются параллельной обработке такого типа задачи матричной алгебры (в том числе - и компьютерной графики), линейного программирования, спектральной обработки сигналов, преобразования Фурье, задачи кластерного анализа, математической статистики, автоматической классификации, и т.д.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.