Netscape Portable Runtime

редактировать
Netscape Portable Runtime
Разработчик (и) Mozilla Foundation / Mozilla Corporation
Стабильный выпуск 4.29 (18 сентября 2020 г.; 25 дней назад (2020-09-18))
Репозиторий Измените это на Викиданные
Написано наC
Операционная система Кросс-платформенная
Тип Программная библиотека
Лицензия MPL
Веб-сайтразработчик.mozilla.org / docs / NSPR

В computing, Netscape Portable Runtime или NSPR, a, делает все операционные системы он поддерживает аналогично (например) Mozilla -стиль веб-браузерам. NSPR обеспечивает независимость от платформы для средств операционной системы. Эти возможности включают:

Большая часть библиотеки и, возможно, ее общая направленность в среде Gromit, обеспечивает основу виртуальной машины Java, более или менее отображая то, что Sun определяет для переноса виртуальной машины Java на различные платформы. В некоторых областях NSPR выходит за рамки этого требования, так как он также функционирует как платформо-независимый уровень для большинства серверов, производимых Netscape.

Содержание

  • 1 История
  • 2 Как это работает
    • 2.1 Потоки
    • 2.2 Синхронизация потоков
    • 2.3 Ввод / вывод
    • 2.4 Сетевые адреса
    • 2.5 Время
    • 2.6 Управление памятью
    • 2.7 Связывание
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки

История

Первоначально первое поколение NSPR было направлено только на удовлетворение требований по переносу Java в различные среды хоста. NSPR20, проект, начатый в 1996 году, основан на этой исходной идее, хотя от исходного кода осталось очень мало. («20» в «NSPR20» не означает «версию 2.0», а скорее «второе поколение».) Многие из концепций показывают реформирование, расширение и созревание. В 2009 году NSPR по-прежнему должным образом функционировал как платформо-зависимый уровень под Java, но он также служил для поддержки клиентов, полностью написанных на C или на C ++.

Как это works

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

Темы

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

Синхронизация потоков

Синхронизация потоков слабо зависит от мониторов, как описано в C. А. Р. Хоар в «Мониторы: концепция структурирования операционной системы», Коммуникации ACM, 17 (10), октябрь 1974 г., а затем формализованы Xerox 'Mesa язык программирования ("Руководство по языку Mesa", JG Mitchell et al., Xerox PARC, CSL-79-3 (апрель 1979 г.)). Этот механизм обеспечивает базовое взаимное исключение (мьютекс ) и средства уведомления потоков (переменные состояния), реализованные NSPR. Кроме того, NSPR предоставляет методы синхронизации, более подходящие для использования Java. Возможности, подобные Java, включают возможность повторного входа монитора, неявные и жестко связанные возможности уведомления с возможностью динамического связывания объектов синхронизации.

I / O

NSPR I / O немного расширяет модель сокетов Berkeley и допускает произвольное разбиение на уровни. Первоначально разработчики намеревались экспортировать только методы синхронного ввода-вывода, полагаясь на потоки для обеспечения параллелизма, необходимого для сложных приложений. Этот метод работы остается предпочтительным, хотя можно настроить сетевые каналы ввода-вывода как неблокирующие в традиционном смысле.

Сетевые адреса

Часть NSPR касается манипулирования сетевыми адресами. NSPR определяет объект сетевого адреса, ориентированный на IP. Хотя он не определяет объект как непрозрачный, API предоставляет методы, которые позволяют и поощряют клиентов рассматривать адреса как полиморфные элементы. В этой области NSPR стремится обеспечить путь перехода между IPv4 и IPv6. С этой целью можно выполнять переводы строк ASCII (DNS имен) в структуры сетевых адресов NSPR, независимо от того, использует ли технология адресации IPv4 или IPv6.

Время

NSPR предоставляет средства измерения времени в двух формах: временные интервалы и функции календаря.

Интервальные таймеры основаны на свободно работающем 32-битном таймере разрешения, зависящем от платформы. Такие таймеры обычно используются для определения тайм-аутов при вводе-выводе, ожидания переменных условий и другого элементарного планирования потоков. Поскольку эти таймеры имеют ограниченное пространство имен и работают свободно, их можно обернуть в любое время. NSPR не предоставляет эпоху, но ожидает, что клиенты решат эту проблему. Гранулярность таймеров гарантированно составляет от 10 микросекунд до 1 миллисекунды. Это позволяет минимизировать период таймера примерно в 12 часов. Но для решения проблемы циклического переноса можно использовать только половину этого пространства имен. Следовательно, минимальный полезный интервал, доступный от таймеров, составляет чуть меньше шести часов.

Календарное время - это 64-битные числа со знаком с точностью до микросекунд. Эпоха календарного времени - полночь 1 января 1970 г., среднее время по Гринвичу. Отрицательные числа распространяются на времена до 1970 года, а положительные числа - вперед. Использование 64 бита позволяет отображать времена приблизительно в диапазоне от -30000 до 30000 года. При этом выходят структурное представление (то есть покомпонентное изображение), процедуры для получения текущего времени от хост-системы и преобразования их в и из 64-битное и структурное представление. Кроме того, существуют процедуры для преобразования из наиболее известных форм ASCII в 64-битное представление NSPR.

Управление памятью

NSPR предоставляет API для выполнения базовых malloc, calloc, realloc и free функций. В зависимости от платформы функции могут быть реализованы почти полностью в среде выполнения NSPR или просто прокладками, которые немедленно вызывают предложения операционной системы хоста.

Связывание

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

См. Также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-31 04:52:15
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте