[1부 1번 수필] 이론이 먼저냐 실제가 먼저냐?
운영체제 역사를 통해 이론이 먼저냐 실제가 먼저냐를 생각해보면 무척 흥미롭다. 로버트 L. 글래스가 주장하듯이 이론은 실제를 설명하기 위해 따라오는 경우가 운영체제 역사에서도 되풀이되고 있기 때문이다.
리눅스의 예를 들어보자. 미닉스 운영체제를 만든 타넨바움 교수는 이론적으로 열등하고 기존 운영체제를 이리저리 조합해서 만든 듯이 보이는 리눅스에 대해 너무나도 부정적인 견해를 표명한 바 있다. 결국 타넨바움 교수와 리누스는 뉴스그룹에 올린 글을 통해 치열한 전투를 벌였다. 타넨바움 교수는 리눅스가 구시대적인 모놀리틱 커널을 탑재해서 열등한 설계 방식을 따랐으며, x86아키텍처에 얽매이는 바람에 호환성이 떨어진다고 집중적으로 비판했다. 물론 이론적으로 타넨바움 교수 말이 맞을지도 모르겠다. 하지만 현실로 돌아오면 어떨까?
요즘 일부 학교와 연구소를 제외하고 미닉스를 사용하는 곳이 있는가? 리눅스는 메인 프레임부터 임베디드 장비에 이르기까지 전방 위에서 사용하고 있다. 독자 여러분은 양쪽의 차이점을 무엇이라고 생각하는가? 바로 이론과 실제가 핑퐁을 쳐야 발전한다는 점이다. 미닉스는 너무나도 이론적이고 이상적인 운영체제를 추구한 나머지 실제 사용 과정에서 불편한 점을 모두 무시해버렸다. 리눅스는 이론적인 아름다움을 다소 희생하는 한이 있더라도 철저하게 사용자 편의 위주(즉 실제 필요한 요구 사항을 충족시키는 방향)로 접근했다.
리눅스에서 좋은 예를 몇 개 들어보자. 실시간 커널을 연구하던 사람들이 우선 순위 역전(priority inversion)과 같은 어려운 문제점을 푸느라 흰머리가 나고 있는 상황에서 리눅스 커널 개발자들은 SMP에서 사용하는 spinlock을 활용해서 선점형 커널을 쉽게 구현했다. 물론 이론적으로 보면 말도 안되고 형편없는 실시간성으로 비춰질지 모르겠지만, 실제 사용자가 느끼는 체감 정도는 달랐다. 선점형 커널을 활성화시킨 다음부터는 마우스와 키보드를 비롯한 각종 반응 속력이 눈에 띄게 좋아졌기 때문이다. O(1) 스케줄러도 마찬가지다. 이론적으로 복잡한 내용을 모두 포기하고 아주 단순한 구현 방법 개선을 통해 리눅스 스케줄러는 어느 상용 운영체제 스케줄러보다 효율적인 성능을 제공하게 되었다. 심지어 아직도 일반 멀티태스킹 운영체제 스케줄러는 이론적으로는 훌륭할지 몰라도 대충 땜방으로 만든 듯한 리눅스 스케줄러에 비해 느리다.
리눅스는 실전에서 실험적으로 시도한 요구 사항을 이론으로 발전시켜 다듬어 나가고 다시 실험적인 시도를 반복하는 방법을 채택하고 있다. 오픈소스라는 공개된 개발 방법까지 결합해서 리눅스는 역사상 가장 인기있는 운영체제로 전면에 나서게 된 셈이다.
여러분도 이론과 실제라는 핑퐁 게임을 즐겨보면 어떨까? 일단 직접 해보고 생각처럼 잘 되면 그 때 이론을 정립해도 늦지 않다.
소프트웨어 컨플릭트 2.0 역자 박재호 올림



0 Comments:
Home | 댓글 쓰기