Go to main content

Oracle® Solaris 11.4의 새로운 기능

인쇄 보기 종료

업데이트 날짜: 2018년 8월
 
 

개발자를 위한 향상 기능

이 절에서는 최신 라이브러리 및 신뢰할 수 있는 프레임워크를 활용하여 Oracle Solaris 플랫폼에서 응용 프로그램 개발을 더욱 쉽게 만들 수 있도록 개발자를 위해 이 릴리스에서 새롭게 제공되는 향상 기능에 대해 설명합니다.

C11 프로그래밍 언어 표준 지원

Oracle Solaris 11.4에는 "ISO/IEC 9899:2011 정보 표준 - 프로그래밍 언어 - C"의 C11 프로그래밍 언어 표준에 대한 지원이 포함됩니다. C11 표준은 C99 표준의 호환 개정판입니다. 지금까지 C 프로그래밍 언어 표준은 단일 UNIX 사양의 일부로 사용되었습니다. 하지만 새로운 C 프로그래밍 언어 표준인 C11은 다음 UNIX 사양과 별개로 미리 사용할 수 있습니다.

Oracle Solaris 11.4는 C99와 함께 C11 지원을 제공하여 이후의 UNIX 사양에 포함되기 전에 먼저 C11 지원을 고객들에게 제공합니다. 새로운 표준은 Oracle Developer Studio 12.5 또는 12.6, GCC 5 또는 7 및 LLVM/Clang 6.0 C 컴파일러와 함께 사용할 수 있습니다. 개발자는 또한 최신 C 프로그래밍 언어 표준을 사용하여 C 프로그램을 작성할 수 있습니다.

표준 컴파일 환경

Oracle Solaris 11.4에서 기본 컴파일 모드(특정 POSIX 표준에 대한 준수를 요청하기 위해 기능 테스트 매크로가 사용되지 않은 경우)는 다음 항목을 표시합니다.

  • 최신 POSIX 사양에 해당하는 이름 공간

  • 일반적으로 Oracle Solaris OS에서 제공되는 다른 모든 함수 및 이름

Oracle Solaris 11.4에서 최신 POSIX 사양은 IEEE Std. 1003.1-2008 Base Specifications, Issue 7(즉, XPG7, UNIX V7, SUSv4)입니다.

바이너리 호환성은 유지 관리됩니다. 하지만 소스 호환성은 다음과 같은 영향을 받습니다.

POSIX 스레드

기능 테스트 매크로 _POSIX_PTHREAD_SEMANTICS가 오래되어 더 이상 필요하지 않습니다. 헤더 파일에서 테스트되지 않습니다. 이전에 -D_POSIX_PTHREAD_SEMANTICS를 사용해서만 표시되던 인터페이스 버전 또는 적절한 표준 기능 테스트 매크로가 이제 기본적으로 표시됩니다. 여기에는 asctime_r(), ctime_r(), getgrgid_r(), getgrnam_r(), getlogin_r(), getpwnam_r(), getpwuid_r(), readdir_r(), sigwait()ttyname_r()이 포함됩니다. 초안 POSIX 스레드 표준을 기반으로 하던 이전의 기본 인터페이스도 컴파일 시에 -D__USE_DRAFT6_PROTOTYPES__를 사용하여 계속 사용할 수 있습니다. 자세한 내용은 intro(3) 매뉴얼 페이지를 참조하십시오.

X/Open 소켓(XNS Issue 4)

이전에 X/Open 표준으로 정의된 소켓 인터페이스를 사용하기 위해서는 -D_XOPEN_SOURCE=500이 필요했습니다. 이러한 인터페이스가 이제는 기본 컴파일 환경에도 표시됩니다. 이전의 SunOS4.x 스타일 소켓에 의존하는 응용 프로그램의 컴파일을 위해서는 이제 -D__USE_SUNOS_SOCKETS__를 사용해야 합니다. 자세한 내용은 socket.h(3HEAD)를 참조하십시오.

프로세스 제어 라이브러리

Oracle Solaris 11.4에는 /proc 인터페이스 기능에 대해 상위 레벨의 인터페이스를 제공하는 새로운 프로세스 제어 라이브러리인 libproc가 포함됩니다. 이 라이브러리는 또한 프로세스 및 스레드 조사 및 제어를 위해 필요한 기호 테이블과 같은 정보에 대한 액세스를 제공합니다.

libproc를 사용하는 제어 프로세스는 일반적으로 다음을 수행할 수 있습니다.

  • 희생자 프로세스를 잡아서 실행을 일시 중지합니다.

  • 희생자 프로세스의 상태를 조사합니다.

  • 희생자 프로세스의 주소 공간을 조사하고 수정합니다.

  • 희생자 프로세스가 제어 프로세스를 대신해서 시스템 호출을 수행하도록 합니다.

  • 다시 구속되지 않은 상태로 실행되도록 희생자 프로세스를 해제합니다.

libproc 라이브러리는 해당 작업 수행을 위해 중단점 디버거에 필요한 모든 방식을 제공합니다. 또한 침입을 인지하는 프로세스 없이 희생자 프로세스에 단순 작업을 수행할 수 있도록 간단한 1회 제어 응용 프로그램을 만들 수 있게 해줍니다.

자세한 내용은 libproc(3LIB) 매뉴얼 페이지를 참조하십시오.

향상된 로케일 지원

Oracle Solaris 11.4에는 libc에서 제공되는 기존 로케일 지원 API에 대한 향상 기능과 UNIX V7 표준에 정의된 새로운 API가 포함되어 있습니다. uselocale 및 UNIX V7 표준에 정의된 다른 API는 스레드 간 로케일을 지원하도록 도입되었으며, 스레드의 로케일을 변경합니다. 새로운 API와 함께 기존 로케일 지원 API가 완전한 MT 안전성을 갖도록 업데이트되었습니다. libc에서의 기본 로케일 취급 성능이 향상되었고 여러 로케일을 사용하는 응용 프로그램의 리소스 사용량이 감소했습니다.

자세한 내용은 uselocale(3C), newlocale(3C), freelocale(3C), wctype(3C)localedef(1) 매뉴얼 페이지를 참조하십시오.

사용자 모드 Watchpoint

Oracle Solaris 11.4는 이제 가상 메모리 맵 대신 SSM(Silicon Secured Memory)을 사용하여 사용자 모드 watchpoint를 구현합니다. watchpoint는 메모리 위치가 기록되거나 읽혀질 때 트리거되는 이벤트이며, 디버깅 및 성능 분석을 위해 사용할 수 있습니다. Watchpoint는 현재 주소가 포함된 페이지를 액세스할 수 없도록 설정하여 구현됩니다. 이러한 작업은 스레드가 동일 페이지에서 관련이 없는 위치에 자주 연결될 경우 실행 속도가 크게 느려집니다. 반면에, SSM은 64바이트 캐시 라인을 사용해서 훨씬 미세한 조정이 가능합니다. 또한 SSM은 다중 스레드로 구성되지만, 모든 스레드가 동일한 가상 메모리 페이지를 공유합니다.

자세한 내용은 dbx(1) and mdb(1) 매뉴얼 페이지를 참조하십시오.

DTrace 라이브러리

Oracle Solaris 11.4에는 개발자가 bespoke DTrace 응용 프로그램을 작성할 수 있게 해주는 새로운 프로세스 제어 라이브러리인 libdtrace가 포함되어 있습니다.

자세한 내용은 Oracle Solaris 12 DTrace(동적 추적) 설명서 의 부록 A, libdtrace API Reference,를 참조하십시오.

DTrace에서 DWARF 지원

Oracle Solaris 11.4에서 DTrace는 DWARF를 사용하여 사용자 프로세스에 대해 소스 주소 지정 코드 메타데이터 전환을 수행할 수 있습니다. 새로운 uresolve 옵션은 DWARF 디버깅 정보가 제공된 경우 사용자 주소를 소스 코드 파일 이름 및 행 번호로 변환하기 위한 DTrace의 ustack, uaddrprintf 작업을 지원합니다. 이 기능은 공통 컴파일러 표준과의 호환성을 유지하면서도 공통 진단 출력에 대해 보다 직관적인 해석을 제공합니다.

자세한 내용은 Oracle Solaris 12 DTrace(동적 추적) 설명서 의 Data Recording Actions에서 ustack, uaddr, 및 printf 작업을 참조하십시오.

DWARF로 인코딩된 행 번호에 대한 pstack 지원

Oracle Solaris 11.4에서 pstack 명령은 DWARF 디버깅 정보가 제공된 경우, 소스 코드 메타데이터로 프레임에 주석을 추가합니다. 이 기능은 공통 컴파일러 표준과의 호환성을 유지하면서도 공통 진단 출력에 대해 보다 직관적인 해석을 제공합니다.

자세한 내용은 pstack in the proc(1) 매뉴얼 페이지를 참조하십시오.

pstackmdb에서 DWARF 와인딩 해제

Oracle Solaris 11.4에서 pstackmdb는 사용자 프로세스에 대한 DWARF 및 DWARF 스타일 스택 와인딩 해제를 지원합니다. 또한 pstackmdb는 Oracle Developer Studio의 새로운 -preserve_argvalues=complete 옵션으로 컴파일된 프로세스에서 함수 인수를 복구할 수 있게 해줍니다. 이 기능이 x64 및 SPARC에서 32비트 및 64비트 프로세스에 모두 적용되더라도, 이 기능은 특히 amd64 프로세스의 관찰 기능 및 진단 기능을 향상시켜 줍니다.

mdb ::stackregs dcmd는 이제 amd64에 대해 사용으로 설정되며, 프레임 레지스터가 DWARF 스타일의 와인딩 해제된 테이블을 사용하여 복구됩니다.

Cython

Cython은 Python 프로그래밍 언어 및 Pyrex를 기반으로 하는 확장 Cython 프로그래밍 언어를 위한 최적화 정적 컴파일러입니다. 이 기능은 Python을 사용하여 고성능 코드를 생성할 수 있게 해줍니다.

자세한 내용은 Cython C-Extensions for Python을 참조하십시오.

Oracle Database Programming Interface-C

Oracle Database Programming Interface-C(ODPI-C)는 여러 버전의 Oracle Instant Client 라이브러리에서 투명하게 작동하는 OCI(Oracle 호출 인터페이스)의 래퍼입니다.

ODPI-C에서는 응용 프로그램이 실행 전 LD_LIBRARY_PATH를 설정할 필요가 없습니다. 또한 ODPI-C는 여러 버전의 Oracle Instant Client 라이브러리에서 투명하게 작동합니다. Oracle Instant Client 라이브러리를 사용해야 하는 소프트웨어는 실행 전 ORACLE_HOME을 설정할 필요가 없습니다.

ODPI-C를 사용하려면 developer/oracle/odpi 패키지를 설치합니다.

ODPI-C에 대한 자세한 내용은 Oracle Database Programming Interface for Drivers and Applications GitHub 프로젝트 및 libodpic(3LIB) 매뉴얼 페이지를 참조하십시오. Oracle Instant Client는 IPS 형식으로 제공되며 .zip 파일을 다운로드하기 위해 OTN에 방문할 필요가 없습니다.

cx_Oracle Python 모듈

cx_Oracle은 Python 응용 프로그램에서 Oracle Database 12c 및 11i에 액세스할 수 있게 해주는 Python 모듈입니다. 이 모듈은 다른 운영체제용으로 사전 작성된 패키지를 통해 일반적으로 사용할 수 있지만, 지금까지는 Oracle Solaris에 대해서도 이와 비슷하게 제공되지 않았습니다. 이 모듈은 32비트 및 64비트 형식으로 제공됩니다. Oracle Solaris 패키지 버전 5.2는 Python 2.7 및 3.4에서 사용할 수 있습니다.

자세한 내용은 cx_Oracle 설명서를 참조하십시오.