메모리관리

포스트: 3|아이템:메모(5)
Tags

Posts

3 posts

인스턴스 관리

앨리스의 토끼|2020년 5월 5일

먹고 살기 위해 여기 저기 떠돌이처럼 프로그래밍을 하다보니 어느 샌가 여러가지 언어를 다루고 있는 나 자신을 발견하게 되었다.좋다고 해야 할지 나쁘다고 해야 할지 모르겠지만, 여전히 내 프로그래밍의 시작은 C/C++이다.JAVA도 좋고, Objective C도 좋고, Swift도 좋고 RUST도 좋지만 그런 언어들 여럿을 늘어놓고 다시 봐도 C/C++ 만한 것이 없다.최근에 없는 시간을 쪼개서 다시금 C/C++을 둘러보다 보니 잠시 놓고 있었음에도 어느 샌가 관련 기술은 여러모로 발전한 것을 느낄 수 있었다.특히 STL의 경우는 이전처럼 잘 쓰는 사람들 만 사용하는 것이 아니라 비교적 많은 개발자들이 활용하며 다양한 기술을 내놓고 있는 것을 확인할 수 있었다.무엇보다 자신이 가진 기술을 자신의 밥줄로 생각하

[리눅스커널] 메모리 관리: kmalloc 캐시 슬럽 오브젝트 할당 커널 함수 분석하기

Guillermo Austin Kim|2019년 9월 1일

우리는 'kmalloc() 함수를 호출하면 동적 메모리를 할당할 수 있다.'란 사실을 알고 있습니다. 하지만 kmalloc() 함수에서 호출하는 커널 내부 함수는 거의 분석하지는 않는 듯 합니다. 이번 시간에는 kmalloc() 함수와 이 함수에서 호출하는 다음 함수를 분석합니다.kmalloc_index()kmem_cache_alloc_trace()slab_alloc()slab_alloc_node() kmalloc() 함수 분석하기 우리가 드라이버 드라이버에서 동적 메모리를 할당할 때 주로 사용하는 함수는 kmalloc()입니다. 그런데 kmalloc() 함수는 생각보다 분석하기 어렵습니다.  슬랩 캐시와 슬럽 오브젝트의 개념을 알고 있어야 분석이 가능하기 때문입니다. 이어서

[리눅스커널] 메모리관리: 가상 주소를 물리 주소 변환하는 세부 원리 알아보기

[리눅스커널] 메모리관리: 가상 주소를 물리 주소 변환하는 세부 원리 알아보기

Guillermo Austin Kim|2019년 7월 25일

가상 주소를 물리 주소 변환하는 세부 원리 알아보기이번에는 가상 주소를 물리 주소로 변환하는 과정을 살펴보겠습니다. 다음 그림을 같이 보겠습니다. [그림 14.18] 가상 주소를 물리 주소로 변환하는 과정 전체 흐름도 가상 주소를 물리 주소로 변환하는 과정은 크게 2 단계로 나눌 수 있습니다. [그림 14.19] 가상 주소를 물리 주소로 변환하는 단계 1단계[그림 14.18] 가장 위쪽에 있는 주소는 TTBR(Translation Table Base Register)에 저장된 변환 테이블 시작 주소입니다. 페이지 테이블의 베이스 주소입니다. 변환 베이스 주소와 SBZ로 구분할 수 있는데 SBZ는 항상 0라는 의미입니다. 커널에서는 swapper_pg_dir 전역 변수가 이 주소를 저장합니다. 다음 ‘가