본문 바로가기

백엔드/os 및 일반 지식

컴퓨터 아키텍쳐와 운영체제 - 메모리 상의 데이터 배치, 프로그램 실행

반응형

** 메모리 상의 데이터 배치

- 정적이라는 말은 프로그램을 작성할 때 얼마나 많은 메모리가 필요한지 알고 있다는 뜻이다.

- 반대로 동적 데이터는 크기를 알 수 없는 것을 말하는데, 이 동적 데이터는 주로 정적 데이터가 차지하는 영역의 바로 위 영역에 쌓이며

이를 힙이라고 한다.

- 데이터를 많이 저장하면, 스택은 아래로, 힙은 위로 자라난다.

- 힙과 스택이 서로 충돌하지 않기 위해 메모리 배치에는 사소한 변형이 있기도 한다.

 

 

**프로그램 실행

- 여러 프로그램에서 쓸만큼 유용한 함수를 한 군데 모아놓은 것을 라이브러리라고 한다.

- 나눠진 프로그램을 하나로 엮거나 연결할 방법으로 링커라는 특별한 프로그램을 사용한다.

- 링커는 실제로 실행할 수 있는 프로그램을 만들어내는 프로그램이다.

- 과거 라이브러리를 프로그램의 나머지 부분과 직접 연결해 실행 파일을 만들었는데, 이를 정적 링크라고 한다.

- 하지만 이는 귀한 메모리를 낭비하기에, 공유 라이브러리를 사용하는 동적 링크를 발명했다.

- 공유 라이브러리에서 가져온 명령어는 모든 프로그램에서 공통적이기에, 스택과 힙을 사용하도록 함수를 설계해야한다.

- 프로그램에는 진입점이 있다. 하지만 런타임 라이브러리에 있는 명령어가 가장 먼저 실행되고, 나중에 진입점의 명령어가 실행된다.

 

반응형