[Arm프로세서] 하이퍼바이저 관점의 익셉션 벡터 테이블 분석하기
By Guillermo Austin Kim | 2022년 2월 11일 |
이전 절에서 익셉션 벡터 테이블의 스팩을 분석했습니다. 이어서 EL2가 실행되는 하이퍼바이저 관점에서 익셉션 벡터 테이블을 분석하겠습니다. 다음은 하이퍼바이저가 실행되는 EL2에서 본 익셉션 벡터 테이블의 동작 방식을 나타낸 표입니다. 표 12.2 하이퍼바이저 관점에서 본 익셉션 벡터 테이블 'EL2 with SP_EL0' 열의 내용을 분석하겠습니다. 'EL2 with SP_EL0'은 익셉션 레벨에 상관없이 스택을 설정하는 조건에서 실행되는 익셉션의 종류 별 오프셋을 나타냅니다. 그런데 일반적으로 대부분의 하이퍼바이저에서 지원하지 않습니다. [정보]XEN 하이퍼바이저에서는 'EL2 with SP_EL0' 익셉션을 지원하지 않습니다. 이어서 'EL2에서 발생'로 표기된 부분을 보겠습니다. 0x
[Arm프로세서] XEN 하이퍼바이저: EL2 익셉션 벡터 핸들러 코드 분석
By Guillermo Austin Kim | 2022년 2월 17일 |
XEN 하이퍼바이저의 익셉션 벡터 핸들러를 해석하는 방법을 소개했으니 이어서 익셉션 벡터 핸들러의 코드를 분석하겠습니다. 먼저 2~14번째 줄을 보겠습니다. 2 26a800: 17fffc00 b 269800 <hyp_sync_invalid>3 26a804: d503201f nop4 26a808: d503201f nop...5 26a880: 17fffbfb b 26986c <hyp_irq_invalid>6 26a884: d503201f nop7 26a888: d503201f nop...8 26a900: 17fffbf6 b 2698d8 <hyp_fiq_invalid>9 26a904: d503201f nop10 26a908: d50
[Arm프로세서] XEN 하이퍼바이저 소개
By Guillermo Austin Kim | 2022년 2월 14일 |
그런데 오픈 소스 기반으로 개발되고 있는 하이퍼바이저가 있는데 그 중에서 가장 많이 사용되는 하이퍼바이저는 XEN입니다. XEN은 오픈 소스 프로젝트라서 누구나 XEN 하이퍼바이저의 코드를 내려받아 빌드해 실행할 수 있습니다. XEN에 대한 소개는 다음 홈페이지에서 확인할 수 있습니다. 이번 절에서는 Armv8 아키텍처에서 실행되는 XEN 하이퍼바이저의 익셉션 벡터 핸들러 코드를 분석합니다. 코드 분석을 통해 하이퍼바이저를 지원하기 위해 사용되는 레지스터와 명령어를 분석하고, 게스트 Exit 관점 중심으로 하이퍼바이저의 동작을 설명합니다. [정보]XEN 하이퍼바이저는 오픈 소스 프로젝트라 누구나 소스를 빌드해 실행하고 XEN 프로젝트에 컨트리뷰션(기여)를 할 수 있습니다. 그런데 대부분 상용 소프
[Arm프로세서] Armv8 익셉션 레벨과 privilege level
By Guillermo Austin Kim | 2021년 10월 22일 |
Armv8 아키텍처는 PL0-PL3까지 4개의 privilege levels(접근 권한)을 제공합니다. 여기서 소개하는 privilege levels은 Armv7 아키텍처에서 다룬 내용과 거의 유사합니다. [정보]privilege levels은 Arm 아키텍처에서만 지원할까요? 그렇지는 않습니다. x86을 포함한 대부분 CPU 아키텍처는 privilege levels와 같은 기능을 지원하는데, 주로 운영체제를 설계할 때 결함이 있을 수 있는 유저 애플리케이션으로부터 시스템을 보호하기 위한 용도로 사용됩니다. 리눅스 커널과 같은 운영체제 커널은 privileged level에서 실행이 되는데, privileged level에서만 주요 시스템 설정(시스템 레지스터, 인터럽트, 캐시 접근)을 할 수 있게 제한