POSIX에 대해

POSIX

Posted by jopemachine on November 18, 2021 Updated on September 25, 2022

POSIX에 대해

  • POSIX는 Portable Operating System Interface의 약자 (X는 유닉스 계열에 붙는 관용적인 느낌인 듯..?)

  • 이식성 높은 유닉스 응용 프로그램 개발을 위해 유닉스 OS의 공통적인 API를 정리한 인터페이스 규격.

  • 시스템 콜 (C 언어 인터페이스) 뿐 아니라 프로세스 환경, 파일 및 디렉터리, 시스템 데이터베이스 등 다양한 분야에 적용되는 규격이다.

  • POSIX를 따르는 OS를 Unix-like 운영체제라고 부른다.

  • C 스타일과 Unix-like OS를 Integrate해, 소스 코드의 호환성을 향상 시켜, 다른 운영체제로 보다 쉽게 포팅할 수 있게 한다.

  • 리눅스, 맥 os는 모두 POSIX를 따른다. Windows의 경우는 일부 POSIX 표준을 따르지만 대부분 따르지 않는다. (POSIX를 따르는 WSL 서브 시스템을 만들긴 했다.)

  • 그러니 posix 모듈 라이브러리로 작성한 소스 코드를 Windows에서 실행할 수 없음. 파이썬, 노드 등의 언어들은 os라는 보다 상위 모듈을 만들어 기능을 제공한다.

  • Solaris, macOS 등은 아예 POSIX 인증을 받았고, Linux, OpenBSD, Android 등의 운영체제들은 POSIX 인증을 받지 않았지만 대부분 POSIX 표준을 따른다고 한다.

  • IEEE이 책정.

POSIX 버전

  • POSIX 1.x : C 언어 응용프로그램 인터페이스의 표준을 정의함.

  • POSIX 2.x : 표준 쉘과 유틸리티 인터페이스를 정의한다.

C 언어 API 정의

  • 예를 들어 printf, scanf 등의 함수의 규격을 제공한다. POSIX 규격을 지키기 위해 이런 미리 정의된 함수들을 구현해놓아야 한다.

  • 정확한 사양은, 위키백과 참조.

파일 시스템

  • 대표적으로 EXT 파일 시스템은 POSIX 표준을 따름.

표준 스트림

  • POSIX에서 정의하는 시스템은 세 개의 표준 스트림을 가진다.

  • 브라우저는 POSIX를 따르는가? => 당연히 따르지 않음. 자바스크립트 엔진의 스트림은 OS의 표준 스트림이 아니라 (단지 디버깅을 위한 목적으로) devtools로 전달된다.

  • Nodejs는 POSIX를 따르는가? => 노드는 데스크톱 런타임 (서버 사이드)이니, 당연히 따라야 한다. process.stdout, process.stdio, process.stderr로 표준 스트림의 Wrapper를 만들어 놓음.