리눅스데브코스 [7주차 - 5(2)]<ArmV8 아키텍쳐 익셉션>

심우열·2023년 5월 19일
0

1. ArmV8 익셉션 레벨

1. 익셉션 레벨과 주요 기능

1. 익셉션 레벨을 알아아 햐는 이유

1. ArmV8 아키텍처를 이루는 기능을 이해하기 위해서

  • 익셉션
  • 하이퍼바이저
  • 트러스트존

2. 익셉션 핸들러 구성

  • 익셉션 레벌을 기준으로 익셉션 벡터 테이블을 구성
  • el1_sync, el0_irq, ...

3. 하이퍼바이저

  • 하이퍼바이저의 구조를 이해하기 위해서 ELx(익셉션 레벨)의 개념을 알고 있어야 함
  • EL2에서 하이퍼바이저가 실행, EL1에서 리눅스 커널이 실행
  • EL1에서 HVC를 실행하면 EL2로 진입

4. 트러스트 존

  • 익셉션 레벨의 개념 위에 트러스트존이 구성됨
  • 트러스트존에 진입하기 위해서는 EL1에서 EL3로 진입(SMC) 해야 함

2. 익셉션 레벨의 정의

3. 익셉션 레벨의 활용

4. 익셉션 레벨과 Privilege Level(득권 권한)

1. EL0 와 PL0 - 일반적인 user의 권한

  • 유저 애플리케이션이 실행
  • unprivileged 레벨 혹은 PL0로 실행
    -> Privileged : 하드웨어에 직접적으로 접근할 수 있는 권한
  • EL0에서는 인터럽트, MMU, 캐시 기능을 설정 할 수 없음

2. EL1 와 PL1

  • EL1은 PL1 권한이 있는 익셉션 레벨
  • 리눅스 커널에서는 인터럽트, MMU, 캐시 설정과 같이 시스템을 설정 가능

3. EL2 와 PL2

  • PL2는 EL2에게 부여되는 권한 레벨로 게스트 OS끼리 스위칭하고 게스트 OS의 시스템 리소스에 접근 가능
  • 일반적으로 EL2에서 하이퍼바이저가 실행되며, 하이퍼바이저는 PL2 권한 레벨로 실행 됨

3. EL3 와 PL3

  • PL3는 EL3 에게 부여되는 권한 레벨로 Highest Privileged Level
  • 시스템을 모두 설정할 수 있고, 익셉션 레벨에 존재하는 모든 레지스터에 엑세스 할 수 있어 Booting 과정에서 EL3로 설정

5. 익셉션 레벨과 익셉션의 전체 흐름도

1. 하나의 운영체제

2. 가상화 시스템

3. 트러스트존 아키텍쳐

2. Armv8-A 아키텍처 익셉션

1. 익셉션 관련 로그

1. 커널 패닉 로그

  • 아래에서 윗방향으로 함수 호출

2. 커널 로그

3. ftrace message

  • 아래에서 윗방향으로 함수 호출
  • ArmV8 아키텍쳐에서는 인터럽트를 익셉션의 한 종류로 관리함
  • IRQ = 인터럽트 리퀘스트

2. 익셉션 관련 동작

1. 시스템 콜

2. ArmV8 아키텍쳐에서 익셉션을 처리하는 방법

  • 익셉션이 발생했다고 감지하면 익셉션 종류별로 이미 정해 놓은 주소로 브랜치
  • 이미 정해진 주소를 익셉션 벡터(Exception Vector)주소라 하며, 각 익셉션의 종류에 따라 익셉션 벡터 주소의 위치가 다름
  • 익셉션 벡터 주소에는 익셉션을 핸들링하는 코드가 있음
    -> 익셉션 핸들러

3. ArmV8 익셉션 벡터 테이블

  • currnent Exception Level: EL1(리눅스 커널)
  • Lower Exception Level: EL0(유저 애플리케이션)

4. ArmV8 아키텍처 관점에서 익셉션이 처리되는 흐름

  • EL0에서 익셉션 발생
  • EL1에서 익셉션 발생

5. ArmV8 아키텍처에서 익셉션의 종류와 유발 인자

6. 리눅스 커널과 익셉션 처리

1. EL0: 유저 애플리케이션에서 익셉션

2. EL1: 리눅스 커널에서 익셉션 처리

profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글