티스토리 뷰

컴퓨터 공학/운영체제

메모리 관리 API

삼전동해커 2021. 4. 1. 16:38

메모리 관리 인터페이스에 대해 배워보자.

 

어떻게 메모리를 할당하고 관리해야 하는가.

 

메모리 공간의 종류

1.스택

스택 메모리에서 할당과 반환은 프로그래머를 위해 컴파일러에 의해 암묵적으로 이루어진다. 이러한 이유 때문에 자동 메모리라고 불린다.

예를 들어 func() 함수안에 x라는 정수 공간이 필요하다고 하자.

void func(){

    int x;

....

}

컴파일러가 나머지 작업을 수행하고, func()가 호출될 때 스택에 공간을 확보한다. 함수에서 리턴하면 컴파일러는 프로그래머 대신에 메모리를 반환한다. 함수 리턴 이후에도 유지되어야 하는 정보는 스택에 저장하면 안된다. 스택에 저장된 정보는 컴파일러에 의해 자동으로 반환되기 때문이다.

사용자 의도대로 공간을 확보하고, 리턴하려면 힙에 할당해야한다. 

void func(){

     int *x = (int *) malloc(sizeof(int));

....

}

첫번째 행에서 스택 할당과 힙 할당이 동시에 일어난다. 포인터 변수 *x를 만나면 정수 포인터를 위한 공간을 할당해야 한다.  프로그램은 malloc을 만나 정수를 위한 공간을 힙으로부터 요구한다. malloc은 그 정수의 주소(x의 주소)를 반환한다.  이 반환된 주소는 스택에 저장되어 프로그램에 의해 사용된다.

 

malloc함수

 

 

 

'컴퓨터 공학 > 운영체제' 카테고리의 다른 글

ADDRESS SPACES(주소 공간)  (0) 2021.04.14
segmentation  (0) 2021.04.12
주소공간 개념  (0) 2021.04.01
[운영체제]메모리 가상화  (0) 2021.02.16
단일 큐 스케줄링 구현  (0) 2021.02.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함