가상메모리란?
가상 메모리는 메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당
프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안되었다.
이에 따라 사용들에게 매우 큰메모리로 보이게 만다는 효과를 준다.
MMU (Memoery ManageMent Unit)
가상메모리를 설명할 때 두개의 주소 개념이 등장한다.
- 가상 주소
- 각 프로세스 당 주어지는 논리적인 주소 공간
- 레지스터 크기에 종속적
- 실제 주소
- 실제 하드웨어 메모리 주소
메모리에서 가상주소와 물리주소의 변환 변환 작업을 진행하면 작업 부하가 높아지므로
MMU는 가상주소를 물리주소로 변환하여 메모리를 보호하는 역할을 한다.
페이지 테이블
프로세스는 페이지 테이블을 통해 논리 주소를 물리 주소로 변환한다.
페이지 테이블은 각 페이지가 물리 메모리의 어느 프레임에 매핑되는지를 저장한다.
TLB
(Translation Lookaside Buffer)
메모리와 CPU 사이에 있는 주소 변환을 위한 캐시 , 페이지 테이블에 있는 리스트를 보고나하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킬 수 있는 캐시 계층이다.
페이지 폴트
프로세서의 가상 공간에는 존재하지만 물리 주소에 데이터가 없는 곳에 접근할 때 발생한다.
이때 컴퓨터는 다음과 같은 과정이 진행된다.
- CPU는 물리 메모리를 확인하여 해당 페이지가 없으면 트랩을 발생시켜 운영체제에 알린다.
- 운영체제는 CPU의 동작을 잠시 멈춘다
- 운영체제는 페이지 테이블을 확인하여 가상 메모리에 페이지가 존재하는지 확인함
- 없다면 프로세스를 중단하고 현재 물리 메모리에 비어 있는 프레임을 찾는다.
- 물리 메모리에도 없다면 하드디스크에 필요한 내용을 다시 물리메모리에 올린다.
- 비어있는 프레임에 해당 페이지를 로드하고 페이지 테이블을 최신화
- 중단된 CPU를 다시 시작
여기서 5번 과정을 스와핑이라고 한다.
스와핑
당장 사용하지 않는 영역은 물리메모리에서 하드디스크로 내리고 다시 필요할 때는
하드 디스크에서 물리메모리로 올리는 과정
메모리할당
메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당하는데
연속할당과 불연속 할당으로 나뉘어져있다.
연속 할당(Contiguous Allocation) | 비연속 할당(Non-Contiguous Allocation) | |
메모리 할당 방식 | 프로세스 하나가 통째로 연속된 메모리 블록에 할당됨 | 프로세스가 나뉘어 여러 비연속적인 메모리 블록에 할당됨 |
종류 | 고정 분할(Fixed Partitioning), 가변 분할(Variable Partitioning) |
페이징(Paging), 세그멘테이션(Segmentation), 페이지드 세그멘테이션(Paged Segmentation) |
1. 연속 할당
A) 고정 분할 방식
고정 분할 방식은 메모리가 고정된 크기의 여러 파티션(partition)으로 나누어 각 파티션에 하나의 프로세스가 할당한다.
- 이해하기 쉽고 구현하기 쉬운구조
- 내부단편화 발생
B) 가변 분할
가변 분할 방식은 고정 분할의 단점을 해결한 메모리 관리 방식입니다.
가변 분할 방식은 각 프로세스에게 자신의 크기만한 크기의 파티션을 할당한다.
- 프로그램의 크기에 맞게 동적으로 메모리 할당
- 외부 단편화 발생
내부단편화 vs 외부단편화
내부 단편화
- 메모리를 나눈크기(파티션)보다 프로그램이 작아서 들어가지 못하는 공간이 발생하는 현상
- 왼쪽 사진을 보면 프로세스 C의 실제크기(80MB)보다 파티션 크기(100MB)가 커 낭비되는 크기가 크게 존재한다.
외부 단편화
- 프로세스 사이의 빈 공간이 많이 생겨 전체 사용 가능한 메모리가 줄어드는 현상
- 오른쪽 사진을보면 남아있는 메모리 공간(50MB + 50MB = 100MB)이
프로세스 C의 크기(80MB)보다 크지만 연속으로 적재할 수 없어 들어가지 못하고 있다.
2. 불연속 할당
연속 할당의 한계점을 해결하기 위해 나타난 기법, 프로세스를 불연속하게 할당하는 특징이 있다.
A) 페이징
페이징은 가상 메모리를 고정된 크기의 페이지로 나누고, 이를 물리 메모리의 프레임에 불연속적으로 매핑하는 메모리 기법
페이징의 동작 원리
- 페이지와 프레임
- 가상 메모리는 페이지 단위로 나뉘고, 물리 메모리는 프레임 단위로 나뉩니다. 페이지와 프레임의 크기는 동일.
- 페이지 테이블
- 각 프로세스는 페이지 테이블을 갖는다
- 페이지 테이블은 가상 메모리의 페이지가 물리 메모리의 어느 프레임에 매핑되는지 정보를 저장.
- 주소 변환
- 논리 주소(가상 주소)는 페이지 번호와 페이지 오프셋으로 구성.
- 페이지 테이블을 참조하여 페이지 번호를 프레임 번호로 변환하고, 프레임 번호와 페이지 오프셋을 결합하여 물리 주소를 생성
페이징의 장단점
- 장점: 외부 단편화가 발생하지 않으며, 메모리 할당 및 해제가 유연합니다.
- 단점: 여전히 내부 단편화가 존재합니다.
B) 세그멘테이션
세그멘테이션은 가상 메모리를 가변 크기의 논리적인 세그먼트로 나누고, 각 세그먼트를 물리 메모리에 불연속적으로
매핑하여 의미 있는 단위로 메모리를 관리하는 기법
세그멘테이션의 동작 원리
- 세그먼트와 물리 메모리 블록: 각 세그먼트는 논리적인 크기를 가지며, 물리 메모리의 블록 불연속적으로 할당
- 세그먼트 테이블: 각 프로세스는 세그먼트 테이블을 가지고 있습니다.
세그먼트 테이블은 각 세그먼트가 물리 메모리의 어느 위치에 매핑되는지 정보를 저장 - 주소 변환: 논리 주소(가상 주소)는 세그먼트 번호와 세그먼트 오프셋으로 구성 세그먼트 테이블을 참조하여
세그먼트 번호를 물리 메모리의 시작 주소로 변환하고, 시작 주소에 세그먼트 오프셋을 더하여 물리 주소를 생성
세그멘테이션의 장단점
- 장점: 사용자의 관점에서 메모리를 논리적으로 관리하기 쉬우며, 각 세그먼트는 의미 있는 논리 단위(예: 코드, 데이터, 스택)로 관리
- 단점: 외부 단편화가 발생할 수 있습니다. 세그먼트로의 분할 과정이 페이징보다 오래 걸림
항목 | 페이징(Paging) | 세그멘테이션(Segmentation) |
기본 단위 | 고정 크기의 페이지 (Pages) | 가변 크기의 세그먼트 (Segments) |
메모리 할당 방식 | 고정된 크기의 페이지로 나누어 물리 메모리에 불연속적으로 할당 | 논리적인 단위의 세그먼트로 나누어 물리 메모리에 불연속적으로 할당 |
주소 변환 | 페이지 테이블을 통해 변환 | 세그먼트 테이블을 통해 변환 |
단편화 문제 | 내부 단편화 발생 가능 | 외부 단편화 발생 가능 |
'CS > OS' 카테고리의 다른 글
코어 / 프로세스 / 스레드, 동기 / 비동기, 직렬 / 동시 / 병렬 프로그래밍 (0) | 2024.10.23 |
---|---|
프로세스와 스레드 (0) | 2024.09.27 |
메모리 (0) | 2024.09.22 |
컴퓨터의 요소 (0) | 2024.09.21 |
운영체제 [ 역할과 구조, 시스템콜 ,커널 ] (1) | 2024.09.21 |