유닉스

From The Hidden Wiki
Jump to navigationJump to search

개요

UNIX, Unix

1960년대 말에 AT&T 벨 연구소에서 개발한 운영 체제. 원래의 목적은 워크스테이션/서버용이었지만 요새는 데스크탑이나 임베디드용으로도 쓰인다. 이름이 ~ix로 끝나는 것이 암묵의 룰로 되어 있다.

70년대초 AT&T 연구소에서 개발을 시도했던 시분할 운영 체제 멀틱스가 모태가 되었다. 그러나 이 프로젝트는 실패했고, 이에 팀에 소속되어 있던 개발자들이 우주여행 게임을 실행하기 위해서 만든 운영체제가 바로 유닉스이다. 이름이 유닉스인 것도 멀틱스에 대한 빈정거림이다. 멀틱스는 동시에 여러 프로그램을 실행한다고 했지만 결국 아무것도 제대로 실행하지 못한 반면 유닉스는 한 가지라도 어쨌든 아주 잘 실행한다[* 처음 만들어졌을 때는 그랬다. 당연히 유닉스도 곧 시분할 멀티태스킹을 도입했고, 물론 이것도 아주 잘 실행했다.]는 것. 이 때 외부적으로는 워드프로세서를 개발하는 척 했다는 이야기도 있다. 하지만 이렇게 눈가림용으로 만들어진 워드프로세서도 훌륭해서 AT&T 법무팀의 표준장비로 채택되었다나..

컴퓨터 역사상 가장 중요한 운영체제라고 할 수 있다. 이는 무엇보다도 처음으로 어셈블리가 아니라 wiki:"C(프로그래밍 언어)" C 언어라는 고급 프로그래밍 언어로 커널까지 작성되어 제대로 돌아간 운영체제이기 때문이다. 그 이전에도 고급언어로 작성된 운영체제가 있기는 했다. PL/1으로 작성된 멀틱스라거나... 하지만 C언어만큼 시스템 프로그래밍에 뛰어난 언어가 없었기 때문에 수많은 버그, 느린 성능, 지나치게 큰 사이즈 등의 문제로 성공적이지 못했다. 따라서 유닉스를 기점으로 운영체제 개발의 역사 및 프로그래밍의 역사가 크게 변하게 된다. 사실 유닉스 이후 사실상 시스템 프로그래밍 언어의 업계표준이 된 C언어부터가 원래 유닉스를 프로그래밍하기 위해 개발된 것이다.[* 가끔 반대로 생각하는 경우가 있는데, 유닉스가 처음 만들어졌을 때는 어셈블리로 작성되었고 그 후에 C언어를 개발해서 C언어로 다시 작성한 것이다.]

기존의 메인프레임 컴퓨터용 운영체제는 대부분 어셈블리어로 개발되었는데, 어셈블리어는 기계어와 사실상 1:1 대응되는 언어이므로 다른 하드웨어로의 이식이 매우 어려웠다.[* 그러나, 오늘날 어셈블리어는 이식성도 고려해서 만들어진 것들이 많다. ] 그러나 유닉스는 고급 언어인 C 언어로 개발되었기 때문에 다른 하드웨어로 이식하기가 쉬웠다. 또한 당시에는 최신 기술이었던 멀티태스킹 기술을 도입하여[* 고급 언어로 작성되어 이해하기가 쉬웠기 때문에 발전 속도가 빨랐다.] 여러 사용자가 동시에 사용할 수 있었기 때문에 인기를 끌었다.

서버 운영에 필수적이라 할 수 있는 CLI 인터페이스가 상당히 강하기 때문에, 서버시장에서는 윈도우 이상으로 인기가 좋다. 스마트폰용 OS도 시장을 양분하고 있는 iOS(BSD 기반)와 [wiki:"안드로이드(OS)" 안드로이드](리눅스 기반)가 모두 유닉스 계열이다. ~~미고(리눅스 기반)도~~

인터넷의 역사와도 떼어놓을 수 없는 운영체제이다. 운영체제가 인터넷에 접근하는 표준 인터페이스인 "소켓"은 BSD 유닉스에서 만들어진 개념이다.

당시 AT&T는 합법적인 전화사업 독점기업이라 여러가지 제약을 정부로 부터 받았는데, 전화와 직접관련이 없는 제품을 팔거나 사후지원을 해줄 수 없는 것도 그 한가지였다. 덕분에 초기버젼의 UNIX는 무료로 소스코드까지 배포되었고, 사후지원의 부재를 메꾸기 위해 세계각지에 Usenix 그룹이 생겨나 교류하게 되었다. [* 말이 교류지 인터넷이 없던 그 시대에는 코드가 담긴 자기테입이나 종이테입을 우편으로 돌려가며 공유해야 했다.]

이후에 유닉스를 모방한 많은 운영체제들이 나타났는데, 이들을 표준화하기 위해 POSIX라는 표준이 등장했다. POSIX 표준을 만족하는 것들을 유닉스 계열 운영체제라고 한다. 리눅스Mac OS X[* Mac OS의 경우 9.x 버전까지는 유닉스 계열이 아니었으나 Mac OS X부터 BSD Unix 계열로 다시 개발하였으며, 10.5 레오파드부터는 정식으로 POSIX 인증을 획득했다.]가 대표적인 유닉스 계열 운영체제이다. 인증 비용 문제인지, 대부분의 리눅스 배포판들은 POSIX의 거의 모든 상세스펙을 따르고 있지만 공식 인증은 아니다. NetBSD, FreeBSD같은 오픈소스 BSD계열도 마찬가지로 공식 인증된 UNIX 가 아니다.[* 다른 분류법도 존재한다. 예를들어, BSD 류는 공식인증을 하지 않았지만, 역사적으로 AT&T 의 코드베이스와 직접적 관련이 있기때문에 genetic UNIX 로 분류하고, 리눅스같은 경우는 유닉스라 불릴만한 조건을 만족하지만, AT&T 의 코드베이스와 직접적 관련은 없기때문에 functional UNIX 라 분류하는 기준도 있다. ] Mac OS X의 경우 POSIX 공식 인증이다. ~~그렇다고 OS X을 다른 유닉스 다루듯이 다루다간 커널패닉 난다~~

Microsoft Windows는 엄밀히 말해 유닉스가 아니라고 할 수 있겠지만 POSIX 표준을 따르는 서브시스템을 제공한다. Microsoft사의 홈페이지에서 다운로드 할 수 있는 Subsystem for UNIX-based Applications(aka SUA) 라는 것을 설치하면 된다. 이 서브시스템은 과거 FreeBSD 로 돌리던 핫메일 서버를 윈도우 서버로 전환하던 과도기에 만들어 쓰던것으로, 윈도우 8에서 부터는 deprecated가 되었고 다음 윈도우 버전부터는 완전히 삭제될 예정이다. 윈도우 7 에서는 얼티밋과 엔터프라이즈 버전 한정으로 사용가능하다. 이 상태의 OS명칭은 Interix라고 한다.[* 에뮬레이션 레이어에서 동작하는 Cygwin과는 다르다.]

유닉스의 주요 갈래

attachment:unix-history-simple.png?width=100% 이미지 출처: 위키백과 유닉스 계열 항목 자세히 보기

기존 유닉스 계열

* System V
* Xenix
* 오라클 Sun OS(솔라리스)
* BSD
 * FreeBSD
  * NeXTStep
  * OS X
  * iOS
 * NetBSD
 * OpenBSD
* HP-UX
* IBM AIX
* Plan 9

Unix Like OS

* 리눅스
 * 안드로이드
 * 미고
* 미닉스

더보기