POSIX란?

POII·2022년 10월 30일
0

개요

POSIX는 Portable Operating System InterFace for Unix의 약자로 IEEE에서 지정한 운영체제간 호환성을 유지하기 위한 표준이다.

POSIX를 준수하는 운영체제는 POSIX를 준수하는 다른 운영체제와 호환되어야 한다.

역사

POSIX가 등장하기 전, 운영체제를 위한 소프트웨어는 각기 다른 환경과 시스템 인터페이스 속에서 개발되었고, 이를 다른 운영체제에 이식하기 위해선 상당한 노력과 비용이 소모되었다.

이러한 문제점을 해결하기 위해 POSIX가 등장하였다. POSIX는 유닉스 계열 운영체제 뿐만 아니라 비 유닉스 계열 운영체제간의 호환성문제도 해결하기 위해 등장한 표준이다.

POSIX는 1980년대 초기에 빠르게 발전하는 UNIX 시스템 인터페이스의 표준화를 위해 시작되었고, 이는 다양한 시스템을 간결한 용어로 커버할 수 있게 해주었다.

POSIX Version

POSIX의 표준은 IEEE Std 1003.n-yyyy 식으로 알려져 있다. 여기서 n은 버전을 나타내는 숫자이다. 즉 우리가 현재 사용하는 iEEE표준인 IEEE Std 1003.1-2017은 POSIX.1 버전의 표준이다.

POSIX.1는 C 인터페이스나 근본적인 시스템 서비스(프로세스 생성, 소멸, 파일과 디렉토리관리 등등..)과 같은 응용 프로그램의 이식성을 정의한다.

반면 POSIX.2는 명령어 인터프리터(쉘 이라고 부르기도 함), 사용자 환경, 연관 유틸리티 같은 것을 정의한다.

POSIX가 정의하는 표준

  1. C API

    POSIX는 C언어의 관점에서 표준을 정의한다. 그렇기 때문에, 프로그램들은 다른 운영체제 위에서 소스코드 레벨로 이식이 가능하다.

    POSIX C API는 ANSI C API에 다음과 같은 관점에서 몇 가지 함수를 추가한 형태이다.

    • 파일 작업
    • 프로세스, 쓰레드, 공유메모리, 스케쥴링 인자
    • 네트워킹
    • 메모리 관리
    • 정규 표현식
  2. 일반적인 컨셉

    C API 외에도 POSIX는 프로그램 작성에 관한 몇가지 규칙을 추가했다. 여기엔 포인터 타입의 초기화와 동시 실행의 안정성의 규칙, 메모리 동기화 규칙, 파일과 디렉터리의 보안과 접근규칙등이 포함된다.

  3. 파일 포맷

    POSIX는 표준 출력, 표준에러, 표준입력, 파일 등에 사용하는 문자열의 포매팅 규칙도 정의한다.

    "<format>", <arg1>,...,<argN>

    위와 같은 형태에서 format안에는 정규 문자들과, 이스케이프 시퀀스, 변환 지시어가 포함될 수 있다.

    변환 지시어는 인자들의 출력 형식을 나타내고, 백분율 기호와 인수유형을 접두사로 사용한다.

  4. 환경 변수

    환경 파일에 들어가는 환경 변수의 이름은 portable character set 안에 있는 영문 대문자와 언더바로 이루어 지는 것이 권장되고, 숫자도 포함될 수 있다.

    환경 변수의 이름을 지을 때는, 환경 변수의 표준 유틸리티에 있는 이름과 충돌하지 않도록 조심해야 한다.

  5. 로케일(Locale)

    로케일은 언어, 문화적 컨벤션 등을 포함해 사용자 환경에서 사용하는 것들을 정의한다.

    프로그램을 구현할 때 일관성을 유지하기 위해 현재 정의된 로케일 환경 변수를 사용하여야 하고, 만약 locale set이 없다면 POSIX compliant locale 을 지정하여야 한다.

  6. 그 외

    그 외에도 POSIX는 문자 집합, 정규 표현식, 파일 구조, 유틸리티 등의 표준을 정의한다.

운영체제와 POSIX

  1. Linux

    POSIX를 완전히 준수하는 리눅스 기반의 운영체제를 만드는 것은 가능하다. EulerOS가 그 대표적인 예이다. 하지만 최근의 OS들(특히 오픈 소스가 아닌 운영체제)에서는 표준의 일부만 준수하거나 아얘 준수하지 않는 경우도 있다.

    때문에 대부분의 Linux 배포판은 부분적으로 준수하고 있다고 말할 수 있겠다.

  2. Darwin

    다윈은 애플 운영체제의 핵심적인 집합이다. 최근의 macOS는 완전하게 POSIX 표준을 준수한다.

  3. Windows NT

    윈도우 운영체제 같은 경우는 처음부터 유닉스와 완벽하게 다른 방향으로 디자인 되었기 때문에 POSIX를 준수하지 않는다. 하지만 WSL 호환성 계층이나 Cygwin을 통해 POSIX를 준수하는 환경으로 세팅할 수 있다.

profile
https://github.com/poi1649/learning

0개의 댓글