Single UNIX Specification

단일 유닉스 규격(Single UNIX Specification)은 컴퓨터 운영체제가 유닉스란 이름을 사용하기 위해 지켜야 하는 규약을 말한다.

이 규격은 1980년대 중반, 여러 유닉스 계열의 인터페이스를 표준화하기 위해서 시작한 프로젝트에서부터 시작하게 되었다. 업체마다 각기 다른 운영체제 사이의 소프트웨어 이식에 들어가는 비용을 되도록이면 줄여달라는 운영 기업들의 요청으로 인해 시작되었다. 이때, 표준화 운영체제로 선택된 운영체제는 유닉스인데 유닉스가 특정 회사에 의해서 만들어진 운영체제가 아닌 데다가 특정 회사 제품에 의한 종속성이 없었기 때문에 유닉스를 사용하게 되었다. 이 프로젝트로 만들어진 것이 바로 POSIX이다.

그러나 1990년대, 이시기에는 유닉스 전쟁이란 말로 전부 해설이 가능한 시기이다. 몇 군데의 회사들이 COSE(Common Open Source Environment) 협정을 결성하여, Common API Specification 또는 Spec 1170이라 불리는 사양을 내놓았다. 이 사양은 POSIX와는 달리 무료로 입수할 수 있었기에 IEEE에 접근하여 인증받는 비용을 부담해야 하는 POSIX보다 널리 일반화되었다. 1998년에 Austin Group이라 불리는 공동의 워킹 그룹이 이 사양들의 통합을 시작하여, 그 결과로 Single UNIX Specification version 3(단일 유닉스 규격 제3판)이 탄생하게 된다.

단일 유닉스 규격에서 규정하는 운영체제와 사용자 및 소프트웨어 사이의 인터페이스는 다음의 4 가지로 분류된다.

  • Base Definitions : 표준 규격을 기술하는 데 사용되고 있는 정의와 규약 등의 목록과, 이에 따르는 운영체제가 반드시 제공해야 할 C 언어의 헤더 파일 목록들.
  • Shell and Utilities : 유틸리티(약 160개의 명령들)의 목록 및 셸(sh)의 내역.
  • System Interfaces : 제공되어야 하는 시스템 호출 및 C 라이브러리의 목록들.
  • Rationale : 위의 표준에 대한 해설들.

이 표준에 의한 사용자 명령 줄 인터페이스와 스크립트 인터페이스는 초기 콘 셸에 바탕을 둔 본 셸의 확장판인 POSIX 셸이다. 이 밖에 사용자 레벨의 프로그램 또는 서비스, 유틸리티로는 awk, echo, ed 등 수백여개의 목록이 포함되어 있다. 프로그램 레벨에서 필요로 하는 서비스로는 입출력(파일, 터미널, 네트워크) 등이 있다. 이 표준을 테스트하는 프로그램 모음인 PCTS(Posix Certification Test Suite)가 있다. PCTS는 NIST에서 오픈 소스로 공개되어 있다.

이 사양이 알려주는 것중에 제일 주의할 점은 사양을 만족하기 위해 AT&T의 유닉스 소스 코드를 사용하지 않아도 된다는 점을 주의해야 한다. (실제의 예로, IBM의 z/OS (OS/390)은 소스코드는 완전히 독자적으로 만들어졌으나, ‘UNIX’란 이름을 사용하도록 허용받고 있다.)

단일 유닉스 규격을 따르고 있는 유닉스들은 다음과 같다.

  • AIX
  • HP-UX
  • Mac OS X: 10.5 레오파드부터 인증에 통과했다.
  • Reliant UNIX

  • SCO
  • Solaris
  • Tru64 Unix
  • z/OS
  • NCR UNIX SVR4
  • NEC UX/4800
  • SGI IRIX 6.5

유닉스 계열로 분류되면서 단일 유닉스 규격을 만족하지 않는 운영체제들

  • BSD 계열: C99 and POSIX Conformance Project에 의해 제작된 BSD 계열은 단일 유닉스 규격을 만족하지 않는다. FreeBSD, OpenBSD도 마찬가지 이유. ㅇㅂㅇ
  • 리눅스: 유닉스 운영체제에서 파생되어 나온 것이지만 전체적으로 규격이 많이 다르다.

PC-UNIX

음… 솔직히 말하면 이게 상당히 애매한 용어이다. 왜 애매한 용어인지를 알려주겠다는 식의 글이라 보시면 될 거 같다.

PC-UNIX는 PC에서도 동작을 하는 유닉스를 말한다. 근데 이게 용어로 써있는 책을 잘 뒤져봐라.. 미국과 유럽 계열에서는 거의 없을 것이다. 주로 아시아 계열의 책이나 용어집에서는 반드시 나온다. (위키백과에서도 영어로 써있지도 않다. ㅡㅅㅡ;;)

이 용어를 주로 쓰는 곳은 바로 일본이다. ㅡㅅㅡ 주로 운영체제에 대한 서적을 뒤져보면 PC에서 동작하도록 나온 유닉스를 말하며, 원래 명칭으로는 Unix-like system의 일부분중 PC에서 돌아가는 녀석들을 모아다가 죄다 PC-UNIX라고 써놨다.

원서보면 거의 헷갈리는데 이 용어가 나중에 산업기사/기사 보는 분들은 꼭 한번씩은 접한다. 그러다 보면 이 용어갖고 여러모로 말이 무지 많이 돌기도 한다. (근데 현업에서만 개발하는 인간들은 그런 거 필요없다. ㅡㅅㅡ)

이 용어에 대한 일본측 원서에서는 이 운영체제들에 대해 이와 비슷하게 정의하고 있다. [고가의 대형 컴퓨터를 동작시키기 위한 Unix를 PC에서 이용할 수 있도록 아키텍쳐 지원과 메모리 관리 기능의 수정 등을 통하여 PC에서 동작이 가능하도록 만든다. 단, 유닉스에서 사용할 수 있는 기능들은 거의 그대로 이용할 수 있도록 지원하는 것을 전제로 한다.] 라고들 써 있다. 아니면 이 문장 순서의 변경이 있긴 하겠지만 기본적으로는 PC에서 동작 가능하도록 설정은 다 맞춰주면서 기능은 그대로 가져간단 것이다. 뭐, 유닉스 시스템이 그만큼 성능적으로는 인증되어 있는 시스템이니 그럴 수 밖에 없겠지만..

일단 여기에 속하는 듯하게 적어놓은(?) 유닉스 계열의 시스템들은 다음과 같다.

  • PANIX
  • XENIX
  • Linux
  • FreeBSD
  • NetBSD
  • OpenBSD
  • Solaris/OpenSolaris

…좀이라도 유닉스 시스템을 아는 사람들은 바로 보고 눈치챘을 것이다. 여기에 있을 필요가 없는 녀석이 하나 눈에 띈다는 것을…ㅡㅅㅡ;; 그리고 대놓고 타분류화된 녀석이 또 하나 있다…ㅡㅂㅡ;;

애당초 리눅스의 탄생이 PC에서 돌리는 유닉스였고, 솔라리스는 x86 플랫폼 지원을 하다 보니 어쩌다 PC도 지원한다. 게다가 10부터 오픈소스화 되는 바람에 PC에서 돌아가야 하는 상황이었고, 오픈솔라리스는 원래부터 대상이 PC다. ㅡㅅㅡ

뭐, 이것저것 골때리는 용어이긴 한데.. 그냥 PC 구동용 유닉스라고만 대충 생각하고 넘기면 될 듯 하다..