Interrupt in Linux kernel - (2) 키보드입력,kernel_init 변경
Operating System & Computer Architecture/Linux 2017. 12. 28. 21:28kernel_init은 처음 부팅될때 돌아가는 함수
init/main.c에찾아볼수있다.
int switch=0;
void kernel_init(){
......
do_basic_setup();
my_atk_func();//
......
}
my_atk_func에는 무한루프로 1초씩 msleep를하면서switch가 on이됬는지 검사
에서 키보드입력이 들어오면 switch를 on시키도록
if( code==19)
{
switch=1;
}
결과
설명:
커널초기화중일때 무한루프상태로 msleep(1) 씩주기로 프로세스가 강제로 스위칭되어 바뀌며 switch가 1인지 검사
->계속 검사하던도중 내가 키보드 r을 입력하면 키보드인풋으로 키보드 인터럽트가 날라옴 cpu는 하는일 중단하고 먼저 인터럽트처리
->그 인터럽트 처리함수로가서 실행되는데 이때 그 값이 내가 설정해둔 값을때switch 를 0에서 1로바꿈
->인터럽트처리 끝나서 우선스케줄링된 프로세스부터 실행(인터럽트전 중단된프로세스 일수도있고 알고리즘에따라 다름)
->아까중단된 프로세스가 스케줄되서 kernerinit안에 my_atk_func 함수는 if문을 탈출하게 된다.
'Operating System & Computer Architecture > Linux' 카테고리의 다른 글
System call in Linux kernel - (1)시스템콜 수정,추가해보기 (0) | 2017.12.29 |
---|---|
Interrupt in Linux kernel - (1) atkbd.c 변경실험 (0) | 2017.12.28 |
' Interrupt & system call ' in Linux kernel (0) | 2017.12.28 |
Interrupt -(2) 커널영역,인터럽트 종류 (0) | 2017.12.27 |
Interrupt -(1) 인터럽트 (0) | 2017.12.27 |