[OS] Lecture 9. Virtual Memory (4_5) - kibitzing/EnGrow GitHub Wiki

유튜브링크

진구

  • 딥러닝 훈련할때 많이 보던 segmentation fault 만나서 반갑 (?)
  • 근데 메모리에 없으면 할당하면 되지 왜 죽었을까?
  • overflow와 protection 과의 차이도 알게 되었다. 다른영역으로 가는건 오버플로우구나. 그런건 거의 못 보긴 한듯
  • 논리적으로 쪼개놓으니까 공유나 보호를 그 단위로 편하게 할 수 있다
  • 페이징과의 차이는 코딩할때 얼마나 모듈화 하느냐랑도 비슷한듯. 재활용 가능성 크면 모듈화 잘 해놓는게 좋듯 여러군데서 사용 많이 할 거 같으면 논리적으로 잘 분리해두고 사용하면 메모리가 절약된다. 그런데 그냥 대부분 한번 쓰이면 이걸 위해 테이블 관리하고 저장하는게 오히려 낭비임.

세영

Segmentation System:

  • 프로그램을 논리적으로 분할, block의 크기가 다를 수 있음
  • 미리 잘라놓을 수 없음
  • Internal fragmentation은 없지만 External은 발생 가능
  • v = (s, d) // v: virtual address, s: segment number, d: offset

Segment Map Table:

  • PMT, BMT와 비슷하지만 segment length, protection bits 행이 추가됨
  • v = (s, d)로 entry를 찾고 3가지 검사 실행
    • fault, overflow, protection

Paging system보다:

  • 관리 overhead가 큼
  • SMT용 메모리 공간 및 접근이 필요 (전용 HW 사용으로 해결 가능)