오래 못 할 짓 하지 않기
[ 운영체제 ] 12. 메모리 할당 본문
연속 메모리 할당
: 프로세스에 연속적인 메모리 공간을 할당
메모리에 프로세스 A의 크기만큼 할당 → 그 다음 B만큼 할당...
공간을 여러 개로 나누지 않고, 물리적 메모리 한 곳에 연속적으로 = 차곡차곡 적재하는 방식
스와핑
: 현재 사용되지 않는 프로세스들 → 보조 기억 장치의 일부 영역 ( = 스왑 영역 )
그렇게 생겨난 빈 공간에 새로운 프로세스들 적재 하는 것
- 안 쓰는 것들은 메모리에 빼두고, 지금 쓸 것들만 메모리에 두기 때문에
효율적인 관리가 가능하다.
* 안 쓰는 거 쫓아내는 거 = 스왑 아웃 / 쓸 거 메모리에 데려오는 거 = 스왑 인
Case)
[ 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기 ] 일 때
( 적재 순서 A - B - C - D )
메모리에 프로세스 A 적재
▶ 메모리에 프로세스 B 적재
▶ 메모리에 프로세스 C 적재
▶ 메모리에 프로세스 D를 적재하려고 하는데 공간이 없음
- 당장 실행될 필요 없는 B를 스왑 아웃 시키고 D를 적재
▶ 메모리에 프로세스 B를 적재하려고 하는데 공간이 없음
- 당장 실행될 필요 없는 A를 스왑 아웃 시키고 B를 스왑 인 시킨다.
메모리 할당
: 프로세스는 메모리의 빈 공간에 할당되어야 한다.
만약 빈 공간이 여러 개 있다면??
● 할당 방식
1. 최초 적합 (first-fit)
: Os 가 메모리 내의 빈 공간을 순서대로 검색하다가
적재할 수 있는 공간을 발견하면, 그 공간에 프로세스를 적재
- 특징 : 검색 최소화 / 빠른 할당 가능
■ 위 사진에서는 메모리에서 A에 적재된다.
2. 최적 적합
: Os가 빈 공간을 모두 검색한 뒤, 적재 가능한 가장 작은 공간에 적재
■ 위 사진에서는 메모리에서 C에 적재된다.
3. 최악 적합
: Os가 빈 공간을 모두 검색한 뒤, 적재 가능한 가장 큰 공간에 적재
■ 위 사진에서는 메모리에서 B에 적재된다.
외부 단편화
하지만 이렇게 연속적으로 메모리에 할당하는 것은
효율적인 방법이 아니다.
→ 외부 단편화 문제가 발생하기 때문
● 외부 단편화란
: 프로세스를 할당하기 어려울만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상
위와 같이 프로세스들이 적재되어 있다.
▶ 프로세스 B와 D가 끝나서 해당 메모리 할당이 해제되었다.
▶ 30MB + 20MB = 50MB 공간이 생겼다.
▶ 하지만 50MB 프로세스는 할당할 수 없다 ㅠㅠ
왜냐면 총 공간이 50MB 생겼지만, 어떤 공간도 50MB을 감당할 수는 없기 때문이다.
외부 단편화 예시)
● 외부 단편화 해결 방법
1. 메모리 압축 (Compaction)
: 여기저기 흩어져있는 빈 공간들을 하나로 모으는 방식
- 프로세스를 적당히 재배치 ▶ 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법이다.
● 단점
[ 흩어져 있는 빈공간을 하나로 합치는 과정 ] + [ 실행되고 있는 프로세스들을 재배치하는 과정 ] 에서
많은 Overhead 야기할 수 있고, 그동안 프로세스들이 일을 제대로 수행하지 못할 수도 있다.
→ 따라서 해결법으로 가상 메모리 기법, 페이징을 사용한다.
(출처)
유튜브 한빛미디어
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 14. 페이지 교체 / 프레임 할당 (0) | 2024.01.23 |
---|---|
[ 운영체제 ] 13. 페이징을 통한 가상 메모리 관리 (0) | 2024.01.18 |
[ 운영체제 ] 11. 교착 상태 해결 방법 (0) | 2024.01.13 |
[ 운영체제 ] 10. 교착 상태 (0) | 2024.01.13 |
[ 운영체제 ] 9. 프로세스 동기화 기법 (0) | 2024.01.12 |