태그: #c
GPU·LLM·MLOps·쿠버네티스, 그리고 마음가짐에 관한 글 · 4 편
시스템 콜 하나를 끝까지 따라가기 — read가 커널 안에서 지나는 길
커널이 읽을 수 있는 코드라는 것을 확인하는 가장 좋은 방법은 시스템 콜 하나를 처음부터 끝까지 따라가 보는 것입니다. read(2)를 골라 사용자 공간의 호출부터 커널 안의 실제 구현, 그리고 반환까지 실제 파일 경로와 함수 이름과 함께 추적합니다. x8664에서 인자가 어느 레지스터에 실려 오는지, dosyscall64가 번호를 어떻게 함수로 바꾸는지, SYSCALLDEFINE3 매크로가
2026-08-19 · 31 분 읽기 #linux#kernel#syscall#vfs#x86커널 공부는 어디서 시작하는가 — 4,300만 줄 앞에서 길을 잃지 않는 법
리눅스 커널을 공부하겠다고 마음먹은 사람이 가장 먼저 부딪히는 것은 개념이 아니라 규모입니다. 실제로 트리를 받아 세어 본 숫자로 커널이라는 코드베이스가 어떤 물건인지 먼저 보여 주고, 그중 몇 퍼센트를 평생 열어 볼 일이 없는지 정직하게 짚습니다. 그다음 현실적인 진입 경로를 읽기·관측·기여 세 갈래로 나눠 각각이 누구에게 맞는지, 왜 처음부터 순서대로 읽겠다는 계획이 거의 항상 실패하는지
2026-08-19 · 30 분 읽기 #linux#kernel#kernel-source#learning#c커널 모듈 작성 — 가장 작은 모듈부터 파라미터와 GPL 심볼까지
앞의 네 편이 남의 코드를 읽는 일이었다면 이 글부터는 커널 안에서 실행되는 코드를 직접 씁니다. 로드되기만 하는 가장 작은 모듈을 먼저 만들고, 그것이 왜 그 형태여야 하는지를 moduleinit과 MODULELICENSE의 실제 정의를 열어 확인합니다. 트리 밖에서 모듈을 빌드하는 Makefile은 커널 공식 문서의 예제를 그대로 따라가고, insmod와 rmmod와 modinfo와 ls
2026-08-19 · 27 분 읽기 #linux#kernel#kernel-module#kbuild#printk컴파일러와 링커 내부 완전 정복 — #include부터 실행 파일이 되기까지 ELF, 심볼, 정적/동적 링킹, 재배치, LTO (2025)
"hello.c"가 실행 파일이 되는 여정을 원자 단위로 추적한다. 전처리 / 컴파일 / 어셈블 / 링크의 4단계, ELF 파일 레이아웃, 심볼 테이블과 재배치, 정적 라이브러리의 아카이브 구조, 동적 링커 ld.so의 GOT/PLT 트릭, C++ 이름 맹글링의 혼돈, LTO가 왜 "전체 프로그램 최적화"인지, 그리고 Rust/Go가 왜 고전적 링킹과 다른 길을 갔는지 — 오늘도 우리가 gc
2026-04-15 · 31 분 읽기 #compiler#linker#elf#symbol#static-linking