메모리 용어 간단 정리 (1/2)

 

"Ukiyo-e painting of a horse in space suit, full body, tilt shift photography." from DALL-E 2

메모리 용어 간단 정리 (2/2) (tistory.com)

 

메모리 용어 간단 정리 (2/2)

메모리 용어 간단 정리 (1/2) (tistory.com) 대기모드와 수정공간 대기모드 사용중이지만 그대로 파괴해도 상관없는 메모리 영역이다. 요구가 있다면 사용되지만 요구가 없다면 그대로 파괴되는 대

remocon33.tistory.com

윈도우 작업관리자 메모리 정보

윈도우에서는 작업관리자의 성능 탭을 통해 메모리 리소스를 모니터링할 수 있다

페이지 (Page) 와 프레임 (Frame)

페이지는 가상 메모리를 사용하는 최소 크기 단위, 프레임은 물리 메모리를 나타내는 최소 크기 단위이다. 페이지와 프레임의 크기는 동일하다.

 

언어유희를 이용하여, 인셉션 (가상 메모리) 내의 엘런 페이지 (페이지)가 자신과 동일한 모습을 보이는 유리창 (프레임)에 손을 대고 있다고 생각하면 오래 기억할 듯 싶다.

페이징 풀과 비 페이징 풀

페이징 풀

실제 메모리에 제거되어 페이징 파일에 기록될 수 (page out)도 있고, 반대로 페이징 파일에서 실제 메모리로 올라올 (paged in) 수 있는 시스템 공간의 가상 메모리 영역이다. OS에서 주로 사용한다.

 

페이징 풀은 대표적으로 레지스트리 키 및 기타 레지스트리 데이터 구조에 대한 참조를 저장할 때 주로 사용한다.

블루스크린

[Question] 일반 메모리와 페이징 풀에 적재된 메모리는 어떻게 다른지?
> 페이징 풀은 일반 앱이 사용하기 보다는 OS와 장치 드라이버와 같은 시스템 단에서 사용하는 공간이다. 더 많은 프로그램, OS 서비스 (안티바이러스, 방화벽 등), 장치 (음성, 비디오, 네트워크 등)를 사용할 수록 페이징 풀에 할당된 메모리가 많이 사용되고, 페이징 풀 메모리를 모두 사용하게 되면 장치 드라이버 및 OS에서 필요한 메모리 할당이 불가능해지고, 이로 인해 성능이 저하될 수 있으며, 비디오가 느려지거나, 프로그램이 갑자기 죽거나, 시스템 종료와 함께 블루스크린이 발생할 수 있다.

비 페이징 풀

언제나 실제 메모리에 상주하여 언제든지 어느 수준 IRQL 수준에서나 프로세스 컨텍스트에서나 페이지 폴트를 내지 않고 액세스 할 수 있다고 보장된 시스템 가상 주소 영역이다. 보통 페이지 폴트가 발생하면 안되는 작업에서 사용하는 공간이다.

 

비페이징풀이 너무 높다면, 악성코드가 심어져 있을 가능성도 있다. 또는 소켓 통신에서 메모리 누수로 인해 주로 증가한다고 한다.

공통점

페이징풀과 비페이징풀은 시스템에서 실제 메모리 양을 기반으로 최소 크기로 시작하여 필요한 경우 시스템 부팅 시 계산된 최대 크기까지 점점 증가한다.

캐시 메모리

자주 쓰는 프로그램 데이터를 메모리 영역에 대기시켜 놓은 부분이다.

캐시 메모리는 사무실에서 책상 위에 있는 물건이라고 생각할 수 있다. 평소에 자주 사용하기 때문에 책상 위에 올려두고, 종종 사용하는 물건들은 첫 번째 서랍, 거의 사용하지 않는 물건들은 가장 접근하기 힘들고 공간이 큰 마지막 서랍에 두는 것이 효율적이다.

힙 (Heap) 과 스택 (Stack) 영역

힙 영역

사용자가 직접 관리할 수 있는 메모리 영역이다. 사용자에 의해 메모리가 동적으로 할당되고 해제되는 영역이다.

 

[Question]​ 힙 영역에서는 선입선출의 방식으로 메모리가 할당되는데, 큐라는 용어가 더 적합하지 않나?
> 조금 더 효과적으로 기억하기 위해 다음과 같이 생각할 수 있다. 힙 영역에는 사용자가 자유롭게 할당하고 해제할 수 있다. 처음에는 아무것도 할당하지 않았으므로 힙 영역 전체를 사용할 수 있다. 그런데 100 중에 10만큼 할당하면, 90의 연속된 공간이 남는다. 그리고 다시 20을 할당하면 70의 연속 공간이 남는다. 다시 30만큼 할당하면 40의 연속 공간이 남는다. 여기서, 기존의 10을 해제하면 40의 연속 공간과 10의 연속 공간이 남는다. 이를 힙의 우선순위 큐 방식으로 간주하여 연속 공간의 크기가 작은 순으로 메모리 주소를 힙 구조로 보관한다. 그리고 새로운 할당 요청이 왔을 때, 10 미만이면 10의 연속 공간쪽에 우선하여 할당하고, 10보다 크면 40의 연속 공간쪽에 할당하는 식으로 빠르게 최소 필요 공간에 대한 메모리 주소를 파악할 수 있다.

DLL을 호출한다면, DLL 모듈 별로 힙 영역이 별도로 생성된다.

스택 영역

함수 호출과 관련되는 지역 변수와 파라미터가 저장되는 영역이다.

 

모듈 개수와 상관없이 하나의 스택 영역을 공유한다.

데이터 영역

전역 변수와 정적 변수가 저장되는 영역으로, 프로그램 시작 시 할당되고, 프로그램 종료시 소멸된다.

​코드 영역

소스코드로부터 생성된 명령어가 저장된 영역으로, CPU가 이곳의 명령어를 가져가 실행한다.

하드웨어 예약

컴퓨터가 부팅하면 BIOS를 거치는데, BIOS에서 물리 메모리 크기를 인식하고, 메모리 관리 권한을 OS에게 넘겨준다. 그 중, BIOS가 OS에게 넘겨주지 않고, 직접 쓰는 메모리 공간이 하드웨어 예약 부분이다. 첫 그림에서는 96.9MB를 BIOS에서 사용하고 있는 것이다.

두뇌가 OS이고, 하드웨어가 사람의 뼈와 근육이라면, 바이오스는 신경계라고 할 수 있다. 소프트웨어와 하드웨어를 연결하여 상호작용 할 수 있도록 돕는 역할을 수행한다.

Free 메모리

사용된 적이 없고 언제든지 사용할 수 있는 메모리 공간을 의미한다.

커밋 메모리 (Commit Memory)

가상 메모리와 물리 메모리의 합산이다.

가상메모리 (Virtual Memory)

보조기억장치를 활용하여 각 프로그램에서 실제 메모리 주소가 아닌 가상의 메모리 주소를 사용하는 방식을 말한다. 이를 통해 실제 메모리 공간보다 큰 메모리 영역을 사용할 수 있다.

 

실제 메모리 크기가 100인데, 가상 메모리를 통해 1000이라는 크기가 존재한다고 가정하자. 그리고 특정 프로세스에서 500의 메모리 공간을 필요로 하고, 그 중에서 주로 사용되는 메모리 공간이 30이라고 가정 하면, 30은 실제 메모리에 적재하고, 나머지 470의 메모리 데이터는 보조기억장치에 보관한다. 그리고 프로세스의 명령어들을 실행하면서 이미 실제 메모리에 존재하는 데이터를 사용할 때는 바로 사용하고, 보조기억장치에 있는 데이터를 필요로 할 때는 이를 실제 메모리에 적재한 후 사용하는 방식을 취한다. 만약, 오랫동안 사용되지 않는 데이터가 실제 메모리에 존재하면 이를 다시 보조기억장치로 옮기고, 자주 사용하는 데이터를 실제 메모리에 적재한다.

가상 메모리는 주택담보대출과 같다. 실제로 그 만큼 존재하지 않지만 이미 갖고 있는 다른 자원의 가치를 바탕으로 더 많은 메모리를 갖고 있는 것으로 간주해서 이용하는 것이다.

 

'컴퓨터 공학 > OS' 카테고리의 다른 글

메모리 용어 간단 정리 (2/2)  (0) 2022.01.14