1960년대 MIT에서 ITS(Incompatible Timesharing System)가 한창 개발되고 있는 동안, 미 동부의 다른 곳에서도 해커의 기운이 물씬 풍기는 곳이 있었는데, 바로 벨 연구소(AT&T Bell Laboratories)였다. 여기서 앞으로 세상을 바꿀 유닉스와 C언어가 개발되고 있었다.
공교롭게도 멀틱스(Multics) 개발에 참여하던 사람들이 나와 ITS와 유닉스를 만들기 시작했는데, 벨연구소 소속인 켄 톰프슨과 데니스 리치도 멀틱스 개발에 참여하고 있었다.
멀틱스 프로젝트는 1964년 시작되었으나 코드 크기가 커지고 복잡도가 높아지면서 벨연구소에서 예상했던 것 보다 일정이 많이 지연되고 있었다.
결국, 벨연구소는 1969년 멀틱스 개발에서 손을 뗀다.
벨연구소에 돌아온 켄 톰프슨은 멀틱스 개발 경험을 토대로 새로운 운영체제를 혼자 만들기 한다.
켄 톰프슨은 멀틱스에서 개발한 주요 기능을 유닉스에서 다시 구현했다.
우선 멀틱스에서 미리 구현해 본 파일 시스템을 PDP-7에 적용했고, 데니스 리치도 개발에 참여했다. 개발이 어느 정도 궤도에 오르자, 팀이 꾸려지고 이들은 파일시스템, 프로세스 모델, 디바이스 파일, 커맨드 라인 해석기 등, 오늘날 우리가 사용하는 운영체제 기능을 PDP-7에서 처음으로 구현하기 시작했다.
그후, PDP-11이 도입되었는데, 유닉스는 어셈블리어로 개발되어 다시 코드를 짜야했다.
B언어는 1969년 역시 켄 톰프슨과 데니스 리치가 함께 멀틱스에서 사용하기 위해 개발한 프로그래밍 언어였다.
1971년 데니스 리치는 B언어에 문자 타입을 추가하고 컴파일러를 다시 작성해서 PDP-11 기계어를 생성하도록 했다[3].
1973년에 기본적인 기능이 구현되었고, 이름을 C언어로 불렀다. B의 다음 버전이라서 그냥 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
너무 좋은 만화 잘 보고 있어요. 내용 중간에 캔 톰프슨과 톰 켄프슨이 나오는데 동일 인물인것 같은데 이름이 잘못된것 같아요.
수정했습니다. 고맙습니다.
Pingback: [C] 읽어보기: C언어 – 나무위키