배경
- 프로세스는 PCB와 Stack,Data,Code,Heap 등 다양한 정보들을 보유중인 독립적인 메모리 공간이 있음
- 이 공간은 os, 타 프로세스도 접근할 수 없으나 OS가 사용하는 메모리 영역은 다른 프로세스가 접근할 수 있음. 이러한 특수성 때문에 OS에서 메모리를 관리함
1) Swapping
- 메모리 관리 전략 중 하나
- 표준방식: 라운드로빈과 같은 스케줄링 알고리즘이 사용되며, CPU 할당이 끝난 프로세스는 보조 기억장치로 보내고 다른 프로세스의 메모리를 불러들임
- 장점 : 한정도니 메모리에 더 많은 프로세스 실행 가능
- 단점 : 보조 기억 장치에 있던 것을 다시 로딩시켜야 하므로 시간이 길게 걸림
Fragmention (단편화)
메모리 공간이 비효율적으로 사용되어 저장 공간이 낭비되는 것
- 단편화로 인해 생기는 현상
ㄴ 총 메모리 공간은 충분하지만 실제 사용이 불가능함
ㄴ 실제 사용 가능한 메모리 공간이 줄어들어 시스템 성능 저하를 일으킴 (사용할 수 있는 공간을 찾는 과정이 필요함, 페이지를 너무 자주 교체함, Swapping)
내부 단편화
할당된 영역 중 사용되지 않은 공간으로 인해 공간이 낭비되는 것
페이징 기법에서 나타나는 문제점 중 하나로, 한 페이지를 너무 크게 할 경우에 생기는 문제
외부 단편화
메모리 여유 공간, 즉 메모리 안의 프로세스 간의 간격이 띄엄띄엄 존재해서 실제로 사용할 수 없는 경우
2) Paging(페이징)
하나의 프로레스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법
외부 단편화 문제를 해결하기 위해 나온 개념 , 물리 메모리와 논리 메모리로 분리됨
- 물리 메모리 > frame이라는 고정 크기로 분리
- 논리 메모리 > 프로세스가 점유하는 메모리로, 페이지라는 고정된 크기의 블록으로 분리
문제점 : 내부 단편화 문제의 비중이 늘어남
3) Segmentation(세그멘테이션)
서로 다른 크기의 논리적 단위인 '세그먼트'로 동작하는 메모리 관리 기법
ex) 220MB의 공간을 할당받는 프로세스는 함수는 각각 50 / 50 / 120 크기이다. 이 크기별로 페이징 기법과 동일하게 프로세스를 나누어 메모리에 배치한다.
페이징과 세그멘테이션 비교
Fragment 관점
- Paging - 내부 단편화 발생
- Segment - 외부 단편화 발생
Size
- Paging - 고정적인 크기
- Segment - 가변적인 크기