210115 개발일지(39일차) - 컴퓨터 시스템 9.9장 Malloc Lab 프로젝트(1) : Malloc Lab 과제 설명, implicit방법과 explicit방법, 단편화

고재개발·2021년 1월 15일
0

Computer System

목록 보기
7/13

Malloc Lab 과제란?!

말록랩은 '동적 메모리 할당' 방법을 직접 개발하면서 메모리, 포인터 개념에 익숙해질 수 있는 과제다. 랩 코드를 직접 수정하고, 채점 프로그램을 실행하면서 '내 점수'를 알 수 있다.
즉, malloc()함수와 free()함수를 직접 만드는 것이라고 생각하면 된다.

먼저, implicit 방법으로 구현해 볼 예정인데 이는 컴퓨터시스템 9.9장에 나와 있다.
그 후 explicit 방법과 segreagted free 방법에 대해서 고민해볼 예정이다.

동적 메모리 할당의 필요성

가장 큰 이유는, 프로그램을 실행시키기 전에 자료 구조의 크기를 알 수 없는 경우들이 있기 때문이다.
미리 어떤 배열의 크기의 값을 정적으로 정의하고 시작해도 되나, 실제 필요한 크기를 몰라 문제가 생기는 것이다. 그 값이 커도 문제고 작아도 문제다. 필요한 크기보다 작은 값을 정의하고 시작하면, 값을 늘려 다시 컴파일 해야한다. 큰 값을 정의하고 시작하면 메모리 낭비가 되기 때문이다.

implicit 방법과 explicit 방법

두 방법의 차이는 아래 사진을 보면 된다.

  • implicit 방법은 할당된 블럭과 프리한 블럭이 모두 연결되어 있다.
  • explicit 방법은 프리한 블럭끼리만 연결되어 있다고 할 수 있다.
    implicit 구현이 더 쉽기에.. implicit 먼저 과제를 하는 것이다.

단편화(Fragmentation)

단편화는 RAM에서 메모리의 공간이 작은 조각으로 나뉘어져, 사용 가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태를 말한다.
단편화에는 내부단편화와 외부단편화가 있다.

1. 내부 단편화(Internal Fragmentation)

아래 그림과 같이, 할당된 블럭 안에 낭비되고 있는 부분이 있다. 이 부분들 때문에 새로운 메모리 할당이 불가한 경우를 내부단편화라고 한다.
출처(https://sycho-lego.tistory.com/m/9)

2. 외부 단편화(External Fragmentation)

외부단편화는 아래 그림과 같이, 메모리 조각들을 합치면 새로운 메모리 할당이 가능하지만 연속적인 공간이 아니라서 메모리를 할당할 수 없을 때를 부른다.
출처(https://sycho-lego.tistory.com/m/9)

단편화 문제들을 해결할 수 있는 방법은 다음에 알아보자.(꼭!)

profile
고재개발

1개의 댓글

comment-user-thumbnail
2021년 1월 18일

ㅋㅋㅋㅋㅋ 귀여워 알아보자 ! 꼭 !

답글 달기