인프런 커뮤니티 질문&답변
여러 의문점
작성
·
26
1
의문점이 많네요...
CPU가 MMU에게 논리주소를 전달
-> 몇 번 세그먼트 인지 알아냄
-> MMU내의 세그먼트 테이블 베이스 레지스터를 이용해 메모리 내에 있는 세그멘테이션 테이블을 찾음
이 과정인데, 의문점은
MMU에서 몇 번 세그먼트인지 어떻게 알아내는가?
( 몇 번 세그먼트에서 '몇 번'이라는게 애초에 무엇을 의미하나요?
힙, 스택, 데이터, 코드 각 영역을 개별의 세그먼트로 인식하는데, 프로세스가 여러개니 말 그대로 여러 영역을 나열했을 때 n번에 해당하는 것을 의미하는건가요?
아니면 각 프로세스의 모듈중 n번째를 의미하는 건가요?MMU내의 세그먼트 테이블 베이스 레지스터는 CPU옆에 위치하나요?
-> MMU는 어디에 있는걸까요?컨텍스트 스위칭 할 때마다 세그먼트 테이블 베이스 레지스터를 해당 프로세스의 것으로 바꿔준다고 하셨는데 무슨 값인지 어떻게 알고 바꿔주나요? PCB에 있나요? ( '바꿔주는 값'은 자신의 세그먼트 테이블은 메모리의 n번지에 있음을 나타내는 값인가요? )
-> 세그멘테이션 테이블은 프로세스마다 개별로 존재하는지?
추가로 예시로 들어주신거에서 "CPU에서 세그먼트 1번이 632번지로 접근한다고 가정" 이 문장이 이해가 잘 안가네요
CPU가 논리주소 632번지로 접근한다고 하는것과 뭐가 다른건가요?
답변 1
0
안녕하세요 넘블님!
바로 답변드리겠습니다.😊
MMU에서 몇 번 세그먼트인지 어떻게 알아내는가?
MMU가 몇 번 세그먼트인지 알아내는 것은 CPU에서 들어오는 논리주소를 2차원적으로 해석합니다.
논리주소의 앞에 n번째 필드를 몇 번 세그먼트인지, 나머지는 해당 세그먼트에서 offset을 나타냅니다.MMU내의 세그먼트 테이블 베이스 레지스터는 CPU옆에 위치하나요?
-> MMU는 어디에 있는걸까요?
보통 세그먼트 테이블 베이스 레지스터와 MMU는 CPU내부에 존재합니다.(경우에 따라 가까이 있는 다른 하드웨어)컨텍스트 스위칭 할 때마다 세그먼트 테이블 베이스 레지스터를 해당 프로세스의 것으로 바꿔준다고 하셨는데 무슨 값인지 어떻게 알고 바꿔주나요? PCB에 있나요? ( '바꿔주는 값'은 자신의 세그먼트 테이블은 메모리의 n번지에 있음을 나타내는 값인가요? )
네 맞습니다. 컨텍스트 스위칭할 때 현재 레지스터 값, 스케줄링 정보, 메모리 관련 정보(세그먼트 테이블 베이스)등을 저장합니다.
-> 세그멘테이션 테이블은 프로세스마다 개별로 존재하는지?
네 맞습니다.추가로 예시로 들어주신거에서 "CPU에서 세그먼트 1번이 632번지로 접근한다고 가정" 이 문장이 이해가 잘 안가네요
CPU가 논리주소 632번지로 접근한다고 하는것과 뭐가 다른건가요?
CPU에서 세그먼트 1번이 632번지로 가정이라는 것은 실제로 전달된 주소는 (세그먼트 = 1, 오프셋 = 0x632)라는 것입니다.
영상에선 이 부분이 생략되어서 이해가 잘 안되셨던 것 같습니다.
더 자세하기 설명드렸어야 했는데 부족했던 것 같습니다.🙇♂
궁금증이 해결되셨나요? 😊






아 이해가 됐습니다
친절한 답변 감사드립니다!!