운영체제_메모리 관리_페이징

미뇽·2024년 6월 8일
0

운영체제(강의)

목록 보기
23/43
post-thumbnail

페이징

비균등 고정 분할 기법 -> 내부 단편화

내부 단편화
분할된 메모리 조각의 크기가 프로세스의 크기보다 커서 메모리가 남지만, 다른 프로세스가 들어가기엔 부족해서 사용할 수 없는 상태

가변크기 분할 기법 -> 외부 단편화

외부 단편화
남아있는 메모리의 크기가 실행하고자 하는 프로세스보다 크지만, 연속적이지 않은 공간에 존재하여 실행하지 못하는 현상

이를 보완하기 위한 방법 => 페이징

  • 주기억장치를 비교적 작은 고정 사이즈 파티션 (프레임) 으로 나누고 각 프로세스 또한 같은 크기의 고정 조각 (페이지) 으로 나눔

  • 각 프로세스마다 하나의 페이지 테이블(page table) 유지
    - 페이지 테이블은 프로세스의 각 페이지들에 해당하는 프레임의 위치 관리
    - 프로그램 안에서 각 논리 주소는 페이지 번호와 페이지 내의 오프셋으로 구성
    - 논리주소는 프로그램의 시작 위치로부터의 상대적인 값(페이지 번호 + 오프셋) 으로 처리기는 그 논리주소를 물리주소(프레임 숫자 + 오프셋)로 변환

  • 외부단편화로 인한 메모리 낭비 X + 내부단편화로 인한 낭비도 마지막 페이지에서만 발생

  • 프로세스별로 필요한 페이지만큼 빈 프레임에 적재하고 중간에 Swap out된다 하더라도 남은 프레임에 순서대로 채워넣기
    - 논리주소로 되어있기 때문에 가능

  • 한 프로그램이 하나 이상의 파티션을 차지할 수 있으며, 이 파티션들이 반드시 연속일 필요는 없다는 점이 중요

  • 페이징 기법이 편리하게 사용되기 위한 방법
    - 페이지/프레임 크기를 2의 거듭제곱으로 만듦
    => 프로그램의 시작 위치로부터의 상대 주소와 페이지 번호와 오프셋으로 표현되는 논리 주소가 같음을 알 수 있음
    - 10개 비트가 오프셋으로 사용되고 나머지 6비트가 페이지 번호
    - 주소가 16비트, 페이지 크기가 1K(1024 바이트)라고 할 때 26=642^6 = 64 개의 1K 페이지로 구성될 수 있음.

    	- 2의 거듭제곱으로 만들 때 장점
    		- 논리 주소가 상대 주소와 동일해 프로그래머, 어셈블러, 링커에게 투명함
    		- 수행 중에 동적 주소 변환을 담당할 하드웨어 기능 구현이 쉬움
profile
문이과 통합형 인재(人災)

0개의 댓글