Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

11105
637
415734


[ARM프로세서] 소프트웨어 관점에서 익셉션(Exception)이란 Arm: Exception Overview

소프트웨어 입장에서 익셉션이란 무엇일까요? 소프트웨어 입장에서는 익셉션의 종류에 따라 익셉션을 2가지 관점으로 볼 수 있습니다.

   ❑ 치명적인 오류: 메모리 어보트 타입 익셉션(Prefetch Abort, Data Abort, Undefined Instruction)
   ❑ 운영체제 커널에서 지원하는 기능: IRQ(인터럽트 서비스 루틴), SW 인터럽트(시스템 콜)

메모리 어보트 타입 익셉션이란

첫 번째, 메모리 어보트 타입 익셉션을 소프트웨어 관점으로 보면, 소프트웨어적으로 치명적인 오류가 발생했다고 볼 수 있습니다. 여기서 말하는 치명적인 오류가 발생하면 시스템이 리셋되는데, 이를 “크래시가 발생했다”라고 말합니다.

프로젝트를 개발하는 도중에 이런 치명적인 오류를 만나면 그나마 다행입니다. 치명적인 오류를 수정하거나 이를 아예 회피하는 다른 방법을 강구할 수 있기 때문입니다. 하지만 시장에 출시된 제품에서 치명적인 오류, 즉 익셉션이 발생하면 해당 IT 업체는 심각한 타격을 입거나 심하면 문을 닫습니다.

시스템 소프트웨어 개발자는 메모리 어보트 타입 익셉션을 없애야 합니다. 즉, 메모리 어보트 타입 익셉션을 유발하는 대부분의 원인은 소프트웨어적인 결함이므로 소프트웨어 개발자는 코드를 분석해 논리적인 오류를 찾아내야 합니다.

메모리 어보트 타입 익셉션이 발생하면 소프트웨어 개발자는 즉시 문제를 해결해야 하는 상황을 맞이하므로 스트레스를 많이 받을 확률이 높습니다. 아마 매니저들이 계속 언제 해결할 수 있는지 질문을 할 것입니다. 

가끔은 메모리(RAM, 저장장치)와 같은 하드웨어 부품에 결함이 있어 이런 종류의 익셉션이 발생할 수도 있습니다. 특정 샘플에서 계속 랜덤하게 비트 플립으로 메모리 어보트가 발생하는 경우를 예로 들 수 있습니다. 이 경우 부품을 교체해 테스트를 시도해 랜덤하게 메모리 어보트가 발생하는지 추적할 필요가 있습니다. 


만약 특정 부품에 이런 불량이 확인되면 부품 번호를 추적해 부품 회사에게 알릴 필요가 있습니다.


IRQ 타입 익셉션이란

두 번째로, IRQ나 SW 인터럽트와 같은 종류의 익셉션은 운영체제에서 지원하는 기능입니다. 메모리 어보트 타입 익셉션와 구분될 수 있는 익셉션입니다. 

외부 하드웨어와 인터럽트를 통해 하드웨어의 변화를 ARM 코어에게 알려 커뮤니케이션합니다. 이는 메모리 어보트 타입 익셉션과 같이 ARM 프로세서가 명령어를 실행하지 못해 유발하는 익셉션이 아닙니다. 또한 'svc' 명령어를 실행하면 User 모드에서 Supervisor 모드로 변경되는데, 이 기능을 활용해 운영체제에서는 시스템 콜을 구현합니다.

메모리 어보트 타입의 익셉션이나 IRQ나 SW 인터럽트와 같은 종류의 익셉션은 ARM의 익셉션 기능을 활용하나 기능적으로 매우 다릅니다. 실전 개발에서는 익셉션이라고 말하면, 코드에 치명적인 오류가 있는 메모리 어보트 타입의 익셉션을 의미하는 경우가 많습니다. 대신 인터럽트는 인터럽트 익셉션이라고 부르지 않고 그냥 인터럽트라고 부릅니다. 

메모리 어보트 타입 익셉션(Data Abort, Prefetch Abort, Undefined Instruction)과 인터럽트 타입 익셉션(IRQ, FIQ, Supervisor Call)은 논리적으로나 기능상으로 상이하니 분리해서 설명을 하는게 좋다고 생각합니다.

하지만, ARM 아키텍처의 관점으로 위에서 언급된 모든 익셉션 타입은 익셉션으로 간주합니다. 모두 다음과 같은 원칙에 따라 동작하기 때문입니다.

   ❑ 익셉션이 발생하면 ARM 프로세서는 이미 지정된 주소로 프로그램 카운터를 변경한다.
---
"이 포스팅이 유익하다고 생각되시면 공감 혹은 댓글로 응원해주시면 감사하겠습니다. 
"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!"

​Thanks,
Guillermo Austin Kim(austindh.kim@gmail.com)
---



Reference: ARM 프로세서 익셉션 소개

익셉션이란? 
익셉션의 주요 개념  
    ❑ 익셉션의 타입 소개
익셉션과 같이 배워야 하는 운영체제 지식


Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자




핑백

덧글

댓글 입력 영역