본문 바로가기

#hcr_el2

(4)
[가상화-virtualization] EL2:익셉션 핸들러 코드 소개 먼저 이번 절에서 분석할 XEN 하이퍼바이저에서 구현된 익셉션 핸들러의 전체 코드를 소개합니다.  01  0x26a800 : 02  0x26a800:    b    0x269800  03  0x26a804:    nop 04  0x26a808:    nop ... 05  0x26a880:    b    0x26986c  06  0x26a884:    nop 07  0x26a888:    nop ... 08  0x26a900:    b    0x2698d8  09  0x26a904:    nop 10  0x26a908:    nop ... 11  0x26a980:    b    0x269944  12  0x26a984:    nop 13  0x26a988:    nop ... 14  0x26aa00:   ..
[가상화-virtualization] 가상화 관점의 익셉션 벡터 테이블 분석 이전 절에서 익셉션 벡터 테이블의 스펙을 간단히 리뷰했습니다. 이어서 EL2 관점에서 익셉션 벡터 테이블을 자세히 분석하겠습니다. EL2 관점에서 분석한 익셉션 벡터 테이블 다음은 하이퍼바이저가 실행되는 EL2 기준에서 본 익셉션 벡터 테이블을 나타낸 표입니다.          먼저 'EL2 with SP_EL0' 행의 내용을 분석합시다. 'EL2 with SP_EL0'는 익셉션 레벨에 상관없이 스택을 설정하는 조건에서 실행되는 익셉션 종류별 오프셋을 나타냅니다. 그런데 대부분의 하이퍼바이저는 이와 같은 익셉션은 지원하지 않습니다.     EL2에서 발생한 익셉션 분석 이어서 'EL2에서 발생'로 표시된 부분을 봅시다. 0x200, 0x280, 0x300, 0x380은 하이퍼바이저가 구동되는 EL2에서 ..
[가상화-virtualization] 하이퍼바이저는 왜 알아야 할까? 하이퍼바이저가 무엇인지 알고 나면 "하이퍼바이저를 왜 알아야 할까?"라는 의문이 생길 것입니다. 사실 하이퍼바이저는 x86 기반 CPU에서 VMware나 IBM과 같은 기업에서 20 ~ 30년전 부터 꾸준히 개발해 왔습니다. x86 CPU 기반의 데스크톱이나 서버에서 개발됐던 기술인데, Armv8 아키텍처에서 하이퍼바이저를 왜 알아야 하는지 궁금할 것입니다. 클라우드 서버에서의 하이퍼바이저 활용 이미 유닉스 기반으로 서버를 개발했던 주요 기업(예: 썬마이크로시스템즈, HP, IBM)에서는 2000년 이전부터 하이퍼바이저 기반으로 구동되는 서버를 개발했습니다. 2022년 이후 소프트웨어 업계를 이끌 기술은 AI와 빅데이터와 클라우드인데, 이 세 가지 기술들이 다양한 제품군의 생태계에 영향을 끼치고 있습니다..
[가상화-virtualization] 하이퍼바이저를 구성하는 요소 앞에서 2개 이상의 운영체제를 동시다발적으로 실행할 수 있는 플랫폼이나 아키텍처를 하이퍼바이저라고 소개했습니다. 이어서 다음 그림을 보면서 하이퍼바이저 아키텍처를 구성하는 주요 기능에 대해 알아봅시다.              그림 15.3 하이퍼바이저 아키텍처의 전체 구조 위 그림의 가운데 윗부분에 표시된 게스트 OS 1, 게스트 OS 2는 하이퍼바이저에서 실행되는 운영체제입니다. 게스트 OS 1이 안드로이드, 게스트 OS 2는 리눅스가 될 수 있습니다.  그런데 게스트 OS 1와 게스트 OS 2에서 실행되는 운영체제는 각각 독립적인 EL0와 EL1에서 실행됩니다. 게스트 OS 1의 커널은 EL1, 게스트 OS 1의 애플리케이션은 EL0에서 실행됩니다. 마찬가지로 게스트 OS 2의 커널은 EL1, 게스트..