분류 전체보기59 Kernel Panic Calltrace 분석 Kernel Panic이 발생한 경우 하기와 같이 Calltrace log를 출력하기 때문에 해당 정보를 기반으로 디버깅 하는 방법 정리 example) xen porting 과정 중 kernel 부팅 시 발생한 error [ 0.500423] Internal error: synchronous external abort: 96000010 [#1] PREEMPT SMP [ 0.501475] Modules linked in: [ 0.502306] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.20.11 #6 [ 0.503174] Hardware name: linux,dummy-virt (DT) [ 0.507173] pstate: 40000005 (nZcv daif -PAN -.. 2024. 2. 8. GCC attribute gcc컴파일러가 제공하는 확장 기능으로 속성을 지정하는 키워드 해당 키워드를 통해서 변수 혹은 함수에 대한 속성을 지정할 수 있음. 종류 __attribute__((__used__)): 컴파일 시 최적화를 통해 사용하지 않는 변수들을 제외하는데 해당 속성을 지정하게 되면 사용하지 않는 변수에 대해서 제외시키지 않음 __attribute__((__aligned__(x))): 선언한 변수의 메모리 주소를 x 크기로 align __attribute__((__packed__)): 구조체 변수에 대해서 padding을 하지 않고 실제 data의 size만큼 할당. (4byte align) ex) 1번 case의 경우 padding에 의해 8byte 메모리를 할당. / 2번 case의 경우 해당 키워드를 통해 5b.. 2024. 2. 2. Assembly syntax Assembly syntax ARM Assembly Language 관련 syntax에 대해서 정리한 글 Assembly Identifiers .section , "" 섹션을 정의 .balign n 다음 주소가 n바이트 단위로 alignment .global .global 키워드를 사용하여 전역화 label without branch instruction 하기와 같이 예제코드에서 분기문이 없거나, 분기문이 실행되지 않는다면 순차적으로 다음 코드로 넘어감. # example 1: 해당 예제의 경우 1번째 분기문에서 case1으로 분기되지 않은 경우 순차적으로 다음 code인 "add $s2, $s0, $s1 "로 진행 beq $s0, $s1, case1 add $s2, $s0, $s1 case1: sub .. 2024. 2. 2. 가상화(Virtualization) 하나의 H/W system에 다수의 Virtual Machine(OS)이 동작할 수 있게 하는 기술로서 가상화 방식에 따라 크게 두 가지 방식으로 분류 됨. 하이퍼바이저 가상화(Type I) 호스트 OS가 필요 없이 직접 H/W에 Hypervisor를 설치하여 Guest OS를 관리하고 구동 시키는 방식(Bare metal 가상화). 각 Guest OS는 Hypervisor와의 통신을 위해 수정된 코드를 구현해야 반가상화 / 전가상화로 더욱 세분화. 호스트 가상화(Type II) Host OS 위에 가상화 소프트웨어를 통해 Guest OS가 구동되는 방식(e.g Windows OS에 설치해서 사용하는 Virtaul Box등) VM의 H/W resource 관련 I/O 요청이 반드시 호스트 OS를 통해야 .. 2024. 1. 30. ARMv8 Exception Exception CPU 아키텍처 관점에서 기계어를 정상적으로 처리하지 못한 상황을 의미하며 이를 처리하기 위해 모든 CPU Architecture에서는 대개 Exception이 유발되면 해당 Exception 종류에 해당하는 특정 주소로 분기 ARM의 경우 Exception을 "외부에서 발생한 인터럽트나 정의되지 않은 명령어를 실행하려는 시도와 같은 이벤트를 처리하기 위해 실행되고 있는 프로세스를 멈추게하는 것"으로 정의하고 있으며, Exception을 처리하기 위해 다양한 정보들을 register에 업데이트 하고, 해당 Exception 종류에 해당하는 특정 주소로 분기하는 과정을 수행함. Exception Type ARMv8의 익셉션 종류는 대략 하기와 같이 분류 됨 Synchronous Excep.. 2024. 1. 29. ARMv8 Exception Level Exception Level Overview ARMv7 대비 ARMv8에 새로 도입된 개념 중 하나인 Exception Level은 레벨마다 System의 resource에 대한 특권(Privilege)를 다르게 부여하여 각 레벨에 맞는 동작을 수행 Privileged / Unprivileged mode를 구분하는 이유(a.k.a user space와 kernel space를 구분한 이유) Privileged mode로 동작을 하게되면 시스템의 주요 설정과 메모리 등에 접근이 가능함 만약 User Application도 Privilege가 부여되어 시스템 메모리나 시스템 설정이 가능해진 상황에서 이러한 주요 resource를 잘못 사용할 경우 시스템에 critical한 error를 유발할 수 있음. 따라.. 2024. 1. 21. 이전 1 2 3 4 5 6 7 8 ··· 10 다음 728x90