Memory(4)
-
Linux의 kmalloc과 vmalloc에 대해서
Linux에서 kernel 영역에서의 동적 memory allocation인 kmalloc과 vmalloc에 대해서 알아보도록 하자. Kernel은 physical memory를 page의 단위로 관리 한다. page의 크기는 architecture에 의해서 좌우 된다. 보통 32-bit x86 기반의 machine에서는 page의 크기가 4096 bytes 단위로 관리 된다. Physical memory 내의 각각의 page는 Linux kernel에서 다음의 구조체로 관리된다. struct page { unsigned long flags; // page status atomic_t _count; // ref. cnt. ... void *virtual; // explained later on.. }; ..
2021.12.19 -
TLB (Translation Lookaside Buffer) 란?
TLB (Translation Lookaside Buffer) 모든 virtual memory reference는 2개의 physical memory access가 필요함. 1. appropriate page table entry 2. the desired data straightforward virtual memory scheme이 memory access time을 2배로 만든다. 이 문제를 극복하기 위해서, 대부분의 virtual memory scheme은 TLB라고 불리는 page table entry들을 위한 특별한 고속의 cache를 사용한다. 이 cache는 memory cache와 동일한 기능을 수행한다. 가장 최근에 사용되었던 page table entry들을 저장한다. 동작 방식 만약 ..
2021.12.14 -
virtual address space
최대 4GB (archi. dep.) 접근 불가 영역도 존재 ex. 08048000 - 0804c000 prcess에게 접근 권한이 없는 메모리 주소 영역 유효한 주소의 이런 영역을 -> 메모리 영역이라고 함 segment fault 유효하지 않은 영역에 access 시 발생 memory section types 1) text section (RO) 2) data section (RW) 실행 파일의 초기값이 있는 전역 변수가 할당된 메모리 3) zero page (BSS) 초기값이 없는 전역 변수가 들어 있는 영역 4) process user space stack 5) C lib용 text, data, BSS sections 6) memory 할당 file 영역 7) 공유 메모리 구간 8) malloc ..
2021.12.13 -
VSS, RSS, USS, PSS
VSS: process virtual set size RSS: Resident Set Size process에 연관된 physical page 수 shared page frame은 확인할 수 없음 USS: Unique Set Size process만의 고유 page 수 shared는 제외한 private한 memory size PSS: proportional set size = USS + (shared page 크기 / shared process 수) 좀 더 실제 사용 size에 근접한 값을 출력
2021.09.21