ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 세그멘테이션 기법이란 무엇인가
    CS지식/운영체제 2021. 6. 24. 22:11

    세그멘테이션 기법은 가변 분할 방식으로 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용할 수 있다.

     

     

    세그멘테이션 기법에서는 세그멘테이션 테이블이라는 매핑 테이블을 사용한다.

    세그멘테이션 테이블에는 세그멘트의 크기를 나타내는 limit와 물리 메모리의 어디에 위치했는지, 시작 위치를 나타내는 address가 있다. 순서는 가상 메모리에서의 세그멘트 번호에 따라 순차적으로 저장된다.

    세그멘테이션 기법은 프로세스의 크기에 따라 메모리를 가변적으로 분할하기 때문에 매핑 테이블에 크기 정보를 포함해야한다.

     

    만약에 프로세스가 물리 메모리에 올라갈 공간이 없다면 스왑 영역에 올려 놓는다.

    이렇게 프로세스가 스왑 영역에 올려져있다면(위 그림에서는 프로세스 D를 말함) 세그멘테이션 테이블에서 address에는 I라고 표시한다.

     

    세그멘테이션의 장점은 메모리를 프로세스 단위로 관리하기 때문에 매핑 테이블이 작고 단순하다는 것이다.

    하지만, 물리 메모리의 외부 단편화로 인해 물리 메모리 관리가 복잡해진다는 단점이 존재한다.

     

     

    세그멘테이션 기법의 주소 변환은 어떻게 이루어질까?

    위 그림을 예시로 사용하여 프로세스 A의 20번지에 접근한다고 생각해보자.

    여기서 말하는 20번지는 가상 주소이므로 실제 데이터에 접근하기 위해서는 물리 주소로 변환해야한다.

    먼저, 프로세스 A는 가상 메모리에서 세그멘트 0이므로 주소 변환을 요청할 때, <0, 20>을 보낸다.

    여기서<S,D>로 표현기법을 사용하는데 S는 프로세스의 가상 메모리에서 세그멘트 번호를 의미하고

    D는 요구하는 프로세스의 가상 주소를 의미한다.

     

    이렇게 <0,20>을 보내면 세그멘테이션 테이블에서 세그멘트 0의 시작주소를 알아낸다.

    (세그멘테이션 테이블의 첫 번째 행의 adrress값을 참조하면 된다.)

    물리 메모리에서의 세그멘트 0의 시작주소가 100인 것을 알아냈고 원하는 주소값인 20을 더하여 물리 주소 120번지를 구할 수 있다.

    만약, 이렇게 구한 120번지가 세그멘트의 크기(limit)보다 크다면 메모리 오류를 출력하고 해당 프로세스를 강제 종료한다. 이 때 발생하는 오류를 trap이라고 한다.

    trap은 자신의 영역을 벗어나는 주소에 접근하거나 숫자를 0으로 나누는 것과 같이 사용자가 의도치 않게 일으키는 인터럽드를 의미한다.

     

    세그멘트의 크기(limit)보다 작다면 변환된 물리 주소를 반환하고 물리 메모리에서 변환한 물리 주소에 있는 데이터를 읽거나 쓰는 작업을 할 수 있게된다.

     

    세그멘테이션 기법 주소 변환 메커니즘

     

    'CS지식 > 운영체제' 카테고리의 다른 글

    RAID란 무엇인가  (0) 2021.07.15
    스레싱(thrashing)이란 무엇인가  (0) 2021.07.13
    페이징 기법이란 무엇인가  (0) 2021.06.21
    가상 메모리란 무엇인가  (0) 2021.06.18
    컴파일러와 인터프리터는 무엇인가  (0) 2021.06.15

    댓글

Designed by Tistory.