뭉크테크
메모리 오버레이와 스왑 본문
개요
메모리의 오버레이와 스왑 자체가 Virtual Memory System을 이야기하고자 하는 초석이다. 핵심은 바로 다음과 같다.
어떤 C언어로 작성된 S/W가 있고 컴파일러는 CPU가 알아들을 수 있게 C언어를 번역하여 기계어로 만들어 주는데 기계어 코드가 프로세스 내의 모듈이 되고 메모리의 OS영역, 공통모듈영역(DLL)을 제외한 사용자 영역에 집어넣어서 실행되는데 이를 연산의 실행이라 한다.
메모리 오버레이

문제는 OS는 옛날에 MS-DOS를 썼는데 이때 시절 OS는 역할이 단순 I/O해주는 거 외에는 별거 없었다. 그러다보니 S/W 개발자가 모든 처리를 직접하는 일이 많았다. 중요한 것은 기계어를 사용자 영역에 로드하여 작동되다가 그 프로그램을 끝내고 다른걸 실행하려고 하면 메모리 용량이 옛날에는 640KB로 너무 작아서 그 프로그램이 쓰던 메모리를 clear하고 그 다음 프로그램을 로딩해서 집어 넣는 형식이였다. 그러니까 메모리 위에 메모리가 overwrite되어 겹겹이 쌓인다. 이걸 메모리의 오버레이라고 한다. 물론 해당 기법은 현재 임베디드와 같이 저용량 메모리 컴퓨터 환경에서 가상메모리를 사용하지 않는 컴퓨터체계에 주로 쓰이고 있다.
스왑
그래서 이런 부분들이 문제가 되다보니까 나중에는 RAM이 작아가지고 프로그램을 실행 못하는 이런 일이 있었고 옛날에는 이걸 HDD와 연동하여 RAM에 있는걸 잠시 HDD에 보내고 HDD의 정보를 RAM에 가져와 실행하는 이 과정들을 반복하였는데 여기서 나오는 말이 스왑이다.

HDD같은 2차메모리에 스왑영역을 두어서 스왑영역 + RAM = 실제 PC가 쓸 수 있는 메모리 공간이라 했으며 RAM에서 HDD로 내보내는 걸 스왑 아웃 그 반대를 스왑인이라고 한다. 스왑인은 실제로 CPU한테 연산할 수 있도록 빨리 정보를 주니까 그래서 스왑인이라 하는거고 잘 안쓰이는 프로그램은 HDD로 뺀다는 의미로 스왑아웃이라 한다. 여기서 스왑인은 가상메모리 이야기할때 페이지인과 같은 개념이고 스왑아웃은 페이지 아웃과 같은 개념이다.
첨부 얘기

최대 절전모드는 RAM 메모리에 정보가 들어가져 있는데 이걸 그냥 HDD에 저장해가지고 전원이 꺼져도 다시 킬 때 작업했던 상태를 복구할 수 있는데 바로 그 이유다. 여기서 RAM 전체 메모리가 HDD에 들어가는게 아니라 사용되고 있는 용량만큼만 들어간다.
옛날에는 스왑인, 스왑아웃 이 과정들이 자주 벌어졌다. 그래서 나온것이 SSD이고, 컴퓨터 체감 속도는 급상승되었다. 그 이유가 스왑아웃할 때 SSD에 write가 일어나는데 HDD는 트랙 섹터로 자기판을 돌아서 정보를 가져오는 방면 SSD는 전자로 빠르게 치고나가기 때문에 I/O과정에서 속도 급상승이 컴퓨터 속도가 급상승으로 이어온 것이다. 왜냐하면 입출력시 발생하는 wait가 CPU 연산 처리 작업에 있어 매우 큰 영향을 주기 때문이다.
출처
오버레이 (프로그래밍) - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 컴퓨팅에서 오버레이(overlay)란 데이터나 인스트럭션 블록을 다른 블록으로 교체[1]하는 것을 의미한다. 오버레이는 컴퓨터의 메인 메모리보다 큰 프로그램을
ko.wikipedia.org
What is the reason for the speed difference between SSDs and HDDs, despite their similar cost per GB?
Answer (1 of 3): The speed difference between Solid State Drives (SSDs) and Hard Disk Drives (HDDs) arises from their fundamentally different methods of storing and accessing data, despite their converging cost per gigabyte (GB) in recent years. Here’s a
www.quora.com
곰책으로 쉽게 배우는 최소한의 운영체제론 강의 | 널널한 개발자 - 인프런
널널한 개발자 | '넓고 얕게 외워서 컴공 전공자 되기' 강의를 끝낸 분들이 운영체제에 대해 좀 더 깊이 있는 공부를 할 수 있도록 제공되는 강의입니다., 운영체제도 널널한 개발자와 함께! 👨
www.inflearn.com