일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 파이썬
- @Component
- nestjs auth
- git
- AWS
- 알고리즘
- nestJS
- 시스템호출
- spring boot
- 카카오
- @Autowired
- OpenCV
- Spring
- python
- C언어
- 스프링
- 구조체배열
- thymeleaf
- C++
- nestjs typeorm
- TypeORM
- 코딩테스트
- 해시
- 코테
- 컴포넌트스캔
- 카카오 알고리즘
- 프로그래머스
- Nodejs
- 카카오 코테
- 가상면접사례로배우는대규모시스템설계기초
Archives
- Today
- Total
공부 기록장 💻
[운영체제/OS] 08장 가상 메모리 기초 본문
1. 가상 메모리 개요
1. 가상 메모리 시스템
- 가상 메모리란, 물리 메모리 크기와 상관 없이 프로세스에 커다란 메모리 공간을 제공하는 기술
- 프로세스는 운영체제가 어디에 있는지, 물리 메모리의 크기가 어느 정도인지 신경 쓰지 않고 메모리를 마음대로 사용 가능하게 된다.
가상 메모리의 크기
- 크기 = 물리 메모리 크기 + 스왑 영역의 크기
- 가상 주소를 실제 메모리의 물리 주소로 변환하는 동적 주소 변환을 거치면 프로세스가 아무 제약 없이 사용자의 데이터를 물리 메모리에 배치할 수 있다.
가상 메모리의 메모리 분할 방식
- 세그먼테이션(가변 분할)과 페이징(고정 분할)기법이 있으며, 세그먼테이션 기법은 외부 단편화의 문제로 잘 사용하지 않는다.
- 따라서 세그먼테이션-페이징 혼용 기법을 주로 사용
2. 매핑 테이블의 필요성과 역할
- 메모리 매핑 테이블(Memory Mapping Table) : 가상 메모리 시스템에서 메모리 관리자가 가상 주소와 물리 주소를 일대일 대응하는데 사용되는 매핑 테이블
2. 페이징 기법
1. 페이징 기법의 구현
- 고정 분할 방식을 이용한 가상 메모리 관리 기법
- 가상 주소의 분할된 각 영역인 **페이지(page)**에 번호를 매겨 관리하고, 물리 주소의 각 영역을 분할한 **프레임(frame)**에 번호를 매겨 관리한다.
- 페이지와 프레임의 크기는 같으므로, 페이지는 어떤 프레임에도 배치될 수 있다.
- 페이지 테이블을 통해 페이지와 매핑되는 프레임을 검색할 수 있다.
- 페이지 테이블에 invalid는 해당 페이지가 스왑 영역에 있다는 것을 의미한다.
2. 페이징 기법의 주소 변환
- 가상주소 VA = <P, D> (P: 페이지번호, D: 페이지의 처음 위치부터 해당 주소까지의 거리)
- 물리주소 PA = <F, D> (F: 프레임 번호)
3. 페이지 테이블 관리
- 다수의 프로세스가 있는 페이징 시스템
- 프로세스의 수에 비례하여 페이지 테이블의 수와 크기도 같이 커지므로, 프로세스가 실제로 사용할 수 있는 메모리 영역이 줄어듬.
- 따라서 페이지 테이블의 크기를 적정하게 유지하는 것이 페이지 테이블 관리의 핵심이다.
- 물리 메모리(운영체제 영역) 내 페이지 테이블의 구조
- 물리 메모리 크기가 작을 떄는 페이지 테이블의 일부 또한 스왑 영역으로 옮겨짐
- 각 페이지의 테이블 시작 주소는 **페이지 테이블 기준 레지스터(PTBR)**에 보관되어 각 프로세스에 대한 페이지 테이블 접근 가능
4. 페이지 테이블 매핑 방식
- 직접 매핑(direct mapping)
- 페이지 테이블 전체가 물리 메모리의 OS영역에 존재
- 별다른 부가 작업 없이 바로 주소 변환 가능
- 연관 매핑
- 전체 페이지 테이블을 스왑 영역에 두고, 페이지 테이블의 일부분을 변환 색인 버퍼(Translation Look-aside Buffer), 또는 연관 레지스터에 일부 페이지를 저장
- 메모리에 접근하기 위해 먼저 변환 색인 버퍼에서 검색
- TLB 히트: 변환 색인 버퍼에 있는 경우, 곧바로 물리 주소로 변환
- TLB 미스: 스왑 영역에 저장된 직접 매핑 테이블을 사용해 프레임 번호로 변환
- 장점: 전체 페이지 테이블을 물리 메모리에 보관하지 않기 때문에 메모리 절약 가능
- 단점: TLB 미스가 번번히 발생하는 경우 시스템의 성능 저하, 변환 색인 버퍼를 모두 검색해야 한다는 단점
- 집합-연관 매핑
- 페이지 테이블을 같은 크기의 여러 묶음으로 나누고, 각 묶음의 시작주소를 가진 디렉터리 테이블을 새로 만들어 관리
- 전체 페이지 테이블은 스왑 영역에 있으며, 일부 테이블은 묶음 단위로 메모리로 옮긴다.
- 해당 묶음이 현재 메모리에 있는지, 스왑 영역에 있는지를 표시하는 디렉터리 테이블을 새로 만들어, 전체 테이블을 찾아보지 않아도 TLB 미스를 바로 알 수 있음
- 역매핑
- 물리 메모리의 프레임 번호를 기준으로 테이블 작성
- 프레임번호가 인덱스이며, 테이블은 PID와 페이지 번호로 구성됨
- 페이지 테이블의 행 수 = 프레임 수
- 프로세스의 수와 상관없이 항상 일정 크기의 페이지 테이블을 유지 → 테이블의 크기가 매우 작음
- 주소 변환 시 메모리 관리자는 주소 변환을 해야 하는 프로세스의 아이디와 페이지 번호가 물리 메모리에 있는지 역매핑 테이블에서 검색
- 원하는 데이터가 없으면 스왑 영역에서 가져옴
- 단점: 페이지 테이블을 모두 검사한 후에야 저장장치에 접근하기 때문에 검색 시간이 낭비됨
3. 세그먼테이션 기법
1. 세그먼테이션 기법의 구현
- 세그먼테이션(segmentation) 기법
- 메모리를 크기가 변할 수 있는 세그먼트로 나누는 기법
- 세그먼트: 연관된 기능을 수행하는 하나의 모듈 프로그램
- 세그먼테이션 테이블
- limit: 세그먼트의 크기, address: 물리 메모리 상의 시작 주소
- 각 세그먼트는 자신에게 주어진 메모리 영역(limit 만큼)을 넘어가선 안 됨
2. 세그먼테이션 기법의 주소 변환
- 가상주소 VA = <S, D> (S: 세그먼트 번호, D: 해당 세그먼트의 물리주소 시작 위치로부터의 거리)
- 세그먼트 S번의 시작 주소(address)를 알아낸 후, 거리 D만큼을 더해 물리 주소 번지를 구함
- 거리가 세그먼트의 크기(limit)보다 큰 경우, 해당 프로세스를 강제 종료함
4. 세그먼테이션-페이징 혼용 기법
1. 메모리 접근 권한
- 메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한이 모두 다르다.
- 읽기(read)/쓰기(write), 실행(execute), 추가(append) 권한 등
- 프로세스의 영역별 메모리 접근 권한
- 코드: 읽기 및 실행 권한
- 데이터 영역: 읽기 및 쓰기 권한
2. 세그먼테이션-페이징 혼용 기법의 도입
- 페이징 기법 + 접근 권한까지 고려한 테이블
- 페이지마다 접근 권한이 다르기 때문에 페이지 테이블의 모든 행에 메모리 접근 권한과 관련된 권한 비트가 추가된다. → 주소 변환이 이루어질 때마다 메ㅗ리 관리자는 권한 비트를 이용해 유용한 접근인지 확인해야 함
- 페이지 테이블의 각 행마다 권한 비트가 추가되면 페이지 테이블의 크기가 매우 커지는 문제가 있다.
3. 세그먼테이션-페이징 혼용 기법의 주소 변환
- 가상 주소 VA = <S, P, D> (S: 세그먼트 번호, P: 페이지 번호, D: 거리)
- 세그먼테이션 테이블의 해당 세그먼트 번호로 가서, 자신의 영역을 벗어나는 불법 접근이 아닌지, 권한이 없는 페이지에 접근하는 것이 아닌지 등을 확인 → 트랩 발생 시 프로세스 강제 종료
- 이후 페이지 테이블에서 프레임 번호를 찾음 → Invalid인 경우 스왑 영역으로 이동
728x90
반응형
'# CS Study > Opearing System' 카테고리의 다른 글
[운영체제/OS] 쉽게 배우는 운영체제 09장 문제풀이 (가상 메모리 관리) (0) | 2022.08.21 |
---|---|
[운영체제/OS] 쉽게 배우는 운영체제 05장 문제풀이 (프로세스 동기화) (0) | 2022.08.21 |
[운영체제/OS] 05장 프로세스 동기화 (0) | 2022.08.21 |
[운영체제/OS] 쉽게 배우는 운영체제 04장 문제풀이 (CPU 스케줄링) (0) | 2022.08.21 |
[운영체제/OS] 04장 CPU 스케줄링 (0) | 2022.08.21 |
Comments