Sehyup
Preview Image

CS 로드맵 9편 — 스케줄링: OS는 누구에게 CPU를 줄까

서론: “누가, 얼마나”의 문제 지난 편에서는 프로세스와 스레드가 무엇이고 OS가 그것을 어떻게 추상화하는지 보았습니다. 이제 자연스럽게 따라오는 질문이 있습니다. 준비 상태인 스레드가 100개 있는데 코어가 8개라면, OS는 누구에게 CPU를 줄까요? 그리고 얼마나 오래 줄까요? 이 두 질문에 답하는 것이 스케줄러 (Scheduler...

Preview Image

CS 로드맵 8편 — 프로세스와 스레드: OS는 실행 단위를 어떻게 추상화하는가

서론: 지도에서 본론으로 지난 편에서는 세 운영체제의 혈통과 뼈대를 훑었습니다. Linux는 모놀리식, Windows NT는 하이브리드, macOS XNU는 Mach + BSD 이중 구조. 이게 지도였다면, 이번 편부터는 본론입니다. Stage 2의 핵심 질문을 다시 꺼내 보겠습니다. “스레드 두 개가 같은 변수를 쓰면 왜 프로그램이 때...

Preview Image

CS 로드맵 7편 — OS 아키텍처 입문: Unix, NT, XNU의 갈림길

서론: 왜 OS부터 시작하는가 Stage 1에서는 자료구조와 메모리를 다뤘습니다. 배열과 연결 리스트, 해시 테이블, 트리와 그래프, 그리고 힙까지 — 모두 “데이터를 어떻게 정리할 것인가”의 이야기였습니다. Stage 2의 질문은 조금 다릅니다. “스레드 두 개가 같은 변수를 쓰면 왜 프로그램이 때때로만 죽는가?” 이 질문에 답하려...

Preview Image

Flow Field 최적화 - 3,000에서 10,000 에이전트로 스케일링하기

서론 이전 포스트에서 Flow Field 패스파인딩의 개념과 3단계 파이프라인을 다뤘다. Flow Field는 에이전트 수와 무관하게 \(O(V)\) 로 계산되므로, 패스파인딩 자체는 병목이 아니다. 그렇다면 3,000 에이전트에서 프레임이 떨어지는 원인은 무엇인가? 그리고 10,000 에이전트까지 스케일업하려면 무엇을 바꿔야 하는가? 이 포스트...

Preview Image

NativeContainer 심화 — 컨테이너 생태계부터 커스텀 컨테이너 제작까지

서론 Job System 포스트에서 NativeArray의 내부 구조를 해부했다. C# 배열과의 메모리 모델 차이, Allocator 종류, Safety System의 기본 동작까지 다뤘다. 하지만 실전에서는 NativeArray만으로 모든 것을 해결할 수 없다. 동적 크기의 리스트가 필요하고, 키-값 쌍으로 빠르게 조회해야 하고, 여러 워커 스레...

Preview Image

Flow Field 패스파인딩 - 대규모 군중을 위한 최적의 해법

서론 3,000마리의 좀비가 플레이어를 향해 몰려온다고 상상해보자. 각 좀비에게 개별 경로를 계산해준다면? A* 하나당 수백~수천 노드를 탐색하고, 그것을 3,000번 반복해야 한다. 프레임은 순식간에 바닥을 친다. Flow Field 패스파인딩은 이 문제를 근본적으로 다른 방식으로 접근한다. 개별 에이전트에게 경로를 주는 대신, 공간 전체에 “어...