CS공부
약 한 달 동안 CS를 공부한 결과, 드디어 CS 페이지를 개설할 수 있었습니다.
사실 아직 많이 부족하다고 생각하지만, 기초적인 부분에 대해 간단하게 공부한 내용을 올리면, 잘못된 정보를 전달하지 않을 것 같습니다.
초반에는 CS 공부를 위해 가장 유명한 '공룡책' 위주로 공부하려 했으나, 실제로 '공룡책'을 제대로 이해하는 것이 상당히 어려웠습니다.
따라서 '공룡책'을 읽기 위한 CS의 기본 공부를 하려 합니다.
CPU가 무엇인지, 프로세스, 스레드, PCB, TCB 등의 기본적인 지식을 습득하고, 약 3개월 후에는 '공룡책'을 1년 동안 공부할 계획입니다.
CS공부를 하는 이유
CS공부를 무슨 1년 이상 공부할 계획인가 싶겠지만, 다른 공부도 병행하면서 하는 지라 이도 부족하다 생각합니다.
컴퓨터 구조에 대한 학습은 끝이 없습니다.
만약, 레지스터에 대해 깊게 공부한다면, 석사와 박사 과정을 거쳐서 공부해도 더 공부할 것이 많을 거라 생각합니다.
그러므로 제가 CS 공부를 하는 이유만큼만 CS 공부에 몰두하려 합니다.
저는 제가 사용하는 모든 함수가 어떻게 동작하는지 이해하는 것을 목표로 합니다.
예를 들어, 유니티의 코루틴 같은 비동기 함수가 어떻게 비동기적으로 동작하는지, 그리고 유니티가 기본적으로 단일 스레드를 사용하는데, 멀티 스레드 환경에서 어떤 요소가 필요하며 주의할 점은 무엇인지 알고 싶습니다.
이러한 지식을 충족하는 것이 저의 CS 공부의 목적이므로, 그 단계에 도달하면 CS 공부를 그만둘 예정입니다.
따라서, 다른 사람들보다 더 깊게 공부하는 부분도 있고, 반대로 얕게 공부하는 부분도 있습니다. 예컨대 좀비 프로세스 같은 것은 유닉스 리눅스 서버 개발자라면 깊게 이해해야 하겠지만, 저 같은 유니티 클라이언트 개발자에게는 크게 신경 쓸 필요가 없습니다. 왜냐하면 대부분 좀비 프로세스가 생성되지 않는 운영체제에서 개발을 진행하기 때문입니다.
이러한 접근 방식으로 CS를 공부할 예정이므로, 저와 비슷한 목적의 개발자분들에게는 제가 공부한 내용이 도움이 될 것이라고 생각합니다.
CS 기초
제가 CS를 공부하는 순서는 제가 중요하게 여기는 순서로 정했습니다.
어떤 분들은 메모리가 중요하다고 생각하여 메모리를 첫 번째 장으로 선택할 수 있고, 어떤 분들은 CS의 역사를 첫 번째 장으로 선택할 수 있습니다.
저는 CPU가 프로그램을 처리하는 과정을 첫 번째 장으로 선택했습니다.