Friend class Vec ; // класс Vec объявлен другом класса Dot
Class Dot // класс точки
Class B
{
• • •
} ;
Класс не может объявить сам себя другом некоторого другого класса. Для того, чтобы механизм дружественности сработал, он должен быть объявлен дружественным в этом другом классе. Например:
{
public:
Dot ( char Name ) : name ( Name ) { x = 0 ; y = 0 ; }
Dot ( char Name , double X , double Y ) : name ( Name ) { x = X ; y = Y ; }
void Print ( ) const ;
} ;
{
public:
Vec ( char* pName ) { strncpy ( name , pName , 3 ) ; x = 0 ; y = 0 ; }
Vec ( char* pName , double X , double Y ) { strncpy ( name , pName , 3 ) ; x = X ; y = Y ; }
Vec ( char* pName , Dot A , Dot B ) ;
void Print ( ) ;
void EndVec ( const Dot & A , Dot & B ) ;
} ;
Два класса могут объявить друг друга друзьями. С практической точки зрения такая ситуация свидетельствует о плохой продуманности иерархии классов, тем не менее, язык C++ допускает такую возможность. В этом случае объявления классов должны иметь вид:
{
friend class B ;
• • •
} ;
{
friend class A ;
• • •
} ;
Неполное объявление класса, которое приведено в данном фрагменте, может понадобиться, только если в классе A имеется ссылка на класс B, например, в параметре функции-члена.
По отношению к дружественным классам действуют следующие правила:
§ .. дружественность не является взаимным свойством: если A друг B, это не означает, что B – друг A;
§ .. дружественность не наследуется: если B – друг A, то классы, производные от B, не являются друзьями A;
§ .. дружественность не переходит на потомки базового класса: если B – друг A, то B не является другом для классов, производных от A.
Аппаратным интерфейсом принято называть совокупность правил унифицированного взаимодействия между отдельными устройствами, а также совокупность аппаратных, программных и конструктивных средств, необходимых для реализации этих правил. Взаимодействие осуществляется с помощью сигналов, передаваемых посредством электрических (или оптических) цепей, называемых линиями интерфейса; совокупность линий, сгруппированных по функциональному назначению, принято называть шиной интерфейса.
Унификация правил взаимодействия направлена на обеспечение информационной, электрической и конструктивной совместимости; унификация и стандартизация лежат в основе построения интерфейсов.
Информационная совместимость достигается за счет единых требований, предъявляемых к структуре и составу линий интерфейса, алгоритмам взаимодействия, способам кодирования и форматам данных, управляющей и адресной информации, временным соотношениям между сигналами.
Электрическая совместимость означает согласованность параметров электрических или оптических сигналов, передаваемых средой интерфейса, соответствие логических состояний уровням сигналов; электрическая совместимость определяет требования к нагрузочной способности компонентов и характеристикам используемых линий передачи (длина, допустимая активная и реактивная нагрузка, порядок подключения схем согласования и т.д.).
Конструктивная совместимость означает возможность механического соединения электрических цепей, а иногда и механической замены некоторых блоков; этот вид совместимости обеспечивается стандартизацией соединительных элементов (разъемов, штекеров и т.п.), кабелей, конструкций плат и т.д.
Интерфейсы в СВВ возникают между различными уровнями иерархии физической структуры ВС, поэтому требования, предъявляемые к организации обмена, существенно различаются. Единый стандартный интерфейс не смог бы обеспечить эффективную работу разнообразных устройств, используемых на различных уровнях иерархии СВВ. Этим объясняется наличие системы интерфейсов различных рангов, отличающихся характеристиками и степенью унификации.
В зависимости от требований унификации выделяют:
физическую реализацию интерфейса, т.е. состав и характеристики линий передачи, конструкцию средств их подключения (например, разъем), вид и характеристики сигналов;
логическую реализацию интерфейса, т.е. протоколы взаимодействия, или алгоритмы формирования сигналов обмена.
В широком смысле протокол определяет совокупность правил реализации определенной функции, например, обмена, и в этом случае может включать требования, охватывающие интерфейсы нескольких рангов.
Система аппаратных интерфейсов является одной из основных составляющих понятия архитектуры ВС. На рис.1 (а и б) показаны интерфейсы для машин ЕС ЭВМ и СМ ЭВМ, соответственно.
Компьютеры серии ЕС ЭВМ (Единая система электронных вычислительных машин) являлись аналогами компьютеров фирмы IBM серий IBM System/360/370, выпускавшихся в США c 1964 года. Были программно и аппаратно (аппаратно – только на уровне интерфейса внешних устройств) совместимы со своими американскими прообразами.
CМ ЭВМ — семейство управляющих ЭВМ, созданных в ходе международной программы по разработке системы малых ЭВМ – СМ ЭВМ.
В структуре ВС с выделенными ПВВ отметим интерфейсы четырех рангов. Через интерфейс И1 производится обмен информацией между ОП и процессорами (ЦП или ПВВ); через интерфейс И2— управляющей информацией между ЦП и ПВВ. Интерфейсы И1 и И2 являются внутренними, отражающими особенности конкретной модели и не унифицируются. Интерфейсы ввода-вывода (ИЗ) обеспечивают обмен между ПВВ и контроллерами ПУ (КПУ); они стандартизуются, что дает возможность использовать одинаковые контроллеры и ПУ в различных моделях ЭВМ одной системы.
Интерфейсы И4 образуют группу так называемых «малых» интерфейсов, посредством которых собственно ПУ сопрягается с контроллером. Степень унификации малых интерфейсов зависит от типа ПУ и контроллера. Если контроллер предназначен для управления только одним ПУ и конструктивно объединен вместе с ним, то их интерфейс не унифицируется. Если же контроллер предназначен для одновременного обслуживания множества ПУ, то соответствующий малый интерфейс должен быть стандартизован. При подключении аппаратуры систем передачи данных соответствующие интерфейсы принято называть стыками.
Для мини- и микроЭВМ характерно (рис.1,6) наличие интерфейса И0, посредством которого связаны между собой ЦП, ОП и контроллеры. Этот интерфейс принято называть системным (или объединенным), он унифицирован для всего семейства ЭВМ. Контроллеры в мини- и микроЭВМ достаточно просты, так как управление обменом между ПУ и ОП осуществляется в значительной мере программным путем. Это позволяет для семейств ЭВМ с различными интерфейсами И0 использовать одинаковые ПУ (но с разными контроллерами).
Интерфейсы принято характеризовать следующими параметрами:
видом связи, т.е. возможностью вести дуплексную (сообщения могут одновременно передаваться в двух направлениях, что требует двух каналов связи), полудуплексную (сообщения могут передаваться в двух направлениях, но одновременно возможна передача только в одном) или симплексную передачу (сообщения могут передаваться только в одном направлении);
пропускной способностью, т.е. количеством информации, передаваемой через интерфейс в единицу времени;
максимально допустимым расстоянием между устройствами или суммарной длиной линий, соединяющих все устройства интерфейса;
задержками при организации передачи, которые вызваны необходимостью выполнения подготовительных и завершающих действий по установлению связи между устройствами.
Конкретные значения этих параметров зависят от множества факторов, в частности от информационной ширины интерфейса, способа синхронизации, среды интерфейса, топологической структуры соединений и организации линии интерфейса, совмещения или функционального разделения линий. Все эти факторы определяют организацию интерфейса.