inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]

7.4-시스템 레지스터 설정 시 ISB 배리어 사용(XEN 하이퍼바이저)

전체적인 맥락에 대해서 질문이 있습니다.

124

동엽

작성한 질문수 6

0

안녕하세요. 1강, 2강, 3강 모두 잘 들었습니다. 문득 3강을 듣다가 궁금한 점이 생겨서 이렇게 질문 드립니다.

  1. 만약 EL2, EL3에서 동작할 Software Entity를 구현하지 않은 시스템에서 hvc, smc와 같은 명령어를 실행시키면 어떻게 되는지 궁금합니다. EL2, EL3를 구현하지 않았다면 VBAR_EL2, 3 레지스터를 초기화하지 않았을 것 이므로, Exception 발생 시 PC가 이상한 주소를 가리켜 MMU가 Fault를 유발할 것 같다고 생각하고 있는데, 해당 흐름이 맞는지 궁금합니다. 만약 틀렸다면 올바른 흐름은 어떻게 되나요?

  2. SMP와 같은 멀티 코어 프로세서에서 모든 코어에서 실행중인 User App이 각각 Exception을 발생시키면, 모든 코어에서 동시에 Kernel Code가 동작하게 되는 것 인가요?

  3. Kernel, Hypervisor, Secure Monitor는 결국, Exception이 발생하고 이에 대해 HW가 대응되는 동작(SPSR_ELn, ELR_ELn, PSTATE, PC 값 수정)을 수행한 뒤에 Exception Handler의 서브루틴이 실행되는 단순한 소프트웨어 덩어리로 이해해도 괜찮을까요? 즉, User App과 같은 경우는 Linux에서 task_struct라는 구조체로 관리가 되는데 반해, Kernel, Hypervisor, Secure Monitor와 같은 소프트웨어들은 이러한 구조체로 관리되지 않을 것 같아서 문득 궁금해졌습니다.

답변 주시면 감사하겠습니다!

arm-architecture barrier armv8 cortex-a memory-mapped-io

답변 1

0

김동현 (Austin Kim)

질문 주신 내용에 대해 우선 아래와 같이 답신 드립니다:

1. 만약 EL2, EL3에서 동작할 Software Entity를 구현하지 않은 시스템에서 hvc, smc와 같은 명령어를 실행시:

=> Arm 코어는 Synchronous Exception을 유발합니다.

2. 모든 코어에서 실행중인 User App이 각각 Exception을 발생시키면:

=> 이해하신 내용이 많습니다. 위의 가정에서 모든 코어에서 (병렬적으로) Kernel Code가 동작합니다.

3. 익셉션 핸들러에 대해서:

3.1 익셉션이 유발되면 처리되는 익셉션 핸들러는 RTOS나 리눅스 커널에 내에 포함되어 있습니다. 익셉션 핸들러는 RTOS나 리눅스 커널를 구성하는 소프트웨어의 기능 중 하나입니다. 하지만, 익셉션 핸들러는 독립적으로 실행(stand alone)되는 소프트웨어 덩어리는 아닙니다.

3.2 리눅스 커널에서는 프로세스를 task_struct라는 구조체로 관리합니다. 마찬가지로 Hypervisor, Secure Monitor에서는 각자 나름대로 구현한 자료구조를 사용해 프로세스를 관리합니다.

혹시 제가 답변드린 내용 중에 궁금한 점이 있으면 다시 질문 주세요. 최대한 자세하게 설명드리겠습니다.

감사합니다.

안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.

0

9

1

SP와 SP_ELn의 관계

0

25

1

stm32cubeide 관련 문의

0

45

2

5장 Armv7 동작모드와 6장 Armv8 익셉션 레벨 차이

0

40

2

강의 업로드 오류 확인 요청

0

61

2

시스템 소프트웨어 직무 관련 질문드려요

0

70

2

책관련 질문드려요

0

70

2

4.2.1. 실습을 어떻게 진행하는것인가요?

0

62

2

DMA 관련한 강의도 제작해주실 수 있으신가요 ?

0

94

1

3.2.1.4 실습과 관련한 질문

0

72

2

56강 bcm2835-mailbox.c 파일 질문

0

55

2

'drivers/soc/bcm/bcm2835-power.o 에러 입니다.

0

83

3

TRACE 32만을 이용한 출력 Callstack 의 cpu 번호 파악

0

62

1

배리어 관련 질문

0

95

1

DSB 리소스 관련

0

89

1

reordering

0

100

2

멀티 스레드 스택공간

0

85

1

ARM multi core programming

0

72

1

리눅스 memory map

0

117

1

SoC

0

72

1

device memory

0

115

2

메모리 맵드 I/O에 대해서

0

218

1

ISB 배리어에 대한 질문입니다.

0

323

2

MMIO 질문

0

657

2