Linux

    NUMA BALANCING

    NUMA BALANCING

    NUMA BALANCING에 대해 정리해보고자 합니다. NUMA BALANCING에 대한 설정은 kernel 분석 시 Configure로 설정할 수 있습니다. 먼저 NUMA에 대해 정리해보고 NUMA BALANCING에 대해 정리하겠습니다. NUMA는 Non-Uniform Memory Access(불균일 기억장치 접근)의 약자입니다. 멀티프로세서 시스템에서 불균일 메모리 접근을 위한 설계 기법으로 개발되었습니다. NUMA 시스템에서 프로세서는 자신과 연결된 메모리를 가지고 있습니다. 프로세서와 메모리가 여러 노드를 구성하여 여러 노드가 모여 시스템을 이루고 있습니다. 노드 내 프로세서는 로컬메모리라하고 다른 노드의 메모리를 리모트 메모리라 합니다. 프로세서는 로컬메모리 뿐만 아니라 리모트메모리에도 접근할..

    [ELF] Stripping an ELF object

    [ELF] Stripping an ELF object

    ELF 란 용어를 많이 들어보셨을텐데요, ELF는 Executable and Linking Format의 약어입니다. UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷입니다. 지난 글에 이어 이번 글에서는 Stripping ELF 에 대해 알아보겠습니다. [이전 글]2018/08/27 - [Linux/Debugging & Testing] - [ELF] ELF Header2018/08/29 - [Linux/Debugging & Testing] - [ELF] Segment와 Program Header2018/09/07 - [Linux/Debugging & Testing] - [ELF] Sections and the Section header table Strip (?)ELF 파일을 Strip..

    [ARMv8] aarch64 프로세서 상태 레지스터(PSTATE)

    [ARMv8] aarch64 프로세서 상태 레지스터(PSTATE)

    PSTATE는 프로세서 상태 레지스터입니다. 이 레지스터를 이용해 프로세서의 상태를 알수도 있고 설정할 수도 있습니다. 아래 그림은 ARM Developer 페이지에서 가져온 그림입니다. PSTATE field를 정의해 놓았습니다. (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABICCBC.html) PSTATE의 각 비트가 하나 씩 어떤 행위를 하는지 정리해보겠습니다. N(Negative Condition Flag) : 연산의 결과 값이 음수인 경우 설정되는 비트 Z(Zero Condition Flag) : 연산의 결과 값이 0인 경우 설정되는 비트C(Carry Condition Flag) : 캐리 발생 시 설정되는 비트..

    [ELF] Sections and the Section header table

    [ELF] Sections and the Section header table

    ELF 란 용어를 많이 들어보셨을텐데요, ELF는 Executable and Linking Format의 약어입니다. UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷입니다. 지난 글에 이어 이번 글에서는 ELF 파일 포맷에서 Section 과 Section Header Table에 대해 알아보겠습니다. [이전 글] 2018/08/27 - [Linux/Debugging & Testing] - [ELF] ELF Header 2018/08/29 - [Linux/Debugging & Testing] - [ELF] Segment와 Program Header Section Header Table Section Header Table은 ELF file의 거의 모든 파트(?)에 대한 정보가 들어있습니..

    [ELF] Segment와 Program Header

    [ELF] Segment와 Program Header

    ELF 란 용어를 많이 들어보셨을텐데요, ELF는 Executable and Linking Format의 약어입니다. UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷입니다. 지난 글에 이어 이번 글에서는 ELF 파일 포맷에서 Program Header에 대해 알아보겠습니다. [이전 글]2018/08/27 - [Linux/Debugging & Testing] - [ELF] Executable and Linking Format - ELF Header Program HeaderProgram Header Table은 ELF내의 Segment들에 대한 정보와 그 Segment들을 메모리에 어떻게 로드해야 하는지에 대한 정보가 포함되어 있습니다. Segment란 앞 선 글에서도 설명하였지만 다시 ..

    [커널분석] Architecture 별 분석을 위한 설정 (ctags & cscope)

    리눅스 커널 분석 시 많이 사용하는 툴로 ctags와 cscope를 많이 사용합니다. 하지만 분석 시 다양한 architecture에 따라 동일 네이밍의 함수나 매크로 등으로 인해 분석하기 쉽지 않은데요. 쉽게, 해결할 수 있는 방법을 알려드립니다. 리눅스 커널에서 스크립트 형태로 tags와 cscope란 옵션을 제공하고 있습니다.만약 arm64를 기반으로 분석한다고 하면 아래와 같이 설정해 주세요. $ make tags ARCH=arm64 $ make cscope ARCH=arm64 내부적으로 script를 작성해 놓았기 때문에 해당 Architecture에 해당하는 코드만 분석할 수 있습니다.