Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

metoda_2013

.pdf
Скачиваний:
54
Добавлен:
03.05.2015
Размер:
6.36 Mб
Скачать

СЕТИ ЭВМ И ТЕЛЕКОММУНИКАЦИИ

сообщение, осуществляется на основе значения поля "порт" в заголовке TCP-сообщения.

Мультиплексирование данных в обратную сторону осуществляется довольно просто, так как из каждого модуля существует только один путь вниз. Каждый протокольный модуль добавляет к пакету свой заголовок, на основании которого машина, принявшая пакет, выполняет демультиплексирование. Схема взаимозависимости протоколов семейства TCP/IP

Три стратегии управления потоком; они все направлены на борьбу с блокировками памяти в маршрутизаторах:

1)межузловое управление – основная функция (по умолчанию), заключается в том, что каждому порту отводиться одинаковое количество страниц в памяти, размер страницы равен максимальному размеру пакета локальной сети этого порта. Это приводит к ограничению длин канальных очередей.

2)Управление "вход-выход" направлено на предотвращение блокировок. Реализуется указанием в первом пакете сообщения его длины, что позволяет приемному узлу прогнозировать заполнение памяти и запрещать прием дейтаграмм определенных сообщений, если прогнозируется блокировка памяти.

3)управление внешними потоками осуществляется трем способами:

a) все потоки пакетов делятся на внутренние и внешние (внутренние – внутри одного домена, внешние – в другие домены). Разделение осуществляется по IP адресу. При переполнении памяти, наибольший приоритет имеют пакеты внутреннего потока, пакеты внешнего потока удаляются.

210

СЕТИ ЭВМ И ТЕЛЕКОММУНИКАЦИИ

b)каждый пакет должен иметь разделение доступа в другом сегменте сети, если такого разделения нет, то пакет удаляется. (широковещательные пакеты)

c)если маршрутизатор обнаруживает узел, который создает перегрузку сети, он отправляет ему пакеты – заглушки. После отправки пакетов – заглушек, маршрутизатор удаляет пакеты от этого узла. После освобождения лини, узлу посылается разрешение на передачу.

Протокол IP очень сходен с протоколом УДС, поэтому протокол IP не осуществляет повторных передач искаженных кадров и не посылает подтверждений правильности.

10. Объясните понятие “окно конфликтов”. Как в сети Ethernet определяется эта величина и на что она влияет? Как в сети Ethernet на витой паре проводов уменьшить окно конфликтов?

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

Эта величина влияет на пропускную способность сети, а, следовательно, и на предел работоспособности. Причиной явления является недетерменированность алгоритма доступа к среде..

Длительность окна конфликтов определяется суммарным временем распространения сигналов по физическому уровню и по физической среде, то есть время распространения по кабелю + все задержки вносимые хабами, репитерами, сетевыми картами.. Только в этот промежуток времени в сети возможны конфликты.

211

СЕТИ ЭВМ И ТЕЛЕКОММУНИКАЦИИ

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

Дополнительно.

Станция, которая хочет передать кадр, должна сначала с помощью MAC-узла упаковать данные в кадр соответствующего формата. Затем для предотвращения смешения сигналов с сигналами другой передающей станции, MAC-узел должен прослушивать электрические сигналы на кабеле и в случае обнаружения несущей частоты 10 МГц отложить передачу своего кадра. После окончания передачи по кабелю станция должна выждать небольшую дополнительную паузу, называемую межкадровым интервалом (interframe gap), что позволяет узлу назначения принять и обработать передаваемый кадр, и после этого начать передачу своего кадра.

Одновременно с передачей битов кадра приемно-передающее устройство узла следит за принимаемыми по общему кабелю битами, чтобы вовремя обнаружить коллизию. Если коллизия не обнаружена, то передается весь кадр, поле чего MAC-уровень узла готов принять кадр из сети либо от LLC-уровня.

Если же фиксируется коллизия, то MAC-узел прекращает передачу кадра и посылает jam-последовательность, усиливающую состояние коллизии. После посылки в сеть jamпоследовательности MAC-узел делает случайную паузу и повторно пытается передать свой кадр.

В случае повторных коллизий существует максимально возможное число попыток повторной передачи кадра (attempt limit), которое равно 16. При достижении этого предела фиксируется ошибка передачи кадра, сообщение о которой передается протоколу верхнего уровня.

Для того, чтобы уменьшить интенсивность коллизий, каждый MAC-узел с каждой новой попыткой случайным образом увеличивает длительность паузы между попытками. Временное расписание длительности паузы определяется на основе усеченного двоичного экспоненциального алгоритма отсрочки

(truncated binary exponential backoff). Пауза всегда составляет целое число так называемых интервалов отсрочки.

Интервал отсрочки (slot time) - это время, в течение которого станция гарантированно может узнать, что в сети нет коллизии. Это время тесно связано с другим важным временным параметром сети - окном коллизий (collision window). Окно коллизий равно времени двукратного прохождения сигнала

212

ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ

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

V.ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И МЕТОДЫ

ТРАНСЛЯЦИИ

1. Трансляция. Интерпретация и компиляция. Общие синтаксические критерии. Стадии трансляции.

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

Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой. Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.

Транслятор обрабатывает файл с исходным текстом программы и осуществляет перевод программы с ЯП в понятную машине последовательность кодов.

Трансляторы делятся на два класса: компиляторы и интерпретаторы.

Компилятор – это программа, которая обрабатывает программу на исходном языке и как результат выдает программу в некотором объектном коде.

можно говорить о компиляторе как об отображении множества L1(исходная рограмму на ЯП L1) в множество

L2(объектная программа на др языке), т.е. KL3: L1->L2. L3 – язык на котором написан компилятор, возм отличный от L1 и L2

213

ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ

Интерпретатор – это программа, которая переводит программу с исходного языка на некоторый внутренний язык и затем покомандно выполняет.

Достоинства интерпретатора:

Передавать сообщения об ошибках пользователю часто оказывается легче в терминах оригинальной программы

Версия программы на промежуточном языке нередко оказывается компактнее, чем машинный код, выдаваемый компилятором

Изменение части программы не требует перекомпиляции всей программы (в качестве внутреннего языка

используется польская запись) Недостатки:

Медленно работает, так как операторы промежуточного языка должны транслироваться каждый раз при выполнении

Невозможно написать интерпретатор для некоторых языков программирования (Си, Паскаль и др.)

Общие синтаксические критерии языка:

удобство чтения программы;

удобство записи (противоречит п.1);

простота трансляции;

отсутствие разночтений (Пример, A(i, j) – переменная массива или функция?);

разные операторы должны выглядеть по-разному

(Пример, DO I=1,5 {цикл} и DO I=1.5 {присвоение});

214

ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ

операторов в языке должно быть необходимое количество, желательно, чтобы разработчик ЯП доказал необходимость каждого оператора и полноту всей совокупности операторов;

язык должен выполнять свое предназначение;

язык должен быть легко расширяем;

должно предполагаться множество внешних библиотек. Стадии трансляции:

Основным процессом при реализации любого языка

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

Логически трансляцию можно разбить на две основные части: I. Анализ исходной программы.

II. Синтез выполняемой объектной программы.

Анализ программы можно разделить на следующие этапы:

1.Лексический анализ (ЛА).

2.Синтаксический анализ. (Син.А)

3.Семантический анализ. (Сем.А)

На этапе ЛА исходный текст подвергается лексической обработке. Программа разделяется на предложения, предложение делится на элементарные составляющие (лексемы). Каждая лексема распознаётся, определяется тип лексемы (имя, ключевое слово, литерал, символ операции или разделитель) и преобразуется в соответствующее двоичное представление. Блок транслятора, который соответствует ЛА, часто называется сканером или лексическим анализатором. Эта часть трансляции самая медленная, потому что необходимо сканировать и анализировать исходную программу, литера за литерой. Очень часто сканеры пишутся на ассемблере для того, чтобы они работали быстрее. В основе лексического разбора лежат регулярные грамматики.

Пример ЛА: исходный текст: A=(B+C)*D

на выходе ЛА получим: <ид.1>=(<ид.2>+<ид.3>)*<ид.4> Син.А: лексемы, полученные на стадии ЛА, используются для

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

215

ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ

нетерминала является признаком синтаксической ошибки в тексте исходной программы. Син.А на входе имеет набор лексем и пытается из этих лексем построить предложения языка. Фактически на этой стадии строятся синтаксические деревья (см. рисунок справа). В основе Син.А лежат КС-грамматики.

Син.А обычно чередуется с

Сем.А.

Сначала

Син.

анализатор

 

идентифицирует

последовательность

лексем,

формируя

 

синтаксическую

единицу

выражение,

оператор,

 

 

вызов

подпрограммы,

декларацию.

Затем

 

вызывается

семантический

анализатор.

Обычно для связи Син. анализатора с Сем. анализатором используется стек.

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

При простой трансляции Сем. анализатор может генерировать объектный код, но, как правило, выходом этой стадии служит некоторая внутренняя форма выполняемой программы. В качестве внутреннего языка может использоваться прямая и обратная польские записи, запись триадами и тетрадами.,например A = B + C * D; C D * B + A = {постфиксная форма}

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

216

ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ

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

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

2. Грамматики и автоматы. Классификация Хомского

Два наиболее распространенных способа конечного задания формального языка - это грамматики и автоматы. Грамматикой G[S] называется конечное непустое множество правил. S – это символ, который должен встретиться в левой части хотя бы одного правила. Он называется начальным символом.

Алфавит - это конечное множество символов. Цепочкой символов в алфавите V называется любая конечная последовательность символов этого алфавита. Цепочка, которая не содержит ни одного символа, называется пустой цепочкой ( ). Более формально цепочка символов в алфавите V определяется следующим образом:

(1)- цепочка в алфавите V;

(2)если - цепочка в алфавите V и a - символ этого алфавита, тоa - цепочка в алфавите V;

(3)- цепочка в алфавите V тогда и только тогда, когда она является таковой в силу (1) и (2).

Язык в алфавите V - это подмножество цепочек конечной длины в этом алфавите.

217

ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ

Обозначим через V+ множество, содержащее все цепочки в алфавите V, исключая пустую цепочку . Обозначим через V* множество, содержащее все цепочки в алфавите V, включая . Следовательно, V* = V+ { }.

В заданной грамматике G символы, которые встречаются в левой части правил, называются нетерминалами или синтаксическими единицами языка. Символы, которые не входят во множество VN, называются терминальными символами или терминалами.

Порождающая грамматика G - это четверка (VT, VN, P, S),

где

VT - алфавит терминальных символов ,

VN - алфавит нетерминальных символов, не пересекающийся с

VT,

P - конечное подмножество множества (VT VN)+ (VT VN)*; элемент ( , ) множества P называется правилом вывода и записывается в виде , и - цепочки , построенные из букв алфавита Vт N, который называют полным алфавитом (словарем) грамматики Г.

S - начальный символ грамматики, S VN.

Пусть G[Z]- грамматика. Цепочка x называется сентенциальной формой, если x выводима из начального символа Z, то есть если Z *x. Предложение – это сентенциальная форма, состоящая только из терминальных символов.

Классификация Хомского (грамматики класс-ся по виду их правил вывода)

ТИП 0:

Грамматика G = (VT, VN, P, S) называется грамматикой типа 0, если на правила вывода не накладывается никаких ограничений (кроме тех, которые указаны в определении грамматики). u ::= v, где u V+ и v V*. То есть левая часть u может быть тоже последовательностью символов, а правая часть может быть пустой. Например, Aab ® cBd. Грамматики нулевого типа не имеют практического применения. Так как в данной грамматике нет однозначности и они существуют только теоретически. Если ввести ограничение на правила подстановки, то получится языков типа 1.

ТИП 1:

218

ТЕОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И МЕТОДЫ ТРАНСЛЯЦИИ

Грамматику т 1 можно определить как неукорачивающую, или как контекстно-зависимую. Например, G[ S ]: 1) S ® aSBa 2) S ®

aba 3) aB ® Ba 4) BB ® bb.

 

 

 

 

 

 

Грамматика

G = (VT, VN, P, S)

называется неукорачивающей

грамматикой, если каждое правило из P имеет вид ::= , где

 

(VT

 

VN)+,

 

 

(VT

 

VN)+

и

| | <= | |.

Грамматика G = (VT, VN, P, S) называется контекстно-

зависимой ( КЗ ), если каждое правило из P имеет вид

, где

 

=

1A 2;

 

=

1 2;

A

 

VN;

(VT VN)+; 1, 2 (VT VN)*.

 

 

 

 

Выбор определения не влияет на множество языков, порождаемых грамматиками этого класса, поскольку доказано, что множество языков, порождаемых неукорачивающими грамматиками, совпадает с множеством языков, порождаемых КЗ-грамматиками. Термин «контекстно-чувствительная» отражает тот факт, что можно заменить U на u лишь в контексте x…y.

ТИП2

Дальнейшее ограничение дает класс грамматик, называемых

контекстно-свободными грамматиками (КС-грамматики).

Грамматика называется контекстно-свободной, если все ее правила имеют вид:

U ::=u, где U VN и u V*(для укорачивающих, u V+ для неукорачивающих). Этот класс назван контекстно-свободным потому, что символ U можно заменить цепочкой u, не обращая внимание на контекст, в котором он встретился. Например, G[ R ]:

1) R® aa 2) R® aAa 3) A ® b 4) A ® bA. В общем случае нельзя показать однозначность и безвозвратность КС – грамматик.

ТИП3

Если мы ограничим правила еще раз, приведя их к виду U ::=x или U::= Wx, или U::=xW , где x T, а U и W VN, то получим грамматику типа 3, или регулярную грамматику. Регулярные грамматики играют основную роль как в теории языков, так и в теории автоматов. Например, G[I]: 1) I®aI 2) I®bA 3) A®bI 4) A®a.

Грамматика G = (VT, VN, P, S) называется праволинейной, если

каждое правило из Р t, где A

tB либо A

имеет вид A VN, B

VN, t VT. Грамматика G

= (VT,

VN, P, S) называется

леволинейной,

t, где A

Bt

либо A

если каждое правило из Р

имеет вид A

VN, B

 

VN, t

VT. Грамматику типа 3

(регулярную,) можно определить как праволинейную либо как леволинейную.

219

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