임베디드 스터디 - 커널 타이머
리눅스 커널 타이머를 학습한다. jiffies/HZ의 관계, struct timer_list, hrtimer의 고해상도 타이머, udelay/mdelay/msleep의 차이를 다룬다.
리눅스 커널 타이머를 학습한다. jiffies/HZ의 관계, struct timer_list, hrtimer의 고해상도 타이머, udelay/mdelay/msleep의 차이를 다룬다.
리눅스 드라이버의 동기/비동기 I/O를 학습한다. Blocking I/O의 SLEEP 대기, Non-blocking I/O의 즉시 반환(-EAGAIN), select/poll/epoll의 다중 장치 효율적 처리를 다룬다.
리눅스 커널의 상호배제 메커니즘을 학습한다. spinlock의 Busy wait 특성, mutex의 sleep 기반 대기, 세마포어의 N개 동시 진입, rwlock의 읽기·쓰기 분리 접근을 비교한다.
리눅스 커널 드라이버의 버퍼 관리와 메모리 할당을 학습한다. copy_to/from_user()의 주소 검증, kmalloc()/kfree()의 GFP_KERNEL·GFP_ATOMIC 플래그 선택 기준, vmalloc()의 가상 연속 할당 특성을 다룬다.
리눅스 커널의 주요 자료구조를 학습한다. list_head의 타입 독립적 연결 리스트, wait_queue의 블로킹 대기 메커니즘, tasklet·work_queue의 인터럽트 상하반부 분리, kfifo의 스레드 안전 링 버퍼를 다룬다.
임베디드 Linux 디바이스 드라이버의 시스템 콜 접근 구조를 학습한다. file_operations 구조체의 함수 포인터 구성, ioctl·llseek의 역할, register_chrdev()·unregister_chrdev()의 호출 위치를 다룬다.
임베디드 Linux 커널 모듈을 학습한다. 모듈의 동적 추가·제거 장점, module_init()·module_exit() 구조와 kmalloc·드라이버 테이블 등록, insmod·rmmod·lsmod·modprobe 관리 명령어, 커널 Kbuild 시스템 기반 Makefile 작성법을 다룬다.
임베디드 Linux의 문자·블록·네트워크 디바이스 드라이버를 학습한다. 문자 디바이스의 순차 스트림, 블록 디바이스의 페이지 캐시와 랜덤 접근, 네트워크 디바이스의 소켓 인터페이스와 MTU·MSS 구조, 세 드라이버 유형의 비교를 다룬다.
임베디드 Linux 디바이스 드라이버 기본을 학습한다. 커널/사용자 공간 분리 이유, Everything is a File 철학, 디바이스 파일 타입과 Major·Minor 번호 역할, 그리고 open()·read() 시스템 콜에서 드라이버 테이블 조회까지의 실행 흐름을 다룬다.
임베디드 리눅스의 사용자 공간 초기화 과정을 학습한다. SysV init의 inittab·rcS 스크립트 구조, BusyBox의 단일 바이너리·applet·심볼릭 링크 방식, 동적 링커 ld.so의 공유라이브러리 로드 및 심볼 연결 과정을 다룬다.