1. |
|
리눅스 커널 입문 |
유닉스, 리눅스, 및 리눅스 커널 개념 |
|
2. |
|
개발 환경 구축 |
디바이스 드라이버 개발을 위한 리눅스 커널 개발 환경 설정 |
|
3. |
|
프로세스 |
리눅스의 프로세스 관리 구조체 |
|
4. |
|
프로세스 구조체 |
리눅스의 프로세스 관리 구조체 QnA |
|
5. |
|
프로세스 트리 |
프로세스 상태와 프로세스 부모/자식 관계 자료구조 |
|
6. |
|
프로세스 트리 2 |
프로세스 부모/자식간 이동을 위한 구조체 |
|
7. |
|
프로세스 생성 |
자식 프로세스 및 스레드 생성 |
|
8. |
|
프로세스 스케줄링 |
리눅스 타스크 스케줄링 개념과 priority |
|
9. |
|
CFS |
리눅스의 CFS 개념, vruntime 및 자료구조 |
|
10. |
|
과제1: 커널 기반 개발 환경 구축 |
커널 개발 환경 구축 방법과 과제 1 설명 |
|
11. |
|
CFS2 |
CFS scheduling 예제 |
|
12. |
|
CFS3 |
CFS scheduling 예제(계속), RB-tree |
|
13. |
|
스케줄러 진입위치 |
스케줄링 진입 위치와 sleep/wake |
|
14. |
|
커널 선점 |
커널 선점의 개념과 선점 가능 위치 |
|
15. |
|
CPU 지속성 |
CPU와 process와의 친밀성과 스케줄링 |
|
|
|
디바이스 드라이버 |
리눅스 디바이스 드라이버의 개념과 구조 |
|
|
|
디바이스 드라이버 구조 및 사용 |
디바이스 드라이버 구조, 등록, 문자 디바이스 드라이버 예제 |
|
|
|
라즈베리 파이 |
라즈베리 파이의 GPIO 개요와 회로 연결 |
|
|
|
과제 2 |
과제 2 설명 |
|
|
|
시스템 콜 |
시스템 콜의 구조 및 예제 |
|
|
|
커널 자료구조 |
커널의 연결 리스트 및 구조체 |
|
|
|
커널의 리스트 검색 |
커널의 구조체들을 연결하는 리스트 구조 |
|
|
|
커널 자료구조 2 |
커널 스택, 큐, idr |
|
|
|
RB tree |
RB tree의 개념과 구조 |
|
|
|
RB tree 연산 |
RB tree에서 노드 삽입과 삭제 |
|
|
|
인터럽트와 그 핸들러 |
인터럽트 핸들러의 개념과 구조 |
|
|
|
인터럽트 핸들러 등록 |
인터럽트 핸들러 등록 방법과 과정 |
|
|
|
과제 3 |
3번째 과제 설명 |
|
|
|
인터럽트 핸들러 해제 |
인터럽터 핸들러 해제 방법과 작성시 주의사항 |
|
|
|
인터럽트 핸들러 구현 |
인터럽트 핸들러 구현 방법과 동기화 |
|
|
|
인터럽트 상태 |
인터럽트의 종류 및 구분 |
|
|
|
후반부 처리 개요 |
후반부 처리의 개념 및 분류 |
|
|
|
Softirq |
Softirq의 개념과 구조 |
|
|
|
Tasklet |
Tasklet의 개념과 구조 |
|
|
|
Work queue |
Work queue의 개념과 구조 |
|
|
|
과제 4 |
4번째 과제 설명 |
|
|
|
Work queue와 동기화 |
Work queue에서 동기화가 필요한 부분과 전/후반부 처리의 동기화 필요성 |
|
|
|
동기화 개요 |
커널 동기화가 필요한 이유 |
|
|
|
커널 동기화 1 |
Atomic operation, spin lock |
|
|
|
커널 동기화 2 |
커널 세마포, seq-lock |
|
|
|
커널 동기화 3 |
ordering |
|
|
|
커널 타이머 1 |
Tick과 timer interrupt |
|
|
|
커널 타이머 2 |
Jiffie와 timer interrupt |
|
|
|
커널 타이머 3 |
timer handler 구현 |
|
|
|
메모리 관리 1 |
페이지 정보와 zone |
|
|
|
메모리 관리 2 |
페이지 할당 및 반환 함수 |
|
|
|
메모리 관리 3 |
Slab layer, high memory, CPU별 메모리 |
|