일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- DMA
- interrupt context
- 안드로이드
- 프레임버퍼
- makefile
- 소캣
- layouts
- interrupt handler
- context
- lifecycle
- sprintf
- 젠킨스
- memcmp
- context switch
- 스레드
- HDR
- intents
- jenkins
- socket
- pagefile.sys
- sscanf
- 디스크 축소
- 환경 변수
- activities
- fscanf
- 문자형 디바이스 파일
- 멀티프로세싱
- list
- SDK
- fprintf
- Today
- Total
목록Linux/Kernel (6)
do{학습}while

QEMU와 Buildroot로 ftrace 실습 환경 만들기이번 글에서는 QEMU와 Buildroot를 이용해 ftrace를 실습할 수 있는 환경을 구축하는 방법을 정리한다. ftrace는 Linux 커널 내부의 동작을 추적할 수 있는 매우 강력한 도구이며, 별도의 추가 설치 없이 커널만 잘 구성해도 바로 사용할 수 있다. 이 실습은 x86_64 환경을 기준으로 진행된다.1. ftrace란?ftrace는 Linux 커널에 내장된 트레이싱 프레임워크로, 다음과 같은 작업에 사용된다:함수 호출 추적스케줄링 전환 추적인터럽트 오프/온 상태 추적IRQ 지연 분석 등ftrace는 /sys/kernel/debug/tracing 디렉토리를 통해 접근할 수 있으며, debugfs 파일 시스템이 마운트되어 있어야 한다...
QEMU Cheat Sheet (x86_64, 커널 디버깅 중심)qemu 가상머신에서 컴파일된 커널이미지를 실행 시키는 명령어입니다.rootfs 없이 커널만을 실행이 가능합니다.qemu-system-x86_64 \ -kernel arch/x86/boot/bzImage \ -append "console=ttyS0 nokaslr" \ -nographic -s -S핵심 옵션옵션설명-kernel bzImage부팅할 커널 이미지 (압축된 bzImage) 지정-append "..."커널 부트 인자 전달 (console, init, nokaslr 등)-nographicVGA 끄고 시리얼로 모든 출력 (터미널 기반)-sGDB 서버 포트 1234 열기 (= -gdb tcp::1234)-S부팅 직후 CPU..
0. 동기화란?동기화(Synchronization)란 두 개 이상의 실행 흐름(예: 스레드, 인터럽트, 프로세스 등)이 공유 자원에 접근할 때,서로 충돌하지 않도록 그 접근 순서나 타이밍을 제어하는 과정을 말한다.운영체제나 커널 환경에서는 다음과 같은 상황에서 동기화가 필수적이다:여러 스레드가 같은 변수에 동시에 값을 쓰는 경우하나의 프로세스가 값을 읽는 도중, 다른 프로세스가 그 값을 변경하는 경우인터럽트 핸들러가 처리 중인 버퍼를 메인 루틴이 동시에 접근하는 경우이러한 상황에서 동기화 없이 접근하게 되면 race condition, 데이터 손상, 비정상 동작이 발생할 수 있다.따라서 동기화는 시스템 안정성과 신뢰성 보장을 위한 핵심 메커니즘이다.1. 크리티컬 섹션(Critical Section)이란?..
인터럽트와 인터럽트 컨텍스트란 무엇인가?임베디드 시스템이나 커널 수준의 프로그래밍을 하다 보면 인터럽트(Interrupt)와 인터럽트 컨텍스트(Interrupt Context)라는 개념을 자주 접하게 된다. 이 글에서는 인터럽트가 무엇인지, 인터럽트 컨텍스트란 어떤 의미인지, 그리고 왜 인터럽트 핸들러는 짧게 실행되어야 하는지에 대해 정리한다.1. 인터럽트란?인터럽트(Interrupt)는 외부 또는 내부에서 발생한 사건을 CPU에 알리는 신호이다.이 신호는 CPU가 현재 수행 중인 작업을 잠시 중단하고, 해당 사건을 처리하도록 만든다.외부 인터럽트 예시키보드 입력마우스 클릭네트워크 패킷 수신외부 장치의 상태 변화내부 인터럽트 예시타이머 만료소프트웨어 인터럽트 (softirq)시스템 호출 트랩 (sysca..
프로세스와 스레드의 차이 정리시스템 프로그래밍을 하다 보면 자주 마주치는 개념이 바로 프로세스(Process) 와 스레드(Thread) 이다. 두 개념은 모두 실행의 단위이지만, 메모리 구조와 데이터 공유 측면에서 큰 차이가 있다. 이 글에서는 이 둘의 차이를 명확히 정리한다.1. 프로세스란?프로세스는 실행 중인 프로그램을 의미하며, 운영체제에서 독립적인 메모리 공간을 갖는 단위이다. 각각의 프로세스는 코드 영역, 데이터 영역, 힙 영역, 스택 영역을 가지며, 이 메모리 공간은 다른 프로세스와 완전히 분리되어 있다. 이러한 격리 덕분에 하나의 프로세스에서 발생한 오류나 충돌이 다른 프로세스에 영향을 미치지 않는다.하지만 동시에 이 말은 기본적으로 프로세스 간에는 데이터를 직접 공유할 수 없다는 뜻이기도 ..
운영체제에서 멀티태스킹을 구현하기 위해 가장 중요한 개념 중 하나가 바로 "Context"와 "Context Switch"다. 이 글에서는 context가 의미하는 바와 context switch 과정에서 정보가 어떻게 저장되고 관리되는지를 설명한다.Context란?Context는 일반적으로 "문맥" 또는 "상황"을 의미하지만, 운영체제나 커널 레벨에서는 "CPU가 어떤 프로세스를 실행하던 시점의 상태 정보"를 의미한다. 이 상태 정보에는 다음과 같은 것들이 포함된다:레지스터 값프로그램 카운터(PC)스택 포인터(SP)프로세서 플래그그 외 아키텍처에 따라 필요한 정보들다시 쉽게 설명하자면... 여러 업무를 하고 있다고 가정할 때, 기존에 하던 업무를 잠시 멈추고 다른 업무를 하기 전에정해진 형식(threa..