"컴파일은 됐는데 실행하다 뻑난다"의 의미 부업(?)처럼 C를 공부하다 보면 "이건 컴파일할 때 정해지고~" "이건 컴파일러는 모르고 실행할 때 정해지고~" 같은 말들을 많이 듣게 된다. 또 계속 '컴파일 에러'와 '런타임 에러'에 대해서도 많이 듣게 된다. 이 개념들에 대해서 어렴풋하게는 이해하고 있는데, 좀 제대로 알아둬야 언어들이 동작하는 원리를 알 것 같다는 생각이 들어서 정리하는 글. 컴파일 타임(Compile time)과 런타임(Runtime) 기본적으로 컴파일 타임은 말 그대로 컴파일을 하는 시간이다. 컴파일러가 소스 코드를 기계어(or 어셈블리어)로 변환하는 때를 의미한다. 이 때 컴파일러는 소스코드를 한줄한줄 읽으면서 정해진 syntax에 따라 해당 코드를 기계어로 변환한다. 이 때 에러가 나는 것이 '컴파일 에러'다. 컴파일러가.. 재귀함수는 스택 메모리에서 어떻게 동작할까? 재귀함수로 DFS 풀기의 늪에 빠져 있다가 정리하는 글. 지금까지 재귀함수는 대충 이렇게 작동한다~ 하는 정도로만 이해하고 있었는데, 코드스쿼드 메모리 구조 관련 미션 하다가 stack에 대해서 조금 더 공부하면서 정리해 본다. 프로그램(프로세스)과 메모리 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 올라가야 한다.(load). OS가 프로세스에 제공하는 메모리 공간은 code 영역: 실행할 프로그램의 코드가 저장된다. 읽기 전용이므로 프로그램(프로세스)은 코드 영역을 침범해 쓰기를 시도할 수 없다. data 영역: 프로그램의 전역변수나 정적 변수를 저장/할당하는 공간이다. heap 영역: 사용자가 동적으로 메모리를 할당하는 영역. C에서는 malloc.()/new 연산자를 통해 할당하고, fr.. 리눅스... 유닉스 딸이에요 코드스쿼드 미션 하면서 추천받은 을 읽었다. 읽다 보니 궁금해지는 지점들이 많아서 관련 내용들을 이리저리 찾아 보았다. 재미있는 부분들이 많아서 글로 정리해 본다. 사장님 저희도 좋은 컴퓨터 좀 사주세요 1960년대 초에는 MIT에서 개발한 CTSS라는 OS가 많은 인기를 끌었다. 당시 대부분의 OS는 천공 카드에 프로그램을 입력하고 결과 나올 때까지 한 사람씩 하염없이 기다려야 했다. 그러던 와중에 CTSS가 시분할 시스템을 도입하면서 생산성이 급상승했고, 이에 고무된 MIT는 더 발전된 OS를 만들겠다는 꿈을 꾼다. 그래서 개발되기 시작한 것이 멀틱스(Multics)라는 운영체제다. 결론부터 말하면 힘을 너무 주고 개발을 시작한 나머지, 멀틱스는 필요 이상으로 복잡하고 비대해졌다. 당시 MIT는 내부.. 이전 1 2 다음