LINUX
Posts
477 posts[리눅스커널] 메모리 관리: 슬럽 오브젝트 해제하는 kfree() 함수 분석하기
kmalloc() 함수로 동적 메모리를 할당하고 난 후 사용하지 않으면 메모리를 반환해야 합니다. 이 때 kfree() 함수를 사용하면 됩니다. 이번 시간에는 kfree() 함수를 분석하면서 커널 내부에서 반환하는 동적 메모리를 어떻게 처리하는지 살펴보겠습니다.[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/source/mm/slub.c]01 void kfree(const void *x)02 {03 struct page *page;04 void *object = (void *)x;0506 trace_kfree(_RET_IP_, x);0708 if (unlikely(ZERO_OR_NULL_PTR(x)))09 return;1011 page = virt_to_h
[리눅스커널] 메모리 관리: kmalloc 캐시 슬럽 오브젝트 할당 커널 함수 분석하기
우리는 'kmalloc() 함수를 호출하면 동적 메모리를 할당할 수 있다.'란 사실을 알고 있습니다. 하지만 kmalloc() 함수에서 호출하는 커널 내부 함수는 거의 분석하지는 않는 듯 합니다. 이번 시간에는 kmalloc() 함수와 이 함수에서 호출하는 다음 함수를 분석합니다.kmalloc_index()kmem_cache_alloc_trace()slab_alloc()slab_alloc_node() kmalloc() 함수 분석하기 우리가 드라이버 드라이버에서 동적 메모리를 할당할 때 주로 사용하는 함수는 kmalloc()입니다. 그런데 kmalloc() 함수는 생각보다 분석하기 어렵습니다. 슬랩 캐시와 슬럽 오브젝트의 개념을 알고 있어야 분석이 가능하기 때문입니다. 이어서
[리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock_irq()
리눅스 커널 코드를 조금만 분석하면 spin_lock() 함수뿐만 아니라 spin_lock_irq() 함수를 써서 임계 영역을 보호하는 코드를 많이 볼 수 있습니다. 이렇게 커널은 스핀락 기능을 확장한 플러그인 형태 스핀락 함수들을 제공합니다. 이번 소절에서는 spin_lock() 함수 기능을 확장한 스핀락 플러그인 함수를 소개합니다. spin_lock_irq()/spin_unlock_irq() 먼저 spin_lock_irq()/spin_unlock_irq() 함수를 리눅스 커널에서 지원하는 이유를 알아보고 세부 코드를 분석하겠습니다. spin_lock_irq()/spin_unlock_irq() 함수가 생겨난 이유는 무엇일까? spin_lock_irq()/spin_unlock_irq() 함수 코드
gImageReader - 리눅스용 광학문자인식(OCR) GUI S/W
gImageReader는 광학문자인식(OCR)을 위한 GUI S/W이다. 테서랙트(tesseract) OCR 엔진과 연동하여 이미지 파일로부터 문자를 추출해 준다. 테서렉트에 대한 내용은 이전 게시물을 참고하자. 여기로 우분투/데비안 기반 배포판을 기준으로 아래와 같이 설치하면 되겠다. 테서랙트가 이미 설치되어 있다는 것을 전제로 한다. gImageReader는 GUI 기반의 사용자 인터페이스가 중심이고 실제 문자인식은 테서랙트에 의해 이루어진다. # S/W 저장소 갱신 sudo apt-get update # gImageReader 설치 sudo apt-get install gimagereader # gImageReader 실행 gimagereader-gtk GUI 기반이라
![[웹툰단행본] 『통제구역관리부』 1권 후기 : 이상한 변칙과 기이한 일들이 일어나는 공간에 대하여](https://img.zoomtrend.com/2026/06/09/1780996474-SE-5eda86fa-0d63-4afd-b8dd-b801879fed52.jpg)


![[CV] [Comi] 'あかね噺'(아카네 이야기) 22권. 아카네의 첫 전력 승부](https://img.zoomtrend.com/2026/06/08/1780982081-EC9D8CEC9585EC9D98EBA6ACEB93ACEC9CBCEBA19C.jpg)