์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
Portable Operating System Interface + 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 ์ธ์ฆ์ ๋ฐ์๋ค.
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๋ถํฐ๋ ์ ๊ฑฐ๋์๋ค.
PHP์์ ์์ ์ ์ ๊ทํํ์ ํจ์๋ก ๋๋ฆฌ ์ฐ์๋ ereg ๊ณ์ด ํจ์๊ฐ POSIX ๊ธฐ๋ฐ์ ์ ๊ทํํ์ ํจ์์์ผ๋, PCRE ๊ธฐ๋ฐ์ preg ๊ณ์ด ํจ์๋ก ๋์ฒด๋๋ฉด์ ํ๋์ ๋ ๊ฑฐ์ ์์๋ก ๋จ์์๋ค๊ฐ PHP 7๋ถํฐ๋ ์ ๊ฑฐ๋์๋ค.
[1] UNIX์ X
[2] Windows Vista์ 7๋ ์ผํฐ๋ฐ ์๋์
๋๋ ์ํฐํ๋ผ์ด์ฆ ์๋์
์ผ ๊ฒฝ์ฐ ์ ์ดํ์์ SUA๋ฅผ ํ์ฑํํ ์ ์๋ค.
[3] ์๋ฒ ์ด์์ฒด์ ๋ Windows Server 2012 R2๋ถํฐ.
[4] ๋จ, WSL1 ๋ฒ์ ์์๋ ์ค์ ๋ก ๋ฆฌ๋
์ค ์์คํ
์ฝ(์ด๋ฅผ POSIX API๋ผ๊ณ ๋ณผ ๋)์ Windows API๋ก ๊ตฌํํ๋, ์ฆ ์ผ์ข
์ ๋ฒ์ญ ์์
์ ๊ฑฐ์ณค์ผ๋ฏ๋ก ์๋์ ์๋ธ์์คํ
์ ์ ์ํ๊ณ ๊ทธ๋๋ง ๋น์ทํ๋ค๊ณ ํด์ค ์ ์์์ผ๋, WSL2 ๋ถํฐ๋ Hyper-V ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ์์ ์ค์ ๋ฆฌ๋
์ค ์ปค๋์ด ๊ฐ์ํ๋ก ๋์๊ฐ๋ค. ๋ฐ๋ผ์ ์ด๊ฑด ์๋ ์๋ฏธ๋ก์์ ์๋ธ์์คํ
์ด๋ผ๊ณ ํ๊ธฐ ๋๋์ฑ ์ ๋งคํ๊ธฐ๋ ํ๋ค.