Guillermo Austin Kim
Posts
998 posts[Arm프로세서] Armv8: 익셉션 레벨을 활용한 리눅스 커널의 구현 방식
Armv8 스팩 문서를 보면 Armv8 아키텍처를 이루는 주요 기능들이 리눅스 커널이나 XEN 하이퍼바이저에서 어떤 방식으로 구현됐는지 예로 드는 경우가 많습니다. arm 사의 개발자가 Armv8 아키텍처와 관련된 기능을 오픈 소스 프로젝트인 리눅스 커널이나 XEN 하이퍼바이저 직접 구현(오픈 소스에 기여)하는데, 구현한 코드의 주석을 보면 Armv8 스팩 문서의 챕터 번호도 볼 수 있습니다. 이어지는 포스트에서는 리눅스 커널과 XEN 하이퍼바이저에서 익셉션 레벨을 읽고 제어하는 관련된 코드를 소개합니다.
[Arm프로세서] Armv8 익셉션 레벨: 시큐어 모니터 콜
운영체제의 커널이 구동되는 EL1에서 smc 명령어를 실행하면 시큐어 모니터콜이 발생해, EL1에서 EL3로 익셉션 레벨이 변경됩니다. smc는 트러스트 존과 같은 보안 확장(Security Extentions) 환경에서 논 시큐어 상태에서 시큐어 상태로 시스템의 상태를 바꿀 때 실행합니다.
[Arm프로세서] Armv8 익셉션 레벨: 하이퍼바이저 콜
운영체제의 커널이 구동되는 EL1에서 hvc 명령어를 실행하면 하이퍼바이저 콜이 발생해, EL1에서 EL2로 익셉션 레벨이 변경됩니다. 하이퍼바이저와 같은 가상화 환경에서 게스트 OS가 하이퍼바이저에게 어떤 서비스를 요청할 때 hvc 명령어를 실행합니다. 그림 4.8 가상화 환경에서 hvc 명령어를 실행할 때의 흐름 그림의 가운데 부분에서 ②로 표시된 부분을 봅시다. EL1에서 hvc 명령어를 실행해 EL2로 진입하는 동작을 나타냅니다. 이 동작은 Guest OS1과 Guest OS2에서 동시다발적으로 실행됩니다. [정보] EL1에서 hvc 명령어를 실행하면 EL2로 스위칭되면서 “EL2에서 실행되는 하이퍼바이저 내에 위치한” EL1 Synchronous 익셉션 벡터 주소로 프로그램
[리눅스] 라즈베리 파이에서 codespell 설치하기
'apt-get install codespell' 명령어를 사용하면 됩니다. root@raspberrypi:/home/pi# apt-get install codespellReading package lists... DoneBuilding dependency treeReading state information... DoneThe following packages were automatically installed and are no longer required: gconf-service gconf2-common libexiv2-14 libgconf-2-4 libgfortran3 libgmime-2.6-0 libncurses5 libssl1.0.2 uuid-dev vlc-l10n vlc-plugin-not
[Arm프로세서] Armv8 익셉션 레벨: 슈퍼바이저 콜(시스템 콜 발생)
EL0에서 EL1으로 진입하기 위해서는 svc 명령어를 실행해 슈퍼바이저 콜을 실행하는데, 이와 같은 방식을 활용해 운영체제에서는 시스템 콜을 구현합니다. 이는 Armv7 아키텍처에서 User 모드에서 svc 명령어를 실행해 슈퍼바이저 모드로 변경하는 방식과 동일합니다. 다음 그림은 svc 명령어를 실행해 EL0에서 EL1으로 진입하는 동작을 나타냅니다. 그림 4.6 svc 명령어를 실행해 EL0에서 EL1으로 진입하는 동작 위 그림은 하나의 시스템에 한 개의 운영체제가 실행되는 상황입니다. svc 명령어를 실행하면 Arm 코어 내부에서 다음과 같은 동작을 수행합니다. * EL0에서 EL1으로 익셉션 레벨이 변경 * EL0 Synchronous 익셉션 벡터 주소(VBAR + 0x400)
![[일상] Eave 65와 목새 택타일 | 토프레 무접점 느낌 | 타건 영상 있음](https://img.zoomtrend.com/2026/06/07/1780838085-SE-77297eb3-90bf-43a7-9629-75fd8530e370.jpg)



