EXCEPTION

포스트: 30
Tags

Posts

30 posts

[ARM프로세서] ARMv7: 소프트웨어 인터럽트 익셉션의 실행 흐름

Guillermo Austin Kim|2020년 11월 24일

[ARM프로세서] ARMv7: SW 인터럽트 익셉션의 실행 흐름 ‘svc’ 명령어를 실행하면 ARM 코어는 소프트웨어적으로 익셉션을 유발합니다. ARM 코어가 'svc' 명령어를 디코딩하면 이를 익셉션의 한 종류로 감지하는데, ARM 스팩 문서에서는 이를 슈퍼바이저 콜(Supervisor Call)이라고 부릅니다. 'svc' 명령어를 실행하면, 외부 하드웨어에서 발생하는 것이 아닌, 소프트웨어적으로 인터럽트 익셉션이 유발되므로 흔히 소프트웨어 인터럽트라고도 합니다. 또한, SW 인터럽트는 운영체제의 시스템 콜 기능과 연관이 깊은 기능입니다. 시스템 콜은 SW 인터럽트를 활용해 구현됐기 때문입니다. 다음 그림을 보면서 ‘svc’ 명령어를 실행하면 ARM 코어는 소프트웨어적으로 익셉션을 유발하는 흐름을 살

[ARM프로세서] ARMv7: 메모리 어보트 타입 익셉션의 실행 흐름

Guillermo Austin Kim|2020년 11월 23일

메모리 어보트 타입 익셉션이 발생하면 익셉션 핸들러에서 디버깅 정보를 출력하고 시스템을 리셋시킵니다. 소프트웨어적으로 시스템이 치명적인 오류가 있는 상태로 판단하기 때문입니다. 다음 그림을 보면서 메모리 어보트 타입 익셉션의 전체 실행 흐름을 알아봅시다. 그림 8.2 메모리 어보트 타입 익셉션이 발생할 때 전체 흐름 익셉션의 전체 실행 흐름도는 4단계로 분류할 수 있는데, 각 단계 별로 어떤 동작을 수행하는지 알아봅시다. 1단계: 프로세스가 실행하는 도중에 익셉션을 유발하는 명령어 실행 먼저 ①로 표시된 부분을 눈으로 따라가 봅시다. 프로세스가 메모리 어보트를 유발하는 명령어를 실행하는 부분입니다. 2단계: ARM 프로세서가 익셉션을 감지 ② 로 표시된 부분은 A

[ARM프로세서] ARMv7 익셉션(Exception)을 이루는 주요 개념

Guillermo Austin Kim|2020년 11월 18일

처음에 ARM 아키텍처의 익셉션을 공부할 때 익셉션 벡터 테이블을 이해하는데만 집중하는 분들이 많습니다. "ARMv7 아키텍처의 익셉션 동작 원리를 파악하려면 익셉션 벡터 테이블만 제대로 이해하면 된다"라고 생각하기 때문입니다. 하지만 익셉션 벡터 테이블의 내용만 익히면 배운 내용을 실전 프로젝트에 활용하기 어렵습니다. 왜냐면, 익셉션 벡터 테이블의 내용보다도 다음과 같은 사실을 파악하는게 더 중요하기 때문입니다. ❑ 익셉션은 소프웨어적으로 어떤 명령어가 실행될 때 유발될까? ❑ ARM 프로세서가 익셉션을 감지한 후 소프트웨어적으로 어떤 처리를 수행할까? 위에서 소개한 질문에 답을 하려면 다음 그림에서 소개한 익셉션을 구성하는 주요 개념에 대해 파악할 필요가 있습니

[ARM프로세서] 익셉션 벡터는 프로세스의 어느 공간에서 실행될까

Guillermo Austin Kim|2020년 11월 3일

프로세스 입장에서 익셉션을 유발하는 명령어를 실행하면 ARM 프로세서는 익셉션 벡터로 프로그램 카운터를 브랜치합니다. 이어서 익셉션를 처리하는 익셉션 벡터 핸들러가 실행됩니다. 그렇다면 익셉션 벡터에서 실행되는 익셉션 벡터 핸들러는 실제 어느 공간에서 실행될까요? 익셉션 벡터 핸들러는 바로 프로세스의 스택 공간에서 실행됩니다. 이번 시간에 이 내용에 대해 조금 더 설명합니다. 익셉션 벡터 핸들러가 프로세스의 스택 공간에 처리 다음 그림은 프로세스의 스택 공간에서 익셉션 벡터 핸들러가 호출되는 흐름을 나타냅니다. 그림 7.8 익셉션 벡터 핸들러가 프로세스 스택 공간에서 실행되는 흐름(ARMv7 아키텍처) 위 그림은 이전 절에서 소개한 proc_func_ptr() 함수가 seq_read() 함수