[커널 18차] 6주차

2021.07.03 23:53

V4bel 조회 수:75

2021/07/03 스터디 6차

 

1) 입장하신 분들은 오후 3:00 시작전까지 참가자명을 한글 실명으로 변경.

2) 출첵을 위해 구글 문서의 다음 참석 항목에 성함을 기록.

    jake.dothome.co.kr 에 링크가 있습니다.

3) 접속 후 3시 정각에 웹캠 on.

참석

  • 36명 참석(문영일, 장철연, 최준근, 안이수, 김택우, 송준영, 이민욱, 황성민, 서민혁, 이재훈, 안유빈, 이한솔, 김현우, 정주희, 김준영, 정동훈, 최영민,  정은식, 김경인, 유민호, 강혁, 문연수, 박노은, 임채훈, 한동수, 김성준, 김태완, 황바른, 이정재, 김성원, 김정임, 권효만, 한윤재,  조현철, 김원우, 김각래                                   

 

진도

서기: 김현우, 김성원

공유: 이민욱

 

  • 문영일 제외 66명: 

  • 강혁, 권경환, 권대엽, 권효만, 금승원, 김각래, 김경인, 김동훈, 김성원, 김성준, 김원우, 김정임, 김준영, 김지태, 김태완, 김택우, 김한구, 김현우, 김형종, 류호은, 문연수, 민호기, 박노은, 박소연, 박시현, 박청수, 박현진, 봉하승, 서민혁, 송기원, 송준영,  신보현, 안성원, 안유빈, 안이수, 위대한, 유민호, 유원상, 유재홍, 이민욱, 이일영, 이재훈, 이정민*, 이정아, 이정재, 이한솔, 이형래, 임채훈, 장철연, 정동훈, 정은식, 정주희, 조기석, 조만재, 조안나, 조현철, 지영근, 차민희, 최서정, 최연욱, 최영민, 최준근, 한동수, 한윤재, 황바른, 황성민

  • 진도 :  ~ end

 

 

 

스터디 내용
 

  • 1. 인터럽트, 트랩, 시스템 호출

    • 시스템 호출 처리 과정

    • 새로운 시스템 호출 구현

    • 시스템 호출 구현 확장

  • 2. 리눅스 모듈 프로그래밍

    • ​모듈 프로그래밍 실습

    • 시스템 호출 후킹

  • 3. 디바이스 드라이버

    • struct file_operations

    • 문자 디바이스 드라이버 구조

    • 블록 디바이스 드라이버 구조

  • 4. 네트워킹

    • 프로토콜 계층 구조

    • 주요 커널 내부 구조

    • 통신 프로토콜 제어 흐름

 

 

 

구글 독스
 

syscall table

  • generic - include/uapi/asm-generic/unistd.h

  • x86_64 - arch/x86/entry/syscalls/syscall_64.tbl

  • arm - arch/arm/tools/syscall.tbl

 

copy_to_user

  • include/linux/uaccess.h

 

 

Q. mknod 없이 디바이스 드라이버를 만들수 있는가?

 리눅스 커널 내부구조 216페이지 최하단  class_create(), device_create() 호출하면 생성됨

 

dump_stack() 호출 기준

[    3.684649]  my_open+0x5/0x30 [demo]

[    3.684649]  misc_open+0xf2/0x160

[    3.684649]  chrdev_open+0x99/0x1a0

[    3.684649]  ? cdev_put.part.3+0x20/0x20

[    3.684649]  do_dentry_open+0x1f8/0x350

[    3.684649]  path_openat+0xccb/0xf80

[    3.684649]  ? sched_clock_local+0x12/0x80

[    3.684649]  ? sched_clock_local+0x12/0x80

[    3.684649]  ? rcuwait_wake_up+0x1d/0x30

[    3.684649]  ? cgroup_css_set_put_fork+0xd5/0x100

[    3.684649]  do_filp_open+0xac/0x120

[    3.684649]  ? _flat_send_IPI_mask+0xe/0x20

[    3.684649]  ? generic_exec_single+0x25/0x70

[    3.684649]  ? smp_call_function_single_async+0x12/0x20

[    3.684649]  ? update_process_times+0x9f/0xb0

[    3.684649]  ? timerqueue_add+0x5f/0x80

[    3.684649]  ? enqueue_hrtimer+0x2d/0x60

[    3.684649]  ? do_sys_openat2+0x23b/0x300

[    3.684649]  do_sys_openat2+0x23b/0x300

[    3.684649]  do_sys_open+0x52/0x80

[    3.684649]  do_syscall_64+0x33/0x40

[    3.684649]  entry_SYSCALL_64_after_hwframe+0x44/0xae


 

struct hd_struct 와 struct block_device가 작년에 병합된걸로 기억하여 관련 lwn 링크 남깁니다

https://lwn.net/Articles/838506/

 

block device 와 관련하여 blk-mq 라는 기술이 들어와서 내부적으로 구조가 바뀐것 관련 링크 남깁니다.

https://lwn.net/Articles/823941/

 

io scheduler 중 cfq 가 bfq에 의해 교체된것과 관련한 lwn 링크 남깁니다.

https://lwn.net/Articles/674300/

 

네트워크 통신 속도 측정 시 헤더도 포함됨

XE Login