728x90

실제로 os는 메모리를 페이지 맵핑을 하기 때문에 프로세스에서 관리하는 논리적 주소와 실제 물리적 주소는 다르다. 운영체제에게 메모리를 요청하면 최소 페이지 사이즈(4kb)로 할당 해준다. 프로세스에서 접근하는 메모리 주소는 맵핑된 주소기 때문에 절대 다른 프로세스와 중복되지 않으니 걱정하지 않고 써도 된다.

 

우리는 이 페이지 단위로 반환해주는 메모리 주소값에 데이터를 올려놓고 쓰면 된다.

 

https://jhnyang.tistory.com/290

 

[운영체제 OS] 메모리 관리기법 - 페이징 (paging)이란? 내부 단편화(Internal Fragmentatoin)에 대해 알아

[운영체제 완전정복 링크 모음] 안녕하세요 양햄찌 블로그 입니당. 오늘은 드디어 운영체제에서 중요한 한 섹션을 차지하고 있는 페이징(paging)에 대해 살펴보려고 해요. 오늘 진행하려는 포스팅

jhnyang.tistory.com

 

그럼 페이지기법은 왜 나왔을까?

 

실제로 프로세스 메모리를 조작하기 위해서는 프로세스 메모리가 linear 한 상태가 되어야 한다.

그리고 물리적 메모리도 linear하게 매핑해서 쓰다보니 메모리 할당 반납하는 과정에서 메모리 파편화가 일어난다. 물리적 주소의 메모리 파편화를 external 파편화라고 한다. 그래서 중간에 페이지 맵핑 테이블을 두고 프레임(물리적 주소에서는 페이징을 프레임이라고 함)단위로 아무대나 할당하고 맵핑  테이블을 이용해서 프로세스에서는 linear한 생태로 사용하겠금한다.

 

반대로 이렇게 하면 논리적 메모리는 linear를 유지하기 떄문에 이쪽에도 파편화가 생길 수 있는데 이를 internal fragment라고 하고 이는 external fragment 보다 작기 때문에 페이징 방식을 쓴다.

 

결론

이후 단계를 보기 위해 이해해야 하는 내용은 다음과 같다.

- 논리주소를 liner한 상태로 유지하고 물리주소의 external 파편화를 줄이기 위해 페이징 단위로 테이블 참고하여 맵핑 하는 과정을 거친다.

- 뿐만 아니라 페이지 단위로 메모리에 속성을 부여하기도 한다(ex. 읽기용, 쓰기용 등) 왜냐하면 1바이트 단위로 메모리 속성을 지정하는 것은 그 속성 정보를 저장하기 위해서 그만큼의 메모리가 또 필요하기 때문에 비효율적.

728x90

+ Recent posts