[리눅스 커널] 128번을 제외한 외부 인터럽트 핸들러를 do_IRQ()로 통일한 이유?
![익명 사용자의 이미지 익명 사용자의 이미지](/files/bluemarine_logo.png)
글쓴이: 익명 사용자 / 작성시간: 금, 2022/03/04 - 4:31오후
리눅스 커널 내부구조라는 책을 보며 공부하고있는 학생입니다.
128번 인터럽트(system call)을 제외한 나머지 인터럽트의 핸들러를 do_IRQ()로 통일시키고, irq_table을 따로 만들어서 처리를 하던데, 굳이 irq_table을 따로 만들 필요가 있나요?
인터럽트 핸들러는 등록할 수 있는 갯수가 정해져있어서 아무거나 등록하면 안되고, 동적으로 할당 및 해제할 수 있다고는 하는데 이게 irq_table을 따로 만들어야 할 이유가 되는지는 모르겠습니다.
IDT_table은 수정이 안되나요?
Forums:
빼먹은게 있는데, 트랩을 제외한 외부 인터럽트를
빼먹은게 있는데, 트랩을 제외한 외부 인터럽트를 말하는 겁니다
do_IRQ() 함수는 15년전에 사용됐던 함수입니다.
do_IRQ() 함수는 15년전에 32비트 인텔 아키텍처에서 인터럽트를 처리하는 용로도 사용된 함수입니다.
소스 링크를 보니 2.0.40 버전이네요.
지금은 2022년 3월인데요. IT 업계에서는 v5.15 버전(LTS 기준)의 리눅스 커널 버전으로 제품을 개발 중이니, 최소 v5.4 버전 이상의 커널 소스를 분석하시는게 더 좋지 않을까 생각이 듭니다.
참고로 최근 리눅스 커널의 소스가 너무 복잡해져서 종종 예전 버전의 코드를 분석하면서 개념을 잡기도 합니다.
(개인블로그)
http://rousalome.egloos.com
15년 전 구조를 보고있었다니 충격이네요..
15년 전 구조를 보고있었다니 충격이네요..
예전 버전의 코드를 보는 것은 개념을 잡기위한 목적이라 왜 do_IRQ로 통일을 했는지 따지기보단 크게 보라는 말씀인가요?
최신 코드는 예외 처리 루틴이 많아 코드가 복잡한 경우가 많아요.
최근 소스는 예외 처리 루틴이 많아 코드의 복잡도가 늘어나 분석하기 어려운 경우가 많아요. 그런데 이전 버전의 코드는 비교적 예외 처리 루틴이 적은 경우가 많아 함수의 코드가 심플하거든요. 그래서 예전 버전의 코드를 보면 함수의 기본 동작을 조금 더 쉽게 이해할 수 있습니다.
(개인블로그)
http://rousalome.egloos.com
댓글 달기