목록메모리구조 (2)
안 쓰던 블로그
1. 코드(텍스트) 영역 유저가 작성한 소스코드가 들어가는 영역, 실행할 프로그램의 코드가 바이너리화 되어 저장된다 이곳의 명령 실행 순서는 순차적이지 않다. 왜냐하면 하이레벨 언어 구조가 jump, call 등을 많이 쓰기 때문이다 그래서 순서를 맞추기 위해 EIP 레지스터를 이용한다 EIP 레지스터는 다음에 실행할 명령의 메모리 주소가 저장되어 있는 레지스터로, 현재 실행 중인 명령어가 종료되면 프로세서는 자동으로 EIP 레지스터에 저장된 명령어를 실행한 뒤에 그 다음 명령어를 EIP에 저장한다 프로그램이 실행되면 EIP 레지스터는 코드 영역의 맨 처음 위치로 설정된다 이곳에는 진짜 코드만 저장하고 있기 때문에 쓰기가 금지되어 있다. 읽기만 가능하다 2. 데이터 영역 초기값이 있는 전역(global)..
메모리 구조 프로그램이 실행되면 로더에 의해서 디스크에서 주기억장치로 프로그램이 적재된다 프로그램은 메모리 상에서 4가지 세그먼트로 나뉘어 스택 형태로 구현된다 일반적으로 컴파일러들은 이런 식으로 실제 코드 부분/데이터 부분을 개념적으로 구분해서 사용한다 물론 이게 물리적으로 딱 정해진 것이 아니라, 사용자가 어디서부터 어디는 코드 영역, 어디는 데이터 영역이라고 임의로 구분해서 사용하는 것일 뿐이다 CPU나 메모리 같은 헤드웨어 입장에서는 값이 데이터인지 코드인지 구분하지 않는다 1. 코드 세그먼트 프로그램 소스코드 저장 2. 데이터 세그먼트 전역변수 global, 정적변수 static, 배열 array, 구조체 structure 등이 저장된다 초기화 된 데이터는 이곳에 저장된다 2-1. BSS 데이터..