컴퓨터를 부팅(Booting)한다에서 부팅의 진짜 의미는?
부팅한다.
컴퓨터를 시작할 때 ‘부팅한다’라고 하는데, 이는 원래 부츠를 쉽게 신을 수 있도록 잡아당기는 부분(bootstraps)에서 유래한 것으로 보인다. 여기서 bootstraps는 신발끈이 아니다.
Bootstrapping - Computing https://en.wikipedia.org/wiki/Bootstrapping#Computing
그렇다면 왜, 어떤 경위로 컴퓨터 부팅 과정을 부트스트래핑이라고 부르게 되었는가? 이에 대해서는 정확한 사실은 알 수 없는 것 같다.
여러 가지 설이 있는데 먼저, 영어권의 유명한 역설(패러독스, paradox)로서 “Pull oneself up by one’s bootstraps"라는 말이 있다. 언뜻 보기에는 할 수 있을 것 같지만, 실제로는 할 수 없는, 즉. 말도 안 되는 것으로 실현 불가능한 방법을 의미하는 것으로 사용된다.
이후, 이 문구는 다른 의미로 사용되기 시작했는데, 1922년경에는 다른 사람의 도움 없이 자립적으로 자신을 개선해 나가는 방법이라는 의미로 사용되었다고 한다.
Bootstrapping - Etymology https://en.wikipedia.org/wiki/Bootstrapping#Etymology
Tall boots may have a tab, loop or handle at the top known as a bootstrap, allowing one to use fingers or a boot hook tool to help pulling the boots on. The saying “to pull oneself up by one’s bootstraps”[3] was already in use during the 19th century as an example of an impossible task. The idiom dates at least to 1834, when it appeared in the Workingman’s Advocate: “It is conjectured that Mr. Murphee will now be enabled to hand himself over the Cumberland river or a barn yard fence by the straps of his boots."[4] In 1860 it appeared in a comment on philosophy of mind: “The attempt of the mind to analyze itself [is] an effort analogous to one who would lift himself by his own bootstraps."[5] Bootstrap as a metaphor, meaning to better oneself by one’s own unaided efforts, was in use in 1922.[6] This metaphor spawned additional metaphors for a series of self-sustaining processes that proceed without external help.[7]
부팅스트랩의 진짜 의미는?
정리하자면, 크게 다음 두 가지 의미로 사용되었던 것 같다.
- 실현 불가능/어리석은 방법
- 자립적으로 스스로 개선해 나가는 방법
여기서 초기 컴퓨터의 부팅 과정에 대해 생각해 보겠다.
- CPU/RAM/IO만 있는 컴퓨터의 경우
- 전원을 켠 직후에는 RAM에는 프로그램 데이터가 없다.
- 외부 저장장치에서 프로그램을 불러오기 위해서는 로딩 프로그램이 필요하다.
- 로딩 프로그램을 메모리에 로드하기 위해서는 또 다른 로딩 프로그램이 필요하다.
위와 같은 상황이 되기 때문에 스스로는 전혀 만족스럽게 동작할 수 없다. 이런 상황은 첫 번째 의미의 “Pull oneself up by one’s bootstraps"를 연상시킨다.
실제로는 내장된 토글 스위치 등을 통해 1바이트씩 코드를 작성하고, 입력이 완료되면 실행하는 형태로 동작한다. 펀치카드/테이프 등의 외부 저장장치에서 데이터를 읽어들여 RAM에 로드하고, 이후 로드한 내용을 실행하는 코드를 작성하는 경우도 있었을 것이다.
외부 저장장치 등으로부터 프로그램을 RAM에 자동으로 로드하는 메커니즘이 있는 경우, 전원을 켜고 기본 버튼 등을 누르면 외부 저장장치에서 데이터를 읽어들이는 전용 회로가 동작한다. 외부 저장장치에서 RAM에 프로그램 로딩 완료 후 CPU가 초기화되어 기본 메모리 번호에서 처리가 시작된다. 필요에 따라 또 다른 입력 장치에서 프로그램을 로드하여 더 복잡한 처리를 수행한다. 두 번째 의미의 ‘Pull oneself up by one’s bootstraps’를 연상시킨다.
위키피디아에서도 이런 의미로 설명되어 있다. https://en.wikipedia.org/wiki/Bootstrapping#Computing
위의 내용은 모두 추측이지만, 아마도 컴퓨터 초창기에는 위와 같은 상황이 많았을 것이다.
당시 관련 종사자들은 모두 “이건 정말 pull itself up by its bootstraps 상태구나” 라는 느낌이 있지 않았을까 생각된다.
그래서, 부트스트래핑이라는 단어를 아무렇지도 않게 사용하기 시작했고, 자연스럽게 스며들지 않았을까?