process 관련 설명: https://chan4im.tistory.com/33

 

this->OS.code(2)

OS Architecture: monolithic kernel과 micro kernel 두 종류가 있다. monolithic kernel micro kernel 단일체(monolithic)여서 OS 실행속도가 빠르다. 또한 Kernel 내부에 구현되어 있어서 내부함수로 call이 진행된다. 예: UNIX

chan4im.tistory.com

 

※ 프로세스 (process)

실행되는 프로그램으로 메모리가 할당된다.

 

Ex. Stack 과정

 

§ 왜? heap 영역을 사용하게 된 것일까?

그림 1.

 

 

 

 

 

 

※ malloc, calloc, realloc  /  free(ptr)

heap영역에 할당해야 하므로 포인터에 대한 연산으로 진행하는 경우가 대부분이다.

malloc: 인자가 1개이다. (memory allocation의 줄임말)

int **arr;
int X, Y;
arr = (int**) malloc (sizeof(int*) * Y);
for(int i = 0; i < Y; i++){
    arr[i] = (int*) malloc(sizeof(int) * X);
}

for(int i=0; i < Y; i++){
    free(arr[i]);
}
free(arr);

calloc:  인자가 2개이다. (clear allocation의 줄임말로 할당된 메모리가 0으로 초기화된다.)

int **arr;
int X, Y;
arr = (int**) calloc (sizeof(int*), Y);
for(int i = 0; i < Y; i++){
    arr[i] = (int*) calloc(sizeof(int), X);
}

for(int i=0; i < Y; i++){
    free(arr[i]);
}
free(arr);


realloc:
인자가 2개이다. (re allocation의 줄임마로 포인터의 크기를 재조절한다.)

int *ptr = (int*) malloc (sizeof(int) * 4);
for (int i = 0; i < 4; i++) {
    ptr[i] = i+1;
}
ptr = (int*)(realloc(ptr, 6 * sizeof(int)));
ptr[4] = 4;
ptr[5] = 5;

 

[할당 과정 설명]

 

왼쪽 코드는 그림1의 문제를 해결한 코드이다.

 

 

 

 

 

+ Recent posts