독학사 운영체제 편을 공부하고 정리한 글입니다.
가상 메모리
- 주 기억장치의 메모리 공간보다 큰 주소 지정을 할 수 있도록 함
- 하나의 프로세스 전체가 주 메모리에 있지 않고 일부만 있어도 실행 가능하게 함
- 가상 메모리를 통하여 주 메모리의 실제 주소 공간 크기에 구애받지 않고 프로그래밍을 할 수 있음
- 가상 메모리의 크기
= 물리 메모리와 스왑 영역을 합한 크기
- 메모리 분할 방식
- 가변 분할 방식: 세그먼테이션
- 고정 분할 방식: 페이징
페이징 기법
고정 분할 방식을 이용한 가상 메모리 관리 기법
물리 주소 공간을 같은 크기로 나누어 사용한다.
- 가상 주소의 분할된 각 영역은 페이지 / 물리 메모리의 각 영역은 프레임이라고 한다.
- 가상 주소 페이지 번호에 대응하는 물리 주소 프레임 번호를 저장하는 페이지 테이블이 있다.
페이지-프레임 주소 변환
- 가상 주소의 표현
VA=<P, D>
가상 주소는 페이지 번호 P와 페이지 처음 위치에서 해당 주소까지의 거리 또는 오프셋 D으로 이루어져 있다.
- 물리 주소의 표현
PA=<F, D>
물리 주소도 마찬가지로 프레임 번호 F와 해당 주소까지의 거리 D으로 이루어져 있다.
- 페이지와 프레임의 주소 단위가 10kB로 같다면,
- 가상 주소 82kB 번지 = <8, 2>로 표현된다.
- 만약, 페이지 번호 8번에 해당하는 프레임 번호가 3번이라고 하면
- 물리 주소 <3,2> = 32 번지이다.
- 가상 주소와 물리 주소 표현에서 같은 주소를 표현할 때, 거리 D는 항상 같다.
- 만약, 페이지 테이블에 해당 프레임이 invalid(유효비트 = 1), 즉 물리 주소에 없다면 보조 기억 장치에 저장되어 있다는 뜻이다.
- 16bit CPU의 페이지 시스템 구성
16bit CPU 컴퓨터에서 한 프로세스가 사용할 수 있는 가상 메모리의 크기는 $2^{16}$ Bytes이다. 사용자는 0번지부터 65535($2^{16}-1$)번지까지의 가상 주소 공간을 사용할 수 있다.
한 페이지 크기가 $2^{10}$ Bytes이면 가상 주소를 표현하는 16bit 중 6bit는 페이지 번호, 10bit는 페이지 처음 위치에서 해당 주소까지의 거리(오프셋)로 사용된다.
- 페이지 테이블은 메모리 관리자가 사용하는 자료구조로 빠른 접근이 필요하기에 물리 메모리 영역 중 운영체제 영역의 일부분에 모아 놓는다.
- 각 프로세스는 프로세스 제어 블록에 있는 테이블 기준 레지스터(PTR)를 사용하여 운영체제 영역에 있는 페이지 테이블 중 자신의 페이지 테이블 시작 주소를 가리키고 있는 주소를 저장한다.
페이지 테이블 매핑 방식
- 직접 매핑
페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식
물리 메모리가 충분할 때 사용 가능하다.
- 연관 매핑
전체 페이지 테이블을 스왑 영역에 두고 페이지 테이블 일부를 물리 메모리에 가져온다.
물리 메모리에 페이지 테이블 일부를 저장하는 테이블을 변환 색인 버퍼(TLB) 또는 연관 레지스터라고 한다.
- 메모리를 절약할 수 있다.
- 캐시와 비슷하게 페이지 번호가 해당 TLB에 있다면 TLB히트로 해당 프레임을 바로 알 수 있고
- 없다면 TLB 미스로 스왑 영역에 있는 페이지 테이블을 참조하여 해당 프레임을 알 수 있다.
세그먼테이션
사용자 관점을 지원하는 비연속 메모리 할당방법으로 논리적 영역을 세그먼트 집합으로 인식한다.
ex) 프로세스를 구성하는 스택, 힙, 데이터, 코드 영역의 메모리는 논리적으로 분할되어 있다.
프로세스를 나누는 세그먼트들은 각 다른 크기를 가지고 있다.
세그먼테이션 테이블에는 세그먼테이션 크기를 나타내는 "limit"과 물리 메모리상의 시작 주소를 나타내는 "address"가 있다.
세그먼테이션 기법의 주소 변환
- 가상 주소의 표현
VA=<S, D>
가상 주소는 세그먼트 번호 S와 페이지 처음 위치에서 해당 주소까지의 거리 또는 오프셋 D으로 이루어져 있다.
- 물리 주소의 표현
PA= Address + Distace
물리 주소는 해당 세그먼테이션 테이블에서 확인한 시작 주소 Address와 오프셋 만큼을 더한 값이다.
- Limit을 벗어나는지 검사
실제 물리 주소를 접근하기 전 시작 주소와 오프셋 거리를 더한 실제 물리 주소가 Limit을 넘는 지 검사한다.
사용자 프로세스가 선언한 한계 용량보다 더 큰 주소를 참조할 때, 세그먼테이션 오류 메시지를 발생시키고
프로세스를 강제 종료한다.
세그먼테이션-페이징 혼용기법
- 권한 비트
세그먼테이션 테이블 엔트리에서 해당 메모리에 대한 접근 권한을 명시할 수 있다.
일반적으로 읽기/쓰기/실행과 같은 권한이 비트로 표시되어 있다.
- 세그먼테이션-페이징 혼용 기법의 주소 변환
- 가상 주소의 표현
VA=<S, P, D>
세그먼트 번호 S, 페이지 번호 P, 페이지의 처음 위치에서 해당 주소까지의 거리 D로 이루어져 있다.
- 접근 순서
1. 세그먼테이션 테이블에서 세그먼트 번호를 확인한 후 해당 페이지 번호가 영역을 벗어나는 지 혹은 권한에 대한 조사를 하여 문제가 없는지 확인한다.
2. 해당 페이지 번호를 페이지 테이블에서 확인 한 후, 있다면 해당 프레임에서 D만큼 떨어져있는 물리 주소를 가져온다.
3. 주 메모리에 없다면 (invalid) 페이지 부재로 스왑 영역에서 해당 페이지를 가져와 페이지 테이블을 업데이트 한다. (페이지 교체 알고리즘)
'Computer Science 기본 지식 > 운영체제' 카테고리의 다른 글
[운영체제] 가상 메모리 (3) 페이지 교체 알고리즘과 프로세스 적재 정책 (0) | 2021.01.20 |
---|---|
[운영체제] 가상 메모리 (2) 페이지 부재 (0) | 2021.01.20 |
[운영체제] 주 메모리 관리 (0) | 2021.01.18 |
[운영체제] 교착상태 (0) | 2021.01.16 |
[운영체제] 프로세스 동기화 (0) | 2021.01.15 |