메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

유닉스(UNIX)의 기원과 이름의 유래

한빛미디어

|

2020-08-06

|

by 한빛

2,192

유닉스의 기원

벨 연구소가 멀틱스 프로젝트에서 빠져나왔을 때, 거기에 참여했던 사람들은 다른 할 일을 찾아야 했다. 켄 톰프슨은 여전히 운영체제 개발을 하고 싶어 했지만, 벨 연구소의 경영진과 관리자들은 멀틱스에 덴 경험 때문에 또 다른 운영체제 프로젝트를 위한 하드웨어를 구매하는 데 전혀 관심이 없었다. 그래서 켄과 다른 이들은 구체적인 구현 없이 다양한 운영체제 컴포넌트에 대한 아이디어를 탐색하고 종이에 설계하면서 시간을 보냈다.

 

ken.jpg

켄 톰프슨, 1984년경(제라드 홀즈먼 제공)

 

이때쯤 켄은 거의 사용되지 않은 DEC PDP-7을 발견했다. 이 기종은 원래 전자회로 설계 시 입력 장치로 주로 사용됐다. PDP-7은 1964년에 처음 출시되었고 당시 컴퓨터 기술이 빨리 발전하면서 1969년쯤에는 구식이 되었다. 기종 자체의 성능은 그다지 뛰어나지 않았는데, 8K 18비트 워드(16K 바이트)의 메모리가 장착돼 있었다. 하지만 괜찮은 그래픽 디스플레이가 달려 있어서 켄이 PDP-7용 우주여행 게임을 개발하기도 했다. 이 게임에서 사용자는 태양계를 돌아다니면서 다양한 행성에 착륙할 수 있었다. 약간 중독성이 있어서 나도 몇 시간씩 그 게임을 하기도 했다.

 

PDP-7에는 또 다른 특이한 주변 장치가 있었다. 원판 한 개가 수직으로 달린, 세로가 아주 긴 디스크 드라이브였다. 믿을 만한 이야기에 따르면 기기가 고장날 수도 있으니 그 바로 앞에 서 있는 것은 위험하다고 했다. 디스크 작동 속도가 그 컴퓨터에 비해 너무 빨랐기 때문이다. 이 문제를 해결하고자 켄은 어떤 디스크에서든(특히 이 디스크에서) 처리율을 극대화하기 위한 디스크 스케줄링 알고리즘을 작성했다.

 

이제 문제는 '알고리즘을 어떻게 시험할 것이냐'였다. 시험을 하려면 디스크에 데이터를 적재해야 했고, 켄은 디스크에 대량의 데이터를 넣을 프로그램이 필요하다고 결정했다.

 

"어느 순간 저는 3주 더 작업하면 운영체제가 만들어지리라는 걸 깨달았습니다." 그는 세 가지 프로그램을 한 주에 하나씩 개발해야 했다. 코드를 작성하기 위한 편집기, 코드를 PDP-7에서 실행 가능한 기계어로 변환하기 위한 어셈블러, 마지막으로 커널 오버레이kernel overlay였다. 그리고 켄은 커널오버레이를 운영체제라고 불렀다.

 

바로 그때 켄의 아내가 한 살짜리 아들을 데리고 캘리포니아에 있는 켄의 부모님을 만나러 3주간 휴가를 떠났기에 켄은 집중해서 일할 수 있었다. 2019년 인터뷰에서 그가 말했다. "한 주, 한 주, 한 주, 그리고 유닉스가 만들어졌습니다." 분명 이것이 진정한 소프트웨어 생산성이다.

 

켄과 내가 벨 연구소에서 은퇴하고 몇 년 뒤, 나는 그에게 3주 만에 유닉스의 첫 번째 버전을 개발한 이야기에 관해 물어보았다. 아래는 그의 이메일 회신을 그대로 옮긴 것으로, 훨씬 더 최근 인터뷰 내용과 완전히 일치한다.

 

날짜: 2003년 1월 9일 (목) 13:51:56 -0800

유닉스는 처리율 등을 시험하기 위한 파일 시스템 구현이었네. 구현한 다음에 테스트를 실행하기 위해 필요한 데이터를 입력하기 어려웠다네. 나는 읽기/쓰기 호출을 루프에 넣을 수는 있었지만, 그보다 더 정교한 처리는 거의 불가능했지. 그게 보니가 샌디에고에 있는 내 부모님을 만나러 갔을 당시 상태였네.

 

나는 구현된 코드가 시분할 시스템에 가깝지만 단지 exec 호출, 셸, 편집기와 어셈블러(컴파일러 없이)가 빠진 것이라고 결론을 내렸네. exec 호출은 쉽게 개발했고 나머지 세 가지는 각각 1주씩 걸렸네. 정확히 보니가 머무르는 기간과 일치했지.

 

사용한 컴퓨터는 8k × 18 비트였네. 4k는 커널 공간, 4k는 스와핑되는 사용자 공간이었네.

- 켄

 

형체가 있는 유닉스 시스템의 첫 번째 버전은 1969년 중후반에 작동하고 있었으므로 그때를 유닉스가 탄생한 시기라고 말하는 것이 타당해 보인다.

 

초기 시스템에는 사용자가 몇 명 되지 않았다. 물론 켄과 데니스가 있었고, 더글러스 매클로이, 로버트 모리스, 조 오산나, 그리고 전적인 행운으로 나도 그중 하나였다. 각 사용자는 숫자로 된 사용자 ID가 있었다. 몇몇 ID는 실제 사용자가 아닌 시스템 기능에 해당했다. 루트root 또는 슈퍼유저superuser의 ID가 0이었고, 몇 가지 다른 특수한 경우가 있었다. 실제 사용자를 위한 ID는 4부터 시작했던 것 같다. 내 기억에 데니스는 5였고, 켄은 6, 나는 9였다. 최초의 유닉스 시스템에서 한 자리 숫자로 된 사용자 ID를 쓰는 것은 분명 일종의 특권이었다.

 

이름의 유래

초창기 언젠가부터 이 새로운 PDP-7 운영체제에 이름이 생겼는데 어찌된 일인지는 명확하지 않다.

 

내가 기억하는 바로는 켄, 데니스, 피터 노이만을 포함한 무리와 내가 사무실 입구에 서서 이야기하던 것으로 시작한다. 그때는 시스템에 이름이 없었기에 (내 기억이 맞는다면) 내가 라틴어 어근에 기반을 두고 멀틱스가 '모든 기능을 많이' 제공하는 반면, 새로운 시스템은 어떤 기능을 기껏해야 하나 제공하므로 'UNICS'라고 불러야 된다고 했는데, 이는 'multi'를 'uni'로 바

꾼 말장난이었다.

 

다른 버전은 피터 노이만이 'UNiplexed Information and Computing Service'를 의미하는 UNICS라는 이름을 생각해냈다는 것이다. 피터의 회상은 다음과 같다.

 

"어느 날 오전에 켄이 점심 먹자고 찾아와서, 맥스 매슈스가 빌려준 PDP-7을 위한 1000행짜리 단일 사용자용 OS 커널을 밤새 개발했다고 말한 것을 생생히 기억하네. 나는 그것을 다중 사용자 시스템으로 만들어야 한다고 제안했고, 역시나 다음 날 그가 점심 먹자며 찾아와서 1000행을 더 작성해서 다중 사용자용 커널을 작성했다고 알려주었지. 바로 그 단일 사용자용 커널에 착안해서 '거세당한 멀틱스'라는 개념의 UNICS라는 이름을 떠올렸네."

 

피터는 자비롭게도 더는 자세히 생각나지 않는다고 말했고, 그래서 자격이 있는지 몰라도 내가 그 이름을 만들어 낸 것으로 인정받게 됐다.

 

어쨌든 UNICS는 어떤 이유에서인지 Unix로 변형됐는데, 확실히 훨씬 더나은 생각이었다(소문에 따르면 AT&T의 변호사들이 'eunuchs (내시)'와 발음이 유사한 'Unics'를 좋아하지 않았다고 한다). 나중에 데니스 리치는 이 이름이 "멀틱스에 대해 다소 반역적인 말장난"이라고 특징지었고, 실제로 그렇다.

 

 

유닉스의 탄생

댓글 입력
자료실