EEYatHo 앱 깎는 이야기

CS ) 메모리, 가상 메모리 - EEYatHo iOS 본문

CS

CS ) 메모리, 가상 메모리 - EEYatHo iOS

EEYatHo 2021. 4. 4. 17:22
반응형

 

메모리 (Memory)


데이터를 반영구 혹은 임시로 저장하는 장치.

물리적인 메모리의 종류 = HDD, SSD, RAM, Register, Cache

 

  • HDD, SSD ( 보조기억장치 )

용량당 가격이 낮지만, 처리 속도가 느리다.

전원이 꺼져도 반영구적으로 데이터가 유지된다.

 

 

  • RAM ( 주기억장치 )

HDD, SSD보다 용량당 가격이 비싸지만, 처리 속도가 빠르다.

전원이 꺼지면 데이터가 사라진다.


이런 가격과 속도의 차이로, 컴퓨터가 폰노이만 구조로 발전.
프로그램의 많은 용량을 HDD, SDD에 저장해놨다가,
사용할 때는 빠른 속도를 위해 RAM에 올려서 사용하는 식.

 

다양한 프로그램을 한번에 실행하는 멀티태스킹 운영체제에서,

한 프로그램 전체를 RAM 에 올리기엔 너무 비효율적
-> 프로그램에서 지금 사용하는 부분만 RAM 에 올리는 가상 메모리(Virtual Memory) 기법을 사용.

 

 

  • Register, Cache

RAM보다 용량당 가격이 더 비싸지만, 처리 속도가 더 빠르다.

전원이 꺼지면 데이터가 사라진다.

 

비싸기 때문에, 적은 양의 Register와 Cache는 CPU에 내장되며,
RAM보다 훨씬 빠른 속도로 CPU의 연산을 도와주는 역할로 사용.

 

적은 수의 Register를 이용하기에, Register 들에게 EAX, PC같은 역할(이름)을 붙혀주고 사용.

 

 

 

 

가상 메모리 기법 (Virtual Memory)


 

보조기억장치(HDD, SSD)를 사용하여 주기억장치(RAM)를 더 효율적으로 사용하는 것이 목적.


프로그램을 잘게 자르고, 모든 조각에 논리적 주소를 부여(logical memory)하며, 필요한 부분만 실제 RAM에 올림

논리적 주소와 물리적 주소를 MMU(Memory Management Unit), Page Table를 통해 매핑

 

멀티태스킹이 용이해지고, RAM 보다 용량이 훨씬 큰 프로그램도 실행할 수 있게 됨 (= 만들 수 있게 됨)
즉, 가상의 거대한 RAM이 있는 것 같다고해서 이름이 가상 메모리..!

 

이런 정교한 작업과 RAM에 올리는 작업을 진행해도, RAM의 속도가 보조기억장치보다 훨씬 빠르기 때문에 이득.

 

페이지 폴트(필요한 페이지가 실제 메모리에 없어서 불러와야하는 상황) 를 최대한 적게 발생하게 하는 다양한 기법들도 있음.

 

프로그램을 자르는 단위에 따른 두가지 기법이 존재.

  • 페이징(Paging) 기법은 Page가 단위이며, 고정 크기
  • 세그멘테이션(Segmentation) 기법은 Segment가 단위이며, 가변 크기

 

가상 메모리로 프로그램을 올릴 때,
프로그램 하나에 할당되는 영역을 용도에 따라 나누며, Code, Data, Stack, Heap이 있다.

-> 메모리 영역 Code, Data, Stack, Heap

 


이해하기 쉬운 유튜브 영상
https://www.youtube.com/embed/dgMeWRy84l8

 

Comments