• 카테고리

    질문 & 답변
  • 세부 분야

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

  • 해결 여부

    해결됨

운영체제/메모리분할방식 질문있습니다.

23.03.02 12:54 작성 23.03.02 13:04 수정 조회수 401

0

안녕하세요. 선생님!

운영체제 - 가변 메모리분할 관련 질문있습니다.

개념정리)프로그램이 실행된후 가상메모리 부여받고 물리메모리에도 실제 사용할?량만큼의 크기를 OS가 판단하여 공간을 잡는것으로 이해했습니다.

궁금한점은 프로세스 A가 비행기 슈팅게임이라고하고 총알을 계속 발사하고있습니다.

총알을 메모리에서 삭제안한다고 했을때, 처음 부여받은 물리메모리공간을 만약에 초과하게 된다면 어떻게 되는지? 궁금합니다.

가변분할방식 수업중 그림예제에서 프로세스 A,B,C가 물리메모리에 연속으로 배치되는 이미지를 보다가 만약에 A에서 메모리가 증가하게되어 B메모리 영역에 침범하면 어떻게 되는지 궁금합니다.

 

 

 

 

답변 2

·

답변을 작성해보세요.

1

가상 메모리에 대해 제대로 이해하지 못하고 있는 것으로 보입니다. User mode 프로세스가 가상 메모릴 사용한다는 것은 물리 메모리에 임의접근 할 수 없다는 의미도 포함합니다. 가상 메모리(가령 4GB) 전체가 모두 물리 메모리 영역이 될 수도 있고 HDD로 페이지 아웃 됐을 수도 있습니다. 그리고 그 구성은 온전히 OS가 알아서 결정합니다.

현재 활발히 실행 중인 프로그램이 있다면 운영체제는 최대한 RAM 메모리를 배정할 것입니다. 참고하시기 바랍니다.

 

전우형님의 프로필

전우형

질문자

2023.03.05

선생님 답변감사합니다!

책과 더불어서 가상메모리쪽 반복해서 학습하겠습니다. 좋은하루되세요~

1

부여된 메모리 이상으로 사용하고자 접근을 시도할 경우 메모리 접근 오류(Segmentation fault)가 발생합니다. 당연히 OS는 접근을 차단하고 해당 프로세스를 강제 정지 시킵니다. 그리고 여러 프로세스의 메모리가 물리적으로 연속된 공간에 배치된다 하더라도 경계를 넘어서 접근하지 못하도록 OS가 차단하기 때문에 침범하는 일은 발생하지 않습니다. 그러나 단 하나의 예외가 있는데 바로 디버거 입니다. 이 경우에는 예외적으로 접근이 허용됩니다. 참고하시기 바랍니다.

전우형님의 프로필

전우형

질문자

2023.03.05

안녕하세요. 선생님~

프로세스들이 서로 분리되어 서로의 영역이 고유하도록 되어있는것이랑 같은 원칙이군요.

답변 감사합니다!

아직 프로세스가 실행된후 메모리들이 어떻게 변동하는지 그림이 안그러져서, 하나만 더 질문 더 드리고 싶습니다. ㅠㅠ

보통 프로세스들이 동적으로 메모리 생성 하는일이 잦은걸로 알고있습니다.(특히게임)

가정)

가상메모리 : 4GB 부여받음

물리메모리 : 300MB 부여받음(이 부여받는 메모리 량을 OS가 특정 프로세스의 런타임 중 증가되는 메모리량을 어떻게 알고 부여하는지 궁금합니다ㅠ)

질문)

게임을 하다보면 [작업관리자-메모리]보면 쭉 올라가는 것을 볼수있는데요.

처음에 물리메모리 공간을 할당받을때 해당 프로세스에서 동적으로 생성할 양만큼 고려?하여

충분히 물리메모리 공간을 부여받는것일까요?

OS가 "음~ 이 프로세스는 게임이군 그리고 뭔가 동적으로 메모리 많이 생기겠군 넌 넉넉하게 1기가쯤 부여해주마" 이런느낌일까요?

왜냐하면 PC 방에서 게임을하다가, 메모리로 인해 게임이 꺼지는 경우는 경험을 해보지 못한것같습니다.