💡 페이징(Paging)
프로세스의 주소 공간을 페이지(page)란 단위의 고정된 사이즈
로 나누어 물리적 메모리에 불연속으로 저장
하는 방식 → 연속 할당에서처럼 연속적인 메모리 공간을 찾거나 만들 필요가 없음 → 외부 단편화 해결할 수 있는 메모리 관리 기술이다.
두루마리로 책을 작성하는 것과 사전형식으로 책을 작성하는 것의 차이처럼
한 프로세스의 논리 주소 공간을 동떨어진 공간들에 배정할 수 있도록 지원해준다.
- Dynamic allocation한 형태(동적할당)
: 한 프로세스에 대한 논리적인 주소를 물리적인 주소로 매핑해줌 (어디에 할당되든 일관되게 사용가능함 )
(참고로 모든 프로세스는 0번부터 할당 되어짐)
💡 페이지 테이블(Page Table)
- 페이지 매핑 테이블(Page mapping Table)
운영체제는 조각난 페이지들을 문제없이 수행하기 위해서, 즉 linear(일직선)으로 쭉 수행할 수 있게하기 위해 페이지 테이블을 통해 프로세스의 페이지 정보를 저장하고 매핑시켜준다.
페이지 방법론에서 메모리에 적재된 페이지들을 순차적으로 수행하게 된다면 순서가 요상해짐 (정상적인 수행의 어려움 ) 따라서, 페이지 테이블이 순서에 맞는 물리적 메로리 위치를 찾아준다!
- 페이지 번호와 페이지 오프셋
페이지 번호는 페이지 테이블을 접근할 때 사용된다.
페이지 오프셋은 페이지 테이블에서 반환된 물리 주소의 프레임에서 참조할 위치가 된다.
- [page → fram ] mapping과정 이해하기
[ 운영체제 ] 메모리 관리 1 - 페이징(Paging)
💡 페이징의 한계점
그러나, 모두 일정한 크기로 나누기 때문에 내부 단편화가 발생할 수 있음
💡 세그멘테이션(Segmentation)
페이징은 프로세스를 물리적으로 일정한 크기로 나눠서 메모리에 할당하는 것을 의미함.
반면, 세그멘테이션은 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치하는 것을 의미한다.
💡 세그먼트 테이블 (Segment Table)
주소 변환을 위해 세그먼트 테이블을 사용한다. page size가 동일하지 않기 때문에, frame 번호로 논리 주소와 물리 주소를 연결할 수 없다. 따라서 세그먼트 테이블의 각 항목은 기준점(base)와 한계점(limit)을 가지고 있다.
기준점(base)
: 물리적 메모리에서 그 세그먼트의 시작 위치를 나타낸다.한계점(limit)
: 세그먼트의 길이를 나타낸다. → 크기가 일정하지 않기 때문에 추가로 들어있는 정보
💡 세그먼테이션의 단점
세그먼테이션은 페이징과 유사하고 보호와 공유에서는 더 나은 성능을 보여주었지만, 현재 대부분은 페이징 기법을 사용한다. 그 이유는 세그먼테이션에는 치명적인 단점이 있기 때문이다.
그 이유는 세그멘테이션의 세그먼트 크기가 일정하지 않고 다양하기 때문이다. 세그먼트의 크기가 다양하기 때문에 다양한 hole이 발생해 외부단편화가 발생하여 메모리 낭비가 크게 된다.
참고
'CS' 카테고리의 다른 글
[DB] 💡레디스(Redis)란? (0) | 2022.09.08 |
---|---|
[OS] 기술 면접 질문 리스트 (0) | 2022.08.30 |
[OS] 페이지 교체 알고리즘 (0) | 2022.08.30 |
[OS] 시스템 호출(System calls) (0) | 2022.08.30 |
[OS] 인터럽트(Interrupt) (0) | 2022.08.30 |