Course Outline

소개

  • GNU/Linux의 간략한 역사
  • 라이센싱
  • 커널 버전 관리
  • 릴리스 주기
  • 커널 트리
  • 본선
  • 커널 대 사용자 공간
  • 메커니즘 대 정책
  • 커널 드라이버 대안
  • RTOS 대 Linux

메모리Management

  • 가상 메모리 대 실제 메모리
  • 커널에서의 메모리 할당
  • 페이지
  • 구역
  • API
  • 투수판

커널 패치

  • 생명주기
  • git
  • 커널 소스
  • 패치를 생성하다
  • 패치 확인
  • 패치 수정
  • 배 패치
  • 감사된 코드

커널 모듈

  • 커널 소스 얻기
  • 구성/빌드/설치
  • 장치 드라이버(정적으로 링크, 런타임에 로드됨)
  • 초기화/종료
  • 라이센싱
  • 수출 심볼 GPL
  • 트리에서 나온 makefile
  • 모듈-init-도구
  • 커널 트리의 모듈
  • 케이피그
  • 매개변수 전달
  • 부족한

숯 운전사

  • 건축학
  • 사용자/커널 인터페이스
  • I/O 서브시스템
  • 웹 서비스
  • sysfs(장치, 버스, 드라이버, 클래스)
  • kobject/ktype/kset
  • 리눅스 커널 드라이버 모델
  • 장치 파일
  • char 드라이버
    • 초기화
    • 등록
    • 열다, 풀어주다
    • cdev, cdev 추가, cdev 삭제,...
    • 장조/단조 번호
    • udev, udevmonitor, udevadm

고급 캐릭터 드라이버 운영

  • 아이오텍틀
  • 잠금 해제된 ioctl
  • 호환성 ioctl
  • 사용자 공간 API
  • 커널 공간 API
  • 프로세스 라이프사이클
  • 잠자기/차단
  • 잠자다/깨어나다
  • 대기열
  • 천둥치는 무리
  • 투표/선택

커널 디버깅

  • 벌레
  • 디버깅
  • 커널 디버깅
    • git을 사용한 이진 검색
    • 커널의 디버그 지원
    • printk syslogd, klogd, loglevels, 속도 제한, 디버그 수준, 디버그 선택적 하위 시스템
    • debugfs 쿼리로 디버깅
    • oops 디버깅, oops 어설션
    • 매직 SysRq 키
    • kgdb/kdb
    • 제이태그

트레이싱

  • 지코브
  • 엘코브
  • 프로필
  • ftrace
    • nop 추적기
    • 함수 추적기
    • sched 스위치 추적기
    • 함수 그래프 추적기
    • 동적 추적기
  • trace-cmd/커널샤크
  • 퍼프
  • LTTng

인터럽트

  • 인터럽트 대 폴링
  • 방해하다
  • 프로그램 섹션
  • 재진입성
  • 이벤트
  • 인터럽트 핸들러
  • 공유 인터럽트 핸들러
  • 흐름을 방해하다
  • 인터럽트 제어

작업 연기

  • 상/하 반쪽
  • 소프트아이큐
  • 태스크릿
  • 작업 대기열
  • 스레드 인터럽트

동시성

  • 중요 지역/섹션
  • 원자
  • 경쟁 조건
  • 동기화
  • 잠금
  • 잠금 솔루션
  • 이중 자물쇠
  • 투쟁
  • 무엇을 잠가야 하나요?
  • 무엇을 사용할 수 있나요?
    • 원자 연산
    • 스핀 잠금
    • 독자-작가 스핀락
    • 신호기
    • 이진 세마포어
    • 뮤텍스
    • 리더-라이터 세마포어
    • 완료 변수
    • 순차적 잠금
    • 선점 비활성화
    • 주문 및 장벽

시간

  • 헤르츠
  • 지피스
  • 큰/작은 지연
  • 커널 타이머

하드웨어 I/O

  • I/O 포트
  • I/O 메모리
  • 레지스터에 접근하는 과정에서 발생하는 부작용을 어떻게 처리하나요?

사용자 커널 Communication

  • put(get)_user()
  • to(from)_user()로 복사
  • 커널 I/O
  • 메모리 매핑
  • 프로스
  • 시스템 파일 시스템
  • 디버그fs
  • 릴레이에프에스
  • 넷링크
  • 아이오텍틀

휴대성

  • 단어 크기
  • 불투명한 유형
  • 부호 있는/부호 없는 char
  • 데이터 정렬
  • 통합 프로모션
  • 코드 재사용
  • 엔디아니스
  • 시스템 틱
  • 페이지 크기
  • 지시 주문
  • SMP/선점/고메모리

달리 명시되어 있지 않는 한, 본 강의 개요와 콘텐츠에는 Attribution-NonCommercial-ShareAlike 4.0 International(CC BY-NC-SA 4.0) 라이선스가 적용됩니다.

Requirements

  • 최종 사용자로서 GNU/Linux 시스템 사용에 대한 기본적인 지식
  • 명령줄 셸에 대한 기본적인 지식
  • 사용자 공간/애플리케이션 개발에 대한 기본 지식
  • 중급 C 프로그래밍 지식
  • 이전에 Embedded GNU/Linux Systems Architecture 에 참석했어야 합니다(강력히 권장!) 및/또는 거기에 설명된 주제에 대한 좋은 이해가 있어야 합니다.
 35 Hours

Number of participants


Price per participant

회원 평가 (5)

Upcoming Courses

Related Categories