운영체제

물리 메모리 / 가상 메모리

rnrwk0502 2024. 10. 5. 04:40

물리 메모리

- 물리 메모리는 컴퓨터 시스템에 실제로 존재하는 메모리이다. 이는 램(RAM)이라고도 불리며, CPU가 직접 접근할 수 있는 메모리 공간을 의미한다.

- 물리 메모리는 컴퓨터의 모든 작업을 수행하는데 필수적인 요소로, 프로그램이 실행될 때 필요한 데이터와 명령어를 저장하고 이를 CPU가 빠르게 접근할 수 있도록 한다.

- 물리 메모리는 제한된 용량을 가지고 있어, 실행중인 프로세스들이 요구하는 메모리 크기보다 작을 수 있다.

 

가상 메모리

- 가상 메모리는 물리 메모리의 한계를 극복하기 위해 사용되는 개념이다.

- 운영체제에서 제공하는 기능으로, 실제 물리 메모리보다 더 큰 메모리 공간을 사용하는 것처럼 보이게 한다.

- 가상메모리는 물리 메모리와 디스크 저장공간의 조합으로 구성되며, 프로그램이 필요로 하는 메모리 공간을 운영체제가 적절히 관리하여 제공한다.

- 장점은 실제 메모리 크기보다 큰 프로그램을 실행할 수 있으며, 더 많은 프로그램을 통시에 실행할 수 있다.

  또한, 프로세스 간의 메모리 공간을 격리시켜 안정성과 보안을 향상시킨다.

- 단점은 물리 메모리와 디스크 간의 데이터 전송이 필요하여 물리 메모리에 비해 접근 속도가 느리다.

 

MMU와 TLB

MMU(Memory Management Unit)컴퓨터 시스템에서 가상 메모리 주소를 실제 물리 메모리 주소로 변환하는 장치이다. 가상 메모리 시스템에서는 프로세스가 가상 주소 공강을 사용하고, 이를 물리 메모리 주소로 매핑하여 실제 메모리에 데이터를 저장하고 접근한다. MMU는 이러한 가상-물리 주소 변환을 수행해 프로세스가 메모리에 접근할 수 있도록 한다.

 

TLB(Translation Lookaside Buffer)는 MMU의 성능을 향상시키기 위해 사용되는 캐시이다.

가상 주소에서 물리 주소로의 변환 결과를 저장하여 재사용하고, 이를 통해 주소 변환 속도가 빨라진다.

  1. TLB는 가상 주소를 태그로 사용하고, 해당 가상 주소에 대한 물리 주소를 저장하는 엔트리로 구성된다.
  2. 주소 변환이 필요할 때, 먼저 TLB를 조회하여 변환 결과를 확인하고, TLB에 해당 엔트리가 없는 경우 MMU를 통해 변환을 수행한다.
  3. 변환 결과는 TLB에 새로 업데이트되며, 이후 같은 가상 주소에 대한 접근 시에는 TLB에서 빠르게 변환 결과를 가져와 사용합니다.

TLB는 속도가 빠르지만 크기가 제한적이기 때문에 모든 주소 변환 결과를 저장할 수 없다. 
따라서 TLB의 크기와 정책 설정은 성능에 영향을 미치는 중요한 요소이다. 
대부분의 시스템에서는 TLB를 사용하여 일부 주소 변환 결과를 캐시하여 MMU의 주소 변환 속도를 향상시키고, 
전체 주소 변환 테이블에 접근하는 비용을 줄인다.

 

TLB와 MMU는 협력하여 가상 메모리 시스템에서 가상 주소를 물리 주소로 변환하여 메모리 접근을 가능하게 하고, 성능 향상을 위해 주소 변환 결과를 캐시하여 빠른 접근을 제공한다.

메모리 분할 방식

가상 메모리는 페이징(Paging)과 세그먼테이션(Segmentation)이라는 두가지 주요 기법을 사용한다.

 

 페이징은 프로세스를 일정한 크기의 페이지로 나누어 적재, 관리하는 방식이다. 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 기법이다.

운영체제는 이러한 페이지들을 물리 메모리와 디스크 사이에서 필요에 따라 이동시킨다. 페이지 폴트(Page fault)가 발생하면, 필요한 페이지가 현재 물리 메모리에 존재하지 않음을 의미하며, 이때 운영체제는 디스크에서 해당 페이지를 가져와 물리 메모리에 로드한다.

 페이징의 장점은 메모리 조각의 사이즈가 모두 같기 때문에 해당 메모리를 차곡차곡 쌓고 만약 메모리가 해제된다 해도, 바로 다른 데이터를 그 자리에 집어 넣을 수 있다.

 하지만 프로세스 크기가 작더라도 같은 사이즈로 쪼개야하기 때문에 해당 블록에 메모리가 남을 수 있다. 이를 내부 단편화라 한다. 이러한 현상이 심해지면 메모리 낭비가 심해진다.

 

 

 세그먼테이션은 가상 메모리를 서로 크기가 다른 논리적 단위로 분할한 것이다. 프로세스를 물리적 단위인 페이지가 아닌 논리적 단위인 세그먼트로 분할해서 메모리에 적재하는 방식이다. 세그먼테이션 기법에서는 같은 단위 크기의 메모리를 사용하지 않기 때문에 반드시 시작 메모리 주소가 매핑 테이블에 포함되어야 한다.

 세그먼테이션의 장점은 내부 단편화가 전혀 생기지 않고 페이지 테이블이 단순하다는 것이지만, 물리 메모리의 메모리 구조가 복잡해진다는 단점이 있다. 왜냐면 프로세스 크기에 맞춰 물리 메모리가 적재되고 삭제되는 것이 반복되며 큰 프로세스는 메모리 사이에 들어가지 못하기 때문이다. 이를 외부 단편화라 하는데 프로세스 처리가 반복되면 물리 메모리에 구멍이 계속 나게 된다.

 

 

 혼용기법은 세그먼테이션과 페이징 기법을 혼용하는 것은 프로세스를 세크먼트 단위로 쪼개고 이것을 다시 페이지 단위로 쪼개는 것을 의미한다.

 이 방식의 장점은 페이징 기법에서 프로세스를 바로 페이징하게되면 프로세스의 코드, 데이터, 힙, 스택 영역 등이 실제 논리관계랑 상관없이 물리크리고 잘려버리기 때문에 코드의 안정성이 떨어진다는 단점을 해결할 수 있다.

  1. 세그먼테이션을 통해 논리적으로 합당한 사이즈로 프로세스를 쪼개고, 이것을 다시 페이징한다.
  2. 세그먼테이션 전체를 세그먼테이션 테이블에 매핑한다.
  3. 해당 테이블에는 가상 메모리의 시작 주소가 들어가고 테이블의 한 섹션이 다시 페이지 테이블로 매핑된다.
  4. 각 페이지 테이블은 물리 메모리로 매핑되는 것을 통해 가상 메모리를 구현한다.

실제 OS에서는 세그먼테이션, 페이징의 단점을 어느 정도 커버할 수 있기에 혼용기법을 많이 사용한다.

 

 

추가적으로 스와핑이라는 기법도 있는데, 스와핑은 프로세스 전체를 물리 메모리에서 디스크로, 또는 디스크에서 물리 메모리로 옮기는 작업을 의미한다. 이는 주로 물리 메모리가 매우 부족할 때 사용되며, 프로세스의 실행 속도를 느리게 할 수 있다.

 

 

페이징 기법에는 아주 다양한 기법들이 존재한다. 나중에 시간적 여유가 생기면 더 깊숙히 알아보도록 하자.

 

출처

https://www.zerotoexpert.blog/p/f04

 

물리 메모리와 가상 메모리

물리 메모리와 가상 메모리는 어떻게 다를까?

www.zerotoexpert.blog

https://wooooozin.tistory.com/entry/%EB%AC%BC%EB%A6%AC-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%99%80-%EA%B0%80%EC%83%81%EB%A9%94%EB%AA%A8%EB%A6%AC-MMU%EC%99%80-TLB-%EA%B0%80%EC%83%81%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

물리 메모리와 가상메모리, MMU와 TLB, 가상메모리 알고리즘

물리 메모리 가상 메모리. 물리 메모리(Physical Memory)와 가상 메모리(Virtual Memory)는 컴퓨터 시스템에서 메모리 관리를 위해 사용되는 개념입니다. 물리 메모리는 실제 하드웨어적으로 존재하는 컴

wooooozin.tistory.com

https://velog.io/@lky9303/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC%EB%AC%BC%EB%A6%AC-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC

 

메모리 관리(물리 메모리, 가상 메모리)

개문 우리는 흔히들 램이 몇 기가냐고 얘기하고는 한다. 8기가, 16기가 등 다양한 크기의 램이 달려있는 컴퓨터를 사용한다. 컴퓨터를 조금 공부해봤던 사람이라면 프로그램이 메모리에 올라가

velog.io

 

'운영체제' 카테고리의 다른 글

Docker & 가상화  (0) 2024.09.13
Sync/Async & Blocking/Non-Blocking  (0) 2024.09.01
상호 배제 / 동기화 (Mutex, Semaphore, Monitor)  (0) 2024.09.01
교착상태 / 기아상태  (0) 2024.08.17
경쟁상태(Race Condition)  (0) 2024.08.17