본문 바로가기
728x90

Memory3

메모리(Memory)관리-(2) □ Zone - 노드에 존재하는 물리메모리 중 16MB이하 부분을 관리하기 위해 node의 일부분을 따로 관리할 수 있도록한 자료구조 □ Page frame - 각각의 Zone은 자신에 속해 있는 물리 메모리들을 관리하는데, 이 물리 메모리의 최소단위 - 모든 페이지 프레임 당 하나씩 page 구조체가 존재. 이는 시스템이 부팅되는 순간에 구축되어 역시 물리 메모리 특정 위치에 저장 되는데 이 위치는 mem_map이라는 전역 배열을 통해 접근. 그림처럼 복수 개의 페이지 프레임이 zone을 구성하며 떄에 따라 하나 혹은 그 이상의 zone이 node를 구성하며, 역시 시스템 구조에 따라 하나 혹은 그 이상의 node가 존재하는 것이 리눅스의 전체 물리 메모리 관리 구조. 2016. 9. 9.
포인터(Pointer) □ 포인터는 변수의 메모리 주소를 저장하는 변수다 변수는 메모리 상의 저장 공간이므로 그 위치(주소)를 알면 사용할 수 있다. □ 주소 연산자(&)프로그램이 사용하는 메모리에는 바이트별로 주소값이 있다. 이 값은 0부터 시작하고 바이트 단위로 1씩 증가하므로 2바이트 이상의 크기를 갖는 변수는 여러 개의 주소값에 걸쳐 할당된다. 예를 들어 변수 a가 메모리 100번지부터 할당되었다면 100번지부터 103번지까지 4바이트에 걸쳐 할당된다. 주소는 변수가 할돵된 메모리 공간의 시작 주소를 사용 주소 연산자(&)의 사용법 예제 포인터는 주소를 저장하는 변수로 일반 변수와 마찬가지로 선언한 후에 사용한다. 선언하는 방법은 변수 앞에 *만 붙여주면 된다. 간접참조 연산자(*) 예제) *pa == num ① num.. 2016. 9. 8.
메모리(Memory)관리-(1) □ SMP(Symmetric Multiprocessing) - 복수 개의 CPU를 가지고 있는 컴퓨터 시스템 중 모든 CPU가 메모리와 입출력 버스 등을 공유하는 구조 □ NUMA(Non-Uniform Memory Access) - CPU들을 몇 개의 그룹으로 나누고 각각의 그룹에게 별도의 지역 메모리를 주는 구조 □ Bank - 리눅스에서 접근 속도가 같은 메모리의 집합 - UMA구조(NUMA의 반대)는 한 개의 뱅크가 존재 - NUMA구조라면 복수개의 뱅크가 존재 □ Node - 뱅크를 표현하는 구조 (~/include/linux/mmozone.h) - 만약 UMA 구조(Uniform Memory Access)의 시스템에서 리눅스가 수행된다면 한 개의 노드가 존재할 것이며, 이 노드는 리눅스의 전역 .. 2016. 9. 6.
728x90