페이징과 세그먼테이션
📌 페이징(Paging)
1️⃣ 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 기법
2️⃣물리 메모리 : Frame이라는 고정 크기로 분리됨.
논리 메모리 : 프로세스가 점유하는 메모리로서 페이지라 불리는 고정 크기의 블록으로 분리됨.
3️⃣MMU의 재배치 레지스터 방식을 활용해 CPU가 마치 프로세스가 연속된 메모리에 할당된 것처럼 인식하도록 함.
※ MMU(Memory Management Unit)
: 논리 주소를 물리 주소로 변환해주며 메모리 보호나 캐시 관리 등 CPU가 메모리에 접근하는 것을 총관리해주는 하드웨어
- 프로세스의 주소 공간을 동일한(고정된) 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 저장하는 방식
- 프로세스, page라는 고정 크기로 분할 메모리, frame이라는 고정 크기로 분할
💡Page Table
1️⃣ 논리적 주소 → 물리적 주소
2️⃣ 프로세스마다 존재하며 메인 메모리에 상주함.
3️⃣ 접근할 때 논리 주소의 page number 사용함. → page table의 base address와 논리 주소의 page offset을 더하면 물리 주소 구할 수 있음.
4️⃣context switch가 일어나는 경우, page table이 가리키는 PTBR(Page-Table Base Register)의 내용만 변경하면 됨.
5️⃣ 각 엔트리(entry)에는 정보를 담고 있는 bit 포함됨.
• Protection bit : page에 대한 접근 권한
• Valid-invalid bit : valid는 해당 주소의 frame에 그 프로세스를 구성하는 유효한 내용이 있고, invalid 없음(== 접근 불허)
6️⃣ page의 크기가 작으면 내부 단편화 ↓, 필요한 정보만 있어 메모리 이용에 효율적이지만 page table의 크기 ↑,디스크 이동의 효율성 ↓
7️⃣ 구성 방법
• Multi-level paging : 논리적 주소 공간을 여러 단계의 page table로 분할하여 오직 사용되는 page의 page table만 할당하는 기법
• Hashed Page Table : hash table을 이용하여 page table을 관리하는 기법
→ 주소 공간이 32 bit보다 커지면 multi-level paging 비효율적
• Inverted Page Table : 메모리의 frame마다 한 항목씩 할당, 물리적 frame에 대응하는 항목만 저장하면 되므로 메모리를 훨씬 적게 사용함.
→ 각 page table entry는 각각의 메모리의 frame이 담고 있는 내용(PID, 논리 주소)을 표시함.
🔋 장점
- 논리 메모리, 물리 메모리에 저장될 때 연속되어 저장될 필요가 없어 외부 단편화를 해결할 수 있음.
- 할당 & 해제 빠름.
- swap out 간단함.
🪫 단점
- 내부 단편화 문제의 비중 증가
ex) page 크기 : 1024B 프로세스 A : 3172 B → 4개의 페이지 프레임 필요 → 마지막 프레임 924B 여유 공간 발생 - page table을 저장하기 위한 메모리 추가 소모
- 메모리 접근에 필요한 연산, 2번의 메모리 접근 필요(page table 접근 + 실제 연산) → 속도 느려짐.
➡️ Associative register or TLB(Translation Look-aside Buffer), 고속 하드웨어 캐시 사용
단편화(Fragmentation)
: 메모리의 공간이 작은 조각으로 나뉘어 사용 가능한 메모리가 충분히 존재하지만 사용(할당)이 불가능한 상태
1️⃣ 내부 단편화
: 프로세스를 고정된 크기의 페이지로 분할할 때, 프로세스 메모리 크기가 페이지 단위와 나누어 떨어지지 않았을 때 할당된 마지막 프레임이 가득차지 않는 현상
2️⃣ 외부 단편화
: 프로세스들이 메모리를 차지하는 과정에서 외부에 여러 개로 작게 나누어진 공백이 생겨서 메모리를 할당할 수 없는 상태가 되는 현상
→ 압축(프로세스가 사용하는 공간을 한쪽으로 몰아 자유공간을 확보함.)으로 해결할 수 있지만 효율 ↓
TLB(Translation Look-aside Buffer)
1️⃣ 메모리 주소 변환을 위한 별도의 캐시 메모리
2️⃣ page table에서 빈번히 참조되는 일부 엔트리 caching
3️⃣ key-value 쌍으로 데이터 관리 key = page number, value = frame number
📌 세그멘테이션(Segmentation)
페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할함.
segment = code + data + stack
사용자가 두 개의 주소(세그먼트 번호 + offset)로 지정, 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 limit(세그먼트 길이) 저장함.
- 물리 주소 a = base[s] + d
- 논리 주소(2, 100) → 물리 주소 4400번지
- 논리 주소(1, 500) → limit이 400이므로 범위를 벗어나 인터럽트로 인해 프로세스 강제 종료
🔋 장점
- 세그먼트들이 연속적으로 할당될 필요 없음.
- Stack과 Heap이 독립적으로 커질 수 있음.
- 세그먼트마다 protection을 따로 수행할 수 있음.
🪫 단점
- 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되면 외부 단편화 발생 가능
※ Paged Segmentation
: 세그먼트를 페이징 기법으로 나누는 것
세그멘테이션 - 보호와 공유에서 효율적
페이징 - 외부 단편화 문제 해결 가능
➡️CPU에서 세그먼트 테이브렝서 주소 변환을 하고, 그 다음 페이지 테이블에서 주소 변환을 해야 함.
(총 2번의 주소 변환 필요)
📌 면접 질문
🤔 페이징이란?
🤔 페이징의 장단점은?
🤔 세그멘테이션이란?
🤔 세그멘테이션의 장단점은?
📌 참고 블로그
https://steady-coding.tistory.com/524
[운영체제] 페이징과 세그멘테이션
cs-study에서 스터디를 진행하고 있습니다. 메모리 메인 메모리 (Main Memory, Physical Memory, 주기억장치) CPU가 직접 접근할 수 있는 기억 장치로, 프로세스가 실행되려면 프로그램 코드를 메인 메모리
steady-coding.tistory.com
[CS - 운영체제] 메모리, 페이징, 세그멘테이션
페이징이란? 세그멘테이션이란?페이징과 세그멘테이션의 차이?내부 단편화와 외부 단편화의 차이?프로세스 주소는 논리적 주소(Logical Address)와 물리적 주소(Physical Address)로 나뉜다.가상 주소(Vir
velog.io
[OS] 페이징 & 세그먼테이션
Paging vs Segmentation 가상 메모리를 관리하는 기법 가상 메모리는 메모리에 로드된 즉, 실행중인 프로세스가 가상의 공간을 참조하여 마치 커다란 물리 메모리를 갖고 있는 것처럼 사용할 수 있도
dar0m.tistory.com
'CS > Operating System' 카테고리의 다른 글
[CS : Operating System] 메모리(Memory) (0) | 2024.02.10 |
---|---|
[CS : Operating System] 페이지 교체 알고리즘 (0) | 2024.02.08 |
[CS : Operating System] 세마포어(Semaphore) & 뮤텍스(Mutex) (0) | 2024.02.03 |
[CS : Operating System] 경쟁 상태(Race Condition) (0) | 2024.01.29 |
[CS : Operating System] 데드락(Deadlock, 교착상태) (0) | 2024.01.28 |