그러더니 근본적으로 cpu랑 커널, 실행 바이너리(파일) 간의 관계에 대한 의문을 가졌다.
이것저것 설명해주다보니 바이너리 컴파일까지 가버렸다. ㅋㅋㅋㅋㅋㅋ
설명을 들은 친구가 자료찾기 힘들다고 포스팅 같은 거 좀 해보라고 하길래 이 참에(드디어) 전반적으로 정리해서 블로그를 시작해보기로 마음먹었다.
- 일반 사용자에게 가까운 마우스를 움직여서 프로그램 아이콘 더블 클릭하기까지.
- 그 프로그램이 파일에서부터 메모리에 올라가면서 어떻게 프로세스로 실행되는지.
- 거기에 그 파일은 서로 다른 cpu는 왜 호환이 되지 않는지, 똑같은 cpu이더라도 호환되지 않는건 왜인지.
- 그럼 그 프로그램이 만들어지는 과정은 어떤지, 똑같은 프로그램을 여러 아키텍처에서 동작하게 하려면 어떻게 하는지.
이런 과정들 속에서 어떤 다양한 일들이 일어나는지!
사실 다루려고 하는 주제들에 들어간 여러 기술들은 하나하나가 되게 큰 항목들이다.
그리고 각 항목에 대한 디테일은 똑똑하신 분들께서 책이나 각종 자료에 너무 잘 정리해두셨다. ㅋㅋㅋㅋㅋㅋ
그러므로 이 시리즈에서는 상기의 주제를 기반으로 각 기술들이 어떻게 연결되는지, 언제 쓰이는지 알아보고자 한다.
(열심히 운영체제와 컴퓨터 구조를 공부해서 각 기술은 알겠으나 그래서 실제 컴퓨터를 할 때 어떻게 쓰이는지 감이 오지 않을 때!)
물론 내가 흥미있는 항목들의 디테일은 다른 시리즈로 열심히 올려보겠다!
좀 쉽게 말해보자면 다음과 같은 느낌이다.
- 롤 아이콘을 더블클릭하면 어떻게 롤이 실행될까
- 왜 롤은 윈도우용/맥용 클라이언트가 따로 있을까? 어차피 인텔 cpu인데 (왜 롤을 리눅스에서 바로 실행할 수 없을까?)
- 그럼 윈도우용/맥용 롤 클라이언트를 어떻게 따로 만들까?
하나하나 정리하면서 내가 잘 모르는 비어있는 부분도 채워보려 한다.
잘못된 내용 혹은 특정 아키텍처에 종속적인 내용이 있을 수 있습니다. ㅎㅎ
피드백은 언제든 환영입니다!!!
마침 CS 쪽에 대해 관심이 생겼는데 좋은글을 찾았네요 ㅎㅎ 응원합니다!