< Data Structure for Intterupt Handling >
인터럽트의 두 종류 : data structure, function
(data structure 에 관한 인터럽트 먼저 . . .)
# IRQ line의 상태
- IRQ_DISABLED - 라인을 완전히 끊어놓은 상태
- IRQ_WAITING - 라인 enable 상태. 하지만 아무작업도 하지 않는 상태
- IRQ_PENDING - 요청된 상태지만 커널이 대기하라는 상태
- IRQ_INPROGRESS – kernel is executing ISR
--> 모든 라인마다 네가지 상태가 존재
status -> handler -> lock ->action --> per device function
# do_IRQ() , handle_IRQ_event()
HW -> CPU -> IRQ -> ISR device specific operations
SW -> soft IRQ
선발cpu가 이미 들어가 있는데 후발cpu도 같은 라인 처리해야하는 상황
임베디드 시스템에서 scheduling critical section을 주의해야한다.
(코드해석이 많이 필요한 7~8강)
9강 Bottom halves
# Softirq (Software interrupt request)
- 소프트웨어가 인터럽트 요청했다
- (프로 코더가 작성해야 함)
# taklet
- softirq의 대체품
- 여러 cpu가 동시에 접근하지 못한다
- cpu가 일을 끝내야 다음 cpu가 접근 가능 -> 동시처리성 떨어짐
∴ 사용하기 쉽지만, 성능은 떨어진다
# 리눅스의 조상 Unix !
# Fike meata data
- data sector에 관한 포인터들을 관리
- 필요할때 메인메모리로 load된다
만약 프로세스들이 동시에 메타데이터의 자료들을 요청했을 땐, 낭비를 예방하고자 하나만 load하고 share해서 쓰는 방법 사용하기
'ESL 연구실 활동 > Kernel of Linux' 카테고리의 다른 글
리눅스커널강의 5~6강 (0) | 2022.04.15 |
---|---|
리눅스커널강의 3~4강 (0) | 2022.04.15 |
리눅스 커널 강의 1~2강 (0) | 2022.04.15 |
리눅스 커널 강의 0 (0) | 2022.04.15 |