리눅스커널
Posts
154 posts[리눅스커널][스케줄링] 컨택스트 스위칭: context_switch() 세부 코드 분석
컨택스트 스위칭 세부 코드 분석이전 소절에서 다룬 컨택스트 스위칭이란 다음과 같은 문장으로 정리할 수 있습니다.CPU에서 실행 중인 프로세스 정보로 채워진 CPU 레지스터 세트를 프로세스 스택 공간에 저장하고 다음에 실행할 프로세스의 레지스터 세트를 스택 공간에서 로딩해 CPU 레지스터 세트에 채우는 동작입니다. 이번에는 context_switch() 함수 분석으로 컨택스트 스위칭 코드 동작을 알아보겠습니다. 먼저 context_switch() 함수에 전달하는 인자를 확인합시다.[https://elixir.bootlin.com/linux/v4.14.70/source/kernel/sched/core.c]static __always_inline struct rq *context_switch(struct rq
[리눅스커널][스케줄링] 컨택스트 스위칭이란 무엇인가
컨택스트 스위칭이란 무엇인가컨택스트 스위칭 세부 동작을 알기 위해서 context_switch() 함수를 분석할 필요가 있습니다. context_switch() 함수를 분석하기 전 컨택스트 스위칭의 개념을 소개하겠습니다. 먼저 컨택스트 스위칭이란 용어에 대해서 살펴봅시다. 컨택스트 스위치란 용어는 컨택스트 + 스위치란 단어의 합성어입니다. 컨택스트를 바꾼다는 의미입니다. 여기서 컨택스란 용어는 무슨 뜻일까요? 컨택스트는 프로세스가 실행 중인 그 자체를 의미합니다. 이 표현은 추상적이라 이해하기 어렵습니다. 프로세스 실행 그 자체를 어떻게 표현할까요? 그것은 레지스터 세트입니다. CPU 레지스터 세트가 프로세스 실행 자체를 표현하기 때문입니다. 다음 테이블을 보면서 컨택스트 스위칭에 대한 개념을 알아봅시
[리눅스커널][인터럽트후반부] IRQ 스레드 생성 실습하기
IRQ 스레드 생성 실습하기 이번에는 IRQ 스레드를 직접 생성하는 실습을 하겠습니다. 직접 손으로 코드를 작성하고 로그로 동작을 확인하면 배운 내용을 더 오랫동안 기억할 수 있습니다. 다른 리눅스 시스템보다 라즈베리파이는 IRQ 스레드 개수가 많지 않습니다. 아래와 같이 “ps –ely” 을 입력하면 92번 mmc1 인터럽트를 처리하는 IRQ 스레드가 1개만 보입니다.root@raspberrypi:/home/pi/dev_raspberrian# ps -elyS UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMDS 0 1 0 0 80 0 6012 6750 SyS_ep ? 00:00:02 s
[리눅스커널][인터럽트후반부] IRQ 스레드 동작 확인하기
IRQ 스레드 동작 확인하기 이제 실제 라즈베리안에서 IRQ Thread가 어떻게 수행되는지 ftrace 로그로 분석할 시간입니다. 이를 위해 다음과 같이 ftrace 로그를 설정해야 합니다. #!/bin/sh echo 0 > /sys/kernel/debug/tracing/tracing_onsleep 1echo "tracing_off" echo 0 > /sys/kernel/debug/tracing/events/enablesleep 1echo "events disabled" echo secondary_start_kernel > /sys/kernel/debug/tracing/set_ftrace_filter sleep 1echo "set_ftrace_filter init" echo f

![[일상] Eave 65와 목새 택타일 | 토프레 무접점 느낌 | 타건 영상 있음](https://img.zoomtrend.com/2026/06/07/1780838085-SE-77297eb3-90bf-43a7-9629-75fd8530e370.jpg)

