[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 사용으로 해결 가능)