인터럽트컨택스트

Category
아이템: 인터럽트컨택스트(2)
포스트 갯수2

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

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

인터럽트(1) - 인터럽트 컨택스트란

By Guillermo Austin Kim | 2018년 1월 28일 | 
평소에 이런 말 들어본 적 있나요? "인터럽트 걸지마!" "인터럽트가 걸려와서 제대로 일을 못했어요." 이렇게 인터럽트란 단어는 일상 생활에서 쓰는 친숙한 용어로 들립니다. 인터럽트란 지금 하던 일을 멈추고 갑자기 어떤 일을 해야 하는 상황을 말하죠. 책을 읽다가 중요한 전화가 걸려오면 책 읽기를 멈추고 전화를 받잖아요? 그럼 임베디드 시스템에서 인터럽트란 뭘 의미할까요? 임베디드 세상에서는 ‘인터럽트’란 단어를 자주 쓸까요? 프로젝트 개발 도중 리눅스 드라이버 개발자들이 굉장히 자주 씁니다. “인터럽트가 저 동작에서는 제대로 뜨지 않아”, “인터럽트를 설정해도 핸들러 호출이 안되네” 리눅스 커널 시스템에서 인터럽트는 굉장히 중요한 개념입니다. 대부분 리눅스 드라이버는 인터럽트를 통해 하드웨어 디바이스와