Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-15-ответы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
6.84 Mб
Скачать

Продление аренды и освобождение ip-адреса

По прошествии половины периода, на который был выделен IP-адрес, клиенты DHCP пытаются продлить его аренду. Для этого клиент посылает сообщение DHCPREQUEST прямо выделившему адрес серверу DHCP.

Если он доступен, то продлевает аренду и отсылает клиенту сообщение DHCPACK с новым временем аренды и обновленными параметрами конфигурации. Получив подтверждение, клиент обновляет свою конфигурацию.

Примечание: При каждом перезапуске клиент DHCP пытается получить у исходного сера dhcp свой старый IP-адрес. Если эта попытка окажется неудачной и время аренды еще не кончилось, то клиент DHCP будет использовать старый IP-адрес до следующей попытки продления аренды.

Если по прошествии половины времени аренды клиент DHCP не сможет продлить ее на исходном сервере DHCP, по истечении 87,5% времени аренды клиент начнет широковещательную рассылку пакета DHCPREQUEST для связи с любым доступным сервером DHCP. Сервер DHCP может ответить либо сообщением DHCPACK (продление аренды), либо DHCPNACK (принудительная инициализация клиента и получение им другого IP-адреса).

По истечении срока аренды или получив сообщение DHCPNACK, клиент DHCP должен сразу прекратить использование занятого IP-адреса. Затем клиент возобновляет процесс аренды DHCP для получения нового IP-адреса.

Продление аренды IP-адреса с помощью ipconfig

Чтобы отослать серверу DHCP сообщение DCHPREQUEST и получить обновленные параметры и период аренды, запустите в командной строке ipconfig с ключом /renew. Если сервер DHCP недоступен, клиент продолжит использовать текущие параметры конфигурации, предоставленные DHCP.

Освобождение IP-адреса с помощью ipconfig

Чтобы отослать серверу DHCP сообщение DHCPRELEASE и освободить занимаемый клиентом DHCP IP-адрес, запустите в командной строке ipconfig с ключом /release.

Это полезно, если необходимо перемещение клиентского компьютера в другую сеть и ему не нужен старый IP-адрес. После выполнения этой команды связь с клиентом с применением TCP/IP прекращается.

Определение области DHCP

Прежде чем сервер DHCP сможет предоставить клиентам DHCP IP-адреса, надо определить область DHCP — пул действительных IP-адресов, которые могут быть выделены клиентам DHCP.

Создавая область DHCP следует помнить:

1. для каждого сервера DHCP надо определить не менее одной области;

2. из области следует исключить статичные IP-адреса;

3. для централизации администрирования и выделения IP-адресов, специфичных для конкретной сети, на сервере DCHP можно определить несколько областей; подсети можно присвоить лишь одну область;

4. серверы DHCP не обмениваются информацией об областях, поэтому, создавая области на нескольких серверах DHCP, убедитесь, что в этих областях нет пересекающихся IP-адресов — это поможет избежать проблем с идентичными IP-адресами.

  1. DHTML. Объектная модель документа.

Dynamic HTML или DHTML — это способ создания интерактивного веб-сайта, использующий сочетание статичного языка разметки HTML, встраиваемого (и выполняемого на стороне клиента) скриптового языка JavaScript, CSS (каскадных таблиц стилей) и DOM (объектной модели документа).

Он может быть использован для создания приложения в веб-браузере: например для более простой навигации или для придания интерактивности форм. DHTML может быть использован для динамического перетаскивания элементов по экрану. Также он может служить как инструмент для создания основанных на браузере видеоигр.

DHTML приложения, которые вполне автономны в браузере, без серверной поддержки, такой как база данных, иногда вынуждены обращаться к Single Page Applications, или SPA.

Конкурирующая техника включает в себя Adobe Flash и Silverlight.

DOM (от англ. Document Object Model — «объектная модель документа») — это не зависящий от платформы и языка программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому HTML, XHTML и XML-документов, а также изменять содержимое, структуру и оформление таких документов.

Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого представляет собой элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями "родительский-дочерний".

Изначально различные браузеры имели собственные модели документов (DOM), несовместимые с остальными. Для обеспечения взаимной и обратной совместимости, специалисты международного консорциума W3C классифицировали эту модель по уровням, для каждого из которых была создана своя спецификация. Все эти спецификации объединены в общую группу, носящую название W3C DOM.

  1. MPI - модель программирования

Учебные примеры: библиотека MPI

Интерфейс передачи сообщений (Message Passing Interface — MPI) — это библиотека процедур для передачи сообщений. При использовании библиотеки MPI процессы распределенной программы записываются на таком последовательном языке, как С или Fortran; их взаимодействие и синхронизация задается с помощью вызовов процедур библиотеки MPI.

Интерфейс программирования MPI-приложений был создан в середине 1990-х годов большой группой разработчиков из университетов, правительственных и промышленных организаций. Он отражает опыт работы с такими библиотеками передачи сообщений, как PVM. Цель этой группы состояла в разработке единой библиотеки, которую можно было бы эффективно реализовать на различных многопроцессорных машинах. Теперь библиотека MPI стала стандартом де-факто; существует несколько ее реализаций.

Программы, использующие библиотеку MPI, имеют так называемый SPMD-стиль (single program, multiple data — одна программа, много данных). Каждый процессор выполняет копию одной и той же программы. (В написанном на языке С приложении каждый процессор начинает выполнять процедуру main.) Каждый экземпляр программы может определить собственный идентификатор и, следовательно, предпринять различные действия. Экземпляры программы взаимодействуют, вызывая функции библиотеки MPI, которые поддерживают взаимодействие процессов с процессами, группами и окружением.

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

Базовые функции

Напомним задачу, в которой два процесса обменивались значениями локальных переменных. В следующем листинге приведена законченная С-программа, использующая для решения этой задачи библиотеку MPI.

Программа обмена значениями между двумя процессами с помощью библиотеки MPI

# include <mpi.h>

main(int argc, char *argv[]) {

int myid, otherid, size;

int length = 1, tag = 1;

int myvalue, othervalue;

MPI_Status status;

/* инициализировать MPI и получить свой id (ранг) */

MPI_lnit(&argc, &argv);

MPI_Comm_size(MPi_COMM_WORLD, &size);

MPI_Comm_rank(MPI_COMM_WORLD, &myid);

if (myid == 0) {

otherid =   1;   myvalue  =   14;

} else {

otherid  =   0;   myvalue   =   25;

MPI_ Send(&myvalue,   length,   MPI_INT,   otherid, tag,   MPI_COMM_WORLD);

MPI_ Recv(&othervalue,   length,   MPI_INT,   MPI_ANY_SOURCE,

tag,   MPI_COMM_WORLD,    &status);

printf("процесс номер %d получил  %d\n",   myid,   othervalue);

MPI_Finalize();

}

Первая строка содержит директиву включения заголовочного файла библиотеки MPI, в котором определены типы, константы и прототипы функций. Программа компилируется, компонуется с библиотекой MPI и затем выполняется с помощью команды (например mpirun), которую обеспечивает конкретная реализация библиотеки MPI. Эта команда создает определенное число процессов, и каждый из них начинает выполнять процедуру main.

В программе есть вызовы шести основных процедур библиотеки MPI; они присутствуют практически во всех программах, использующих эту библиотеку.

MPI_Init. Инициализировать библиотеку MPI и возвратить копию аргументов ко мандной строки, передаваемых программе. Копию получают все экземпляры про граммы. В результате этого вызова инициализируется переменная mpi_comm_world, которая является набором запущенных процессов.

MPI_Comm_size. Определить число процессов (size), которые нужно запустить. Для данной программы их должно быть два.

MPI_Coiran_rank. Определить ранг (идентификатор) процесса. Рангами являются чис ла от 0 до size-1.

MPI_Send. Отправить сообщение другому процессу. Аргументами этой процедуры являют ся: буфер, в котором находится сообщение, число элементов для передачи, тип данных в сообщении, идентификатор (ранг) процесса назначения, метка, определяемая про граммистом для того, чтобы различать типы сообщений, и значение MPI_COMM_WORLD.

MPI_Receive. Получить сообщение от другого процесса. Аргументы: буфер, в кото рый должно быть помещено сообщение, число элементов в сообщении, тип данных в сообщении, идентификатор передающего процесса или значение "безразлично" (MPI_ANY_SOURCE), метка сообщения, группа взаимодействия, статус возврата.

MPi_Finalize. "Сбросить" библиотеку MPI и завершить данный процесс.

В приведенной программе процесс 0 отправляет значение 14 процессу 1, а тот отправляет значение 25 процессу 0. Обмен кодируется симметричным образом, как отправка с после дующим приемом. Если запущено больше двух копий программы, то все процессы с номерами от 1 до size-1 отошлют число 25 процессу 0. Процесс 0 получит одну копию значения 25 от одного из остальных процессов, но свое значение отошлет только процессу 1.

Процедура MPI_Send приостанавливает работу программы, пока сообщение не будет буферизовано или получено указанным процессом назначения (с идентификатором otherid) Таким образом, процедуры MPI_Send и MPI_Receive вместе обеспечивают асинхронную передачу сообщений, хотя технически реализация библиотеки MPI не обязана буферизовать сообщения. (Это приводит к проблемам при написании программ, использующих библиоте *У MPI, поскольку становятся возможными взаимоблокировки.) Библиотека МРI поддерживает и другие режимы передачи и приема сообщений. Например, программист может выделить память для буфера и тем самым обеспечить неблокирующую отправку. Другие функции включают синхронную передачу и опрос (неблокирующий прием) сообщений.

Глобальное взаимодействие и синхронизация

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

MPI_Barrier. Сигнализировать прибытие к барьеру. Возврат из нее происходит когда эту функцию вызовут все процессы группы. (По умолчанию определена группа

МР I_C AMM_WORLD.)

MPI_Bcast. Разослать копии сообщения всем членам группы (включая отправителя) MPI_Scatter. Распределить массив а, состоящий из size элементов, отправляя каж дому процессу i в группе сообщение со значением а [ i ].

MPI_Gather. Собрать сообщения от процессов группы и записать их в массив из size элементов. Сообщение от процесса i записывается в i-й элемент массива. MPI_Reduce. Собрать значения в сообщениях от каждого процесса и свести их к од ному значению. Операторами сведения являются MPI_SUM, MPI_MAX и другие ассо циативные и коммутативные бинарные операторы.

MPI_Allreduce. To же, что и MPI_Reduce, только каждый процесс получает копию полученного значения.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]