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
를 기피하는 이유를 설명하시오. -
리눅스 개발자가 버그를 만났을 때 시행하는, 제출까지의 작업 순서에 대해 설명하시오.
-
리눅스 개발자가 주석을 달 때 신경써야 할 사항에 대해 설명하시오.
-
패치를 만들고 제출하는 과정에 대해 설명하시오.
-