Segmentation 기법은
둘을 혼합해서 사용하는 경우를 한번 봐보자.
예전에 봤던, 슬라이드임
사용자 프로세스 영역의 할당 방법 중
=> Noncontiguous allocation
이 방법이 또 3개로
1) Paging
2) Segmentation
3) Paged Segmentation
이중 3번째 방식이 혼합 방식임 !!!
Paged Segmentation: segment로 갖다가 여러 page로 구성하는 기법 !
실제로 original segmentation 을 쓰는 메모리 시스템은 사실 현실적으로 없음
segmentation을 쓰더라도 내부에서 paging을 같이 써줘야만 관리가 쉬움.
그래서 2단계 paging기법처럼 주소 변환을 2단계 거쳐야 하는데,
여기서 segmentation을 위한 주소 변환을 해주게 되면
=> page table의 시작위치가 나온다.
segment하나가 여러개의 page로 구성된다고 했죠?
그러니, 각각의 page별로 주소 변환을 해야됨.
그러니, segment당 page table이 존재하는 것.
segment 시작 위치, offset
page 번호, offset
frame 번호, offset
우리가 그동안 배운건 메모리 관리 중에서도 물리적 메모리 관리
였음.
이 챕터에서 중요한 건 주소 변환
이였음.
주소 변환에 있어서 운영체제
의 역할은 무엇인가?
왜 그런걸까?
이거가 프로세스 하나임.
그러면 메모리 참조를 해야하는데
어떤 프로세스가 CPU를 가지고 있으면서 메모리 접근을 하는 것은 운영체제의 도움을 받는가?
=> 전혀 안받음.
주소 변환을 할 때마다 운영체제가 개입을 해야 한다면 CPU가 해당 프로세스로부터 운영체제로 계속 넘어가야함. => 말이 안됨.
프로세스가 CPU를 가지고 있었으면, 매 클럭 사이클마다 메모리에서 어떤 instruction을 읽어와서 cpu에서 실행을 하고 필요시, 데이터를 cpu로 읽어드려서 실행을 하고 이러한 모든 과정은 주소 변환을 통해서 메모리 접근이 이루어짐. 그런 주소 변환 때마다 운영체제가 필요하냐 ? 그렇게 되면 cpu가 운영체제로 넘어갔다 사용자 프로세스로 넘어갔다 이런건 말이 안됨. 그래서 주소 변환은 하드웨어적으로 이루어지는 일임. 운영체제가 끼어들어야 되는 경우는 언젠가? 메모리 접근이 아니라 i/o 장치로의 접근일 때이다. 그때는 이 프로세스가 직접 i/o 접근을 못하기 때문에 운영체제한테 대신 해달라고 요청.