리눅스 커널 - 프로세스 관리(프로세스 복제)
시스템 호출 예를 들어 fork, vfork, clone 혹은 커널 스레드(kernel_thread)를 실행할 때는 커널의 _do_fork 함수가 호출됩니다. 이 함수가 수행하는 주요 작업을 살펴보겠습니다(리눅스-4.19 버전 기준).
/* clone_flags: 프로세스 복제 중的一些 속성 제어를 위한 플래그 집합
CSIGNAL(최소 바이트)는 자식 프로세스가 종료될 때 부모 프로세스에게 보내는
시그 ...
6월 12일 19:16에 게시됨
리눅스 프로세스 관리의 핵심 구조와 생명주기
프로세스와 스레드의 관계
리눅스에서 프로세스는 자원 할당의 기본 단위이며, 스레드는 실행의 기본 단위이다. 모든 스레드는 프로세스 내에서 동작하며, 같은 주소 공간과 시스템 자원을 공유한다. 커널 입장에서는 스레드도 하나의 독립된 작업 단위(task)로 간주되며, task_struct 구조체로 표현된다.
프로세스의 내부 표현: task_struct
커널은 각 프로세스를 struct ...
6월 6일 23:37에 게시됨
Redis 운영 중 발생하는 주요 문제와 최적화 방안
fork 작업으로 인한 고성능 요청 지연
RDB 스냅샷 생성이나 AOF 재작성 시 디스크 I/O 작업이 발생하며 메인 프로세스가 하위 프로세스를 fork합니다. 이때 하위 프로세스는 상위 프로세스의 메모리 페이지 테이블을 복제하는데, 10GB 메모리 기준 약 200ms가 소요될 수 있습니다. info stats의 latest_fork_usec로 마지막 fork 시간을 확인 가능합니다. 초당 수만 건 처리 ...
5월 21일 17:27에 게시됨