• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

OS는 프로세스를 남의 프로세스 메모리로 접근하는 것을 못하게 하는데 포인터는 어떻게 이해하면 될까요?

23.09.22 18:26 작성 23.09.22 20:58 수정 조회수 237

0

포인터는 유일하게 메모리 접근을 하는 텍스트 코드로 알고 있습니다. 포인터도 프로세스 중에 검찰같은 역할로 보면 되는 것인가요? 프로그램 안에 코드가 있고 그 코드(텍스트)에서 포인터라는 (함수?) 것이 외부의 함수(스택)이나 heap에 접근이 가능하니까 궁금해졌습니다.

 

조금 더 추측하자면 포인터는 디버거를 사용할 때 디버거가 여러 지역변수나 값들을 보여줄 수 있고 메모리 안에 실행 중인 값들을 보여줄 수 있는데 이러한 디버거 프로그램은 포인터 구성 된 코드로 이루어졌다고 볼 수 있을까요?

 

지금 계층이 여러 군데로 산발적으로 학습돼서 맞는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

포인터는 단순이 메모리의 주소를 저장 할 목적의 변수에 불과 합니다. 코드는 아닙니다. 그리고 여기서 언급하는 메모리 주소는 모두 가상메모리 시스템 상 주소입니다. 물리 메모리에 대한 주소는 아닙니다. 그리고 타 프로세스의 메모리 공간을 보는 행위 자체는 운영체제가 차단하고 있습니다. 다만 디버깅 목적으로 디버거에게만 허용하고 있습니다.

질문 내용 중 몇몇 것들은 걱정하는 것처럼 조금 엉킨 것으로 보입니다. 포인터는 단순 메모리 주소를 저장하는 변수에 불과하다는 점을 상기하고 자신의 이론을 다시 점검해보는 것이 좋겠습니다. 그리고 디버거 프로그램은 포인터로 구성된 코드라는 생각은 모순이 있습니다. 디버거와 포인터를 연결할 필요는 없겠습니다.

우선 가상메모리 시스템에 대해서 공부해보시기를 강력히 권합니다. 참고하시기 바랍니다. :)

포인터와 디버거는 별개의 것으로 구분하겠습니다. code로 작성하는 메모리는 논리적인 메모리(virtural memory) 로 이해하겠습니다. OS상에서 허락한 메모리 공간을 보는 것은 디버거임을 이해했습니다. 감사합니다!