ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Operating System - 페이징(Paging) & 세그멘테이션(Segmentation)
    Computer Science/Operating System 2022. 1. 26. 13:36

    메모리

    메인 메모리(Main Memory)의 문제점

    CPU가 직접 접근할 수 있는 기억 장치로, 프로세스가 실행되기 위해서는 프로그램 코드를 메인 메모리에 적재해 두어야 한다. 그런데, 만약 프로그램 용량이 메인 메모리보다 크면 어떤 일이 발생할까?

     

    가상 메모리(Virtual Memory)의 등장

    실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것이다. 메모리 공간은 한정적이기 때문에 사용자에게 더 많은 메모리를 제공하기 위해 가상 주소를 사용한다. 메모리 관리 장치는 가상 주소를 이용해 실제 데이터가 담겨있는 주소로 변환해 준다.

    여기서 가상 주소 공간은 하나의 프로세스가 메모리에 저장되는 논리적인 모습을 가상 메모리에 구현한 공간이며, 가상 주소는 이러한 가상 주소 공간을 가리키는 주소이다.

     

    가상 메모리가 필요한 이유

    물리 메모리의 한계

     모든 프로그램 코드를 물리 메모리에 적재할 수 없다.

     그렇다고, 프로그램을 교체하면서 올리면 메모리 교체 성능 문제가 발생한다.

     

    가상 메모리의 장점

    ㆍ 프로그램 용량이 실제 물리 메모리 용량보다 커도 된다.

    ㆍ 전체 프로그램이 물리 메모리에 올라와 있지 않아도 된다.

    ㆍ 더 많은 프로그램을 동시에 실행함으로써 CPU의 이용률과 처리율이 증가한다.

    ㆍ 물리 메모리의 제약을 보완하고 프로세스 전체를 메모리에 올리지 않고도 다중 프로그래밍을 실현하게 해 준다.


    주 기억 장치 & 보조 기억 장치

    가상 메모리의 구현

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

     

    즉, 메인 메모리(주 기억 장치)와 디스크의 Paging Space를 묶어 하나의 메모리처럼 동작하게 하며, 이를 통해 메인 메모리의 한계를 넘는 메모리 사용을 가능하게 하는 가상 메모리를 구현할 수 있다.

     

    Swapping

    CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억 장치로 내보내고(swap-out) 다른 프로세스의 메모리를 주 기억 장치로 불러오는(swap-in) 작업을 swap이라고 한다.

     

    즉, swap이란 필요한 주소 공간 전체를 주 기억 장치에 올리는 것이 아니라, 그때그때 필요한 것들만 주 기억 장치에 올리고 필요 없어지면 보조 기억 장치로 내보내는 동작이다.


    메모리 관리

    메모리 관리의 필요성

    다중 프로그래밍 시스템에서 여러 프로스들을 수용하기 위해서는 주 기억 장치를 동적 분할하는 메모리 관리 작업이 필요하다. 즉, 하드 디스크에 있는 프로그램을 어떻게 메인 메모리에 적재할 것인지 판단하는 작업이 필요하다.

     

    연속 메모리 관리

    프로그램 전체가 하나의 커다란 공간에 연속적으로 할당되는 방식이다.

     

    고정 분할 기법 : 주 기억 장치가 고정된 크기의 파티션으로 분할 → 내부 단편화 발생

    동적 분할 기법 : 주 기억 장치가 동적인 크기의 파티션으로 분할 → 외부 단편화 발생

     

    이렇게 연속 메모리 관리 기법을 사용할 경우 단편화 현상이 발생한다.

     

    단편화(Fragmentation)란?

    기억 장치의 빈 공간 또는 자료가 여러 조각으로 나뉘는 현상이다. 프로세스들이 메모리에 적재되고 제거되는 일이 반복되면, 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 만큼의 공간이 늘어나게 된다. 이러한 단편화는 크게 두 가지로 나뉜다.

     

    1. 내부 단편화

     

    ㆍ 프로세스가 사용하는 메모리 공간에 남는 부분을 의미한다.

    ㆍ 프로세스가 요청한 양보다 더 많은 메모리를 할당할 때 발생하며, 분할된 메모리 공간과 프로세스가 사용하는 공간의 차이를 의미한다.

     

    2. 외부 단편화

     

    ㆍ 전체 메모리 공간 중 사용하지 못하게 되는 부분을 의미한다.

    ㆍ 메모리 할당 및 해제 작업의 반복으로 작은 메모리가 중간중간 존재할 수 있다. 이렇게 사용하지 않는 메모리가 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황이다.

    ㆍ 외부 단편화를 해결하기 위해 압축을 이용해서 프로세스가 사용하는 공간을 한쪽으로 몰 수 있지만, 작업 효율이 좋지는 않다.

     

    불연속 메모리 관리

    프로그램 일부가 서로 다른 주소 공간에 할당될 수 있는 기법이다. 앞서 봤던 단편화 문제를 해결하기 위해 제시된 기법으로, 외부 단편화를 해소하기 위한 페이징(Paging)과 내부 단편화를 해소하기 위한 세그멘테이션(Segmentation)으로 나뉜다.


    페이징(Paging)

    페이징(Paging)이란?

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

     

    ㆍ 페이지 : 고정 사이즈의 가상 메모리 내 프로세스 조각을 의미한다.

    ㆍ 프레임 : 페이지 크기와 같은 주 기억 장치의 메모리 조각을 의미한다.

     

    하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 기법이다.

     

    페이징 테이블(Paging Table)

     

    위 사진은 페이징 테이블의 매핑을 나타낸다. 위 사진에서 보이는 것처럼, 물리 메모리는 고정 크기의 프레임으로, 가상 메모리는 고정 크기의 페이지로 분리되어 있다. 가상 메모리 내의 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 매핑되어 저장된다.

     

     

    모든 프로세스는 하나의 페이징 테이블을 소유하고 있고, 페이징 테이블에는 메인 메모리(물리 메모리)에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리(물리 메모리)의 시작 주소가 있다. 이를 통해 가상 메모리 내의 페이지들이 가각 실제 메인 메모리(물리 메모리)의 어느 프레임에 적재되어 있는지 알아낼 수 있다.

     

    논리 주소와 페이징 테이블

    메모리 관리 장치는 가상 주소(논리 주소)를 이용해 실제 데이터가 담겨 있는 주소로 변환해준다.

     

     

    논리 주소는 <page, offset>과 같은 형태로 구성되며, 이를 이용해 물리 주소로 변환한다.

     

     

    위 그림은 가상 주소를 물리 주소로 변환하는 전체 과정을 나타낸다.

    TLB란 Translation Lookaside Buffer의 약자로 변환 색인 버퍼를 뜻한다. 이러한 TLB는 가상 주소를 물리 주소로 변환하는 속도를 높이기 위해서 사용되는 캐시이다.

     

    페이징(Paging)의 장단점

    장점

    ㆍ 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고, 물리 메모리의 남는 프레임에 적절히 배치되기 때문에 외부 단편화가 생기지 않는다.

     

    단점

    ㆍ 내부 단편화 문제가 발생할 수 있다. 페이지 단위를 작게 하면 내부 단편화 문제를 해결할 수 있지만, 페이지 매핑 과정이 복잡해져서 오히려 역효과가 난다.


    세그멘테이션(Segmentation)

    세그멘테이션(Segmentation)이란?

    세그먼트는 가상 메모리를 서로 크기가 다른 논리적인 단위로 분할하는 것을 의미한다. 세그멘테이션은 프로세스를 물리적 단위인 페이지가 아닌 논리적 단위인 세그먼트로 분할해서 메모리에 적재하는 방식이다.

    돼지를 도축할 때, 페이징은 돼지를 같은 크기로 잘라서 보관하는 것이라면 세그멘테이션은 부위 별로 잘라서 보관한다고 이해하면 된다. 이렇듯 세그먼트는 논리적인 내용을 기준으로 프로그램을 분할하기 때문에 크기가 같지 않다는 특징이 있다.

     

    세그먼트 테이블

    분할 방식을 제외하면, 페이징과 세그멘테이션이 동일하기 때문에 매핑 테이블의 동작 방식 또한 동일한다. 다만, 논리 주소의 앞 비트들은 페이징 번호가 아니라 세그먼트 번호가 된다. 즉, <segment, offet> 형태로 구성되며, 세그먼트 번호를 통해 세그먼트의 시작 물리 주소와 세그먼트의 길이를 파악할 수 있다.

     

    세그멘테이션의 장단점

    장점

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

    ㆍ 보호와 공유 기능을 수행할 수 있다. 프로그램의 중요한 부분과 중요하지 않은 부분을 분리하여 저장할 수 있고, 같은 코드 영역은 한 번에 저장이 가능하다.

     

    단점

    ㆍ 외부 단편화 문제가 발생할 수 있다.


    출처

    https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/Paging%20and%20Segmentation.md

    https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/Paging%20and%20Segmentation.pdf

    https://brocess.tistory.com/268

    https://copycode.tistory.com/113

    https://steady-coding.tistory.com/524

     

    728x90

    댓글

Designed by Tistory.