-
[운영체제] 메모리 관리 - 페이징 (Paging)Computer Science/Operating System 2023. 2. 28. 13:15반응형
들어가기 전에
External Fragmentation (외부 단편화) 란?
: 총 메모리 공간을 계산했을 때 요청을 처리할만한 충분한 메모리가 있음에도 불구하고, 가능한 공간들이 연속적이지 않아 (저장 공간이 많은 hole 들로 조각조각 나있을 때) 프로세스를 할당할 수 없는 문제
- 프로세스는 실행이 되면 메모리에 올라가게 됨
- 프로세스는 연속적으로 배치가 됨(Contiguous allocation) → 프로세스를 쪼개서 배치할 수 없음- 아래 그림과 같이 Process4가 들어갈 수 있는 자리가 있음에도 할당되지 못하고 대기하게 되는 문제 발생
※ 참고: 프로세스를 밑으로 재배치하여 Hole 을 없애는 방법은 불가한가?
더보기Compaction : 비어 있는 공간을 연속적인 공간으로 만들고 움직이는 작업
- 결국 프로세스를 옮기기 위해 다른 프로세스들을 temporary한 공간으로 복사 必
- secondary storage인 하드디스크에 임시로 복사해서 저장 후 옮겨와야 하는데 하드디스크는 속도가 매우 느림
- 또한, I/O problem이 발생할 수 있고 하드디스크가 병목이 되기 때문에 좋은 방법이 아님Paging 이란?
- 프로세스를 논리 주소의 고정된 페이지(Page)라고 불리는 블록들로 분할하여 메모리에 적재하는 것
- 각각의 페이지는 물리 메모리의 프레임과 맵핑됨
- 프로세스를 연속적으로 배치하지 않고 분할하기 때문에 외부단편화가 발생하지 않음
- 페이지는 고정 분할 방식으로 각 페이지의 사이즈는 동일→ 프로세스는 메모리에 여유가 발생할 때마다 physical memory 영역에 할당할 수 있게 됨으로써 외부활당화 문제無
※ 참고
- Logical memory : CPU에 의해 생성되는 주소
- Physical memory : RAM에 실질적으로 로드되는 주소내부 단편화 (Internal Fregmentation)
: 프로세스를 페이지로 분할하는 과정에서 남는 공간이 발생하는 것
- 하지만 외부단편화比 남는 공간이 얼마 되지 않기 때문에 외부 단편화보다 훨씬 효율적이며 거의 100%에 가깝게 메모리를 효율적으로 사용할 수 있음.Page Table
: 프로세스의 페이지들은 메모리 프레임에 조각나서 위치해 있기 때문에,
이를 하나의 프로세스로 linear 수행하기 위해서 물리적 주소의 값을 찾아주는 역할을 함- 각 프로세스마다 페이지 테이블을 가지고 있으며 배열의 형태를 갖고 있음
- 인덱스: 페이지 번호
- 배열에 담고 있는 숫자: 매핑할 프레임 번호- 실제 페이지 테이블은 페이지번호, 프레임번호, 여러가지 편리 기능을 위해 다양한 필드를 갖고 있음
Page 크기와 논리적 주소 구성
- 페이지 매핑에 맞춰 CPU로부터 생성되는 논리적 주소는 ① 페이지 주소와 ② 페이지 오프셋으로 구성
① 페이지 주소
: page의 순서에 해당하는 숫자 (page number)
- 페이지만으로는 정확한 주소를 표기할 수 없음② 페이지 오프셋
- 페이지 하나의 크기는 대게 4KB, 12bits 차지
- 4KB 기준으로 페이지 내부에서도 0 ~ 2의 12승까지의 번지값을 가지며 이를 offset이라 부름▶ 운영체제가 32비트 프로세서이고, 페이지 크기가 4KB라면 한 번에 CPU는 2의 20승 개수의 페이지 번호 구분 가능
논리주소 물리주소 변환 FLOW
TLB 의 등장
: 페이징 방식 - 속도에서 비효율 발생
- 페이지테이블의 용량은 메모리 안에 넣게 됨(메모리 접근이 2번 발생, 메모리 테이블 1번 접근, 실제 data 1번 접근)
▶ 속도 향상을 위해 associative register or translation look-aside buffer(TLB)라 불리는 고속 lookup hardware cache 사용
▶ 주소 변환을 위한 캐시메모리 (보통 다루는 캐시메모리와는 다름)- page 번호 p를 주면 병렬적으로 검색하여 있으면 바로 주소 변환, 없으면 cache miss 발생
2 단계 페이징 테이블 기법
: 페이징 방식 - 저장 용량에서 비효율 발생
- 하나의 큰 프로세스가 들어올 경우, 페이지 구분을 위한 페이지 테이블이 차지하는 용량 역시 커짐
- 프로세스도 아닌 Page 순서를 위한 페이지 테이블만을 위해 많은 용량을 할당하는건 비효율적1. 32 bit 주소체계
페이지 테이블 주소 공간 = 32 - 12 (bit) = 20 (bit)
페이지 테이블 용량 = 2^20 * 4byte = 4MB
※ 1 entry = 1 word = 32 bit = 4 byte
※ 2^20 개의 entry = 2^20 * 4byte
2. 64 bit 주소체계
페이지 테이블 주소 공간 = 64 - 12 (bit) = 52 (bit)
페이지 테이블 용량 = 2^52 * 8byte = 36PB
※ 1 entry = 1 word = 64 bit = 8 byte
※ 2^52 개의 entry = 2^52 * 8byte- 기존의 페이징에선 모든 페이지에 대한 각 물리주소를 매핑한 페이지 테이블을 생성했다면,
2단계 페이징에서는 두 번째 페이지 테이블의 주소를 매핑해두고 접근하지 않는 페이지주소는 null 상태로 가지고 있음
- 연결된 페이지만큼의 용량만 차지하기 때문에 공간효율성을 높일 수 있음반응형'Computer Science > Operating System' 카테고리의 다른 글
[운영체제] 프로세스 VS 스레드 개념 및 예상 질문 (0) 2023.02.07 [운영체제] 프로세스의 구성, 상태, 시스템콜 등 총 정리 (0) 2023.02.07 [운영체제] 프로그램의 실행(memory load)과 메모리 주소 (0) 2023.01.30 [운영체제] DMA(Direct Memory Access) 개념과 동작 방법 (0) 2023.01.30 [운영체제] 동기식 입출력과 비동기식 입출력 (0) 2023.01.30