8. 유닉스와 C언어

1960년대 MIT에서 ITS(Incompatible Timesharing System)가 한창 개발되고 있는 동안, 미 동부의 다른 곳에서도 해커의 기운이 물씬 풍기는 곳이 있었는데, 바로 벨 연구소(AT&T Bell Laboratories)였다. 여기서 앞으로 세상을 바꿀 유닉스와 C언어가 개발되고 있었다.


공교롭게도 멀틱스(Multics) 개발에 참여하던 사람들이 나와  ITS와 유닉스를 만들기 시작했는데, 벨연구소 소속인 켄 톰프슨데니스 리치도 멀틱스 개발에 참여하고 있었다.

켄톰슨: 이제 멀틱스 개발에 손을 떼야할 것 같아. 데니스리치: 예상 보다 일정이 지연되고 있어.

멀틱스 프로젝트는 1964년 시작되었으나 코드 크기가 커지고 복잡도가 높아지면서 벨연구소에서 예상했던 것 보다 일정이 많이 지연되고 있었다.

벨연구소: 우리는 내부 일정을 맞추기가 어려워 프로젝트에서 손을 땝니다.
결국, 벨연구소는 1969년 멀틱스 개발에서 손을 뗀다.

벨연구소에 돌아온 톰 켄프슨은 멀틱스 개발 경험을 토대로 새로운 운영체제를 혼자 만들기 한다.

톰켄슨: 데니스, 내가 새롭게 운영체제를 만들고 있는데, 멀틱스에 좀 아이디어를 가져오고 좀 더 단순하게 만들어 보려고. 데니스: 좋은 생각인데, 나도 관심있어.

톰 켄프슨은 멀틱스에서 개발한 주요 기능을 유닉스에서 다시 구현했다.

우선 멀틱스에서 미리 구현해 본 파일 시스템을 PDP-7에 적용했고, 데니스 리치도 개발에 참여했다. 개발이 어느 정도 궤도에 오르자, 팀이 꾸려지고 이들은 파일시스템, 프로세스 모델, 디바이스 파일, 커맨드 라인 해석기 등, 오늘날 우리가 사용하는 운영체제 기능을 PDP-7에서 처음으로 구현하기 시작했다.

그후, PDP-11이 도입되었는데, 유닉스는 어셈블리어로 개발되어 다시 코드를 짜야했다.

데니스: 켄, PDP-11이 새로 들어왔는데, 여기에 유닉스를 포팅하면 어떨까? 켄톰슨: 좋은 생각인데, 문제는 어셈블리어 코딩을 다시 해야한다는 거지.

켄톰슨: 드디어 포팅 끝~~~ 데니스: 이봐, 톰 매번 새 컴퓨터가 나올 때 마다, 매번 코드를 다시 짤 수는 없잖아

켄톰슨: 그래, 데니스 우리 B언어로 유닉스를 다시 만들어볼까? 데니스: 좋은 생각인데, PDP-11정도면 B언어로 유닉스를 포팅할 수 있을거
B언어는 1969년 역시 켄 톰프슨과 데니스 리치가 함께 멀틱스에서 사용하기 위해 개발한 프로그래밍 언어였다.
데니스 리치: 우선 B언어를 PDP-11에 포팅해야 하는데 문제가 있네.

1971년 데니스 리치는 B언어에 문자 타입을 추가하고 컴파일러를 다시 작성해서 PDP-11 기계어를 생성하도록 했다[3].
톰켄스: 데니스  B언어 포팅은 잘되가? 데니스 리치: 문제가 많아. 우선 PDP-11에서는 문제 데이터 타입에 접근하기가 어려워. 다른 새기능을 사용할 수 없고.
톰 켄프슨: 하하, 이번 기회에  B언어를 싹 뜯어 고치는거야. 데니스 리치: 다시 짜야할지도로 모르는데..

1973년에 기본적인 기능이 구현되었고, 이름을 C언어로 불렀다. B의 다음 버전이라서 그냥 C언어로 부르게 되었다.

데니스리치: C언어로 부르면 어떨까? 톰슨: 우와 잘 동작하는데?

데니스 리치는 같은 해에 C언어로 유닉스를 다시 작성하기 시작한다.

C언어에 데이터를 정의할 수 있는 구조체 타입(structure type)을 추가하였다. 이제, C언어는 유닉스 커널을 작성할 수 있을 정도록 강력해졌다.

이처럼 유닉스와 C언어는 켄 톰프슨과 데이니 리치에 의해 짧은 기간에 탄생했지만, 오늘날까지도 핸드폰을 비롯한 대부분의 컴퓨터가 유닉스를 기반으로 동작하고 있다. 또한, 현재도 운영체제 커널은 C언어로 개발되고 있다.

참고
[1] https://en.wikipedia.org/wiki/Unix
[2] https://en.wikipedia.org/wiki/History_of_Unix
[3] The Development of the C Language
[4] The Evolution of the Unix Time-sharing System

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중