본문 바로가기
기술공학/세상을 바꾼 IT

[세상을 바꾼 IT: 태동] UNIX, 모든 운영체제의 아버지

by 롱카이 2024. 4. 26.
반응형
  • 파편화된 소프트웨어
IBM 360/85
IBM 360/85

단말기Computer terminal의 등장은 천공카드와 자기 테이프에 기록할 필요 없이 키보드로 명령어를 입력하고 모니터로 명령어를 확인한 뒤 실행하면 되는 편리함을 가져다 주었습니다. 이로서 컴퓨터 하드웨어는 단말기와 본체 두가지 구성이 표준이 되어 형태를 잡아갔습니다. 이렇게 컴퓨터 하드웨어는 방황을 지나 형식을 자리잡아갔지만 소프트웨어는 아직 여러 소프트웨어들이 난립했습니다.

ALGOL 교재
ALGOL 교재

단말기 덕분에 프로그래밍 언어와 프로그램은 천공카드라는 물리적인 도구에 속박되지 않게 되었습니다. 하지만 프로그래밍 언어는 여전히 각 컴퓨터마다, 그리고 각 특정한 기능만 수행했습니다. 컴퓨터 기업은 각 컴퓨터에 맞으며 특정 임무만 수행하는 프로그램만 개발해 판매했고 사람들은 새 컴퓨터를 만나면 그 컴퓨터의 프로그램, 그리고 프로그래밍 언어를 다 따로 배워야 했습니다. 당시에 컴퓨터를 사용하는 사람들이 특정 직업군이었기에 그들이 컴퓨터로 수행하는 일이 한정적이어서 큰 문제는 아니었지만 많이 불편했습니다.
 
 
 

  • 여러명이 동시에 여러 프로그램 작업을 하게 하는 방법
시분할 시스템
시분할 시스템

컴퓨터 연구소의 연구원들은 컴퓨터 프로그램을 더 쉽게 이용할 수 있는 시스템을 원했습니다. 프로그램을 열고 실행하며 종료하는 과정을 일일이 설정하는 것 대신 간단하게 처리하고 싶어했습니다. 그래서 그들은 어셈블리어로 한 프로그램을 이용하는 것을 쉽게 하는 기반 프로그램을 만들었는데 그것이 운영체제Operating System입니다. 그러나 그들이 만든 운영체제OS는 한번에 한 프로그램만 사용할 수 있었습니다. 이건 그 프로그램을 이용하는 동안 필요한 다른 프로그램을 열 수 없다는 단점이 있었고 그 문제를 해결하려고 했습니다. 연구자들은 CPU는 한번에 한 프로그램만 실행할 수 있는 상황을 유지하면서 여러 프로그램을 실행하는 방식을 연구했습니다. 그리고 그들은 CPU의 시간을 쪼개 짧은 시간에 한 프로그램을 작동하고 다른 시간에 다른 프로그램을 작동하는 시분할 시스템Time sharing system을 도입했습니다. CPU에게 1초는 매우 긴 시간이었고 1초를 매우 작은 단위로 잘게 쪼갤 수 있어 1초 동안 여러 프로그램을 각각 하나씩 진행해 사람이 보기에는 여러 프로그램을 동시에 처리하는 걸로 보였습니다.

Multics
Multics

1964년 MIT와 협력해 AT&T 벨 연구소와 제너럴 일렉트릭 기업이 시분할 시스템Time sharing system을 적용한 운영체제OS 개발에 나섰습니다. 그들은 규모를 더 키워 여러 사용자들이 동시에 여러 프로그램을 이용하는 상황에서 그것을 통제하고 프로그램이 잘 돌아가도록 지원하는 운영체제OS 개발에 나섰습니다. 1969년 개발을 시작한지 5년 만에 연구소는 Multics라는 운영체제OS를 개발했습니다. Multics는 훌륭한 기능을 가졌으나 프로그램 용량이 크고 비용이 너무 부담스러워 초대형 컴퓨터에서만 작동했고 시장에서 성공하지 못했습니다. 하지만 여러 사용자들이 여러 프로그램을 이용할 수 있도록 지원하는 Multics의 시스템은 매우 좋은 시스템이었고 Multics에 이어 더 성능이 뛰어난 운영체제OS가 태동했습니다.
 
 
 

  • 성공한 운영체제OS UNIX
UNIX
UNIX

Multics 개발에 참여한 데니스 리치는 Multics를 응용해 더 좋은 운영체제OS를 만들려는 열정이 있었습니다. 또한 AT&T 벨 연구소에는 몰래 게임을 만들던 켄 톰슨이라는 인물이 있었습니다. 그는 게임을 만들다가 운영체제OS가 너무 불편하다고 생각해 운영체제OS를 직접 해체하고 새로 만들고 있었습니다. 데니스 리치와 켄 톰슨은 더 좋은 운영체제OS 개발이라는 공통 관심사를 공유했고 초대형 컴퓨터보다 작은 컴퓨터에서도 무리없이 작동하는 운영체제OS를 함께 개발했습니다. 1971년 그들은 UNIX라는 운영체제OS를 개발해 멀티테스킹과 시분할 시스템을 지원하는 운영체제OS를 선보였습니다. 동시에 그들은 UNIX 운영체제OS에서 작동하는 한 고급 프로그래밍 언어를 출시했는데 그것이 C입니다.
 
 
 

  • 범용 고급 프로그래밍 언어 C
C 언어
C 언어

당시에는 프로그램을 지원하는 운영체제는 고급 프로그래밍 언어보다 기계어에 더 가까운 어셈블리어로 작성해야 했습니다. 그래야 운영체제가 작동한다는 것이 통념이었고 고급 프로그래밍 언어로 운영체제를 설계하는 것은 금기로 여겨졌습니다. 그러다보니 프로그램은 고급 프로그래밍 언어로, 운영체제는 어셈블리어로 각각 따로 제작해야 했습니다. 이건 불편했고 고급 프로그래밍 언어로 운영체제도 설계하려는 시도가 있었습니다. 1963년 케임브리지 대학교와 런던 대학교에서 CPL이라는 고급 프로그래밍 언어를 제작했으며 1969년에는 CPL을 응용해 컴파일러를 만드는 BCPL 개발을 시도했으나 모두 실패했습니다. 그리고 1969년 켄 톰슨은 B 언어를 만들었으며 이를 데니스 리치가 개선해 1972년 C 언어를 개발했습니다.

C 언어로 짠 코드
C 언어로 짠 코드

C 언어는 이전 언어보다 문법이 자연어에 더 가까워 배우기가 훨씬 수월했습니다. 또 문법 자체가 단순해 직관적이었습니다. 무엇보다도 C 언어로 프로그램과 운영체제를 개발해도 큰 문제가 없어 운영체제는 어셈블리어로만 코딩해야 한다는 통념을 깨부셨습니다. C 언어는 폭넓은 지원을 하는 프로그래밍 언어로 C 언어로 거의 모든 프로그램을 짤 수 있어 이내 가장 많이 사용되는 고급 프로그래밍 언어가 되었습니다.
 
 
 

  • 소프트웨어 세계를 평정한 C 언어와 UNIX
UNIX에서 연 UNIX shell
UNIX에서 연 UNIX shell

C 언어와 UNIX는 여러 프로그래밍 언어와 운영체제가 난립한 소프트웨어 세계를 빠르게 통일했습니다. 쉽고 간단한 C 언어는 UNIX에 최적화된 언어였으며 UNIX 운영체제에서 프로그램을 개발하고 삽입하기 쉬웠습니다. 그리고 UNIX는 여러 사람이 한번에 여러 프로그램을 바로 개발하고 이용할 수 있도록 최적화된 지원을 했으며 무엇보다도 프로그램을 읽고 고치기 매우 쉬워 개발자들과 컴퓨터를 이용하는 사용자 모두를 만족시켰습니다. 덕분에 소프트웨어 시장에서 C와 UNIX가 압도적인 점유율을 자랑했으며 개발자들은 C와 UNIX를 적극적으로 사용했습니다. 그리고 UNIX를 개량해 더 사용하기 편리한 운영체제OS를 발전시켰습니다. 덕분에 UNIX는 거의 모든 운영체제OS의 시초가 되었습니다. 운영체제OS가 발전함에 따라 모니터 화면은 시각적으로 더욱 풍요로워졌습니다.
 
 
 
 

반응형

댓글