강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

넘블님의 프로필 이미지
넘블

작성한 질문수

그림으로 쉽게 배우는 운영체제

세그멘테이션(배치정책)

여러 의문점

작성

·

26

1

의문점이 많네요...


CPU가 MMU에게 논리주소를 전달
-> 몇 번 세그먼트 인지 알아냄
-> MMU내의 세그먼트 테이블 베이스 레지스터를 이용해 메모리 내에 있는 세그멘테이션 테이블을 찾음

 

이 과정인데, 의문점은

  1. MMU에서 몇 번 세그먼트인지 어떻게 알아내는가?
    ( 몇 번 세그먼트에서 '몇 번'이라는게 애초에 무엇을 의미하나요?
    힙, 스택, 데이터, 코드 각 영역을 개별의 세그먼트로 인식하는데, 프로세스가 여러개니 말 그대로 여러 영역을 나열했을 때 n번에 해당하는 것을 의미하는건가요?


    아니면 각 프로세스의 모듈중 n번째를 의미하는 건가요?

  2. MMU내의 세그먼트 테이블 베이스 레지스터는 CPU옆에 위치하나요?
    -> MMU는 어디에 있는걸까요?

     

  3. 컨텍스트 스위칭 할 때마다 세그먼트 테이블 베이스 레지스터를 해당 프로세스의 것으로 바꿔준다고 하셨는데 무슨 값인지 어떻게 알고 바꿔주나요? PCB에 있나요? ( '바꿔주는 값'은 자신의 세그먼트 테이블은 메모리의 n번지에 있음을 나타내는 값인가요? )
    -> 세그멘테이션 테이블은 프로세스마다 개별로 존재하는지?

 

추가로 예시로 들어주신거에서 "CPU에서 세그먼트 1번이 632번지로 접근한다고 가정" 이 문장이 이해가 잘 안가네요
CPU가 논리주소 632번지로 접근한다고 하는것과 뭐가 다른건가요?

답변 1

0

감자님의 프로필 이미지
감자
지식공유자

안녕하세요 넘블님!
바로 답변드리겠습니다.😊

  1. MMU에서 몇 번 세그먼트인지 어떻게 알아내는가?
    MMU가 몇 번 세그먼트인지 알아내는 것은 CPU에서 들어오는 논리주소를 2차원적으로 해석합니다.
    논리주소의 앞에 n번째 필드를 몇 번 세그먼트인지, 나머지는 해당 세그먼트에서 offset을 나타냅니다.

  2. MMU내의 세그먼트 테이블 베이스 레지스터는 CPU옆에 위치하나요?
    -> MMU는 어디에 있는걸까요?

     
    보통 세그먼트 테이블 베이스 레지스터와 MMU는 CPU내부에 존재합니다.(경우에 따라 가까이 있는 다른 하드웨어)

  3. 컨텍스트 스위칭 할 때마다 세그먼트 테이블 베이스 레지스터를 해당 프로세스의 것으로 바꿔준다고 하셨는데 무슨 값인지 어떻게 알고 바꿔주나요? PCB에 있나요? ( '바꿔주는 값'은 자신의 세그먼트 테이블은 메모리의 n번지에 있음을 나타내는 값인가요? )
    네 맞습니다. 컨텍스트 스위칭할 때 현재 레지스터 값, 스케줄링 정보, 메모리 관련 정보(세그먼트 테이블 베이스)등을 저장합니다.
    -> 세그멘테이션 테이블은 프로세스마다 개별로 존재하는지?
    네 맞습니다.

  4. 추가로 예시로 들어주신거에서 "CPU에서 세그먼트 1번이 632번지로 접근한다고 가정" 이 문장이 이해가 잘 안가네요
    CPU가 논리주소 632번지로 접근한다고 하는것과 뭐가 다른건가요?
    CPU에서 세그먼트 1번이 632번지로 가정이라는 것은 실제로 전달된 주소는 (세그먼트 = 1, 오프셋 = 0x632)라는 것입니다.
    영상에선 이 부분이 생략되어서 이해가 잘 안되셨던 것 같습니다.
    더 자세하기 설명드렸어야 했는데 부족했던 것 같습니다.🙇‍♂

     

궁금증이 해결되셨나요? 😊


넘블님의 프로필 이미지
넘블
질문자

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

넘블님의 프로필 이미지
넘블

작성한 질문수

질문하기