[커널 17차 6조] 4주차

2020.09.12 22:14

김정근 조회 수:99

I am root Kernel Study 17차 6조 4주차


일시:
2020년 9월 12일 (토) 오후 3시 ~ 오후 9시 20분


참가자 :
임창수 박준은 김정근 김형준
홍은비 김상윤 정홍관 김지엽


진도:
모기향 1.3 익셉션 핸들링


결정사항:
모기향 1장을 먼저보고
프로그래머스 가이드 진입



## 질문 리스트

 

- 실행상태란?
    → 프로세스 상태 레지스터(PSTATE)에 `nRW` 필드가 실행상태를 나타냄


- ARM v 또는 A의 차이점
- ARM Cortex-A,M,R 차이점
    - https://yomi-tory.tistory.com/201
 

- nonsecure/secure 모드의 차이점에 대한 이해
    → https://developer.arm.com/documentation/100935/0100/
    → https://developer.arm.com/documentation/ddi0333/h/programmer-s-model/secure-world-and-non-secure-world-operation-with-trustzone/how-the-secure-model-works
    → https://developer.arm.com/architectures/learn-the-architecture/trustzone-for-armv8-a/single-page


- XZR, EZR은 어디에 쓰이는가
    → https://stackoverflow.com/questions/52410521/is-zero-register-zr-in-aarch64-essentially-ground


- ILP?
    → https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.cbcpx01/datatypesize64.htm


- 범용 레지스터는 커널이 처리해줌



## 추후 조사 리스트


- 시스템 레지스터란?
    https://developer.arm.com/documentation/den0024/a/armv8-registers/system-registers

- 리셋 익셉션

- 벡터테이블에대한 추가적 이해 필요
  → 시스템 콜 처리 시 어떻게 처리되나?




기타 참조 내용 :


https://developer.arm.com/documentation/den0024/a/preface
https://developer.arm.com/documentation/ddi0487/fc/
https://docs.google.com/document/d/175yC9wAdcX_Eslm8Fzlff-YIDyQr9Jzgt_0zKdcLt5U/edit?usp=sharing


VFS : 가상 파일 시스템,
SIMD : Single Instruction Multiple Data
https://ko.wikipedia.org/wiki/ARM_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98


하이퍼 바이저 : 가상머신을 생성하고 구동하는 소프트웨어
https://www.redhat.com/ko/topics/virtualization/what-is-a-hypervisor


load-acquire, store-release 인스트럭션 ? : 왠지 어토믹 오퍼레이션 같은…
https://developer.arm.com/documentation/dui0802/b/A32-and-T32-Instructions/LDA-and-STL


1.1.1 익셉션 모델
1.1.2 익셉션 레벨 변경


Security in ARMv8-A systems
https://developer.arm.com/documentation/100935/0100/
https://developer.arm.com/documentation/ddi0333/h/programmer-s-model/secure-world-and-non-secure-world-operation-with-trustzone/how-the-secure-model-works
https://developer.arm.com/architectures/learn-the-architecture/trustzone-for-armv8-a/single-page


시큐어 모드? 추가 연구


armv8 - armv7 인셉션 모델 매핑
EL0 -> User 모드
EL1 -> Supervisor 모드
EL2 -> Hypervisor 모드
EL3 -> Secure 모드


1.2 ARMv8 레지스터
1.2.1  프로세서 상태 레지스터


https://gongpd.tistory.com/9


1.2.2 AArch64 특수 목적 레지스터


XZR, WZR (Zero register ) : 항상 0이 저장되고 0이 읽히는 레지스터이다.
https://m.blog.naver.com/eldkrpdla121/221522612959

https://stackoverflow.com/questions/52410521/is-zero-register-zr-in-aarch64-essentially-ground


1.2.3 시스템 레지스터


시스템 레지스터란?
https://developer.arm.com/documentation/den0024/a/armv8-registers/system-registers

MSR 시스템레지스터 <- 일반레지스터
MRS 일반레지스터 <- 시스템레지스터


1.2.4 ABI의 레지스터 사용 규칙


ILP32 and LP64 데이터 모델
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.cbcpx01/datatypesize64.htm


1.3 익셉션 핸들링


https://bootlin.com/blog/fiq-handlers-in-the-arm-linux-kernel/
FIQ는 일반적으로 Linux 커널에서 사용되지 않지만 드라이버에서 FIQ를 사용하는 데..(구글번역)

 

https://damduc.tistory.com/100


Dispatcher 와 Scheduler 차이
https://www.geeksforgeeks.org/difference-between-dispatcher-and-scheduler/


1.3.2, 1.3.4 에서 HCR_EL, SCR_EL 
https://developer.arm.com/documentation/ddi0500/j/System-Control/AArch32-register-descriptions/Secure-Configuration-Register
https://developer.arm.com/documentation/ddi0500/j/System-Control/AArch32-register-descriptions/Hyp-Configuration-Register


RMR_ELn (Reset Management Register)
https://developer.arm.com/documentation/ddi0500/j/System-Control/AArch32-register-descriptions/Reset-Management-Register
> RR 비트: 콜드 or 윔 결정
> AA64 비트 : 32비트 or 64비트 결정


1.3.7 GIC 표준 인터럽트 컨트롤러


GIC
http://jake.dothome.co.kr/ic/

XE Login