프로세스간의 통신이다..
이제 곧 끝이 보인다
아 너무 배고프다..
나 왜 다이어트하고 있지..
다이어트 안하고 치킨먹고싶다..
아 그리고 노트북 너무 비싸다..
진짜 이거 세계의 음모가 틀림없다..(nvida의 독주를 멈춰주세요 트람푸님)
오늘은 꼭 사야지..
메모리(RAM)는 CPU가 직접 접근해서 작업할 수 있는 임시 저장공간이다
컴퓨터를 켜놓은 동안만 데이터가 보존되는 휘발성 저장장치라고 생각하면 된다
내가 어떤 프로그램을 구동하거나 실행할 때 메모리를 통해
임시 저장되고 실행되어 돌아간다고 생각하면 편하다
✅ 유식하게 짚고 넘어가자
CPU와 직접 통신하는 가장 빠른 저장장치
컴퓨터가 켜져 있는 동안만 데이터 유지
프로그램이 실행되려면 반드시 메모리에 로드되어야 함
용량이 클수록 동시에 더 많은 프로그램 실행 가능
메모리는 컴퓨터의 임시'작업대'
여러가지 필요한 도구와 재료를 올려놓고 작업하는 공간
✅ 쉬운 예를 들어 설명함
✅ 실제 크롬 브라우저를 예
이래서 메모리는 많으면 많을수록 좋다는 소리가 여기서 나오는거다
'다다익램' 이라고 메모리가 많으면 여러개의 프로그램을 다양하게 켜놔도
컴퓨터가 다 저장할 수 있기 때문에!!!
물리적 메모리(RAM)보다 더 큰 메모리 공간이 필요할 때 사용하는 기술이다
하드디스크나 SSD의 일부를 메모리처럼 사용하는 방식
예를 들어 게임이나 3D렌더링 이런 고사양 작업들을 할때는 메모리만으로는
당연히 부족하다 예를 들어서 쉽게 설명하자면
대형 스크린을 설치해야되는데 책상(메모리)에 스크린 부속품들을 깔아놓고 조립하기에는
너무 공간적 제약도 있고 이것저것 부품들을 조립하는데 시간이 오래걸리니까
책상보다 더 큰 공간(SSD/HHD)에서도 사용할 수 있게끔 도와주는게 가상메모리라고 생각하면 된다
✅ 작동 원리
물리적 메모리와 하드디스크의 일부(페이징 파일/스왑 공간)를 합쳐서 사용
당장 안 쓰는 데이터는 디스크로 임시 이동(스왑 아웃) = 요거 기억
필요할 때 다시 물리적 메모리로 가져옴(스왑 인) = 요것도 기억
✅ 장단점에 대해 알아보자
👍🏻 장점
👎🏻 단점
❗️ 가상메모리를 실제 컴퓨터에서 구동되는 예를 들어 설명해봄
예를 들어 4GB RAM(메모리)을 가진 컴퓨터에서 작업 진행
(오우 너무 낮게잡았나;; 4GB메모리면 컴터 갖다버릴듯;)
여튼 진짜 쉽게 생각해서
포토샵(3GB), 크롬(2GB), 워드(1GB)를 동시에 실행 → 총 6GB 필요
가상 메모리가 없으면? = 모든 프로그램을 동시에 실행 불가능
가상 메모리가 있으면?
➡️ 현재 사용 중인 프로그램(포토샵)은 RAM에 유지
➡️ 백그라운드 프로그램(워드)은 디스크로 임시 이동
↪️ 이때 하드디스크 성능에 따라 잔렉 발생 (왜냐? 디스크로 컴터가 멱살잡고 디스크로 던져야되니까)
➡️ 워드를 클릭하면 다시 RAM으로 로드되고 대신 다른 프로그램이 디스크로 이동
↪️ 요때도 성능에 따라 잔렉 발생 (왜냐? 애가 디스크에 던져져있으면 다시 멱살잡고 꺼내와야되니까)
이게 바로 우리의 과거 쓰렉 컴터들이 렉이 걸리는지에 대한 이유다
특히 나는 극공감이 가능한건 어렸을 때 그렇게 좋지 않은 하드디스크가 달린 컴퓨터를 쓸 때
"아니 왜 도대체 프로그램을 전환할 때 가끔 렉이 걸리는지 이해가안가네;;" 할때가 굉장히 많았다
그래서 이것 또한 성능이 좋은 HHD/SSD를 쓴다면 전혀 문제가 되질 않는다 ^^
아 그리고 요즘은 HHD보단 SSD를 더 많이 사용하는 추세이다
물론 사용하는 서비스나 기업인지 개인인지에 따라 다르겠지만
개인 컴퓨터의 경우 SSD가 훨씬 성능면에서 뛰어나다
정말 간략하게 짧게 정리하고 넘어가겠다
일단 큰 둘의 큰 차이점은 아래와 같다
아 근데 차이점이 너무 많은데 하나하나 설명하기는 양이 너무많고
큰 차이점들만 적어두겠다
작동방식
HDD: 물리적인 디스크(플래터)가 회전하며 기계적으로 데이터를 읽고 씀
SSD: 반도체 메모리 칩을 사용해 전기적으로 데이터를 저장 (움직이는 부품 없음)
속도
HDD: 상대적으로 느림 (디스크 회전 속도에 의존, 보통 5400~7200 RPM)
SSD: 매우 빠름 (HDD보다 5~10배 빠른 읽기/쓰기 속도)
일단 작동방식에서부터 물리적으로 돌리는거랑 현대문물의 빛과도 같은 반도체를 이용해서 왔다갔다 하는건
속도에서 정말 차이가 크다 하지만 SSD보다 더 많은 양을 저장할 수 있는건 당연 HHD이다
(아직까지 현대 기술력으로 정말 용량이 어마무시한 HHD를 따라가기엔 SSD의 발열과 기술적 제약 + money problem ^^ 으로 인해 한계가 있다고 한다)
= 근데 사실 거의 다 따라잡음; 요즘에 SSD가격 내리고 있음 쏴리질ㄹ러
그 래 서
노트북이나 경량급 데스크탑을 만들때는 SSD가 필수로 들어가며
속도가 중요하지 않은 서비스 (클라우드 / 서버 등등) 이런곳에서는 아직도 HHD를 사용하고 있다
관련 예시는 조금 더 나중에 다양하게 정리해봐야겠다
그냥 단순 페이지 교체하는거 아냐? 할 수 있는데 컴퓨터에서는 다르다
가상 메모리에서 어떤 페이지를 메모리에 유지하고
어떤 페이지를 디스크로 내보낼지 결정하는 알고리즘이다
이것도 메모리 관련 얘기라 메모리에 적을까 하다가 요건
알고리즘이 들어가서 따로 정리하기로 했다
요건 그냥 이렇게 알고리즘이 있다 정도로 정리하기로 했다
❗️ 주요 페이지 교체 알고리즘
1. FIFO (First In First Out)
가장 오래된 페이지부터 교체
구현이 간단하지만 효율적이지 않음
= 이거 안씁니다 과거의 영광이라 생각합시다
2. LRU (Least Recently Used)
가장 오랫동안 사용되지 않은 페이지 교체
자주 사용하는 페이지는 메모리에 유지됨
= 현대 OS에서 많이 사용되고 이것만!!! 지금도 쓰는 알고리즘이라고 함
3. LFU (Least Frequently Used)
사용 빈도가 가장 낮은 페이지 교체
과거 인기 페이지가 오래 남는 문제 있음
= 이건 위쪽의 LRU와 혼합해서 쓴다고 함 그래도 자주 쓰는 인기 페이지가 계속 남는 바람에
이거 또한 요즘엔 혼합 or 사용을 안하는 알고리즘이다
❗️ 페이지 교체 예제
👍🏻 가장 보편적으로 사용되는 LRU 알고리즘
여러분의 책상(RAM)에는 책 3권만 올려놓을 수 있다고 가정하자
처음에 수학, 영어, 과학 책을 올려둠
수학 책을 봄 → 최근 사용 시간 갱신
이제 국어 책 읽을 타이밍임 고럼 아래와 같이 행동을 함
➡️ 책상에 공간이 없으므로 하나를 치워야 함
(LRU 알고리즘 = 가장 오랫동안 보지 않은 책을 치움)
➡️ 영어나 과학 중 더 오래전에 본 책을 치우고 국어 책을 올림
❗️ 이제 실제 게임으로 들어가보자
➡️ 게임 실행 중 → 게임 데이터가 RAM에 로드됨
➡️ 공략볼라고 잠시 브라우저로 전환 → 브라우저 데이터가 RAM에 로드됨
➡️ RAM이 부족하면 → LRU에 따라 현재 안 쓰는 게임의 일부 데이터가 디스크로 이동(잔렉발생)
➡️ 다시 게임으로 돌아가면 → 디스크에 있던 데이터가 다시 RAM으로 로드됨(잔렉+로딩 발생)
물론 요즘의 컴퓨터는 거의 그럴일이 없다 왜냐?
지금 공부하는 이 모든것들이 동작이 이렇게 된다 라는것만 알면 되고
현재 나와있는 PC들은 성능이 너무 좋기때문에 우리가 잔렉을 경험할일이 거의 없다(구석기 컴퓨터제외)
그래서 8GB RAM과 16GB RAM의 차이가 느껴지는 이유다
디스크로의 스왑이 줄어들수록 시스템이 더 빠르게 동작하니까