가상 메모리 (OS) - 2

jm·2022년 12월 8일
0

OS

목록 보기
11/13

📌Segmentation System

  • 프로그램을 논리적 block으로 분할 (segment)
    • Block의 크기가 서로 다를 수 있음
    • 예) stack, heap, main procedure, shared lib, 등
  • 특징
    • 메모리를 미리 분할 하지 않음 (크기가 다르므로, VPM과 유사)
  • Segment sharing/proteection이 용이함
  • Address mapping 및 메모리 관리(복잡함)의 Overhead가 큼
  • No internal fragmetation
    • 외부 단편화는 발생 가능 (메모리에서 빠져나가는 순서가 다르기 때문에)
  • Address mapping
    • Virtual address: v=(s, d) (s=segment num, d=dispalcement, offset)
    • Segment Map Table (SMT)
    • Address mapping mechanism는 paging system과 유사
    • direct mapping과 매우 유사(virtual address부분의 변수만 다름)
    1. 프로세스의 SMT가 저장되어 있는 주소 b에 접근
    2. SMT에서 sgment s의 entry 찾음
      • s의 entry 위치 = b + s*entrySize
    3. 찾아진 Entry에 대해 다음 단계들을 순차적으로 실행
        1. 존재 비트가 0인 경우 = segment fault
        1. 변위(d)가 segment 길이보다 큰 경우 (d > ls), segment overflow exception 처리 모듈 호출
        1. 허가되지 않은 연산일 경우 (protection bit field 검사), segment protection exception 처리 모듈을 호출
    4. 실제 주소 r 계산 r = as + d
    5. r로 메모리에 접근
  • Segment sharing/protection
    • 노리적으로 분할되어 있어, 공유 및 보호가 용이함

      공유할때 점프하는 부분에서 문제가 생겼는데 Segment는 어차피 편집기 안에서 점프하고 이는 논리적인 공간이기 때문에 점프 거리만 외부에서 알려주면 됨

요약

  • 프로그램을 논리 단위로 분할(segment) / 메모리를 동적으로 분할
    • 단편화 ❌, sharing / protection이 용이
    • paging system 대비 관리overhead가 큼
  • 필요한 segment만 메모리에 적재하여 사용, 메모리 효율적 활용
  • Segment mapping overhead = Paging과 유사
    • 메모리 공간 및 추가적인 메모리 접근이 필요
    • 전용 HW 활용으로 해결 가능

📌Hybrid Paging System

  • Paging과 Segmentatiton의 장점을 결합
  • 프로그램 분할
    1. 논리 단위의 segment로 분할
    2. 각 segment를 고정된 크기의 page들로 분할
  • Page 단위로 메모리에 적재
  • Address mapping

    • Virtual address : v = (s, p, d)
      • s : segment num, p : page num, d : offset in a apge
    • SMPPMT 모두 사용
      • 각 프로세스 마다 하나의 SMT
      • 각 segment 마다 하나의 PMT
    • Address mapping
      • Direct, associated 등
    • 메모리관리는 FPM과 유사 = Paging system과 유사
    • SMT 하이브리드
      • No residence bit ➡ 메모리에 바로 올리는 작업이 아니기 때문에
      • PMT address가 추가 됨, 각 segment의 PMT가 어디있는 지 찾기 위해
    • 메모리 접근을 3번해야한다는 단점이 있음. 하지만 장점이 더 큼

요약

  • 논리적 분할(segment)과 고정 크기 분할(page)을 결합
    • 페이지 공유 및 보호가 쉬움
    • 메모리 할당/관리 overhead가 작음
    • external fragmentation❌, 내부 단편화는 있음
  • 전체 테이블 수의 증가 ➡ 메모리 소모가 크고 Address mapping 과정이 복잡함
  • Direct mapping의 경우 메모리 접근이 3배 ➡ 성능이 저하될 수 있음

App은 작은 OS임 이를 활용하면 효율적인 프로그램 만들 수 있음 !!


https://youtu.be/EdTtGv9w2sA [Course] Operating System (CPA310) - 운영체제 강의. HPC Lab. KOREATEC

profile
ㅎㅎ

0개의 댓글