- 메모리 관리가 필요한 이유?
- 메모리의 성능도 올라가지만 그에따라 소프트웨어의 성능도 올라가므로 메모리 부족현상은 계속 발생이 되었다.
- 제한된 메모리를 최대한 효율적으로 사용하기 위해서 메모리 관리전략이 필요하다.
- 효율적인 메모리 관리 3가지
- 동적적재
- 모든 프로그램을 적재하는것이 아니라 반드시 필요한 루틴과 데이터만 적재하는 기법
-
루틴: 어느 프로그램이 실행될때 불려지거나 반복해서 사용되도록 만들어진 코드들
- 동적연결
- 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점까지 미루는 기법
- 스와핑
- 실행중이지 않은 프로세스를 저장장치인 swap영역으로 이동하여 메모리를 확보하는 기법
- 잦은 스와핑시 단점
- 단편화
- 잦은 메모리 관리가 일어나면 메모리사이에 틈이 생기는데 메모리 상으로는 올라올수 있지만 할당이 불가능한 상태를 단편화
- 내부 단편화
- 메모리를 할당할때 프로세스가 사용할 양보다 더 넉넉하게 메모리가 할당이 되어서 메모리 낭비가 되는 현상
- 외부 단편화
- 메모리 할당,해제 순서가 반복되어서 중간중간의 틈이 모여서 프로세서가 할당할 공간이 충분하지만 할당을 하지못할때 생기는 현상입니다.
- 단편화
- 해결 방법
- 압축 : 외부 단편화를 해소하기 위해서 한쪽으로 찌부 시키는 과정. 미미한 효과
- 페이징 : 페이징 기법은 사용하지 않는 프레임을 페이지에 옮기고, 필요한 메모리를 페이지 단위로 프레임에 옮기는 기법 (페이지와 프레임을 대응시키기 위해 page mapping과정이 필요해서 paging table을 만든다.)
- 페이지: 보조기억장치 주기억장치를 이용한 가상메모리를 같은 크기의 블록으로 나눈 것
- 프레임: RAM을 페이지와 같은 크기로 나눈 것
- 예) 4100짜리 프로세스라면 1000짜리 물리메모리 4개와 100짜리 하나면 가능하지만 1000짜리 5개를 사용해서 900의 내부 단편화가 일어난다.
- 세그멘테이션 : 페이징 기법에서는 같은 크기로 분할을 했지만 세그멘테이션에서는 유동적으로 크기를 조절하면서 분할. 내부 단편화는 사라졌지만 중간에 해제하면서 메모리틈이 생기기 때문에 외부단편화는 해결을 못하고 있다!
'Computer Science' 카테고리의 다른 글
[운영체제] 캐시 메모리, Cache Memory (0) | 2022.03.05 |
---|---|
[운영체제] 단편화 (0) | 2022.03.05 |
[운영체제] 프로세스 동기화 (0) | 2022.03.04 |
[운영체제] Swapping, 스와핑 (0) | 2022.03.04 |
[운영체제] Context Switching, 컨텍스트 스위칭 (0) | 2022.03.03 |