En informática , Netscape Portable Runtime , o NSPR , una biblioteca de abstracción de plataforma , hace que todos los sistemas operativos que admite parezcan iguales para (por ejemplo) los navegadores web de estilo Mozilla . NSPR proporciona independencia de plataforma para instalaciones de sistemas operativos sin GUI . Estas instalaciones incluyen:
- hilos
- sincronización de hilos
- E / S normal de archivos y redes
- tiempo de intervalo y tiempo de calendario
- gestión de memoria básica ( malloc y gratuita)
- vinculación de biblioteca compartida .
Desarrollador (es) | Fundación Mozilla / Mozilla Corporation |
---|---|
Lanzamiento estable | 4.30 [1] / 17 de marzo de 2021 |
Repositorio | |
Escrito en | C |
Sistema operativo | Multiplataforma |
Tipo | Biblioteca de software |
Licencia | MPL |
Sitio web | desarrollador |
Gran parte de la biblioteca, y quizás el impulso general de la misma en el entorno Gromit , proporciona los fundamentos de la máquina virtual Java , más o menos mapeando la capa sys que Sun define para la migración de la máquina virtual Java a varias plataformas . NSPR va más allá de ese requisito en algunas áreas, ya que también funciona como la capa independiente de la plataforma para la mayoría de los servidores producidos por Netscape .
Historia
La primera generación de NSPR originalmente tenía como objetivo satisfacer los requisitos de portar Java a varios entornos de host. NSPR20, un esfuerzo iniciado en 1996, se basó en esa idea original, aunque queda muy poco del código original. (El "20" en "NSPR20" no significa "versión 2.0" sino más bien "segunda generación"). Muchos de los conceptos muestran reforma, expansión y maduración. En 2009, NSPR todavía funcionaba adecuadamente como la capa dependiente de la plataforma en Java, pero también sirvió para dar soporte a clientes escritos completamente en C o en C ++ .
Cómo funciona
NSPR tiene el objetivo de proporcionar un servicio uniforme en una amplia gama de entornos de sistemas operativos. No se esfuerza por exportar el mínimo común denominador, sino por explotar las mejores características de cada sistema operativo en el que se ejecuta, sin dejar de ofrecer un servicio uniforme en una amplia gama de ofertas de host.
Hilos
Los hilos ocupan un lugar destacado en NSPR. La oferta de subprocesos de la industria del software carece de coherencia. NSPR, aunque está lejos de ser perfecto, proporciona una única API a la que los clientes pueden programar y esperar un comportamiento razonablemente consistente. Los sistemas operativos proporcionan todo, desde ningún concepto de subprocesamiento hasta e incluyendo implementaciones sofisticadas, escalables y eficientes. NSPR hace el mayor uso posible de lo que ofrecen los sistemas. NSPR tiene como objetivo imponer la menor cantidad posible de gastos generales para acceder a las funciones apropiadas del sistema.
Sincronización de subprocesos
La sincronización de subprocesos depende libremente de los monitores, como lo describe CAR Hoare en "Monitores: un concepto de estructuración del sistema operativo", Comunicaciones del ACM , 17 (10), octubre de 1974 y luego formalizado por el lenguaje de programación Mesa de Xerox ("Manual del lenguaje Mesa", JG Mitchell y col., Xerox PARC, CSL-79-3 (abril de 1979)). Este mecanismo proporciona la exclusión mutua básica ( mutex ) y las facilidades de notificación de subprocesos (variables de condición) implementadas por NSPR. Además, NSPR proporciona métodos de sincronización más adecuados para su uso por Java. Las funciones similares a Java incluyen la reentrada del monitor, capacidades de notificación implícitas y estrechamente vinculadas con la capacidad de asociar los objetos de sincronización de forma dinámica.
E / S
La E / S de NSPR aumenta ligeramente el modelo de sockets de Berkeley y permite capas arbitrarias. Los diseñadores originalmente tenían la intención de exportar métodos de E / S síncronos únicamente, confiando en subprocesos para proporcionar la concurrencia necesaria para aplicaciones complejas. Ese método de operación sigue siendo el preferido, aunque se pueden configurar los canales de E / S de la red como sin bloqueo en el sentido tradicional.
Direcciones de red
Parte de NSPR se ocupa de la manipulación de direcciones de red. NSPR define un objeto de dirección de red centrado en IP . Si bien no define el objeto como opaco, la API proporciona métodos que permiten y alientan a los clientes a tratar las direcciones como elementos polimórficos . En esta área, NSPR tiene como objetivo proporcionar una ruta de migración entre IPv4 e IPv6 . Con ese fin, se pueden realizar traducciones de cadenas ASCII ( nombres DNS ) en las estructuras de direcciones de red de NSPR, independientemente de si la tecnología de direccionamiento utiliza IPv4 o IPv6.
Hora
NSPR hace que las facilidades de cronometraje estén disponibles en dos formas: cronometraje por intervalos y funciones de calendario.
Los temporizadores de intervalo se basan en un temporizador de resolución dependiente de la plataforma de 32 bits de funcionamiento libre. Estos temporizadores se utilizan normalmente para especificar tiempos de espera en E / S, esperar en variables de condición y otras programaciones rudimentarias de subprocesos. Dado que estos temporizadores tienen un espacio de nombres finito y se ejecutan libremente, pueden ajustarse en cualquier momento. NSPR no proporciona una época , pero espera que los clientes se ocupen de ese problema. Se garantiza que la granularidad de los temporizadores estará entre 10 microsegundos y 1 milisegundo. Esto permite un período de temporizador mínimo de aproximadamente 12 horas. Pero para solucionar el problema de la envoltura, solo se puede utilizar la mitad de ese espacio de nombres. Por lo tanto, el intervalo mínimo utilizable disponible en los temporizadores es un poco menos de seis horas.
Los tiempos del calendario son números con signo de 64 bits con unidades de microsegundos. La época de las horas del calendario es la medianoche del 1 de enero de 1970, hora del meridiano de Greenwich . Los tiempos negativos se extienden a tiempos anteriores a 1970 y los números positivos en adelante. El uso de 64 bits permite una representación de tiempos aproximadamente en el rango de −30000 al año 30000. Existe una representación estructural (es decir, vista ampliada), rutinas para adquirir la hora actual del sistema host y convertirlas ay desde la representación estructural y de 64 bits. Además, existen rutinas para convertir desde y hacia las formas más conocidas de ASCII en la representación NSPR de 64 bits.
Gestión de la memoria
NSPR proporciona API para realizar las funciones básicas malloc , calloc , realloc y gratuitas . Dependiendo de la plataforma, las funciones pueden implementarse casi en su totalidad en el tiempo de ejecución de NSPR o simplemente shims que llaman inmediatamente a las ofertas del sistema operativo host.
Enlace
El soporte para la vinculación (carga y descarga de bibliotecas compartidas) forma parte del conjunto de características de NSPR. En la mayoría de los casos, esto es simplemente un suavizado de las facilidades ofrecidas por los distintos proveedores de plataformas.
Ver también
- Tiempo de ejecución portátil de Apache
- Entorno de comunicación adaptable
- Middleware de soporte multiplataforma
Referencias
- ^ "[ANUNCIO] Lanzamiento NSPR 4.30" .
enlaces externos
- Página web oficial
- Código fuente NSPR