물리 메모리에는 소프트웨어가 올라간다.
이 메모리를 잘라서 cpu가 연산해야 하므로 1차 메모리에 올린다.
로딩해야하는데 프로그램마다 크기가 제각각이기 때문에 효율적으로 관리하지 않으면 메모리 낭비가 발생할 수 있다.
따라서 메모리 관리가 필요하다.
연속 메모리 할당 기법
프로그램들이 실행될 때 필요한 메모리를 연속된 블록으로 할당하는 기법이다.
단편화 (fragmentation)
프로그램이 프로세스화 되어 실행되면 각각을 연속된 공간에 할당해주거나,
일정 고정 단위 페이지로 나누어 할당할 수 있다.
두 방식 모두 메모리에 빈 공간이 생기며, 이를 단편화(fragmentation)라고 한다.
- 외부 단편화: 프로그램이 할당되진 않았지만 크기가 작아서 프로그램을 올릴 수 없는 영역
- 내부 단편화: 분할 크기보다 작은 프로그램 적재 시 남는 영역
메모리 관리 기법
가변 분할 방식 (세그먼테이션)
가변 방식으로, 프로그램이 프로세스화 되어 실행되면 연속된 공간에 할당한다.
장점:
논리적 단위를 촘촘하게 쓸 수 있다.
프로그램의 논리적 구조를 반영해 메모리를 관리할 수 있으며,
각 세그먼트에 접근 권한을 설정할 수 있어 보안성이 높다.
주소 변환 방식:
세그먼트 번호와 오프셋을 이용해 물리 주소를 계산한다. 논리 주소는 세그먼트 번호와 오프셋으로 구성되며,
세그먼트 테이블을 참조해 물리 주소로 변환한다.
문제점과 해결방안:
프로세스 A가 사용하던 공간이 회수되지 않으면 외부 단편화가 발생한다.
이를 해결하기 위해 압축(compaction) 기법을 사용한다.
[압축]
또한 세그먼트의 크기가 가변적이기 때문에 메모리 관리가 복잡할 수 있고
고정 분할 방식 (페이징)
고정된 크기의 페이지로 나누어 메모리를 할당하는 방식이다.
os가 나눠주는 대로 연속되거나 쪼개질 수 있다.
페이지는 물리 페이지의 프레임과 대응된다.
등장배경:
메모리 단편화의 문제를 해결하기 위해 등장했다.
연속된 메모리 공간을 필요로 하지 않기 때문에 외부 단편화를 방지할 수 있다.
장점:
외부 단편화가 발생하지 않는다.
모든 페이지가 동일한 크기를 가지므로 관리가 용이하다.
주소 변환 방식:
페이지 번호와 오프셋을 이용하여 물리 주소를 계산한다.
논리 주소는 페이지 번호와 오프셋으로 구성되며,
페이지 테이블을 참조하여 물리 주소로 변환한다.
문제점과 해결방안:
페이지 테이블의 크기가 커질 수 있으며,
이를 해결하기 위해 다단계 페이지 테이블, 해시 테이블, 역페이지 테이블 등을 사용한다.
또한 페이지 내부의 사용되지 않는 공간은 내부 단편화를 유발할 수 있다.
비교
세그먼테이션은 프로그램의 논리적 구조를 반영하여 메모리를 할당한다.
세그먼트 단위로 메모리를 할당하고, 논리적 단위로 메모리를 관리할 수 있다.
페이징은 고정된 크기로 메모리를 나누어 할당한다. 페이지 단위로 메모리를 관리하며,
외부 단편화 문제를 방지할 수 있지만, 내부 단편화가 발생할 수 있다.
+⍺
- 혼합 기법 :
일부 시스템에서는 세그먼테이션과 페이징을 혼합하여 사용하는데, 이를 통해 두 기법의 장점을 결합할 수 있다.
예를 들어, 세그먼트를 페이지 단위로 나누어 관리하는 방식이 있다.
효율성 향상 기법 :
- TLB (Translation Lookaside Buffer) : 주소 변환 속도를 높이기 위해 TLB를 사용하여 자주 사용하는 페이지 테이블 엔트리를 캐시한다.
- 스와핑 : 메모리가 부족할 때, 사용하지 않는 페이지를 디스크로 내보내고, 필요할 때 다시 가져오는 스와핑 기법을 사용한다.
'CS' 카테고리의 다른 글
CS_운영체제_Paging: Smaller Table (0) | 2024.06.25 |
---|---|
CS_운영체제_TLB (0) | 2024.06.25 |
CS_운영체제_가상메모리 요구 페이징과 페이지 폴트 (1) | 2024.06.23 |
CS_운영체제_PCB & Context Switching (0) | 2024.06.18 |
CS_운영체제_주소 변환(Address Translation) (0) | 2024.06.18 |