ESL 연구실 활동/Kernel of Linux

리눅스커널강의 7~9강 (작성중)

천숭이 2022. 4. 17. 14:39

< 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

--> 모든 라인마다 네가지 상태가 존재

 

 

data structure, interrupt service routine

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가 접근 가능 -> 동시처리성 떨어짐

∴ 사용하기 쉽지만, 성능은 떨어진다

 

3 Bttom half handlers 비교표


# 리눅스의 조상 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