PROCESS
Posts
28 posts[리눅스커널] 프로세스 - 프로세스, 태스크란
프로세스는 추상적이고 다양한 의미를 담고 있어 다양한 관점으로 설명할 수 있습니다. 프로세스란 무엇일까요? 프로세스(Process)는 리눅스 시스템 메모리에서 실행 중인 프로그램을 말합니다. 스케줄링 대상인 태스크와 유사한 의미로 쓰입니다. 다수 프로세스를 실시간으로 사용하는 기법을 멀티프로세싱이라고 말하며 같은 시간에 멀티 프로그램을 실행하는 방식을 멀티태스킹이라고 합니다. 우리가 쓰고 있는 스마트폰 동작을 잠깐 생각해봅시다. 전화를 하면서 메모를 남기고, 음악을 들으면서 브라우저를 볼 수 있습니다. 여러 어플리케이션이 동시에 실행하고 있습니다. 이것은 멀티태스킹을 수행해서 프로그램을 시분할 방식으로 처리하기 때문에 가능합니다. 이번에는 리눅스 개발자 입장에서 프로세스에 대해 생각해 봅시다. 프로세스
[리눅스 커널] 유저 레벨 프로세스란
유저 레벨 프로세스에 대해 알아보기 전에 유저 모드가 무엇인지에 대해서 먼저 살펴봅시다. 우리가 라즈베리파이에서 바탕 화면에 있는 아이콘을 클릭해서 어떤 프로그램을 실행하고 있다고 가정합시다. 이 때 프로그램은 유저 모드나 커널 모드 중 하나로 동작합니다. ftrace 로그로 이 커널이 동작을 확인하면 정확히 유저 모드와 커널 모드를 자주 스위칭합니다. 유저 모드와 커널 모드로 나누는 기준은 무엇일까요? 이는 메모리 접근과 실행 권한으로 두 모드로 분류합니다. 실행 모드를 유저 모드와 커널 모드로 나누는 이유를 알기 위해 예를 들겠습니다. 어떤 시스템 메모리 공간을 0~4G까지 가상 메모리에서 연속으로 쓰고 있다고 가정합시다. 이 때 커널 코드와 전역 변수가 0~4G 메모리 구간에 메모리 주소로 매핑
[라즈베리파이] 워크큐(Workqueue) - worker_thread() 함수 분석(3)
Contents of tableworker_thread() 함수 분석(1)worker_thread() 함수 분석(2)worker_thread() 함수 분석(3) 이번에는 worker_thread() 함수에서 가장 중요한 37번 줄 코드를 분석할 차례입니다. 위 그림에서 워커 쓰레드의 “실행” 단계입니다. 코드를 봅시다.37do {38struct work_struct *work =39list_first_entry(&pool->worklist,40 struct work_struct, entry);4142pool->watchdog_ts = jiffies;4344if (likely(!(*work_data_bits(work) & WORK_STRUCT_
[라즈베리파이] Process - 프로세스 상태
이름으로 알 수 있듯이, state 필드는 프로세스가 어떤 동작 중인지 알려줍니다. 이 필드는 플래그의 배열이고 각 플래그는 프로세스 상태를 표현합니다.. 현재 리눅스 버전에서는 이 상태들이 상호 배타적이고, state의 플래그 하나만 설정하므로 나머지 플래그들은 Clear합니다. 프로세스 상태는 아래와 같습니다. TASK_RUNNING#define TASK_RUNNING 0x0000 프로세스가 CPU에서 실행중이거나 실행되려고 기다리는 중입니다. 실제 CPU에서 실행 중인 프로세스는 struct runqueues.curr란 멤버에 등록되어 있습니다. TASK_INTERRUPTIBLE #define TASK_INTERRUPTIBLE 0x0001 프로세스는 특정 조건이 true가 될 때까지 잠들

![[CV] [Comi] 'あかね噺'(아카네 이야기) 22권. 아카네의 첫 전력 승부](https://img.zoomtrend.com/2026/06/08/1780982081-EC9D8CEC9585EC9D98EBA6ACEB93ACEC9CBCEBA19C.jpg)

