라즈베리파이
Posts
191 posts[라즈베리파이] 스케줄링: 프로세스 상태 관리
프로세스를 효율적으로 관리하기 위해서 커널은 프로세스에게 프로세스 상태를 부여합니다. 커널에서 정의한 프로세스 상태는 다음과 같습니다.[https://elixir.bootlin.com/linux/v4.14.70/source/tools/perf/builtin-sched.c]#define TASK_RUNNING0#define TASK_INTERRUPTIBLE1#define TASK_UNINTERRUPTIBLE2 커널에서 구동 중인 프로세스는 위에서 정의한 상태 정보를 갖고 있으며 커널은 이 정보를 기준으로 스케줄링을 수행합니다. 그러면 프로세스 상태는 어디에 저장할까요?프로세스를 관리하는 태스크 디스크립터 필드 중 state는 위에서 언급한 정수형 상태 정보를 저장합니다.[https://elixir.
4.8 스레드 정보(struct thread_info)
프로세스 상세 정보를 저장하는 자료구조는 태스크 디스크립터입니다. 이와 더불러 프로세스 세부 실행 정보를 저장하는 struct thread_info 자료구조가 있습니다. 커널이 프로세스를 생성할 때 프로세스마다 고유한 스택 공간을 부여합니다. 스택 최상단 주소에 struct thread_info 구조체 필드가 저장돼 있습니다. 이 구조체 필드는 커널이 프로세스를 제어할 때 필요한 중요 정보를 담고 있습니다.+ 프로세스 컨택스트 정보+ 선점 스케줄링 여부+ 컨택스트 스위칭 시 저장한 레지스터 세트 이번 절에서는 프로세스 동작을 표현하는 struct thread_info 구조체에 대해서 알아봅시다. struct thread_info 구조체 각 멤버에 대해 알아보기 전에 이 구조체가 프로세스 어느 주소에 위
[라즈베리파이] 스케줄링: 런큐란 무엇일까?
CPU를 점유하면서 실행하고 있는 프로세스는 딱 한 개인데 다수의 프로세스들은 실행 대기 상태에 있습니다. 커널은 스케줄링으로 여러 개의 실행 대기 프로세스 중에서 하나 프로세스를 선택합니다. 리눅스 시스템에서는 여러 개 프로세스들이 동시 다발적으로 실행 요청을 합니다. 따라서 여러 개의 실행 대기 상태에 있는 프로세스를 식별하고 관리할 수 있는 자료 구조가 필요합니다. 실행 대기 상태 프로세스와 CPU에서 실행 중인 프로세스를 관리하는 자료구조를 런큐라고 말합니다. 런큐가 여러 개 프로세스들로부터 실행 요청을 받아 관리를 해주니 스케줄러가 편하게 스케줄링을 할 수 있는 것입니다. 런큐는 per-cpu 타입 변수입니다. 즉, CPU 갯수만큼 주소 공간이 있다는 의미입니다.라즈베리파이는 CPU가 4개
[라즈베리파이] 스케줄링: 스케줄링 클래스란
리눅스 커널에서는 기본으로 5개의 스케줄러를 제공합니다. + stop 스케줄러, deadline 스케줄러, RT 스케줄러, CFS 스케줄러, 아이들 스케줄러 리눅스 커널은 5개의 스케줄러를 프로세스가 유연하게 쓸수 있도록 스케줄러 세부 동작을 모듈화했습니다. 이를 스케줄러 클래스라고 하며 5개의 스케줄러를 스케줄러 클래스로 정의합니다. 프로세스는 자신이 실행할 스케줄러 클래스 정보를 갖고 있습니다. 즉, 모든 프로세스들은 태스크 디스크립터에 자신이 선택하거나 부모 프로세스로부터 물려 받은 스케줄러 클래스 정보를 갖고 있는 것입니다. 대부분 일반 프로세스들은 CFS 스케줄러 클래스에 등록해서 CFS 스케줄러로 스케줄링됩니다. 대부분 일반 프로세스들은 CFS 스케줄러 클래스에 등록해서 CFS 스케줄러로 스



![[CV] [Comi] 'ファイブスター物語'(더 파이브 스타 스토리즈) 19권. 연재분에서 벌어지는 '검성 대 검성'](https://img.zoomtrend.com/2026/06/06/1780766083-ECB2ABEB93B1EC9EA5EB8DB0ECBD94EC8AA4.jpg)