하루종일 화면을 뚫어져라 바라보며 스트레스를 받은건지 두통이 심하다.
오늘 아침 분명 호기롭게 process
와 thread
에 대해 공부하려고 구글로 출발했는데,
저녁 먹기 전 나는 Assembly Language
로 Hello World
를 출력하고 기뻐하고 있었다.
process
와 tread
에 대해 검색했을 때, 너무나도 생소한 단어들이 많이 나왔다.
기가 막혀서 리스트로 작성해봤는데 10개는 족히 넘었다.
그리고 설명이랍시고 나와있는 친절한 그림들도 이해가 안간다.
보이지 않는 세계에 대한 상상의 시작인가보다.
길었던 구글링을 뒤로하고 일단 먼저 그림마다 나와있는 CPU 옆의 작은
Register에 대해서 좀 알아야 겠어서 공부를 해봤다.
1. Register : 영특한 CPU의 기민한 수행비서
Register
는 영특한 CPU의 기민한 수행비서이다.
이 녀석과 종일 시름하며 내린 나의 결론이다.
기억에서 사라지기 전에 좀 기록해놓자면
CPU는 엄청 똑똑하고 능력있는 오너라서 해야할 일이 너무 많다.
그래서 움직임이 매우 빠르고 부지런한 register
들에게 잡무를 맡겼다.
CPU: 아까 걔가 뭐라 그랬다고?
Register: 1206
CPU: 그래 고마워, 다음~
Register: (쌩~)
이런 느낌으로…
그리고 이제서야 ALU(Arithmetic Logig Unit)
가 뭔지 조금 감이 왔고, 반가산기와 가산기 구현이 어떤 의미에서 시작된 거였는지도 알 것 같다. 오늘 학습하려했던게 사실 CPU(Central Processing Unit)
에 대한 내용은 아니었지만 궁금한걸 떠나서 이 부분을 모르고는 이해가 안갈 것 같은 나는 여기까지 오게 됐고, 이제서야 그 동안 CPU
라고 불렀던게 뭔지 조금 알 것만 같다.
2. Register의 종류
Register
의 종류도 여러가지인데 많은 글들을 읽었고, 그 중에서도 이 글이 내게는 조금 더 와닿게 설명이 됐다.
크게 범용 레지스터
, 세그먼트 레지스터
, 컨트롤 레지스터
정도를 많이 사용한다고 한다.
그림에서 볼 때, R
로 시작되는건 64비트이다. 32비트는 E
로 시작하는데 개형은 거의 비슷하다고 한다.
오늘 나는 이 중 프로그램 실행 관련 레지스터
까지 들여다보고 말게 되었다.