-
[SW 정글 74일차] Virtual Memory 개념 공부하기기타/SW 사관학교 정글 2021. 10. 16. 01:48
오늘은 project 3를 구현하는데 앞서 필요한 개념을 익히는데 시간을 활용했다.
교재인 컴퓨터 시스템 chapter 9을 읽고 동료가 추천해준 강의를 들으며 나의 것으로 만들려고 노력했다.
참고자료는 글 맨 밑부분에 정리하였다.
1. 가상메모리가 나오기 이전에는 어땠을까?
나는 항상 어떠한 개념을 마주쳤을 때 이전에는 어떠한 단점이 존재했길래 이런 것을 만들었을까?하는 궁금증을 가진다.
이미 자연 속에 존재하는 원소를 찾는 것이 아닌 것을 알기 때문에 분명히 이유가 있을 것이 그러한 것부터 알아야 흐름이 자연스럽게 이어져서 공부의 재미를 느낀다.
그러면 이제 이전에는 어떠했는지 알아보자.
① 충분하지 않은 RAM size
이 부분은 현재 64bit 주소체계를 쓰는 시기이기때문에 RAM을 그 만큼 늘리면 충분하잖아?라는 의문이 들 수 있지만 가상메모리가 나오기 이전은 더 이전이다.
그러면 더 작은 RAM을 썼을 것이고 매우 비쌌을 것이다.
이러한 상황에서 프로그램의 크기는 커지고 복잡해짐에 따라 메모리에 프로그램을 올릴 수 없는 현상이 나타났다.
초기에는 프로그램을 메모리에 올리기 위해 overlay기법을 사용했다.
overlay 기법은 연속적으로 사용되지 않는 프로그램의 일부분을 필요할 때 overlays로 세팅을 하는데 여기서 overlays는 다른 메모리 믈록이 덮어쓰기가 가능한 상태인 것을 말한다.
이 overlay 기법을 구현하는 데에는 큰 비용이 발생하는 단점이 있고 이 overlay 기법이 virtual memory를 개발하는데 key point가 되었다.
② Memory Fragmentation
출처: https://www.youtube.com/watch?v=eSPFB-xF5iM&list=RDCMUCzf_XjIoKSf4Ve2fH7xn-3A&index=12 memory fragmentation은 메모리 상에 실제로 비어있지만 사용되지 않은 채 방치되는 것을 말한다.
위 상활을 보면 1GB 크기의 메모리 부분이 2개가 있지만 2GB 크기인 program3는 연속된 메모리 공간으로 2GB가 없기 때문에 메모리에 올라갈 수 없는 상황이고 자원도 어떻게 보면 낭비되는 것일 수도 있다.
memory fragmentation에는 internal fragmention와 external fragmentation으로 나뉜다.
internal fragmentation은 크기가 3인 프로세스가 메인 메모리에서 4만큼 할당받으면 내부적으로 단편화가 생긴다.
external fragmentions은 위 상황처럼 누군가가 할당받은 메모리 이외에 외부적으로 비어는 있지만 들어가지 않는 부분을 말한다.
이 문제점을 일으키 원인은 continuous하게 메모리를 할당하려고하다보니 생긴 문제점이라고 생각한다.
③ 서로 다른 프로세스들끼리의 메모리 간섭
하나의 물리 메모리를 쓰다보면 A프로세스와 B 프로세스 서로 같은 메모리 공간을 다루면서 원치 않은 결과를 초래할 수 있다.
이렇게 돼면 multi tasking환경에서 안정적으로 동작할 수 없다는 단점으로 작용된다.
2. 가상메모리의 특징
가상메모리의 특징을 알기 위해서는 가상메모리가 어떻게 작동하는지와 가상메모리가 어떻게 사용되고 관리되는지를 아는 것이 중요하다.
그리고 위에서 언급한 3가지 문제를 가상메모리를 도입하면서 어떻게 해결했는지를 아는 것이 중요하다고 생각한다.
[오늘의 나는 어땠을까?]
오늘은 마음을 다 잡고 빡집중모드로 공부를 시작했다.
아침 8시에 코딩테스트 준비를 위한 문제풀이를 하고 HTTP 공부를 2시간 정도했다.
그 후에 운영진님들과 간단한 면담시간을 가지고 가상메모리 공부를 시작했다.
목표로 했던 분량을 공부하고 저녁을 먹은 뒤 다시 가상메모리 공부를 하기 위해 동료가 알려준 강의를 들었는데 이때는 집중을 잘하지 못한 것같다.
이유를 생각해봤을 때 이미 오후에 공부한 내용과 똑같은 내용을 다시 본다는 것에 집중을 못했다고 생각한다.
여기서 느낀 것은 복습을 몇 시간만에 하는 것은 오히려 비효율적이고 반복적인 학습을 좋아하는 나이지만 내가 아는 내용을 하루에 계속해서 똑같은 내용을 보는 것은 나랑 맞지 않다고 느꼈다.
그래도 강의영상을 보면서 왜 가상메모리가 나왔는지부터 쉽게 설명을 해주어 볼만한 강의라고 생각한다.
절반정도 봤는데 남은 부분은 내일 집중이 안될 때 봐야겠다.
<참고 자료>
https://www.youtube.com/watch?v=KNUJhZCQZ9c&list=RDCMUCzf_XjIoKSf4Ve2fH7xn-3A&index=1
https://searchstorage.techtarget.com/definition/virtual-memory
'기타 > SW 사관학교 정글' 카테고리의 다른 글
[SW 정글 76일차] Paging 기법 (2) 2021.10.18 [SW 정글 75일차] 짧막한 휴식이 오히려 좋은 것일까? (0) 2021.10.17 [SW 정글 73일차] Pintos project 3 입문 (Virtual Memory) (0) 2021.10.15 SW 정글 9 ~ 10주차 회고 (0) 2021.10.14 [SW 정글 72일차] Pintos project 2 - System Calls 마무으리 (0) 2021.10.14