작성
·
106
·
수정됨
1
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
1:30에서 cpu가 논리주소 0x123번지의 물리 메모리 주소 알려달라고 했을때, 메모리 관리자는 몇 번 세그먼트인지 어떻게 알아내는 걸까요?
세그멘테이션 테이블에서 세그먼트 번호들은 프로그램 영역(코드, 힙, 데이터, 라이브러리, 스택) 마다 별도의 인덱스가 부여 되어 관리되는걸까요? 어떤 기준으로 세그먼트 인덱스가 정해지는 것인지 궁금합니다.
0:40에서 프로그램 관점 메모리와 프로세스 관점 메모리
프로세스 관점 메모리가 각 영역을 서로 인접한 것처럼 바라본다는 것이 어떤 의미일까요?
프로그램 입장에서 바라보는 메모리와 프로세스가 바라보는 메모리에 대한 설명을 해주셨는데요. 강의 1:30부터 세그멘테이션 테이블을 이용하여 메모리관리자가 논리주소를 물리주소로 변환하는 것과 어떠한 맥락으로 이어지는지 궁금합니다.
답변 1
0
안녕하세요 박호정님!
1. 논리 주소를 보고 어떤 세그먼트인지 알아냅니다. 논리주소의 앞부분 n개를 기준으로 이 주소가 코드, 데이터, 스택등에 있는지 구분합니다. 여기서 n개는 cpu가 몇비트인지에 따라 달라질 수 있습니다.
2. 네 맞습니다. 프로그램 영역마다 별도로 부여됩니다. 세그먼트는 메모리의 속성에 따라 나눕니다. 메모리의 속성이란 해당 메모리가 ReadOnly인지, ReadWrite인지, 또 다른 프로세스와 공유가 가능해야하는지 등이 있습니다.
3.
a. 사용자는 프로그램을 연속된 배열로 생각하지 않고 함수, 자료구조 등으로 생각합니다. 반면 프로세스는 코드, 데이터, 스택등을 연속된 배열로 생각합니다.
b. 만약 사용자가 변수에 접근한다면 이 변수는 데이터, 스택, 힙 영역중에 존재할겁니다. 이 변수를 temp라고 한다면 사용자는 temp에 접근하지만 이는 프로세스 입장에서 논리적 주소로 변환됩니다. 그다음 MMU릉 통해 물리적 주소로 변환됩니다.
다른 영역의 끝이 서로 연결되어 있는 것 처럼 느껴지는 겁니다.
코드 영역의 끝에서 +1만큼 이동하면 데이터 영역에 접근하기 때문에 마치 메모리에 연속으로 위치한 것 처럼 느껴집니다!
설명 감사합니다! 하나 추가적으로 질문 드립니다~!
"연속된 배열"로 생각한다는게 어떤 의미인지 잘 모르겠는데 설명부탁드려도 될까요?