리눅스커널

포스트: 154|조회수: 0|TERM
Items

Posts

154 posts

[라즈베리파이][리눅스커널]인터럽트 컨택스트란 (1) #CS

Guillermo Austin Kim|2018년 3월 2일

인터럽트 컨택스트란인터럽트 컨택스트란 용어가 좀 낯설진 않나요? 그래서 인터럽트 컨택스트를 배우기 전에 우선 컨택스트란 용어를 배울 필요가 있습니다. 혹시 컨텍스트 스위칭이란 단어 들어보신 적이 있나요? 리눅스 커널에서 많이 쓰는 용어인데요. 어렵게 설명하면 컨텍스트란 현재 실행하고 있는 레지스터 묶음을 의미합니다. ARM 프로세스에서는 15개의 레지스터(r0부터 pc)가 있다고 알고 있죠? 이 레지스터 중에 현재 실행 중인 코드 주소를 담고 있는 pc(Program Counter)란 레지스터가 있는데요. 만약 현재 커널이 start_kernel이란 함수를 실행하고 있는데 이 함수의 주소가 0xC000D000이면 pc란 레지스터는 0xC000D000 주소를 담고 있습니다. 이렇게 PC 레지스터를 포함한

[라즈베리파이] 인터럽트 백터 - 스택 푸쉬

Guillermo Austin Kim|2018년 2월 19일

인터럽트가 발생했을 때 구동중인 프로세스의 레지스터가 스택 메모리 공간에 푸쉬된다고 설명했는데요. 실제 Trace32 프로그램으로 스택 메모리 덤프를 확인해 보겠습니다. 아래 콜스택은 리눅스 커널에서자주 볼 수 함수로 구성되어 있는데 ext4 파일 시스템에서 특정 파일을 동기화(Synch)하는 동작 중에 인터럽트가 발생했습니다..-000|account_group_exec_runtime(inline)-000|update_curr()-001|check_spread(inline)-001|put_prev_entity()-002|put_prev_task_fair()-003|pick_next_task_rt(inline)-003|pick_next_task_rt()-004|pick_next_task(inline)-004|