컴퓨터 시스템에서 데이터를 저장하는 방식은 크게 메모리와 디스크로 나뉜다.
데이터를 저장, 접근, 관리하는 방식이 서로 다르기 때문이다.
메모리 | 디스크 |
|
|
커널이 관리하는 메모리
- 프로세스를 언제, 어디에, 어떻게 적재할 것인지 커널이 관리
- 리눅스는 하나의 프로세스에 4GB의 가상 메모리 주소 공간을 할당
- 리눅스는 가상 메모리 공간에 있는 페이지 중 현재 작업 수행에 필요한 부분만 물리 메모리를 올려 작업을 수행
- 물리 메모리의 공간이 부족해지면 다시 일정 페이지를 가상 메모리 공간으로 보내는 작업을 반복
- 가상 메모리는 페이지 단위로 관리되며, 리눅스 시스템에서 일반적으로 하나의 페이지 크기는 4KB
가상 메모리에 A라는 프로세스가 동작하고 있으면 page 단위로 나누고,
필요한 부분만 실제 물리 메모리에 올라가서 동작한다.
가상 메모리는 실제 메모리 영역을 사용하기도 하지만
물리 메모리만 사용하는 게 아니라 하드 디스크의 특정 공간도 사용한다.
가상 메모리를 사용하면 주기억장치와 하드 디스크를
동시에 하나의 논리적 메모리로 최상화하여 접근할 수 있다.
OS가 알아서 해줄테니 넌 일단 그냥 쓰기만 해라.
메모리 관리 명령어
free (메모리 공간을 확인할 때 사용)
메모리 공간, 사용된 공간, 남아있는 공간, Swap이 표시된다.
실제 메모리가 1G라고 가정했을 때
프로그램을 여러 개 실행시키는 도중 500MB 메모리 공간이 필요할 때
남은 메모리 공간은 300MB 밖에 없기 때문에 공간 부족하다.
그럴 때 동작하고 있는 프로그램에서
우선 순위가 낮은 공간을 페이지 단위로 잘라서
그 공간들을 Swap으로 내린다.
Swap이란 실질적으로 프로그램이 돌고 있는 것이 아니라
동작되어야 하는 프로그램이 잠깐 동안 머무는 공간이라고 보면 되겠다.
임시 메모리인 셈이다!
top (프로세스 정보와 CPU 정보를 확인)
like 윈도우 작업관리자
SWAP (메모리의 여유 공간을 디스크에 확)
swapon 명령어를 사용하면 공간이 어떻게 구성되어있나 확인 가능
[1] 파티션의 타입을 swap으로 구성해서 통째로 사용하던가
[2] 2G짜리 파일을 따로 만들어서 파일 자체를 swap 공간으로 사용하던가
참고
https://f-lab.kr/insight/understanding-data-storage
https://youtu.be/rhH_-WffWQA?si=ZValAYedro40fpJX
https://www.youtube.com/watch?v=RWndpAv4hps
'활동 > 호기심' 카테고리의 다른 글
[개발자 지식] 디스크 관리 및 파일 시스템 - 디스크의 구조와 디스크 추가 방법 이해 (0) | 2024.05.25 |
---|---|
[개발자 지식] JSON은 프로그래밍 언어와 프레임워크 등에 독립적이므로 서로 다른 시스템 간 데이터를 교환하기 좋다. (0) | 2024.05.25 |
로그(log) 로깅(logging) 차이점도 모르겠는데.. 라이브러리까지 (0) | 2023.12.14 |
우아한테크 MVC(Model, View, Controller) 패턴을 지키면서 코딩하는 꿀팁 (3) | 2023.10.10 |
save() 메서드는 엔티티 상태를 데이터베이스에 반영 (1) | 2023.09.25 |