• 2023. 8. 22.

    by. 도 현

    반응형

    1. 유닉스의 탄생

    컴퓨터가 발명된 후 컴퓨터는 한동안 한 가지 프로그램만 실행했다. 가령 음악 CD를 재생하는 컴퓨터가 있다고 하면 오직 CD만 재생하는 프로그램만 실행하는 식이다. 시간이 흘러 컴퓨터는 1개 이상의 프로그램을 실행할 수 있는 수준으로 컴퓨팅 속도가 빨라진다. 이런 상황에서 컴퓨터 공학자들은 뭔가 새로운 소프트웨어를 만들어 보려는 시도를 하게 되는데, 이 프로젝트가 바로 유닉스의 모태가 된 ' 멀틱스' 운영체제이다.

     

    멀틱스 운영체제

    1965년 MIT, AT&T 벨 연구소, 제너럴 일렉트릭(General Electric) 소속 개발자들이 모여 멀틱스(Multics)라는 운영체제를 개발하기 시작하였다. 이들이 구현하고자 하는 운영체제의 핵심 기능은 다음과 같다.

     

    - 멀티태스킹을 지원하는 운영 체제를 구현하자,

    4차 산업 혁명 시대를 맞이하는 현시점에서 보면 멀티태스킹은 운영체제의 기본 기능이다. 하지만 1960년대 중반에는 혁신적인 기능이었다. 당시 소프트웨어 기술로는 한 개의 제품에서는 하나의 소프트웨어만 실행할 수 있는 수준이었기 때문이다. 여러 가지 노력에도 불구하고 멀틱스 운영체제는 목표를 이루지 못하고 좌초되었다. 

     

    - 멀티태스킹과 멀티 유저를 지원하는 운영체제 개발,

    이 과정에서 탄생한 것이 바로 유닉스(UNIX)이다. 유닉스 운영체제는 어셈블리어를 사용해 구현했는데, PDP-7란 소형 컴퓨터에서만 실행됐기에 호환성이 없다고 볼 수 있었다. 그래서 다른 기종의 CPU가 탑재된 컴퓨터에서 유닉스를 쓰려면 해당 기종에 맞는 어셈블리어로 새롭게 코드를 작성해서 새로운 CPU 아키텍처에 맞는 유닉스 운영체제를 구현해야 했다.

    유닉스를 완성한 시점에서 모든 유닉스 어셈블리 코드를 새로운 CPU 아키텍처에 맞게 모두 바꿔야 했기에, 개발 속도가 느릴 수밖에없었다. 현재 시점으로 바꿔서 x86 어셈블리 명령어로 구현된 리눅스의 전체 소스코드를 ARMv8 명령어로 '모두' 바꿔서 개발해야 한다고 가정할 때, 개발 속도가 느려서 프로젝트를 진행하기 어려울 것이다.

     

     

    1973년 : 최초의 유닉스가 완성되다.

    유닉스의 호환성 문제를 개선하고자 데니스 리치(Dennis Ritchie)는 아예 새로운 프로그래밍 언어를 개발하기로 결심한다. 이 프로그래밍 언어의 이름은 C언어로, C언어 개발을 완성한 수 어셈블리 명령어로 구현됐던 유닉스를 C언어로 작성해 새로운 버전의 유닉스를 개발하게 된다. C언어의 등장으로 유닉스 개발에 속도가 붙게 됐고, 이에 발맞춰 대학과 연구기관에 소속된 개발자들이 유닉스 기능을 구현하게 된다. 유닉스는 여러 기기에서 실행할 수 있는 호환성과 이식성을 갖추게 됐다. 시간이 흘러 유닉스는 제품으로 상용화할 수 있는 수준의 운영체제로 발전한다. 그럼 유닉스가 빠른 속도로 완성도가 높아진 이유는 무엇일까?

     

    - 유닉스는 오픈소스로서 소스코드를 무료로 대학기관이나 연구소에 배포했다.

    처음에는 대학 기관에서 운영체제의 원리를 학습하고 연구하려는 목적으로 유닉스의 소스코드를 분석했다. 하지만 대학 기관과 연구소에 소속된 개발자들은 소스코드 분석에서 한걸음 나아가 유닉스 코드를 개선하면서 유닉스 프로젝트에 기여하게 됐다.

     

    - C언어의 도입으로 유닉스의 이식성과 호환성을 높였다.

    초창기 유닉스는 모든 소스를 어셈블리 명령어로 작성했다. 그래서 유닉스가 특정 CPU 아키텍처에서만 작동할 수 있었다. 그런데 데니스 리치가 만든 C언어로 유닉스를 개발하면서 어셈블리 명령어에 비해 이식성과 호환성을 높일 수 있게 됐다. 

     

    유닉스는 발전을 거듭해 다양한 버클리 유닉스 (Berkeley Unix; BSD), SYSV 계열로 분화되어 현재까지 리눅스와 더불어 다양한 유닉스 계열 운영체제가 사용되고 있다.

     

    1984년 : 유닉스 유료화에 대한 반발로 GNU 단체가 설립되다

    유닉스는 AT&T 회사의 벨 연구소에서 개발했다. 그러던 AT&T가 전화기를 비롯해 전자 및 컴퓨터 사업까지 사업 영역을 넓히다 보니 규모가 커졌다. AT&T가 거대 기업이 되다 보니 모든 미국 졸업생은 AT&T로 몰려들게 되고 미국도 AT&T에 의존하게 됐다. 이런 상황에서 AT&T는 '반독점 소송'을 당하고 패소하게 된다. 1984년에 이르러 미국 법원은 다음과 같은 결정을 내린다.

     

    - AT&T란 거대 기업을 7개 회사로 나누자.

    그 7개 회사 중에서 지금도 유명한 버라이즌, 루슨트 등등이 있다. 이 과정에서 미국 법원에서 AT&T에 다음과 같은 판결을 내린다.

     

    - AT&T는 컴퓨터 사업을 하지 않는다,

    미국 법원에서 이런 판결을 내리자 AT&T는 수년 동안 유닉스를 개발하고도 이를 컴퓨터 제품으로 만들 수 있는 개발 인프라를 구축할 수 없게 된다. 그래서 유닉스를 연구할 필요가 없어져, AT&T는 유닉스를 팔게 된다.

    그런데 유닉스를 여러 회사에 팔다 보니 유닉스의 변종들이 생겨나게 된다. 그래서 '유닉스에 대한 표준을 맞춰 보자'라고 하여 POSIX라는 규격이 만들어진다. 이후 여러 유닉스 벤더들은 POSIX 규약에 맞춰 호환성을 유지한 유닉스 제품을 개발하게 된다. 

    그런데 유닉스 개발에 참여했던 대학이나 연구기관은 더 이상 무료로 유닉스 소스코드를 볼 수 없게 됐다. 오로지 AT&T에게서 유닉스를 구매한 컴퓨터 업체의 개발자들만 유닉스 소스코드를 분석하면서 개발할 수 있게 된 것이다. 그래서 기존 유닉스 개발에 참여했던 연구원들은 불만을 갖기 시작한다. 이런 유닉스의 유료화에 반기를 들고 새로운 무료 버전의 유닉스를 만들어보자는 움직임이 일어난다. 돈을 내고 유닉스를 만드는 것이 아니라 무료 버전의 유닉스를 개발하자는 목표로 다음과 같은 단체를 설립한다.

     

    GNU(GNU is not UNIX) : GNU는 유닉스가 아니다

    반응형