국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다.
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2024년, 대한민국 학술원 우수도서상) 저자
'디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자
'프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사
2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]
LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~현재)
국내에서 어느 누구보다 리눅스 커널과 Arm 아키텍처(Armv8-A, Armv7-A)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.
주요 로드맵 🎯
'시스템 소프트웨어 개발자를 위한 Arm - basic course'
'시스템 소프트웨어 개발자를 위한 Arm - advanced course'
시스템 소프트웨어 개발자를 위한 Linux kernel - basic course
체계적으로 Arm 아키텍처(Armv8-A, Armv7-A)와 리눅스 커널을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다.
강의
로드맵
전체 3수강평
- 리눅스 소개와 리눅스 커널 Overview [저자직강 1부-1]
- Arm 아키텍처: 메모리 매니지먼트(MMU) [저자직강 3부-5]
- 시스템 소프트웨어 개발의 모든 것 - 시스템 반도체와 전기 자동차 중심
- 시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
- 리눅스 커널의 구조와 원리: 디버깅 - Basic [저자 직강 1부-2]
게시글
질문&답변
리눅스-프로세스 강의 교재 자료
강의 자료는 정리해서 2/12까지 업로드할 예정입니다. 질문 주셔서 감사합니다.
- 0
- 2
- 39
질문&답변
강의안 공유 요청
강의 자료를 업로드했습니다. (일정보다 늦게 올린 점 양해 부탁드립니다.)'섹션 1- 강의 소개'를 확인하시면 아래 메뉴에서 강의 문서를 내려 받을 수 있습니다.강의 자료 (전체 강의 슬라이드 문서)감사합니다.
- 0
- 3
- 52
질문&답변
스택공간에 데이터를 저장할 떄
일반적으로 스택공간에 데이터를 저장하면 다음과 같은 동작이 수행됩니다:우선 캐시에 먼저 데이터를 써줍니다.캐시에 써준 데이터를 RAM에 저장할 시점(짧은 시간)에 캐시 데이터를 RAM에 써줍니다. (이를 캐시 정책이라고 하며 write-back이라고도 합니다.)참고로, Arm 프로세서의 스펙에 따라 캐시 정책이 다른 방식으로 적용될 수도 있습니다.감사합니다.
- 0
- 2
- 24
질문&답변
MMU의 Page Table과 관련된 질문이 있습니다.
1. TTBR1_EL1, TTBR0_EL1 레지스터에 저장된 주소는 물리 주소입니다.2. 추가로 설명드립니다.각 PGD, PMD 그리고 PTE는 다음과 같습니다:PGD는 1st 룩업 페이지 테이블PMD는 2nd 레벨 페이지 테이블PTE는 3rd 레벨 페이지 테이블 페이지 변환 과정은 구체적으로 아래와 같은 과정으로 수행됩니다:PGD에 접근하기 위해서는 TTBR1_EL1(커널 공간) 혹은 TTBR0_EL1(유저 공간) 레지스터를 사용합니다. TTBRn_EL1을 1st 룩업 페이지 테이블이라고 합니다. PGD에는 2nd 레벨 페이지 테이블의 엔트리 주소(물리)를 담고 있습니다.PMD는 2nd 페이지 테이블로써 물리 주소를 담고 있는 페이지 테이블은 아닙니다. PTE의 엔트리 주소를 담고 있죠.PTE에 접근하면 실제 물리 주소를 확인할 수 있습니다. Armv8-A 에서는 가상 주소를 멀티 레벨 페이지로 변환하는데, TTBRn_EL1을 1st 룩업 페이지 테이블이라고 합니다.3. 네, 제대로 이해하셨습니다. 만약 EL1에서는 MMU를 활성화하고, EL2에서는 MMU를 활성화하지 않게 되면 EL1에서 접근하는 주소는 가상 주소인 반면, EL2에서 접근하는 주소는 실제 물리주소에 접근할 수 있습니다. 대부분 EL0, EL1, EL2까지 MMU를 활성화해서 사용합니다.EL0/EL1에서 MMU를 활성화하기 위해서는 TCR_EL1, SCTLR_EL1를 설정해야 합니다. 만약 EL2에서도 MMU를 활성화하려면 TCR_EL2, SCTLR_EL2를 활성화해야 합니다. 감사합니다.
- 0
- 2
- 44
질문&답변
crash utility build 오류
지금 사용 중인 라즈베리 파이 4는 64비트 기반의 Armv8-A 아키텍처로 보입니다.따라서 아래와 같은 명령어를 사용해서 빌드 부탁드립니다.$ make(주의 사항) 에러가 발생한 상태의, 내려 받은 crash-utility 소스를 모두 지워주세요. 그래서 다시 crash-utility 소스를 새롭게 내려 받으신 후 빌드를 해주세요.
- 0
- 1
- 40
질문&답변
하이퍼바이져
네, 이해하신 부분이 맞습니다. 관련 동작은 성능에 영향을 끼칠 정도는 아닙니다.
- 0
- 2
- 29
질문&답변
device memory
일반적으로 실제 프로젝트(하이퍼바이저)에서는 device memory region은 가상화해서 처리하지는 않습니다. 구현 복잡도가 늘어나기 때문입니다.
- 0
- 2
- 31
질문&답변
mmu table 위치
네, 이해하신 부분이 맞습니다. MMU의 page walk와 관련된 동작은 Hardware 적으로 처리됩니다.
- 0
- 2
- 34
질문&답변
mmu page walk
mmu 가 page walk 할 때 확인하는 다음 레벨 페이지 주소는 물리 주소입니다. (리눅스 커널)강의에서도 이 내용을 확인하실 수 있습니다.
- 0
- 2
- 27
질문&답변
exception handler 주소
vectors: 라고 붙어있는 레이블의 주소는 가상주소입니다. 만약 page fault가 난 다음에 exception handler를 실행하는 동작이 시스템 성능에 영향을 주지는 않습니다.
- 0
- 2
- 27