Jump to content

ТНСДЛ

TNSDL означает язык спецификаций и описаний TeleNokia . TNSDL основан на языке ITU-T SDL -88. Он используется исключительно в Nokia Networks , в первую очередь для разработки приложений для телефонных станций .

Цель [ править ]

общего назначения TNSDL — процедурный язык программирования . Он особенно хорошо подходит для разработки распределенных систем с высокой степенью параллелизма. [1]

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

Дизайн [ править ]

TNSDL — очень простой и легкий в освоении язык программирования.

Основы [ править ]

TNSDL — строго типизированный процедурный язык программирования . Его основные возможности сопоставимы с языками C и Pascal .

Многопроцессорность [ править ]

В TNSDL процессы создаются командой CREATE. (Это чем-то похоже на команду POSIX fork или pthread_create .) Команда CREATE создает либо процесс операционной системы, либо совместную задачу .

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

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

Передача сообщений [ править ]

Особенностью TNSDL является модель акторов . Предполагается, что процессы будут разрабатываться как управляемые событиями конечные автоматы . Межпроцессное взаимодействие осуществляется посредством асинхронной передачи сообщений . Команда OUTPUT отправляет сообщение, а операторы INPUT определяют ожидаемые сообщения.

Таймеры, с точки зрения TNSDL, представляют собой отложенные сообщения. Как и в случае с обычными сообщениями, истечение таймера обрабатывается оператором INPUT. Команда SET запускает, а команда RESET отменяет таймер.

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

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

DCL   WithWARMING   /* Данные для оперативной миграции (на платформах, поддерживающих «потепление») */    query_process   pid  ;   /* PID отправителя запроса_сигнала */  CONSTANT   time_to_wait   =   10  ;   /* Тайм-аут ответа базы данных */  TIMER   db_timeout_timer  ;   /* Таймер ответа базы данных */  STATE   Idle  ;   /* Состояние ожидания, ожидание сигнала запроса */    INPUT   query_signal  (  DCL   input_data  );      DCL        db_query   db_query_type  ;       /* Локальная переменная, хранящаяся в стеке. */      TASK   query_process   :=   SENDER  ;   /* Адрес отправителя сохраняется в определенной области памяти, которая сохраняется даже при обновлении программного обеспечения.*/      TASK   db_query  .  поле1   :=   некоторая_процедура  (  входные_данные  ),           db_query  .  поле2   :=   входные_данные  .  поле1  ;      ВЫХОД   db_request_signal  (  db_query  )   TO   db_process  ;   /* Отправляем запрос процессу базы данных */      SET  (  NOW   +   time_to_wait  ,   db_timeout_timer  );          /* Запускаем таймер ответа базы данных */      NEXTSTATE   wait_db  ;                                  /* Вход в состояние wait_db, в котором ожидается ответ базы данных */  ENDSTATE   IDEA  ;  СОСТОЯНИЕ   wait_db  ;    INPUT   db_response_signal  (  DCL   ответ_данные  );      RESET  (  db_timeout_timer  )   COMMENT   '  данных   ответила   вовремя   '  ;  База      ВЫХОД   ответ_сигнала  (  ответ_данные  .  записи  )   В   запрос_процесса ;      NEXTSTATE   простой  ;    ВВОД   db_timeout_timer  ;   /* Таймаут */      OUTPUT   error_signal  (  error_constant  )   TO   query_process  ;      NEXTSTATE   простой  ;  ENDSTATE   wait_db  ; 

Комментарии:

  • Конечный автомат предотвращает обработку любого нового query_signal во время ожидания ответа программы базы данных.
  • СТЕПЕНИЕ означает, что когда другой компьютер возьмет на себя роль текущего, отмеченные данные (переменная) будут скопированы на новый компьютер. Таким образом, если изменение оборудования или обновление программного обеспечения произойдет во время ожидания ответа базы данных, адрес отправителя запроса не будет потерян, и ответ может быть доставлен правильно. Однако он поддерживается не на всех платформах.

TNSDL позволяет привязывать входные данные к нескольким или всем состояниям. При необходимости входной сигнал может иметь поведение, зависящее от состояния.

STATE   IDLE   COMMENT   '  ожидания   Состояние  '  ;    ВВОД   are_you_busy  ;      ОТПРАВИТЕЛЮ    ВЫВОД   ;      СЛЕДУЮЩЕЕ СОСТОЯНИЕ   -  ;   /* Никакого изменения состояния */    /* ... другие обработчики ввода */  ENDSTATE   Idle  ;  STATE   *  (  idle  )   COMMENT   '  Любое   состояние  ,   кроме   простоя  '  ;    ВВОД   are_you_busy  ;      ОТПРАВИТЕЛЮ   да   ВЫВОД   ;      СЛЕДУЮЩЕЕ СОСТОЯНИЕ   -  ;   /* Никакого изменения состояния */  ENDSTATE   *  (  idle  );  STATE   *   COMMENT   '  Любое   состояние  '  ;    ВВОД   are_you_alive  ;      ОТПРАВИТЕЛЮ   да   ВЫВОД   ;      СЛЕДУЮЩЕЕ СОСТОЯНИЕ   -  ;   /* Никакого изменения состояния */  ENDSTATE   *  ; 

Отличия от СДЛ-88 [ править ]

Nokia внесла в язык несколько модификаций. [2] в основном включая упрощения и дополнения, такие как:

  • Такие функции, как каналы и маршруты сигналов, были заменены другими механизмами.
  • В TNSDL были добавлены концепции модулей и сервисов (концепция сервисов SDL-88 аналогична функции субавтоматов TNSDL).
  • Некоторые элементы были переименованы (например, входы приоритета называются внутренними входами в TNSDL).
  • В TNSDL функция MACRO была опущена и была добавлена ​​конструкция WHILE, позволяющая структурировать циклы без использования JOIN.

Компиляция [ править ]

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

После перевода TNSDL на C можно использовать любой совместимый со стандартом компилятор C, компоновщик, инструмент измерения покрытия и профилирования. Чтобы сделать возможной отладку на уровне исходного кода, TNSDL помещает ссылки на номера строк в сгенерированный код C.

Код TNSDL может вызывать подпрограммы, реализованные на других языках, если для них присутствуют объекты или библиотеки. Можно использовать даже макросы языка C , если присутствуют заголовочные файлы C. Внешние объявления должны быть доступны транслятору TNSDL.

Переводчик TNSDL — это собственный инструмент. Анализатор исходного кода (доступности) также был разработан специально для TNSDL. [3]

Используйте [ править ]

TNSDL обычно используется на платформах DX 200 , IPA 2800 и Linux для высокопроизводительных приложений с высокой доступностью.

TNSDL — активно используемый и развиваемый язык программирования, используемый тысячами разработчиков (по состоянию на 2010 г.). [ нужна ссылка ]

TNSDL в основном используется в Nokia Networks для разработки программного обеспечения для SGSN , BSC , центров коммутации мобильной связи , серверов приложений как в традиционных установках, так и в качестве функций виртуальной сети (VNF) решений NFV .

Похожие языки программирования [ править ]

Несмотря на разницу в синтаксисе, вероятно, одним из ближайших родственников TNSDL является язык Go . В обоих языках основное внимание уделяется легким процессам . Канал Go похож на INPUT TNSDL, а оператор выбора Go на каналах обеспечивает очень похожую структуру программы. Однако есть различия. TNSDL использует асинхронную передачу сообщений между актерами , тогда как каналы в Go могут быть как синхронными , так и асинхронными (буферизованными). TNSDL позволяет передавать сообщения между процессами, работающими на одном или разных компьютерных узлах. В этом аспекте TNSDL является родственником Erlang .

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

История [ править ]

1980-е: Вначале ITU-T SDL имел графический синтаксис. Текстовый синтаксис был введен позже. Соответствующий графический инструмент и генератор кода были разработаны внутри Nokia .

1990: ITU-T SDL перешел в сторону текстового представления. На основе спецификации SDL-88 родился TNSDL. TNSDL — это упрощенный и сильно модифицированный вариант SDL-88.

Ссылки [ править ]

  1. ^ Жаннетт М. Винг; Джим Вудкук; Джим Дэвис, ред. (1999). FM'99 - Формальные методы: Всемирный конгресс по формальным методам, 1999, Труды . Спрингер. ISBN  3540665870 .
  2. ^ Юринки, Теро (1997). «Динамический анализ программ SDL с сетями предикатов/переходов». Хельсинкский технологический университет, Лаборатория цифровых систем: 22. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  3. ^ Хусберг, Ниссе; Мальмквист, Маркус; Юринки, Теро (1996). «Эмма: инструмент для анализа программ SDL». CiteSeerX   10.1.1.30.3240 . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6f82e568a96d10ce5e1d779eb94b9ae4__1595666940
URL1:https://arc.ask3.ru/arc/aa/6f/e4/6f82e568a96d10ce5e1d779eb94b9ae4.html
Заголовок, (Title) документа по адресу, URL1:
TNSDL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)