작성
·
77
·
수정됨
0
강사님의 가상메모리 강의를 듣고, 가상메모리는 무엇인가에 대해 대략적인 내용을 학습할 수 있었습니다.
이에 제가 이해한 개념이 올바른 내용인지 확인 부탁드리겠습니다.
최초에 저는 가상메모리에 대해 이해가지 않았던 부분이 있었습니다.
가상메모리는 실제 메모리보다 더 크게 보이게하는 기술이라는 맥락으로 설명을 주셨던 거 같습니다.
여기서 저는, "그러면 그 가상메모리는 어디에서 오는 건데?" 였습니다.
메모리라 하면, 주기억장치든 보조기억장치든 그 장치들이 실존하는 것이며, 용량도 정해져 있는데, 도대체 이 가상메모리는 어떤 메모리를 기반으로 제공되는 것인가.
이러한 생각이 드니, 어떻게 이해하려고 해도 쉽게 이해가 가지 않았습니다.
이에 구글링과 다른 영상 자료를 보며 이해에 도달했는데, 내용은 다음과 같습니다.
프로그램이 RAM 위에 올라가면 프로세스가 된다. (이는 강사님께서 말씀해주신 내용으로, 해당 개념을 기반으로 이해를 도모했습니다.)
OS 는 프로세스에게 가상 주소 공간을 제공한다. (32biit 기준으로 4gb, 이때 가상 주소 공간과 가상 메모리 공간은 다른 개념)
프로세스 내의 가상 주소 공간은 페이지 단위로 나눠지고, 논리 주소가 부여되며, stack 이나 heap, code 등이 해당 공간에 할당된다.
이때 사용되는 페이지만이 RAM 의 프레임과 매핑되며, 사용되지 않는 페이지는 보조기억장치에 저장된다.
이에 프로세스의 가상 주소 공간의 크기는 32bit 기준 4gb 지만, 실제로 운용되는 것은 1mb ~ 2mb 이다. (예를 들어)
이때 "가상 메모리는 실제 메모리보다 더 크게 보이게 하는 기술이다" 라고 말씀하신 이유는 실제 프로세스는 크기가 4gb 라고 치고, 불필요한 부분까지 모두 RAM 위에서 자리를 잡고 있다면, 소수의 프로세스 밖에 운용하지 못할 것이다.
-> 이에 필요한 부분만 RAM 에 올림으로써 자원의 낭비를 줄이고, 많은 프로세스를 운용하게 할 수 있게 하기 때문이라고 이해를 했습니다.
추가적으로 이해한 내용으로는 가상메모리를 사용하는 이유로써,
임의의 프로세스가 죽었을 때 OS 에서 이를 감지하여, 해당 프로세스의 페이지와 매핑된 프레임을 반환한다.
이를 통해 다른 프로세스는 반환된 공간을 사용할 수 있게 된다.
만일 가상메모리 기법이 존재하지 않는다면, 프로세스가 죽어도 RAM 위에서 자리를 차지할 것이며, 또 다른 프로세스들이 계속해서 죽어갈 때 끝내 RAM 에는 자리가 존재하지 않을 것이다.
위 내용과 같이 이해를 했으며, 최종적으로 가상메모리를 정의한다면,
"가상 주소 공간을 주 기억장치와 보조 기억 장치 사이에서 매핑하여 효율적으로 메모리를 관리하는 기법이다"
혹시 제가 이해한 부분에 대해서 잘못된 점이나 보완할만한 점이 있다면, 조언을 부탁드리고 싶습니다.
답변 1
0
안녕하세요 ㅎㅎ
네 전반적으로 잘 이해하셨습니다.
다만, 가상 메모리가 없더라도 프로세스가 종료되면 운영체제는 해당 메모리를 회수합니다. 따라서 프로세스가 종료된 후에도 메모리를 계속 점유한다는 것은 사실이 아닙니다.
이부분 외에는 잘 이해하셨습니다.
또한 가상메모리를 이렇게 말하면 더 자세하고 정확할 것 같습니다.
가상 메모리는 주기억장치와 보조기억장치 사이에서 가상 주소를 물리 주소로 매핑하여 메모리를 효율적이고 유연하게 관리하는 메모리 관리 기법이다. 이를 통해 프로세스는 실제 메모리 크기에 구애받지 않고 실행될 수 있으며, 메모리 보호와 프로세스 간의 메모리 격리를 제공한다.
라고 하시면 더 완벽할 것 같습니다.
참고로 메모리 보호와 프로세스 간의 메모리 격리에 대한 추가적인 설명은 다음과 같습니다.
메모리보호 : 각 페이지마다 읽기, 쓰기, 실행 권한을 설정하여 세밀한 메모리 보호가 가능하며
메모리 관리 유닛(MMU)은 가상 주소를 물리 주소로 변환하면서 접근 권한을 검사하여 하드웨어 수준에서 보호를 제공합니다.
프로세스 간 메모리 격리 : 각 프로세스는 자신만의 가상 주소 공간을 가지며, 다른 프로세스의 메모리에 접근할 수 없습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
선생님! 또 추가적으로 여쭤볼 것이 있습니다.
사용되는 페이지만이 RAM 과 매핑되며, 이때 페이지 테이블로 관리되는 것이며, 이때 사용되지 않는 페이지는 보조 기억장치 등에 저장될 것이라고 제가 정리를 했습니다.
예를 들어 프로세스 페이지의 주소가 1~10 이라고 친다면,
1, 2, 3 은 사용할 부분이니까 페이지 테이블에 의해 관리되고, 나머지 4 ~ 10 은 사용되지 않을 부분이니까 따로 관리 되지 않고 하드디스크 등에 저장되는 게 맞나요 ?
그렇다면 이때 cpu가 해당 프로세스의 페이지 4 를 요구한다고 하면, 페이지 테이블에는 존재하지 않는 페이지를 요구하는 거 잖습니까 ?
이때
페이지 테이블에 존재하지 않은 페이지를 요구할 경우 블루 스크린이 발생한다.
페이지 테이블에 존재하지 않은 페이지를 요구할 경우 하드디스크를 뒤져서 해당 페이지를 찾고, 실행 파일로 로딩하여 페이지 테이블에 해당 정보가 추가되게 된다.
이렇게 두 내용으로 갈리는 거 같았습니다.
둘 중 무엇이 맞는 말일까요 ? ㅠ ㅠ
안녕하세요 ㅎㅎ
해당 영상 확인했는데요. 저거는 메모리 회수가 안되는 프로세스에 한해서 점유가 되는 사례이지. 가상메모리가 없다고 무조건 점유한다는 의미는 아닌 것 같습니다.
페이지 테이블에 존재하지 않은 페이지를 요구할 경우 블루 스크린이 발생한다.
-> 발생한다가 아닌, 발생할 수도 있습니다.
페이지 테이블에 존재하지 않은 페이지를 요구할 경우 하드디스크를 뒤져서 해당 페이지를 찾고, 실행 파일로 로딩하여 페이지 테이블에 해당 정보가 추가되게 된다.
-> 네 맞습니다.
감사합니다.
답변 감사합니다 !!
" 만일 가상메모리 기법이 존재하지 않는다면, 프로세스가 죽어도 RAM 위에서 자리를 차지할 것이며, 또 다른 프로세스들이 계속해서 죽어갈 때 끝내 RAM 에는 자리가 존재하지 않을 것이다. "
이 부분에 대해서는 사실이 아니라고 말씀주셨습니다.
제가 저렇게 이해한 이유는
https://youtu.be/-jlzaslp-w4?t=1339
해당 영상을 보고 앞선 내용처럼 이해를 했습니다.
타 강사님의 영상을 가져오는 건 예의가 아닌 거 같지만,,, 해당 영상의 내용을 제가 잘못 해석했는지, 어떤 방향으로 이해를 했어야 했는지 조언 부탁드립니다...