Guillermo Austin Kim

Sources

Posts

998 posts

[리눅스커널] 메모리: kcalloc() 함수와 kmalloc_array() 함수의 차이점

Guillermo Austin Kim|2021년 6월 9일

kcalloc() 함수는 어떤 역할을 수행할까요? 구현부를 보겠습니다. inline void *kcalloc(size_t n, size_t size, gfp_t flags){ return kmalloc_array(n, size, flags | __GFP_ZERO);} kcalloc() 함수를 보니 자신에게 전달된 인자를 kmalloc_array() 함수에 그대로 전달하는데,마지막 인자의 속성을 변경합니다. flags에 __GFP_ZERO 플래그와 OR 비트 연산을 한 결과를 마지막 인자로 전달하는 것입니다. kmalloc_array() 함수를 호출해 메모리를 할당할 때 0으로 초기화해 달라는 의미죠. 이 점만 빼면 kcalloc() 함수는 kmalloc_array() 함수와 같은 역할을 수행합니다.

[공유] YES24 이북(Ebook) 출간: 디버깅을 통해 배우는 리눅스 커널의 구조와 원리

Guillermo Austin Kim|2021년 6월 7일

'디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 책이 출간될 이후에 수 많은 개발자 분들이 '언제 이북(Ebook)이 출간되는지 문의를 주셨는데요. 특히 해외에 진출하신 분(개발자, 유학생)이 이북(Ebook) 출간을 기다리셨던 것 같은데요. 드디어 2021년 06/07(월)에 출간됐습니다. '디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1부' 링크 '디버깅을 통해 배우는 리눅스 커널의 구조와 원리 2부' 링크 그 동안 '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 책을 많이 읽어주셔서 감사드리고,개발자님들과 취준생 분들에게 많은 도움을 줄 수 있는 실용적인 콘텐츠를 블로그와 유튜브에 꾸준히 올리겠습니다. 감사합니다. '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 저자리눅스

[리눅스커널] /proc/pid 권한: tgid_base_stuff

Guillermo Austin Kim|2021년 6월 4일

/proc/pid/* 파일에 대한 권한은 tgid_base_stuff 테이블을 변경하면 바꿀 수 있다. (const struct pid_entry [51]) tgid_base_stuff = ( [0] = ( (const char *) name = 0xFFFFFF9D4D66DC33 = -> "task", (unsigned int) len = 4 = 0x4 = '....', (umode_t) mode = 16749 = 0x416D = 'Am', (const struct inode_operations *) iop = 0xFFFFFF9D4D22A5C0 = proc_task_inode_operations -> ((struct dentry (cons

[Arm프로세서] AAPCS: Armv7: sub 명령어

Guillermo Austin Kim|2021년 6월 2일

sub는 지정된 상수만큼 감소시키는 연산을 수행하는 명령어인데, push 명령어 다음에 'sub sp, sp, #28'와 같이 SP 레지스터의 값을 감소시키는 명령어를 볼 수 있습니다. 이와 같은 sub 명령어는 조금 더 확장해 다음과 같이 설명할 수 있습니다. “함수 내에 선언된 지역 변수를 사용하기 위해 스택 공간을 확보한다.” C 프로그래밍에서 "지역 변수는 스택 공간에 저장된다"라는 내용을 배운 적이 있을텐데, SP 레지스터를 빼는 연산이 이에 해당됩니다. [정보]세미나에 받았던 좋은 질문을 소개합니다. "sub 명령어와 함께 SP 레지스터를 0x4나 0x8만큼 감소시키는 동작이 왜 지역 변수를 사용하기 위해 스택 공간을 확보하는 것일까? SP 레지스터를 감

[Arm프로세서] AAPCS: Armv7: push 명령어

Guillermo Austin Kim|2021년 5월 31일

SP 레지스터와 프로세스의 스택이 변경될 때 실행되는 명령어는 push와 pop입니다. 각 명령어의 의미를 알아보고, 예제 코드를 분석하겠습니다. 먼저 Arm 스팩 문서에서 push 명령어를 어떻게 설명하는지 알아봅시다. A8.8.133 PUSH Push Multiple Registers stores multiple registers to the stack, storing to consecutive memory locations ending just below the address in SP, and updates SP to point to the start of the stored data.(출처: DDI0406C_C_arm_architecture_reference_manual) 스팩 문서에서 p