Linux 컨텍스트 스위칭 내부: 프로세스 상태와 메모리

2025-01-02

이 글에서는 Linux 커널이 프로세스와 그 상태를 어떻게 표현하는지 자세히 설명하고, 주요 데이터 구조인 task_struct와 mm_struct에 초점을 맞춥니다. task_struct는 프로세스 상태, CPU 시간 추적, 스케줄링 정보 등을 관리합니다. mm_struct는 페이지 테이블, 메모리 세그먼트 경계, 아키텍처별 세부 정보 등을 관리합니다. 이 글에서는 이러한 구조체의 필드와 컨텍스트 스위칭에서의 역할을 자세히 설명하여 Linux 커널의 내부 동작에 대한 깊이 있는 이해를 제공합니다.

더 보기

클러스터링의 불가능성 정리: 완벽한 알고리즘이 존재하지 않는 이유

2024-12-26

이 글에서는 클러스터링 알고리즘의 "불가능한 삼각형" 문제를 다룹니다. CAP 정리와 유사하게, 저자는 모든 클러스터링 알고리즘은 크기 불변성, 풍부함, 일관성이라는 세 가지 바람직한 속성 중 하나를 희생해야 한다고 주장합니다. 이 글에서는 각 속성을 정의하고 k-means와 같은 알고리즘이 어떻게 타협하는지 보여줍니다. 결론에서는 개발자는 애플리케이션의 특정 요구 사항에 따라 알고리즘을 선택해야 하며, 완벽한 클러스터링 알고리즘은 수학적으로 불가능하다는 것을 받아들여야 한다고 강조합니다.

더 보기