Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Активные и пассивные классы




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

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

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

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

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

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

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

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

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

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

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

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

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

2. Типы структур вычислительных машин и систем, перспективы и развития.

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

Структуры вычислительных машинВ настоящее время примерно одинаковое распространение получили два способа построения вычислительных машин: с непосредственными связями и на основе шины. Типичным представителем первого способа может служить классическая фон-неймановская ВМ. В ней между взаимодействующими устройствами (процессор, память, устройство ввода/вывода) имеются непосредственные связи. Особенности связей (число линий в шинах, пропускная способность и т. п.) опре­деляются видом информации, характером и интенсивностью обмена. Достоинством архитектуры с непосредственными связями можно считать возможность развязки «узких мест» путем улучшения структуры и характеристик только определенных связей, что экономически может быть наиболее выгодным решением. У фон-ней­мановских ВМ таким «узким местом» является канал пересылки данных между ЦП и памятью, и «развязать» его достаточно непросто. Кроме того, ВМ с не­посредственными связями плохо поддаются реконфигурации.

В варианте с общей шиной все устройства вычислительной машины подключе­ны к магистральной шине, служащей единственным трактом для потоков команд, данных и управления. Наличие общей шины существенно упрощает реа­лизацию ВМ, позволяет легко менять состав и конфигурацию машины. Благодаря этим свойствам шинная архитектура получила широкое распространение в мини-и микроЭВМ. Вместе с тем, именно с шиной связан и основной недостаток архи­тектуры: в каждый момент передавать информацию по шине может только одно устройство. Основную нагрузку на шину создают обмены между процессором и памятью, связанные с извлечением из памяти команд и данных и записью в па­мять результатов вычислений. На операции ввода/вывода остается лишь часть пропускной способности шины. Практика показывает, что даже при достаточно быстрой шине для 90% приложений этих остаточных ресурсов обычно не хватает, особенно в случае ввода или вывода больших массивов данных.

 

 

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

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

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

 

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

Подобное построение ВС снимает ограничения, свойственныe для общей шины, но приводит к дополнительным издержкам на пересылку сообщений между про­цессорами или машинами.

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

Класс

 

nit Str_Matr;

 

interface

uses SysUtils;

const N=20;

type Mas= array [1..N,1..N] of Integer;

TMatr=class

private

fZnacn:Mas;

fPorjd:Word;

public

Procedure InitMas(AMas:Mas);

Procedure PrintMas;

Procedure Transport;

Property Poradok:word read fPorjd write fPorjd;

end;

implementation

 

Procedure TMatr.InitMas;

Begin

fZnacn:= AMas;

End;

 

Procedure TMatr.PrintMas;

var i,j:Integer;

Begin

Writeln('Matricha ==>');

For i:=1 To fPorjd do

begin

For j:=1 to fPorjd do write(IntToStr(fznacn[i,j])+' ');

writeln;

end;

End;

 

Procedure TMatr.Transport;

var b:mas;

Begin

 

end;

end.

 

 

Тело

 

program Zad_19;

 

{$APPTYPE CONSOLE}

 

uses

SysUtils,

Str_Matr;

var UsMatr:TMatr;

A:Mas;

i,j:Integer;

begin

UsMatr:=TMatr.Create;

UsMatr.Poradok:=5;

For i:=1 to UsMatr.Poradok do

For j:=1 to UsMatr.Poradok do

Begin

Write('Vvedite A[',inttostr(i),',',InttoStr(j),'] == ');

readln(A[i,j]);

end;

UsMatr.InitMas(A);

UsMatr.PrintMas;

Readln;

{ TODO -oUser -cConsole Main : Insert code here }

end.


 


Поделиться:

Дата добавления: 2015-04-21; просмотров: 707; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты