인프런 커뮤니티 질문&답변

jhp2014.dev님의 프로필 이미지

작성한 질문수

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 2부 저자 직강 (2024년 버전)

[1st dump] Part4 익셉션 핸들러 서브 루틴 분석

Exception Level 설정 관련 질문

24.10.16 11:59 작성

·

47

·

수정됨

0

안녕하세요! Exception Level 관련 질문이 있습니다.

 

질문) Exception Level을 프로그래머가 직접 설정하는 것인가요?

Exception 발생하는 경우를 예시로

  • H/W설계자가 결정 한 것

    • VBAR 레지스터에 설정된 주소 + Offset 위치로 분기하도록 설계

    • Exception 유발 직전 상태의 PSTATE값 백업

    • PSATE 값 변경 : 현재 EL0인 경우 EL1로 변경

    • ELR, ESR 업데이트

       

  • 프로그래머가 설정하는 부분

    • VBAR 레지스터의 값은 프로그래머가 미리 초기화

    • Exception Vector 주소로 분기 한 경우, 어떻게 동작할지 코드 작성 → Exception Handler 작성

결국 프로그래머가 Exception Handler를 작성하는 것으로 이해했는데, 프로그래머가 자신이 작성하는 코드의 Exception Level을 설정할 수 있나요?

프로그래머가 작성하는 코드의 Exception Level이 어떻게 결정되는지 궁금합니다.

 

답변 2

0

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

2024. 10. 18. 18:55

질문 주신 내용에 대해 답신드립니다:

1. 어셈블리 명령어를 실행해서 익셉션 레벨을 변경할 수는 있습니다.

예를 들어 EL2에서 EL1, 혹은 EL1 에서 EL0으로 낮은 익셉션 레벨로 변경할 수 있습니다.

2. 어셈블리 명령어를 실행해서(예시: SVC) 더 높은 익셉션 레벨로 진입할 수는 없습니다.

3. 부팅한 다음에 확인되는 익셉션 레벨은 EL3이며, 칩셋 레벨에서 하드웨어적으로 설정됩니다.

혹시 '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)'을 수강하셨다면, 아래 섹션에서 관련 내용을 확인하실 수 있습니다:

-> 섹션 12. [보충] 6.익셉션 레벨: 부팅과정에서 설정되는 익셉션 레벨

https://inf.run/7jyaB

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 10. 18. 12:56

안녕하세요, 인프런 AI 인턴입니다.

jhp2014.dev님이 질문하신 Exception Level 설정은 주로 하드웨어 및 시스템 설계 사양에 따라 이루어지며, 특정 Exception Level에서의 동작은 시스템의 전반적인 아키텍처 설계에 달려 있습니다. 프로그래머는 주로 Exception이 발생했을 때 어떻게 처리할지에 대한 핸들러를 작성하게 됩니다.

  1. Hardware 설계에 따라 결정되는 부분:

    • Exception이 발생할 때 시스템이 자동으로 이동하는 Exception Level은 하드웨어 및 시스템 설계에 의해 결정됩니다.
    • 예를 들어, 일반적인 상황에서는 EL0(사용자 모드)에서 Exception이 발생하면, 시스템은 EL1(커널 모드)로 이동하여 처리를 담당합니다.
  2. 프로그래머가 설정하는 부분:

    • Exception 발생 시 이동할 벡터 테이블의 주소를 VBAR 레지스터에 설정하는 것은 프로그래머의 역할입니다.
    • 주로 Exception Handler에 어떤 처리가 이루어질지 코드를 작성하는 것이 프로그래머의 주된 작업입니다. 이 Exception Handler는 하드웨어가 설정한 Exception Level에서 실행됩니다.

결론적으로, 프로그래머가 직접 Exception Level을 설정하는 것은 아니지만, 각 Exception Level에서의 행위를 정의하고 준비하는 역할을 하게 됩니다. 시스템의 특정한 요구 사항이나 하드웨어의 설계에 따라 프로그래머가 작성하는 코드가 실행될 Exception Level은 자연스럽게 결정됩니다.

문의 사항에 대한 이해를 돕기 위해, 추가적인 참고 자료를 추천해 드립니다:
- Spring Boot Reference Documentation: Executable Jar Restrictions

추가로 궁금하신 점이 있으면 언제든지 질문해 주세요!