비전공자가 CS를 공부하면서 느낀것들입니다..
C로 1년가까이 이것저것 시스템, 네트워크, 그래픽 등의 프로그래밍을 하면서 관련된 지식들은 공부를 했습니다
그러면서 운체와 컴구를 공부하기 시작하니
이제 컴퓨터를 켰을때 어떻게 윈도우가 실행이되고 그 수많은 프로세스들이 실행되면서 메인보드의 CPU와 메모리, 캐시가 어떤식으로 돌아가고
예를 들면 컨텍스트 스위칭을 할때 실제로는 어떤식으로 커널에 PCB에다 레지스터저장한다든지
인터럽트가 발생했을때 혹은 시스템콜과같은 핸들러는 어떻게 되는건지, 이때는 레지스터 정보를 저장하는 방식이 왜 위와는 다른건지 등등
이런게 이제 대충 머릿속으로 그려지더라구요
그럼 결국 컴퓨터는 프로그래밍된 코드(혹은 구멍뚫린페이퍼)를 실행하기 위해 만들어졌으니, 이러한 프로그램들을 관리하는 프로그램을 만들기 위해 운영체제가 만들어졌고
여러 문제들을 해결하기위해 메모리의 가상화 및 CPU의 스케줄링 등이 쓰이고 등등
이렇게 되니, CS를 배우는 이유는 내가 만드는 프로그램이 어떻게 돌아가는지에 대해서는 물론, 실행되고 있는 프로그램들이 어떤식으로 구현 혹은 어떤 기능을 사용해서 돌아가고 있는것이고, 문제가 생긴다면 이런부분에서 문제가생겼을 것이라고 예측이 가능하며
새로운 프레임워크, 기술스택을 배우더라도 결국 이를 실행하는것은 컴퓨터이기 때문에 cs를 배워서 컴퓨터가 동작하는 방식을 이해하는게 결국 더 빠르게 배우고 실제 추상화가 많이된 이 기술이 실제로는 어떤식으로 돌아가는지 추측이 가능해지니까 라는 생각이 들었습니다
거기서 또 컴퓨터와 운영체제를 만들 때 이러저러한 사항들을 해결하기 위해 고안된 여러 방법들에 대해서도, 결국 저희가 고민하고 만들어야 하는 프로그램들에도 쓰이거나 응용될 수 있는 아이디어를 얻을수 있기도 한거같다는 생각이 들었습니다
처음 비전공자로 컴퓨터를 입문할 때 CS지식의 필요성에 대해 여기저기 묻고 다녔으나 명쾌한 해답을 얻을 수 없었습니다. 그저 연차쌓이기 시작하면 그거 없이는 문제해결이 불가능하다, 취업할때 면접 뚫으려면 알아야한다...
문득 생각나서 야밤에 글 한번 끄적여봤습니다.
아직 취준중인 비전공자로써, cs공부가 어렵지만 재미있게 하면서 나름대로 의미를 부여해봤습니다.
댓글을 남기려면 로그인이 필요합니다.
로그인 후 이 페이지로 돌아와 바로 댓글을 남길 수 있습니다.
