커널
Posts
228 posts[리눅스커널] 프로세스 태스트 디스크립터 디버깅: 스레드와 스레드 그룹
T32로 프로세스 목록을 보면 다음과 같이 계층 구조를 볼 수 있다.magic___|___command_________|#thr|state_____|spaceid|pids_|C1A171B8| swapper/0 | 420|current | 0000 | 0. 2. 3. 5. 6. 7. 8. 9. 10F1618000| init | - |sleeping | 0001 | 1.E9AF8740| ueventd | - |sleeping | 01D0 | 464.E9AFAB80| logd | 7. |sleeping | 0208 | 520.E9AFC140| logd.daemon | |sleeping |
[리눅스커널] 동기화 - 레이스 발생 동작 확인
커널 동기화 기법은 리눅스 커널에서 가장 배우기 어려운 내용 중 하나입니다. 커널 동기화 기법을 사실상 이론으로 이해하기 때문입니다. 아무리 커널 동기화나 레이스를 이론으로 이해해도 실전 개발에서 배운 내용을 적용하기 어렵습니다. 예를 들어 레이스로 커널 크래시가 발생했다고 가정합시다. 이 문제를 해결하기 위해서는 어떻게 해야 할까요? 우선 어느 코드 구간이 임계영역인지 분석해야 합니다. 이후 어떤 커널 동기화 방법(스핀락, 뮤텍스)를 써야 할지 판단해야 합니다. 이런 레이스로 인한 커널 동기화 문제를 해결하려면 리눅스 시스템에서 레이스가 어떤 방식으로 발생하는지 직접 체험해야 합니다. 그래야 리눅스 시스템에서 커널 동기화 기법이 왜 필요하며 어떤 커널 동기화 기법(스핀락, 뮤텍스, percpu)을 적
[리눅스커널] Process - 프로세스, 경량 프로세스, 스레드 소개
프로세스라는 개념은 모든 멀티프로그래밍 운영체제의 기본입니다.프로세스는 실행중인 프로그램의 인스턴스로 정의할 수 있는데, 16명의 유저가 vi를 동시에 실행하면 각각 16개의 프로세스가 존재합니다. (물론 vi 코드는 동일한 것을 공유할 수 있습니다). 리눅스 코드에서는 프로세스를 태스크(task)나 쓰레드(thread)라고 부릅니다. 프로세스, 경량 프로세스 그리고 쓰레드프로세스라는 용어는 여러가지 다른 추상화 개념으로 씁니다. 프로세스는 프로그램이 어디까지 실행되었는지를 완벽하게 알고 있는 자료 구조체라 볼 수 있습니다. 프로세스는 마치 인간과 같습니다. 프로세스는 생성되고 중요하게 관리될 수 있으며 사소하기도 한 삶을 살고, 자식 프로세스를 생성하기도 하고 마지막에는 죽습니다. 아주 작은 차이가
[리눅스커널] 워크큐(Workqueue) - 딜레이워크(delayed_work)는 어떻게 실행하나?
딜레이 워크를 실행하려면 어떤 함수를 호출해야 할까요? schedule_delayed_work() 함수를 실행하면 됩니다. 먼저 딜레이 워크를 실행하는 드라이버 코드를 예제로 열어 보겠습니다.[https://elixir.bootlin.com/linux/v4.14.43/source/drivers/mmc/host/bcm2835.c#L651]1 static2 bool bcm2835_send_command(struct bcm2835_host *host, struct mmc_command *cmd)3 {...3 if (!cmd->data && cmd->busy_timeout > 9000)4 timeout = DIV_ROUND_UP(cmd->busy_timeout, 1000) *


![[웹툰단행본] 『통제구역관리부』 1권 후기 : 이상한 변칙과 기이한 일들이 일어나는 공간에 대하여](https://img.zoomtrend.com/2026/06/09/1780996474-SE-5eda86fa-0d63-4afd-b8dd-b801879fed52.jpg)
