POSIX

 

1. 개요
2. 버전
3. Windows 운영 체제에서
4. 기타


1. 개요


'''P'''ortable '''O'''perating '''S'''ystem '''I'''nterface + '''X'''[1]
POSIX는 IEEE가 제정한 유닉스애플리케이션 프로그래밍 인터페이스(API) 규격이다. 이 규격을 따르면 유닉스와 직접적인 연관이 없어도 유닉스 호환(Unix-like) 운영 체제라고 부른다. 리눅스가 이런 케이스인데, 유닉스와는 별도로 개발되었지만 POSIX 표준을 거의 다 준수하기 때문에 리눅스는 유닉스 호환 운영 체제로 본다. 다만 공식 인증을 받은 경우는 흔치 않으며, 넓게 봐서 호환 운영 체제라는 얘기.
유닉스의 일종인 4.4BSD-Lite Release 2와 FreeBSD에 기반하여 역시 유닉스의 일종인 macOS도 POSIX를 따른다. macOS는 10.5 버전부터 아예 정식 인증을 받았다. macOS 11 Big Sur 또한 Intel 맥과 Apple Silicon 맥 모두 UNIX 03 인증을 받았다.

2. 버전


  • POSIX.1
  • POSIX.1b
  • POSIX.1c
  • POSIX.2
  • POSIX.1-2001
  • POSIX.1-2008
  • POSIX.1-2017

3. Windows 운영 체제에서


한 때 윈도우도 유닉스 지원을 위해 POSIX 1.0에 준하는 서브시스템을 탑재하였으나, Windows NT 커널 기반의 Windows XP가 일반 사용자를 위한 운영 체제로 변모하면서 POSIX 지원이 제거되었다. Windows Server 2003 R2부터는 POSIX 2.0에 준하는 서브 시스템을 지원하나 제어판에서 SUA(Subsystem for UNIX-based Applications)를 활성화해야 한다.[2] 이후 Windows 8에서[3] SUA가 미탑재되면서 POSIX 지원도 제거되었다. 이 때문에 한동안 Windows에서 POSIX 환경을 이용하려면 Cygwin을 이용하는 방법밖에는 없었다가, Windows 10 Anniversary Update에 들어서 WSL(Windows Subsystem for Linux)이라는 리눅스 서브시스템을 다시 탑재하여 POSIX 환경을 이용할 수 있게 되었다.[4]

4. 기타


정규 표현식이 POSIX의 일부이지만, 워낙 오래된 규격이라 속도상의 손해가 있어 상당수가 더 빠른 알고리즘을 쓰는 PCRE[5]로 갈아탄 상태이다.
PHP에서 예전에 정규표현식 함수로 널리 쓰였던 ereg 계열 함수가 POSIX 기반의 정규표현식 함수였으나, PCRE 기반의 preg 계열 함수로 대체되면서 한동안 레거시 요소로 남아있다가 PHP 7부터는 제거되었다.

[1] UNIX의 X [2] Windows Vista7도 얼티밋 에디션 또는 엔터프라이즈 에디션일 경우 제어판에서 SUA를 활성화할 수 있다.[3] 서버 운영체제는 Windows Server 2012 R2부터.[4] 단, WSL1 버전에서는 실제로 리눅스 시스템 콜(이를 POSIX API라고 볼 때)을 Windows API로 구현하는, 즉 일종의 번역 작업을 거쳤으므로 원래의 서브시스템의 정의하고 그나마 비슷하다고 해줄 수 있었으나, WSL2 부터는 Hyper-V 기반으로 동작하기 때문에 아예 실제 리눅스 커널이 가상화로 돌아간다. 따라서 이건 원래 의미로서의 서브시스템이라고 하기 더더욱 애매하기는 하다.[5] Perl Compatible Regular Expressions

분류