CS 스터디 하면서 운영체제 할 때 도맡아 했던 파트 블로그에 다시 정리하기 : )
스터디를 하며 네트워크랑 운영체제와 조금 친해진 것 같아서 매우 다행이다. 네트워크는 무작정 외우느라 바빴고 운영체제는 무슨 말인지 다 비슷하다고만 느껴졌는데 순서대로 차근차근 하나씩 파보다보니(? 조금은 알 것 같다.
반복해서 보면 다른 파트들 처럼 친해지지 않을까 한다ㅎㅎ
나름 정처기 공부하면서 익숙한 용어들을 많이 봐서 편했다. (떨깅 됐지만...)
페이징(Paging)
물리적 메모리를 고정된 크기의 프레임으로, 가상 메모리를 같은 크기의 페이지로 나누는 기법이다. (가상 기억 장치를 모두 같은 크기로)
- 내부 단편화가 발생할 수 있다.
- 가상 메모리를 일정한 크기로 나눈 단위를 페이지라고 하고 물리 메모리를 일정한 크기로 나눈 것을 프레임이라고 한다.
- 주소 변환을 위해 페이지 맵 테이블이 필요하다.
✨ 가상기억 장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업이 필요하다.
페이징에서의 스와핑
- 프로세스 단위의 swap in, swap out 이 아닌 페이지 단위의 swap in(page in), swap out(page out)
- 사용되지 않는 특정 페이지를 보조기억장치로 내보내는 것 (swap out)
- 지금 당장 필요한 페이지를 들여오는 것 (swap in)
⇒ 스와핑을 통해 물리메모리보다 더 큰 프로세스도 실행이 가능하다
작동 원리
- CPU가 특정 페이지에 접근하려고 할 때, 페이지 테이블의 위치(PTBR)를 참조하여 해당 페이지의 물리적 위치, 즉 프레임 번호를 알아낸다.
- 프레임 번호와 페이지 내의 오프셋을 사용하여 물리적 메모리에서 원하는 데이터나 명령어에 접근
- CPU가 접근하려는 페이지가 물리 메모리에 없는 경우 (즉, 페이지 폴트가 발생한 경우), 해당 페이지는 디스크에서 메모리로 로드되어야 한다.
PTBR(Page-Table Base Register)
현재 메모리에 로드된 페이지 테이블의 물리적 메모리 주소를 가리키는 레지스터이다.
✨ 페이지 맵 테이블은 물리적 주소로 매핑하는 테이블 자체이다.
- 프로세스 마다 페이지 테이블이 있고 각 페이지 테이블은 CPU 내의 프로세스 테이블 베이스 레지스터가 가리킨다.
- 페이지 테이블을 메모리에 저장하고 PTBR을 사용하는 방식은 문맥 교환이 빠르게 일어나도록 하고 여러 프로세스 간의 전환을 용이하게 한다.
🚨 페이지 테이블의 이중 메모리 접근 문제
- PTBR을 사용하여 페이지 테이블 엔트리에 접근
- 실제 메모리 주소(물리적 프레임 주소)에 접근
➡️ 이중 접근은 CPU가 실제 데이터나 명령어를 읽기 전에 항상 발생하므로 메모리 접근 시간 또한 2배 이상 지연된다. 해결방법으로 TLB가 사용된다.
TLB(Translation Look-aside Buffer)
페이지 테이블의 일부를 가져와서 저장하는 캐시 메모리이다.
✅ TLB는 최근에 사용된 페이지 테이블 엔트리(페이지 테이블의 행)를 캐시하므로, 페이지 테이블 엔트리에 대한 접근이 필요할 때 PTBR을 통해 주 메모리를 검색하는 대신 TLB에서 빠르게 해당 정보를 찾아낼 수 있다.
특징
- 메모리 관리 유닛(MMU)의 효율성을 높이기 위해 사용
- 메모리 접근 시간을 단축시켜 성능 향상
- 컴퓨터의 CPU 내부에 위치
- 페이지 교체 정책으로는 가장 최근에 사용되지 않은 페이지를 교체하는 LRU (Least Recently Used) 알고리즘이 일반적으로 사용된다.
- 여러 레벨의 TLB(L1, L2)를 가질 수 있어 다양한 단계에서 메모리 접근 속도를 개선할 수 있다.
구성요소
TLB의 작동 원리
- CPU가 메모리 접근을 요청할 때, MMU는 먼저 TLB를 확인하여 필요한 매핑 정보를 찾는다.
- 메모리 접근 시 가상 주소 변환 과정
- CPU 가상 주소 생성
- MMU 는 가상 주소를 사용해 페이지 테이블 참조
- 페이지 테이블은 가상 메모리 페이지와 해당하는 물리적 페이지의 매핑 보관
- VPN(가상 페이지 번호)는 물리적 페이지 번호(PPN)으로 변환되어야 한다.
- 변환된 물리적 주소는 메모리에 실제로 접근하기 위해 사용
- 메모리 접근 시 가상 주소 변환 과정
- TLB에서 해당 정보를 찾지 못하면, TLB 미스 발생
- 전체 페이지 테이블 검색해서 필요한 매핑 정보 찾아내고 이 정보를 TLB에 로드하여 다음 번 요청 시 빠르게 접근
✅ TLB 미스
페이지가 TLB에 없을 경우 TLB 미스가 발생하며 메모리 접근은 두 번이 된다.
- 테이블 검색 후 정보 가지고 와야 함
✅ TLB 히트
페이지가 TLB에 있는 경우 TLB 히트가 발생하며 메모리 접근은 한 번이 된다.
- 변환된 주소
📖 참고 자료
'KNOWLEDGE' 카테고리의 다른 글
[디자인 패턴] 옵저버 패턴(Observer Pattern) - 자바 예제 (0) | 2024.04.16 |
---|---|
[디자인 패턴] 싱글톤 패턴 (Singleton Pattern) - 자바 예제 (1) | 2024.04.15 |
[OS] 시스템 호출(System call) & 운영체제 - 커널모드(Kernerl Mode)와 사용자 모드(User Mode) (0) | 2023.11.17 |
[NETWORK] REST API, RESTful 알아보기 / REST란? (1) | 2023.11.16 |
[OS] CPU 스케줄링 알고리즘 / 프로그램 vs 프로세스 vs 스레드 (2) | 2023.11.08 |