4월8일 - 세그멘테이션과 페이징

Yullgiii·2024년 4월 8일
0
post-thumbnail

세그멘테이션과 페이징의 차이점

세그멘테이션은 메모리를 논리적이고 가변적인 크기의 세그먼트로 나눈다. 각 세그먼트는 프로그램의 논리적 구조를 반영한다. 반면, 페이징은 메모리를 고정된 크기의 페이지로 나누고, 이 페이지들이 물리 메모리의 프레임에 매핑된다. 페이징은 프로그램의 논리적 구조와 무관하게 작동한다.

페이지와 프레임

페이지는 가상 메모리의 고정된 크기의 단위이며, 프로세스의 가상 주소 공간을 구성한다. 프레임은 물리 메모리의 같은 크기의 단위로, 페이지가 물리 메모리에 매핑될 때 사용된다.

내부 단편화와 외부 단편화

내부 단편화는 할당된 메모리 공간이 전부 사용되지 않는 경우 발생한다. 이는 주로 페이징 시스템에서 발생한다. 외부 단편화는 충분한 총 메모리 공간이 있음에도 불구하고, 사용 가능한 메모리가 작은 조각으로 나뉘어 있어 큰 메모리 요청을 수용할 수 없는 경우 발생한다. 이는 세그멘테이션 시스템에서 더 흔하다.

페이지에서 실제 주소 가져오기

프로세스가 메모리에 접근하려고 할 때, MMU(Memory Management Unit)는 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환한다. 가상 주소는 페이지 번호와 그 페이지 내의 오프셋으로 구성된다. 페이지 번호는 페이지 테이블에서 해당 페이지가 매핑된 프레임을 찾는 데 사용되며, 오프셋은 해당 프레임 내의 실제 데이터 위치를 찾는 데 사용된다.

수정 가능한 주소 공간 확인 방법

운영 체제는 페이지 테이블의 각 엔트리에 접근 권한 정보를 저장한다. 이 정보를 통해 특정 주소 공간이 읽기 전용인지, 쓰기 가능한지 등을 확인할 수 있다.

32비트에서 1KB 페이지 크기의 페이지 테이블 최대 크기

32비트 주소 공간에서 페이지 크기가 1KB라면, 총 2^32 / 2^10 = 2^22 페이지를 가질 수 있다. 따라서 페이지 테이블은 최대 2^22개의 엔트리를 가질 수 있다.

32비트 운영체제와 4GB RAM의 관계

32비트 운영체제는 2^32개의 고유 주소를 생성할 수 있으며, 이는 총 4GB의 메모리를 주소 지정할 수 있음을 의미한다. 페이징 시스템을 통해, 이 4GB의 가상 주소 공간을 물리 메모리에 효율적으로 매핑할 수 있다.

Segmentation Fault와 세그멘테이션/페이징의 관계

Segmentation Fault는 프로그램이 할당되지 않은 메모리에 접근하려고 할 때 발생하는 오류다. 이는 세그멘테이션 또는 페이징 시스템에 의해 관리되는 메모리 보호 메커니즘과 관련이 있다. 운영 체제는 프로세스가 자신에게 할당되지 않은 메모리 영역에 접근하려고 시도할 때 이를 감지하고, 프로세스에 오류를 발생시킨다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글