페이지

Category
아이템: 
포스트 갯수11

인스턴스 관리

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

[리눅스커널] 메모리관리: 페이지 테이블에 대해 알아보기

By Guillermo Austin Kim | 2019년 7월 17일 | 
페이지 테이블로 가상 주소를 물리 주소로 변환하는 흐름을 살펴봤습니다. 이 과정에서 알아야 하는 주요 개념을 소개합니다. - 페이지 테이블 엔트리 - 페이지 테이블 엔트리 주소 페이지 테이블 엔트리페이지 테이블 엔트리(Page Table Entry, 줄여서 PTE)는 페이지 테이블의 정보이며 레코드라고도 부릅니다. 페이지 테이블 엔트리 주소말 그대로 페이지 테이블 엔트리가 있는 주소를 의미합니다. 이해를 돕기 위해 다음 주소 테이블을 보겠습니다. 주소 | 값 1 NSD:80004000 | 0x02 NSD:80004004 | 0x03 NSD:80004008 | 0x04 NSD:8000400C | 0x0...5 NSD:80006018 | 0x0061941E6 NSD:8000

[Kernel] 슬랩 페이지(slab page)가 관리하는 슬랩 오브젝트 갯수

By Guillermo Austin Kim | 2018년 4월 25일 | 
슬랩 페이지 디스크립터가 관리하는 슬랩 오브젝트의 실제 메모리 덤프를 어떻게 접근할까요? 예를 들어 현재 페이지 디스크립터 주소가 0xEC778540 이라고 가정하겠습니다.그리고 각 멤버는 다음과 같구요. 눈으로 잠깐 봐도 kmalloc-64 타입의 슬랩 페이지임을 알 수 있겠죠. (struct page *) (struct page*)0xEC778540 = 0xEC778540 -> ( (long unsigned int) flags = 0x80, (struct address_space *) mapping = 0x0, (void *) s_mem = 0x0, (long unsigned int) index = 0xC518EC00, (void *) freelist = 0xC518E

[Kernel] slab object 자료구조 - 페이지, 슬랩 캐시

By Guillermo Austin Kim | 2018년 4월 23일 | 
이번 시간에는 코어 덤프에서 페이지 디스크립터와 슬랩 오브젝트 자료구조를 알아 봅니다. 우선 다음과 같은 페이지 디스크립터가 있습니다.(struct page *) (struct page*)0xEC778540 = 0xEC778540 -> ( (long unsigned int) flags = 128 = 0x80, //<<--[1] (struct address_space *) mapping = 0x0, (void *) s_mem = 0x0, (long unsigned int) index = 3306744832 = 0xC518EC00, (void *) freelist = 0xC518EC00, //<<--[2] (bool) pfmemalloc = FALSE, (unsign