프로세스
Posts
54 posts[리눅스커널] 스케줄링: 스케줄링 정책이란
스케줄링은 실행 대기 상태에 있는 프로세스 목록 중 하나를 선택해서 CPU를 실행하는 동작입니다. 여기서 한 가지 의문이 생깁니다. | 실행 대기 상태 프로세스들 중 하나를 선택한 후 CPU 실행 상태로 어떤 방식으로 바꿔줄까? 스케줄링 세부 구현을 할 때 다음 그림과 같이 Process A ~ Proces D 프로세스를 어떤 방식으로 선택해서 CPU에 실행할지 결정을 해야 하는 문제가 있는 것입니다. 스케줄링 동작을 구현할 때 어떤 프로세스를 어떤 방식으로 선택하느냐 중요한 설계 요소입니다. 이를 스케줄링 정책이라고 이야기를 합니다. 스케줄링 정책은 크게 다음과 같이 분류 할 수 있습니다. + 우선 순위가 높은 프로세스가 계속 CPU를 점유하면서 실행합니다.+ 실행 대기 상태에 있는 프로세스들
[라즈베리파이] 스케줄링: 프로세스 상태 변화 관리
프로세스 상태 변화프로세스 상태 변화에 대해 알아보겠습니다. 프로세스 상태를 아는 것 보다 프로세스 상태가 변경될 때 세부 동작을 이해하는 것이 더 중요합니다. [1] 실행 대기 -> CPU실행 중프로세스가 생성된 다음 바로 TASK_RUNNING(실행 대기) 상태로 바뀌면서 자신을 런큐에 Enqueue 합니다. 스케줄러가 RUNNING_TASK(실행 대기) 프로세스 중에서 우선 순위가 가장 높은 프로세스를 선택한 다음 CPU에서 실행시킵니다. 프로세스가 CPU를 점유하면서 실행하기 위해서 먼저 TASK_RUNNING 상태로 변경해야 합니다. 실행 후보 프로세스 리스트가 되는 것입니다. 스케줄러에 의해 선택되기 위해 런큐에 Enqueue된 다음 실행 대기 상태를 관리하는 연결 리스트에 등록하는 것
[라즈베리파이] 스케줄링: 프로세스 상태 관리
프로세스를 효율적으로 관리하기 위해서 커널은 프로세스에게 프로세스 상태를 부여합니다. 커널에서 정의한 프로세스 상태는 다음과 같습니다.[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.
[라즈베리파이] 스케줄링: 스케줄링 클래스란
리눅스 커널에서는 기본으로 5개의 스케줄러를 제공합니다. + stop 스케줄러, deadline 스케줄러, RT 스케줄러, CFS 스케줄러, 아이들 스케줄러 리눅스 커널은 5개의 스케줄러를 프로세스가 유연하게 쓸수 있도록 스케줄러 세부 동작을 모듈화했습니다. 이를 스케줄러 클래스라고 하며 5개의 스케줄러를 스케줄러 클래스로 정의합니다. 프로세스는 자신이 실행할 스케줄러 클래스 정보를 갖고 있습니다. 즉, 모든 프로세스들은 태스크 디스크립터에 자신이 선택하거나 부모 프로세스로부터 물려 받은 스케줄러 클래스 정보를 갖고 있는 것입니다. 대부분 일반 프로세스들은 CFS 스케줄러 클래스에 등록해서 CFS 스케줄러로 스케줄링됩니다. 대부분 일반 프로세스들은 CFS 스케줄러 클래스에 등록해서 CFS 스케줄러로 스



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