Software Courses/Operating System

[Memory] Segmentation system

김 정 환 2020. 12. 10. 22:50
반응형

Segmentation system

    - 프로그램을 논리적 block으로 분할

    - Segment : 논리적으로 분할된 block

    - 논리적으로 분할하기 때문에 block의 크기가 다름

 

 

 

특징

    - Block의 크기가 다르므로 메인 메모리를 미리 분할하기 않음

    - VPM과 유사

    - 공유와 보호에 용이

    - block의 크기가 달라서 관리하기 힘들기 때문에 overhead가 큼

    - 내부 단편화 발생하지 않음

    - 외부 단편화 발생

 

 

 

Address mapping

    - 가상 주소 : v = (s, d)

    - SMT(segment map table) 사용

SMT

    - 동작

        * paging system과 유사

        -> 프로세스의 SMT가 저장되어 있는 주소 b에 접근

        -> SMT에서 segment s의 entry를 찾음(위치 : b + s * entrySize)

        -> 찾아진 entry에 대해 다음 단계를 순차적으로 실행

        -> residence=0인 경우 (segment fault), swap device로부터 해당 segment를 메모리로 적재하고 SMT 갱신

        -> 변위(d)가 segment 길이보다 큰 경우 (d > ls), segment overflow exception 처리 모듈을 호출, 문제 없으면 넘어감

        -> 허가되지 않은 연산일 경우(protection bit field 검사), segment protection exception 처리 모듈을 호출, 문제 없으면 넘어감

        -> 실제 주소 r계산(r = as + d)하고 메모리에 접근

 

 

 

 

Segment 관리

    - VPM(variable partition multiprogramming)과 유사

    - segment 적재시, 크기에 맞추어 분할 후 적재

 

 

Partition table

 

 

Segment sharing/protection

    - 논리적으로 분할되어 있어서 공유 및 보호가 용이

    - 공유 용이 why? page system에서 공유할 때는 branch 때문에 선택 영역이 아닌 다른 영역을 가리키는 문제가 발생. 예를 들어, 편집기(43062 ~ 68348) 내에서만 가리켜야 하는데 범위를 벗어나서 가리키는 문제 발생. 하지만 segment는 논리적으로 분할했기 때문에 이런 문제가 발생하지 않음

    - 보호 용이 why? 강의에서는 protection bit를 사용하면 된다라고 했지만 이는 page system과도 동일... 나의 생각은 역시나 protection bit에서도 branch와 관련된 문제가 발생하기 때문이라고 생각

 

 

 

 

Paging system VS Segmentation system

 

    - paging system

        * 간단한 관리

        * 낮은 overhead

        * 크기대로 분할

        * 복잡한 공유

 

    - segmentation system

        * 복잡한 관리

        * 높은 overhead

        * 논리적으로 분할

        * 쉬운 공유

 

 

 

본 내용은 한국기술교육대학교 김덕수 교수님의 유튜브 강의를 듣고 정리한 내용입니다.
반응형