강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của jjun
jjun

câu hỏi đã được viết

Học hệ điều hành dễ dàng qua hình ảnh

Phân khúc (Chính sách nhóm)

여러 의문점

Viết

·

33

1

의문점이 많네요...


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

 

이 과정인데, 의문점은

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


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

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

     

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

 

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

운영체제

Câu trả lời 1

0

gamja5님의 프로필 이미지
gamja5
Người chia sẻ kiến thức

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

  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)라는 것입니다.
    영상에선 이 부분이 생략되어서 이해가 잘 안되셨던 것 같습니다.
    더 자세하기 설명드렸어야 했는데 부족했던 것 같습니다.🙇‍♂

     

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


jjun님의 프로필 이미지
jjun
Người đặt câu hỏi

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

Hình ảnh hồ sơ của jjun
jjun

câu hỏi đã được viết

Đặt câu hỏi