Netscape 휴대용 런타임

Netscape Portable Runtime
Netscape 휴대용 런타임
Network Security Services 3.68 as used on Firefox 90 screenshot.png
개발자Mozilla Foundation / Mozilla Corporation
안정된 릴리스
4[1].33 / 2021년 12월 17일; 7개월 전 (2021년 12월 17일)
저장소
기입처C
운영 체제크로스 플랫폼
유형소프트웨어 라이브러리
면허증.MPL
웹 사이트developer.mozilla.org/docs/NSPR

컴퓨팅에서 Netscape Portable Runtime 또는 플랫폼 추상화 라이브러리인 NSPR은 지원하는 모든 운영 체제를 Mozilla 스타일의 웹 브라우저에 동일하게 보이게 합니다.NSPR은 GUI 이외운영체제 설비에 대해 플랫폼에 의존하지 않습니다.이러한 시설에는 다음이 포함됩니다.

라이브러리의 대부분과 그로밋 환경의 전체적인 추력은 Java 가상 머신의 기반을 제공하며, Sun이 Java VM의 이식용으로 정의한 시스템 계층을 다양한 플랫폼에 매핑합니다.NSPR은 Netscape에 의해 생산된 대부분의 서버에서 플랫폼 독립 계층으로 기능하기 때문에 일부 영역에서는 이 요구사항을 넘어섭니다.

역사

NSPR의 첫 번째 세대는 원래 Java를 다양한 호스트 환경으로 이식하는 요건을 충족시키는 것을 목표로 했습니다.NSPR20은 1996년에 시작되었으며, 원래 코드에는 거의 남아 있지 않지만 이 아이디어를 바탕으로 구축되었습니다.('NSPR20'의 '20'은 '버전 2.0'이 아니라 '2세대'를 의미합니다.)많은 개념들이 개혁, 확장, 성숙을 보여준다.2009년에도 NSPR은 Java에서 플랫폼 의존 계층으로서 적절하게 기능했지만, C 또는 C++로 작성된 클라이언트를 지원하는 역할도 했습니다.

구조

NSPR은 광범위한 운영 체제 환경에서 일관된 서비스를 제공하는 것을 목표로 하고 있습니다.가장 낮은 공통 분모를 내보내는 것이 아니라 실행하는 각 운영 체제의 최상의 기능을 활용하면서 광범위한 호스트 제품 전반에 걸쳐 일관된 서비스를 제공하기 위해 노력하고 있습니다.

스레드

스레드는 NSPR에서 두드러지게 특징지어집니다.소프트웨어 업계의 스레드 제공은 일관성이 결여되어 있습니다.NSPR은 완벽과는 거리가 먼 단일 API를 제공하며, 이를 통해 클라이언트가 프로그래밍하고 합리적으로 일관된 동작을 기대할 수 있습니다.운영체제는 스레드화 개념이 전혀 없는 것에서부터 정교하고 확장성이 뛰어나며 효율적인 구현까지 모든 것을 제공합니다.NSPR은 시스템이 제공하는 것을 최대한 활용합니다.NSPR은 이러한 적절한 시스템 기능에 액세스 할 때 가능한 한 오버헤드를 억제하는 것을 목표로 하고 있습니다.

스레드 동기화

스레드 동기화는 C에서 설명한 대로 모니터에 따라 느슨하게 달라집니다. '모니터즈'의 A. R. Hoare:operating system의 구조화 개념」, ACM커뮤니케이션, 17(10), 1974년 10월, Xerox메사 프로그래밍 언어(「Mesa Language Manual」, J.G. Mitchell 등, Xerox PARC, CSL-79-3(1979년 4월)에 의해 공식화.이 메커니즘은 NSPR에 의해 구현된 기본적인 상호 제외(mutex) 및 스레드 알림 기능(조건 변수)을 제공합니다.또한 NSPR은 Java에서 사용하기에 더 적합한 동기화 방법을 제공합니다.Java와 유사한 기능에는 모니터 재진입, 암묵적이고 엄격하게 바인드된 알림 기능 및 동기화 개체를 동적으로 연관짓는 기능이 있습니다.

I/O

NSPR의 I/O버클리 소켓 모델을 약간 증가시켜 임의의 계층화를 가능하게 합니다.설계자는 원래 동기식 I/O 방식만 내보내고 스레드에 의존하여 복잡한 애플리케이션에 필요한 동시성을 제공하려고 했습니다.기존의 의미에서는 네트워크 I/O채널을 논블로킹으로 설정할 수 있지만 이 조작방식은 여전히 선호됩니다.

네트워크 주소

NSPR의 일부는 네트워크주소의 조작에 관한 것입니다.NSPR은 IP 중심의 네트워크주소 개체를 정의합니다.API는 오브젝트를 불투명하게 정의하지 않지만 클라이언트가 주소를 다형성 항목으로 취급할 수 있도록 권장하는 메서드를 제공합니다.이 영역에서는, NSPR 는 IPv4 와 IPv6 사이의 이행 패스를 제공하는 것을 목적으로 하고 있습니다.그 때문에, 어드레싱 테크놀로지가 IPv4 를 사용하는지 IPv6 를 사용하는지에 관계없이, ASCII 문자열(DNS 이름)을 NSPR 의 네트워크 주소 구조로 변환할 수 있습니다.

시간을

NSPR에서는 인터벌타이밍과 캘린더 기능의 2가지 형태로 타이밍 패실리티를 사용할 수 있습니다.

인터벌 타이머는 32비트의 플랫폼에 의존하는 프리런트의 해결 타이머에 근거하고 있습니다.이러한 타이머는 일반적으로 조건 변수 및 기타 기본적인 스레드 스케줄링을 대기하면서 I/O에 대한 타임아웃을 지정하는 데 사용됩니다.이러한 타이머는 네임스페이스가 유한하고 프리런이므로 언제든지 랩할 수 있습니다.NSPR은 신기원을 제공하지 않지만 클라이언트가 이 문제에 대처할 것으로 예상합니다.타이머의 세밀도는 10마이크로초에서1밀리초 사이임을 보증합니다.이것에 의해, 약 12시간의 타이머 시간을 최소한으로 억제할 수 있습니다.그러나 랩어라운드 문제를 해결하기 위해 네임스페이스의 절반만 사용할 수 있습니다.따라서 타이머에서 사용 가능한 최소 간격은 6시간 미만입니다.

캘린더 시간은 64비트 부호(마이크로초 단위)입니다.달력 시간에 대한 에폭은 1970년 1월 1일 자정 그리니치 표준시입니다.마이너스 시간은 1970년 이전으로 확대되고 플러스 숫자는 앞으로 계속됩니다.64비트를 사용하면 대략 -30000 ~30000년 범위의 시간을 표시할 수 있습니다.구조 표현(즉, 분해도)을 종료하고 호스트 시스템에서 현재 시간을 획득하고 64비트 및 구조 표현으로 변환하는 루틴이 있습니다.또한 가장 잘 알려진 ASCII 형식에서 64비트 NSPR 표현으로 변환하는 루틴도 있습니다.

메모리 관리

NSPR은 기본적인 malloc, calloc, realloc free 기능을 수행하기 위한 API를 제공합니다.플랫폼에 따라 함수는 거의 완전히 NSPR 런타임에 구현되거나 호스트 운영 체제의 오퍼링에 즉시 호출되는 심(shim)을 통해 구현될 수 있습니다.

링크

링크 지원(공유 라이브러리 로드 및 언로드)은 NSPR 기능 세트의 일부를 구성합니다.대부분의 경우 이는 다양한 플랫폼 프로바이더에 의해 제공되는 설비에 대한 단순한 평활화입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Set version number to 4.33 final".

외부 링크