가상 메모리란?

• 물리적 메모리 크기의 한계를 극복하기 위해 나온 기술이다.

    ◦  가상 메모리를 사용하면 물리적 메모리 공간보다 큰 프로세스를 수행할 수 있다.

    ◦  예) 100MB 메모리 공간에서 200MB 크기의 프로세스를 수행할 수 있음

 

• 어떻게 가능한가?

    ◦  프로세스를 실행할 때 프로세스 전체가 아닌, 실행에 필요한 일부(페이지 단위)만 메모리에 올린다.

    ◦  이를 Demanding Paging 기법이라고 한다. (현재 필요한 페이지만 메모리에 올리는 것)

 

• 운영 체제는 물리 메모리의 제약을 갖고 있는 주기억장치를 보조하기 위해 디스크를 보조기억장치(Paging Space)로 사용한다.

    ◦  주기억장치와 보조 기억 장치를 묶어 하나의 가상 메모리를 구현한다.

    ◦  프로세스는 할당 받은 메모리가 실제 메모리인지, Swap 영역인지 모른다.

    ◦  Swap 영역은 실제 메모리가 아니기 때문에 지연시간이 발생하므로 가급적이면 사용하지 않는 것이 좋다.

         만약 Swap 영역의 사용일 계속해서 증가한다면 메모리 누수를 의심해 봐야 한다.

 

• 가상 메모리 사용의 장점

    ◦  더 많은 프로그램을 동시에 수행할 있어 CPU 이용률과 처리율이 높아진다.

    ◦  프로그래머는 메모리 크기에 관한 문제를 염려할 필요 없이 쉽게 프로그램을 작성할 수 있다.

    ◦  프로그램을 교체할 때 발생하는 메모리 교체 성능 문제를 최소화할 수 있다.

 

• 이런 가상 메모리 기법은 불연속 할당 기법인 페이징과 세그멘테이션 기법에 활용할 수 있다.


페이징 기법

페이징 테이블과 메모리

• 프로세스를 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식

 

• 단순 페이징

    ◦  각 프로세스를 일정한 길이의 페이지로 나눈다. 이 때 페이지의 길이는 프레임과 같은 길이가 되도록 한다.

         -  페이지 : 고정 사이즈의 가상 메모리 내 프로세스 조각

         -  프레임 : 페이지 크기와 같은 주 기억 장치의 메모리 조각

    ◦  외부 단편화 (발생 X), 내부 단편화 (발생 O)

 

• 가상 메모리를 활용한 페이징

    ◦  단순 페이징과 달리 프로세스 페이지 전부를 로드할 필요가 없다.

         -  필요한 페이지가 있으면 나중에 자동으로 불러온다.

    ◦  복잡한 메모리 관리로 인한 오버헤드 발생할 수도 있다.

 

장점

    ◦  논리 메모리가 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고, 물리 메모리의 남는 프레임에 적절히 배치되기 때문에

         외부 단편화가 생기지 않는다.

 

단점

    ◦  내부 단편화 문제가 발생할 수 있다. 페이지 단위를 작게하면 해결할 수 있지만, 페이지 매핑 과정이 복잡해져 비효율적이다.


세그멘테이션 기법

세그멘테이션 테이블과 메모리

• 세그멘트 : 가상 메모리를 서로 크기가 다른 논리적 단위로 분할한 것

• 세그멘테이션 기법 : 프로세스를 물리적 단위인 페이지가 아닌 논리적 단위로 분할해서 메모리에 적재하는 방식

    ◦  페이징 : 소고기를 같은 크기로 잘라서 보관하는 것

    ◦  세그멘테이션 : 소고기를 부위 별로 잘라서 보관하는 것

• 의미가 같지 않는 논리적 내용을 기준으로 프로그램을 분할하기 때문에 각 조각의 크기가 동일하지 않다.

이러한 분할 방식을 제외하면 페이징과 동일하기 때문에, 매핑 테이블의 동작 방식은 페이징 기법과 동일하다.

 

• 단순 세그멘테이션

    ◦  각 프로세스는 여러 세그멘트로 나뉨

    ◦  외부 단편화 (발생 O), 내부 단편화 (발생 X)

    ◦  메모리 사용 효율 개선 및 동적 분할을 통한 오버헤드 감소 효과가 있다.

 

• 가상 메모리를 활용한 세그멘테이션

    ◦  필요하지 않은 세그멘트는 로드되지 않음. 필요한 세그멘트는 나중에 자동으로 불러들여짐

    ◦  복잡한 메모리 관리로 인한 오버헤드 발생할 수 있다.

 

• 장점

    ◦  내부 단편화 문제가 해소된다.

    ◦  보호와 공유 기능을 수행할 수 있다. 프로그램의 중요한 부분과 중요하지 않은 부분을 분리하여 저장할 수 있고,

         같은 코드 영역은 한 번에 저장할 수 있다.

 

• 단점

    ◦  외부 단편화 문제가 생길 수 있다.


참고자료

 

[운영체제(OS)] 15. 가상메모리

가상 메모리는 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다. 즉, 물리 메모리보다 큰 프로세스를 수행하기 위해 가상 메모리를 사용한다. 예를 들어, 100MB 메모리 크기에서 200MB 크기

velog.io

 

[운영체제] 페이징과 세그멘테이션

cs-study에서 스터디를 진행하고 있습니다. 메모리 메인 메모리 (Main Memory, Physical Memory, 주기억장치) CPU가 직접 접근할 수 있는 기억 장치로, 프로세스가 실행되려면 프로그램 코드를 메인 메모리

steady-coding.tistory.com