2019년 4월 24일 수요일

just for fun - 68008칩 싱클레어 컴퓨터와 간결하고 아름다운 유닉스






       싱클레어 컴퓨터는 8메가헤르츠의 68008 칩을 내장하고 있었다. 그것은 모토롤라의 68000칩의 개정 버전으로 가격이 저렴했다. 초기 68000칩은 내적으로는 32비트였다. 하지만 외적으로는 CPU 제외한 모든 , 이를테면 메모리나 하드웨어 부속 장치 등에대하여 16비트 인터페이스를 지니고 있었다. 그것은 메모리로부터 번에 16비트만을 로드할 있기 때문에, 16비트 오퍼레이션이 종종 32비트 오퍼레이션보다 데이터 처리 속도가 빠를 있음을 보여주었다. 그런 식의 아키텍처는 당시 상당한 인기를 끌고 있었다. 지금도 내장형 장비나 자동차에는 여전히 그런 식의 아키텍처가 이용되고 있다. 물론 사용되는 칩이야 다르겠지만 말이다


컴퓨터에 사용된 칩은 68008, CPU 제외한 모든 것이 (16비트가 아니라) 8비트 인터페이스를 지녔다. 그러므로 그것은 메모리로부터 번에 8비트밖에 로드할 없었지만, 내적으로는 32비트 속도를 있는 여건을 갖추고 있었다. 프로그래밍 측면에서 보았을 , 그것은 여러 가지로 보다쾌적한환경을 의미했다


그것의 메모리 용량은 128킬로바이트였다.(메가바이트가 아니다.) 그래도 당시로서는 가정용 컴퓨터 치고는 메모리 용량이 상당히 것이었다. 컴퓨터를 사기 사용했던 VIC-20 메모리 용량은 3.5킬로바이트밖에 되지 않았다. 게다가 싱클레어 컴퓨터는 32비트 기계였기 때문에, 아무런 문제 없이 모든 메모리에 액세스 있었다. 내가 컴퓨터를 구입한 것도 바로 그런 이유 때문이었다. 기술은 흥미로운 것이다. 그래서 나는 CPU 사랑한다. -77페이지 






유닉스가 특별할 수밖에 없는 이유는 자신의 기본적인 목표를 실현하기 위해 애쓰고 있기 때문이다. 그것은 간결하고 아름다우며, ‘예외 것을 가능한 최소화하는 운영체제이다. 유닉스는 프로세스를어떤 것을 하는 어떤 으로 규정한다. 여기 간단한 예가 있다. 유닉스에서 운영체제에 명령을 내리기 위해 어떤 명령어를 입력하는 것을 의미하는 (shell) 명령은 DOS와는 달리 운영체제 속에 내장되어 있지 않다. 그것은 여타의 작업들처럼 단지 하나의 작업(task)으로만 인식된다. 그것은 키보드로부터 읽은 것을 모니터에 기록하는 일을 뿐이다. 유닉스에서 무엇인가를 하는 모든 것은프로세스이다


나를 비롯해 대부분의 사람들(적어도 우리 같은괴짜’) 흥미를 돋우는 것은 바로 그처럼 단순한 프로그램이다. 유닉스에서 하는 모든 것은 [무엇인가를 수행하도록 운영체제를 호출해야 하므로시스템 호출(system call)’이라 불리는 ] 여섯가지 기본 오퍼레이션으로 이루어진다. 기본적인 여섯 가지 시스템 호출을 이용하여 유닉스 사용자는 원하는 모든 것을 실행할 있다.

유닉스의 기본적인 시스템 호출 기능 중에포크(fork)’라는 개념이 있다. 프로세스가 포크를 하면, 그것은 자신과 완전히 똑같은 하나의 프로세스를 만들어 낸다. 그리고 그렇게 태어난 자식 프로세스(child process) 새로운 프로그램으로 자신을 대신할 다른 프로세스를 실행하게 된다. 그것이 바로 유닉스의 두번째 시스템 호출기능이다. 그리고 나머니 가지 시스템 호출 기능은열기, 닫기, 읽기, 쓰기이다. 네가지 시스템 호출은 모두 파일에 액세스할 있도록 고안되었다. 여섯가지 시스템 호출이 유닉스를 구성하고 있는단순한오퍼레이션들이다

물론 세부적인 역할을 하는 수많은 여타의 시스템 호출이 있다. 하지만 여섯가지 기본적인 시스템 호출을 일단 이해해야만 유닉스를 제대로 이해할 있다. 유닉스의 아름다움 중에 하나는 복잡한 무엇인가를 구축하고 있는 복잡한 인터페이스가 필요치 않는다는 것이다. 유닉스 사용자는 간단한 프로세스 간의 상호작용을 이용하여 아무리 복잡한 것이라도 구축할 수가 있다. 그러므로 복잡한 문제를 풀기 위해 유닉스 사용자가 일은 간단한 프로세스 간에 커뮤니케이션 채널[일명 파이프(pipe)] 구축하는 것이다.

추한시스템이란 하고 싶은 것을 하기위해 항상 특별한 인터페이스를 필요로 하는 시스템이다. 유닉스가 아름다운 시스템인 것은 특별한 인터페이스를 필요로 하지 않는 시스템이기 때문이다. 그것은 모든 것을 있는 충분한 구성요소를 제공하는 간결한 프로그램인 것이다.

언어도 마찬가지이다. 영어는 26개의 알파벳으로 이루어져 있다. 26개의 알파벳만을 이용하여 영어 사용자는 필요한 모든 문장을 만들 있다. (-) 

반면 유닉스는작은 것이 아름답다 철학을 지니고 있다. 유닉스는 간단한 기본 구성요소들을 필요에 맞게 결합함으로써 무한히 복잡한 것을 구축할 있는 운영체제인 것이다

그것은 물리학의 방식이기도 하다. 상당히 단순한 기본 규칙들을 찾아보라.(복잡한 규칙들이 아니라) 단순한 규칙들의 상호작용으로 인해복잡한것이 창출되고 있음을 알게 것이다.

유닉스의 단순함은 자연 발생적인 것이 아니다. 그것은 AT&T 연구소의 데니스 리치에와 톰슨의 각고의 노력으로 이루어진 것이다. 간편한 무엇인가가 되기 위해서는단순함 절대적임을 간과해서는 안된다. 무엇인가를 설계할 때는단순함 가미되어야만 사람들이 쉽게 사용할 있는 무엇인가가 탄생할 있다. - 95 ~97페이지 

just for fun  리누스 토발즈 , 데이비드 다이아몬드 지음 안진환 한겨레신문사 출간