Analyze the Linux Kernel.
- 1주차 : 1. 리눅스 커널 입문 ~ 2. 커널과의 첫 만남
- 2주차 : 3. 프로세스 관리 ~ 4. 프로세스 스케줄링
- 3주차 : 5. 시스템 호출
- 4주차 : 6. 커널 자료구조
- 5주차 : 7. 인터럽트와 인터럽트 핸들러 ~ 8. 후반부 처리와 지연된 작업
- 6주차 : 9. 커널 동기화 개요 ~ 10. 커널 동기화 방법
- 7주차 : 11. 타이머와 시간 관리
- 8주차 : 12. 메모리 관리
- 9주차 : 13. 가상 파일시스템
- 10주차 : 14. 블록 입출력 계층
- 11주차 : 15. 프로세스 주소 공간
- 12주차 : 16. 페이지 캐시와 페이지 지연 기록
- 13주차 : 17. 장치와 모듈
- 14주차 : 18. 디버깅
- 15주차 : 19. 이식성
- 16주차 : 20. 패치, 해킹, 공동체
monolithic kernel과micro kernel의 차이점은 무엇이고, 각각의 장단점은 무엇인가? 그리고, 리눅스 는 둘 중 어디에 가까운가?리눅스가
Unix like (유닉스와 비슷하면서 유닉스가 아니다)이라고 불리는 이유는 무엇인가?커널 메모리는 왜 페이징 기능 을 사용할 수 없는가?
SMP의 확장성이 낮은 이유는 무엇인가?
x86 아키텍쳐는 왜 레지스터를 아껴 써야 하는가?프로세스 와 스레드 의 차이는 무엇인가?
리눅스에서 스레드 개념을 별도로 정의하지 않고, 단지 자원을 공유하는 프로세스 의 형태로 구현하는 이유는 무엇인가?
커널이 부모프로세스 보다 자식프로세스 를 의도적으로 먼저 실행해야 하는 이유는 무엇인가?
CFS 스케줄러 는 O(1) 스케줄러 의 어떤 문제점을 해결하였으며, CFS 스케줄러 가 가지는 한계는 무엇인가?
- O(1) 스케줄러 는 어떤 부작용을 가지는가? 그러한 부작용을 가지는 이유는 무엇인가?
리눅스가 두 가지 별개의 우선순위 단위 (나이스 값, 실시간 우선순위) 를 가지는 이유는 무엇인가?
각 프로세스에 할당되는
timeslice는timer tick에 의존적인데, 프로세스의 실제 실행 시간을 기록하는vruntime이 어떻게timer tick으로부터 독립적이라고 말할 수 있는가?사용자 애플리케이션이
시스템 호출을 사용하는 일련의 과정을구체적인 동작과그 동작을 수행하는 주체를 명시하여 자세히 설명하시오.시스템 호출을 직접 구현하는 것이 권장되지 않는 이유는 무엇인가?커널 공간과사용자 공간에 대해 논하시오.
리눅스의 연결리스트 가 일반적인 연결리스트 보다 나은 점은 무엇인가?
리눅스의 레드블랙트리 가 전통적인 레드블랙트리 와 다른 점을 설명하시오.
리눅스의
CFS스케줄러가rbtree를 사용하는 이유를rbtree가 여타 자료구조와 비교하여 가지는 장점을 근거로 설명하시오.각 자료구조의 장단점을 기술하고, 사용되는 상황을 예시로 제시하시오.
하드웨어에 인터럽트 가 발생한 시점부터 인터럽트 처리 후 이전에 실행되던 작업으로 돌아가기까지의 과정을 상세히 설명하시오.전역 cli()함수 를 제거한 가장 결정적인 이유를 설명하시오.
인터럽트 처리 를 할 때 전반부 와 후반부 를 구분하는 이유를 설명하시오.
softirq,tasklet,workqueue에 대해 설명하시오.
스핀락과세마포어의 특징을 설명하고,스핀락과세마포어각각을 어느 조건 속에서 사용하면 좋은지를 둘의 차이점을 근거로 하여 설명하시오.재귀적인 락은 어떻게 구현되며 언제 사용하는가?
배리어 의 필요성을 설명하고 배리어 함수들의 기능에 대해 논하시오.
락을 구현할 때 신경써야 할 사항들에는 어떤 것들이 있는지 논하시오.
시스템 타이머의진동수가 높을 때와 낮을 때의 장단점을 각각 기술하시오.타이머 인터럽트 핸들러의 동작 과정을 서술하시오.실행 지연해결책들의 특징과 장단점에 대해 논하시오.schedule_timeout()은작은 지연에서도udelay,mdelay보다 더 나은 해결책인가?
리눅스의low memory와high memory에 대해 설명하시오.슬랩이란?CPU별로 데이터를 사용하면 얻는 이점과 단점에 대해 논하시오.vmalloc과kmalloc의 차이를 정리하고, 둘 사이에 성능 차이가 생기는 예시를 하나 드시오.
VFS의 이점을 제시하고, 그것이 가능한 이유를 설명하시오.슈퍼블록 객체 에 대해 설명하시오.
아이노드 객체 에 대해 설명하시오.
덴트리 객체 에 대해 설명하시오.
파일 객체 에 대해 설명하시오.
섹터와블록에 대해 설명하시오.bio구조체에 대해 설명하시오.buffer_head구조체와bio구조체의 차이점을 제시하시오.deadline,as,cfq,noop을 비교하시오.
mm_struct와vm_area_struct에 대해 설명하시오.VMA 플래그에 대해 설명하시오.mmap에 대해 설명하시오.페이지 테이블을 이용해 가상 주소를 물리 주소로 변환하는 과정에 대해 설명하시오.
페이지 캐시탐색 방법의 발전 과정에 대해 논하시오.페이지 캐시와버퍼 캐시의 차이점에 대해 논하시오.bdflush->pdflush->flusher thread의 발전 과정에 대해 서술하시오.경쟁 회피 기법이 무엇인지 설명하고, 왜 사용되는지 논하시오.
블록 장치와캐릭터 장치에 대해 설명하시오.리눅스에서 모듈을 사용하여 얻을 수 있는 장점에 대해 설명하시오.통합 장치 모델 을 추가함으로써 얻을 수 있는 이점에 대해 설명하시오.
kobject,ktypes,kset의 상관관계에 대해 설명하시오.
커널 디버깅과사용자 공간 애플리케이션 디버깅이 무엇이 다른지 논하시오.printf()와printk()의 차이점에 대해 논하시오.디버거는 어떻게디버깅을 하는가?ksymoops의 탄생과 작동 방법에 대해 논하시오.
높은 이식성의 장단점에 대해 논하시오.
이식성 있는 코드를 작성하려면 어떤 문제를 고려해야 하는지 논하시오.
이식성 있는 코드를 작성하기 위해 데이터 형 크기를 고려해야 하는 이유를 설명하시오.
빅 엔디안과 리틀 엔디안의 차이와 장단점을 알아보고, 이것들을 활용하는 아키텍쳐에 대해 논하시오.
리눅스 개발자들이
typedef를 기피하는 이유를 설명하시오.리눅스 개발자가 버그를 만났을 때 시행하는, 제출까지의 작업 순서에 대해 설명하시오.
리눅스 개발자가 주석을 달 때 신경써야 할 사항에 대해 설명하시오.
패치를 만들고 제출하는 과정에 대해 설명하시오.