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

김인규님의 프로필 이미지

작성한 질문수

ARM Cortex-M 프로세서 프로그래밍

s215_특수 레지스터

User Thread 와 Privilege Thread에 대해서

23.06.06 19:10 작성

·

338

1

안녕하세요

User Thread 에서 Privileged Handler로 모드가 바뀌는 경우를 예를 들면 익셉션 상황 (예를 들어 타이머나 DMA로 인한 인터럽트) 에 핸들러모드로 진입 후 핸들러 함수로 분기하여 처리가 되는 것으로 이해를 했습니다.

그러면 Privileged Handler 에서 Privileged Thread로 모드가 바뀌는 경우는 어떤게 있나요?

답변 1

1

홍영기님의 프로필 이미지
홍영기
지식공유자

2023. 06. 06. 23:33

안녕하세요, 김인규님!

세 가지 정도의 사용 시나리오가 있을 것입니다.

시나리오1. 특권 쓰레드 + 특권 핸들러

>> 특권 쓰레드서 main 작업이 실행되고 인터럽트가 발생하면 특권 핸들러서 처리하고 돌아오는 방식입니다.

한줄요약. 가장 권장되고 즐겨 사용하는 환경입니다.

시나리오2. USER 쓰레드 + 특권 핸들러

>> USER 쓰레드서 main 작업이 실행되고 인터럽트가 발생하면 특권 핸들러서 처리하고 돌아오는 방법입니다. 시나리오1과는 main 이 특권 쓰레드에서 실행되느냐 아니냐만 차이가 있을 뿐입니다.

한줄요약. USER 쓰레드에서는 권한이 제한되는 것들이 많아, 잘 사용하지는 않는 환경입니다.

시나리오3. USER 쓰레드 + 특권 핸들러 + 특권 쓰레드

>> USER 쓰레드 상에서 main 작업이 실행되는 상황에서 의도적으로 SVC 명령어를 실행하여 특권 쓰레드로 변경할 수 있습니다(일종의 시스템 호출). 일부 RTOS 을 운용하는 환경에서라면 사용할 가능성이 있긴 합니다. 하지만, RTOS 환경에서도 이 방법이 선호되는 경우는 드뭅니다(시나리오 1을 사용하는 경우가 더 많음)

한줄요약. 일부 RTOS 기반에서 사용하는 환경입니다

김인규님의 프로필 이미지
김인규
질문자

2023. 06. 06. 23:58

답변 감사합니다~~!!

실무에서 User Thread 를 써본적이 없던것 같아서 이해하기 힘들었습니다

친절한 답변 감사드립니다~^