Skip to content

Latest commit

 

History

History
239 lines (154 loc) · 9.68 KB

README.md

File metadata and controls

239 lines (154 loc) · 9.68 KB

Linux-Kernel-Analysis

Analyze the Linux Kernel.

리눅스 커널 심층 분석 3e, 로버트 러브 지음 | 황정동 옮김, 에이콘

목차


1주차

  • 주제

    • monolithic kernelmicro kernel의 차이점은 무엇이고, 각각의 장단점은 무엇인가? 그리고, 리눅스 는 둘 중 어디에 가까운가?

    • 리눅스가 Unix like (유닉스와 비슷하면서 유닉스가 아니다)이라고 불리는 이유는 무엇인가?

    • 커널 메모리는 왜 페이징 기능 을 사용할 수 없는가?

    • SMP의 확장성이 낮은 이유는 무엇인가?

2주차

  • 주제

    • x86 아키텍쳐는 왜 레지스터를 아껴 써야 하는가?

    • 프로세스스레드 의 차이는 무엇인가?

      • 리눅스에서 스레드 개념을 별도로 정의하지 않고, 단지 자원을 공유하는 프로세스 의 형태로 구현하는 이유는 무엇인가?
    • 커널이 부모프로세스 보다 자식프로세스 를 의도적으로 먼저 실행해야 하는 이유는 무엇인가?

    • CFS 스케줄러O(1) 스케줄러 의 어떤 문제점을 해결하였으며, CFS 스케줄러 가 가지는 한계는 무엇인가?

      • O(1) 스케줄러 는 어떤 부작용을 가지는가? 그러한 부작용을 가지는 이유는 무엇인가?
      • 리눅스가 두 가지 별개의 우선순위 단위 (나이스 값, 실시간 우선순위) 를 가지는 이유는 무엇인가?

3주차

  • 주제

    • 각 프로세스에 할당되는 timeslicetimer tick에 의존적인데, 프로세스의 실제 실행 시간을 기록하는 vruntime이 어떻게 timer tick으로부터 독립적이라고 말할 수 있는가?

    • 사용자 애플리케이션이 시스템 호출을 사용하는 일련의 과정을 구체적인 동작그 동작을 수행하는 주체를 명시하여 자세히 설명하시오.

    • 시스템 호출을 직접 구현하는 것이 권장되지 않는 이유는 무엇인가?

    • 커널 공간사용자 공간에 대해 논하시오.

4주차

  • 주제

    • 리눅스의 연결리스트일반적인 연결리스트 보다 나은 점은 무엇인가?

    • 리눅스의 레드블랙트리전통적인 레드블랙트리 와 다른 점을 설명하시오.

    • 리눅스의 CFS스케줄러rbtree를 사용하는 이유를 rbtree가 여타 자료구조와 비교하여 가지는 장점을 근거로 설명하시오.

    • 각 자료구조의 장단점을 기술하고, 사용되는 상황을 예시로 제시하시오.

5주차

  • 주제

    • 하드웨어인터럽트 가 발생한 시점부터 인터럽트 처리 후 이전에 실행되던 작업으로 돌아가기까지의 과정을 상세히 설명하시오.

    • 전역 cli()함수 를 제거한 가장 결정적인 이유를 설명하시오.

    • 인터럽트 처리 를 할 때 전반부후반부 를 구분하는 이유를 설명하시오.

    • softirq, tasklet, workqueue에 대해 설명하시오.

6주차

  • 주제

    • 스핀락세마포어의 특징을 설명하고, 스핀락세마포어 각각을 어느 조건 속에서 사용하면 좋은지를 둘의 차이점을 근거로 하여 설명하시오.

    • 재귀적인 락은 어떻게 구현되며 언제 사용하는가?

    • 배리어 의 필요성을 설명하고 배리어 함수들의 기능에 대해 논하시오.

    • 락을 구현할 때 신경써야 할 사항들에는 어떤 것들이 있는지 논하시오.

7주차

  • 주제

    • 시스템 타이머진동수가 높을 때와 낮을 때의 장단점을 각각 기술하시오.

    • 타이머 인터럽트 핸들러의 동작 과정을 서술하시오.

    • 실행 지연 해결책들의 특징과 장단점에 대해 논하시오.

    • schedule_timeout()작은 지연에서도 udelay, mdelay보다 더 나은 해결책인가?

8주차

  • 주제

    • 리눅스low memoryhigh memory에 대해 설명하시오.

    • 슬랩이란?

    • CPU별로 데이터를 사용하면 얻는 이점과 단점에 대해 논하시오.

    • vmallockmalloc의 차이를 정리하고, 둘 사이에 성능 차이가 생기는 예시를 하나 드시오.

9주차

  • 주제

    • VFS의 이점을 제시하고, 그것이 가능한 이유를 설명하시오.

    • 슈퍼블록 객체 에 대해 설명하시오.

    • 아이노드 객체 에 대해 설명하시오.

    • 덴트리 객체 에 대해 설명하시오.

    • 파일 객체 에 대해 설명하시오.

10주차

  • 주제

    • 섹터블록에 대해 설명하시오.

    • bio구조체에 대해 설명하시오.

    • buffer_head구조체와 bio구조체의 차이점을 제시하시오.

    • deadline, as, cfq, noop을 비교하시오.

11주차

  • 주제

    • mm_structvm_area_struct에 대해 설명하시오.

    • VMA 플래그에 대해 설명하시오.

    • mmap에 대해 설명하시오.

    • 페이지 테이블을 이용해 가상 주소를 물리 주소로 변환하는 과정에 대해 설명하시오.

12주차

  • 주제

    • 페이지 캐시 탐색 방법의 발전 과정에 대해 논하시오.

    • 페이지 캐시버퍼 캐시의 차이점에 대해 논하시오.

    • bdflush -> pdflush -> flusher thread 의 발전 과정에 대해 서술하시오.

    • 경쟁 회피 기법이 무엇인지 설명하고, 왜 사용되는지 논하시오.

13주차

  • 주제

    • 블록 장치캐릭터 장치에 대해 설명하시오.

    • 리눅스에서 모듈을 사용하여 얻을 수 있는 장점에 대해 설명하시오.

    • 통합 장치 모델 을 추가함으로써 얻을 수 있는 이점에 대해 설명하시오.

    • kobject, ktypes, kset의 상관관계에 대해 설명하시오.

14주차

  • 주제

    • 커널 디버깅사용자 공간 애플리케이션 디버깅이 무엇이 다른지 논하시오.

    • printf()printk()의 차이점에 대해 논하시오.

    • 디버거는 어떻게 디버깅을 하는가?

    • ksymoops의 탄생과 작동 방법에 대해 논하시오.

15주차

  • 주제

    • 높은 이식성의 장단점에 대해 논하시오.

    • 이식성 있는 코드를 작성하려면 어떤 문제를 고려해야 하는지 논하시오.

    • 이식성 있는 코드를 작성하기 위해 데이터 형 크기를 고려해야 하는 이유를 설명하시오.

    • 빅 엔디안과 리틀 엔디안의 차이와 장단점을 알아보고, 이것들을 활용하는 아키텍쳐에 대해 논하시오.

16주차

  • 주제

    • 리눅스 개발자들이 typedef를 기피하는 이유를 설명하시오.

    • 리눅스 개발자가 버그를 만났을 때 시행하는, 제출까지의 작업 순서에 대해 설명하시오.

    • 리눅스 개발자가 주석을 달 때 신경써야 할 사항에 대해 설명하시오.

    • 패치를 만들고 제출하는 과정에 대해 설명하시오.