728x90
CS
메모리 풀(Memory pool)
- 메모리 풀은 고정된 크기의 블록을 할당하여 malloc이나 new 연산자와 유사한 메모리 동적 할당을 가능하게 해준다. malloc이나 new 연산자 같은 기능들은 다양한 블록사이즈 때문에 단편화를 유발시키고, 파편화된 메모리들은 퍼포먼스 때문에 실시간 시스템에서 사용할 수 없게 된다.
- 좀 더 효율적인 방법은 memory pool이라고 불리는 동일한 사이즈의 메모리 블록들을 미리 할당 해 놓는 것이다. 그러면 응용 프로그램들은 실행 시간에 핸들에 의해서 표현되는 블록들을 할당하고, 접근하고, 해제할 수 있다.
- 프로그래머가 할 수 있는 외부, 내부 단편화의 해결법이다. 프로그래머가 직접 메모리를 관리할 수 있는 특정 크기의 풀(pool)을 만들어서 그 풀에서 메모리를 가져오고, 사용이 끝나면 돌려준다.
장점
- 단편화를 완화할 수 있다. 할당/해제가 빈번할 때 new/delete를 통해 새로 할당/해제할 필요가 없이 풀에서 가져오고, 반납하면 되므로 비용이 크게 감소한다.
단점
- 메모리 풀은 프로그래머가 직접 메모리를 0부터 100까지 관리하겠다고 선언하는 것이나 다름없다. 즉, 모든 메모리 문제의 책임은 프로그래머가 가지게 된다.
- 사용하지 않을 때에도 풀을 유지해야 하므로 메모리 낭비가 생긴다.
페이징(Paging)
- 페이징이란 가상 메모리를 페이지로 나누어 다루는 기법이다.
- 페이지(가상 메모리 나눔의 단위)와 프로임(물리 메모리 나눔의 단위)은 1:1 대응되며 (가상 메모리의 주소값과 물리 메모리의 주소값은 다르므로, 자상 메모리 주소를 기반으로 물리 메모리 주소를 찾아가서 데이터를 가져온다.), 이로 인해 물리적으로 연속적이지 않아도 가상 메모리에서 연속된 메모리를 할당할 수 있기 때문에 외부단편화를 완화한다.
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.06.18 면접 (2) | 2024.06.18 |
---|---|
24.06.17 서버 (5) | 2024.06.17 |
24.06.15 CS (0) | 2024.06.17 |
24.06.14 C++ (0) | 2024.06.16 |
24.06.13 C++ (0) | 2024.06.13 |