
์ ๋์ค ํ๋ก๊ทธ๋๋ฐ ๊ต๊ณผ๋ชฉ์ ์๊ฐํ๊ณ ๋ ๊ธฐ์ด ์ง์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์์คํ ์ ๊ธฐํํ์ฌ ์ฝ๋ฉํด๋ณด์์ต๋๋ค!
๋ง์ด ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง์ง๋ง, ์ ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด ๋ด์ฉ์ ํ์ฉํด๋ณด๊ธฐ ์ํ ํ๋ก์ ํธ์ด๋ ๊ฐ๋ณ๊ฒ ๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
| Contents |
| 1. ํ๋ก๊ทธ๋จ ์๊ฐ 2. ์์คํ ์ค๊ณ๋ 3. ์ฌ์ฉ ๊ธฐ์ 4. ์ฌ์ฉ ๋ฉ๋ด์ผ 5. ์ฌ์ฉ ์ |
1. ํ๋ก๊ทธ๋จ ์๊ฐ
๊ฐ์์ ๋๊ท๋ชจ ๊ธ์ต ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ค์ค ํ๋ก์ธ์ค ๊ตฌ์กฐ๋ก ๋ถ์ฐํ๊ณ , ๊ฐ ํ๋ก์ธ์ค ๋ด๋ถ์์๋ ๋ฉํฐ์ค๋ ๋๋ฅผ ํ์ฉํด ๋ณ๋ ฌ ๋ถ์์ผ๋ก ๋ถ์ ์๋๋ฅผ ๊ทน๋ํํ๋ ์๋ฎฌ๋ ์ด์ ์์คํ ์ ๋๋ค. ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ๋ ๋น์ ์์ ์ธ ๊ฑฐ๋ ํจํด์ ๊ฐ์งํ์ฌ ๊ด๋ฆฌ์์๊ฒ ์๋ฆผ์ ์ ๊ณตํฉ๋๋ค.
ํด๋น ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ๋น์ ์ ๊ฑฐ๋ ํจํด์ ๊ฐ์งํฉ๋๋ค.
| No. | ์ ํ | ์ค๋ช | ์ค์ ๊ธฐ์ค |
| 1 | ์ด๋๋ ๊ฑฐ๋ | ๋จ์ผ ๊ฑฐ๋์ ์ด์ก์ด ๋ฏธ๋ฆฌ ์ค์ ๋ ๊ธฐ์ค์น๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ | 1์ฒ๋ง์ ์ด์ |
| 2 | ๊ณ ๋น๋ ๋งค๋งค | ํน์ ์ข
๋ชฉ์ ๋จ๊ธฐ๊ฐ์ ๋ฐ๋ณต์ ์ธ ๋งค๋งค๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ → ๋ด ๊ฑฐ๋, ์์ธ ์กฐ์ข ์๋ ๊ฐ๋ฅ์ฑ ๆ |
1์ด ๋ด 10๊ฑด ์ด์ |
| 3 | ๋น์ ์์ ๋งค๋ ์๋ฐ |
ํน์ ์ข
๋ชฉ์ ๋ํด ์ผ์ ์๊ฐ ๋์ ๋งค์ ๋๋น ๋งค๋ ๋น์จ์ด ๊ทน๋จ์ ์ผ๋ก ๋์์ง๋ ๊ฒฝ์ฐ →๋ด๋ถ์ ๊ฑฐ๋, ํฌ๋งค ์ ๋ ๊ฐ๋ฅ์ฑ ๆ |
๋งค๋:๋งค์ > 3:1 |
2. ์์คํ ์ค๊ณ๋

1. Client: analyze trade_log.csv 4 ์ ๋ ฅ (๊ฑฐ๋ ๋ด์ญ ํ์ผ, ์ฌ์ฉํ ์ค๋ ๋ ์)
2. Server: Worker ํ๋ก์ธ์ค ์์ฑ (fork + exec)
3. Worker: 4๊ฐ ์ค๋ ๋๋ก ํ์ผ ๋ถํ
4. ๊ฐ ์ค๋ ๋๊ฐ ๋ฐ์ดํฐ ๋ถ์ ์์
5. ์ด์ ์งํ ๋ฐ๊ฒฌ ์ฆ์ → add_anomaly() ํธ์ถ
6. ์ค์๊ฐ ์๋ฆผ ์ถ๋ ฅ (stderr)
7. ๋ถ์ ์๋ฃ ํ ์ต์ข ๋ณด๊ณ ์ ์์ฑ
8. Server๊ฐ ๊ฒฐ๊ณผ๋ฅผ Client๋ก ์ ๋ฌ (FIFO)
9. Client๊ฐ ํ๋ฉด์ ํ์
์์คํ ์ ํฌ๊ฒ 4๊ฐ์ง ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ๊ฐ์ ์ญํ ๊ณผ ํต์ฌ API๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์ปดํฌ๋ํธ | ๊ตฌํ ์ญํ | UNIX API ํต์ฌ | ๊ด๋ จ ๋ด์ฉ |
| Client | ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๊ณ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์์ ํฉ๋๋ค. | FIFO (mkfifo) |
๊ด์ ์์คํ , ํธ๋ ์ด๋ฉ ๋ชจ๋ํฐ๋ง |
| Server | ์ค์ ์ ์ด ์ฅ์น๋ก Client์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ Worker/Monitor ํ๋ก์ธ์ค๋ฅผ ์์ฑ ๋ฐ ๊ด๋ฆฌํฉ๋๋ค. | fork, exec, waitpid, sigaction | ๊ฑฐ๋์์ ์ค์ ์ฒ๋ฆฌ ์์ง (Matching Engine) |
| Analysis Worker |
์ค์ ๊ธ์ต ๋ฐ์ดํฐ ํ์ผ์ ๋ถ์ํ๋ฉฐ ์ด์ ์งํ๋ฅผ ๊ฐ์งํฉ๋๋ค. pthread๋ฅผ ์ด์ฉํด ํ์ผ I/O ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ณ๋ ฌ๋ก ์ํํฉ๋๋ค. | Pthread (๋ณ๋ ฌ ์ฒ๋ฆฌ), ํ์ผ I/O (open/read) | ๋ถ์ ๊ฑฐ๋ ๊ฐ์ง ์์คํ (FDS), ๊ณ ๋น๋ ๊ฑฐ๋(HFT) ๋ถ์ |
| System Monitor |
- CPU/๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ธก์ ํ์ฌ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์ค์๊ฐ์ผ๋ก ๊ธฐ๋กํฉ๋๋ค. | mmap (๊ณต์ ๋ฉ๋ชจ๋ฆฌ), sysconf, /proc ํ์ผ I/O | ์๋ฒ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ์์คํ , ์์ ๊ด๋ฆฌ |
3. ์ฌ์ฉ ๊ธฐ์
| ๊ตฌํ ์ฌ์ฉ API | ์ ์ฉ๋๋ ๋ชจ๋ |
| opendir, readdir, open, read, write | Worker, Monitor |
| sysconf | Monitor |
| getpid, getppid | Server (๋ก๊ทธ ๋ฐ ๊ด๋ฆฌ) |
| fork(), exec(), waitpid() | Server (Worker ๋ฐ Monitor ์์ฑ/๋๊ธฐํ) |
| sigaction(), kill() | Server (์์ ์ข ๋ฃ ๋ฃจํด, SIGINT ์ฒ๋ฆฌ) |
| mmap(), munmap() | IPC 1: Monitor ↔ Server (์์คํ ์ํ ๊ณต์ ) |
| mkfifo(), open(), read(), write() | IPC 2: Client ↔ Server (๋ช ๋ น/์๋ฆผ ์ ๋ฌ) |
| pthread_create(), pthread_join() | Worker (๋ฐ์ดํฐ ๋ณ๋ ฌ ๋ถ์) |
4. ์ฌ์ฉ ๋ฉ๋ด์ผ
1) ๋น๋
$ make
2) ํ ์คํธ ๋ฐ์ดํฐ ์์ฑ
# ์ผ๋ฐ ํ
์คํธ (10๋ง ๊ฑด)
$ make data
# ๋์ฉ๋ ํ
์คํธ (100๋ง ๊ฑด)
$ make data-large
์์ฑ๋๋ ๋ฐ์ดํฐ ํ์:
csv ํ์ผ๋ก [Time,StockID,Type,Price,Quantity,Amount] ํํ๋ก ์์ฑ๋๋ค.
| ์์ |
| 10:23:45,S1042,B,5320,150,798000 10:23:46,S1015,S,8950,25000,223750000 # ์ด๋๋ ๊ฑฐ๋ (์ด์ ์งํ) |
3) ์์คํ ์คํ
ํฐ๋ฏธ๋ 1 - Server ์คํ:
./server
ํฐ๋ฏธ๋ 2 - Client ์คํ:
./client
4) ๋ช ๋ น์ด ์ฌ์ฉ
Client์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ช ๋ น์ด:
> analyze trade_log.csv 4 # 4๊ฐ ์ค๋ ๋๋ก ๋ถ์ ์์
> status # ์์คํ
์ํ ์กฐํ
> help # ๋์๋ง ํ์
> exit # ์์คํ
์ข
๋ฃ
5. ์ฌ์ฉ ์
1) ๊ฐ์ ๋ฐ์ดํฐ ์์ฑ
| $ make data โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Generating Test Financial Trade Data โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ DATA_GEN: Generating 100000 records to 'trade_log.csv'... DATA_GEN: [ANOMALY] Generating HFT pattern at 00:15:32 for Stock S1045 (15 trades) DATA_GEN: [ANOMALY] Generating sell pressure at 00:42:18 for Stock S1067 (40 sells, 10 buys) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Data Generation Complete! โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Total records: 100000 Anomalies injected: - Massive trades: 982 - HFT patterns: 95 (total 1425 trades) - Sell pressure patterns: 88 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
![]() ![]() |
2) ์ปดํ์ผ ๋ฐ ์คํ
| > analyze trade_log.csv 4 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ ANOMALY DETECTION ANALYSIS STARTED โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ [SERVER] Worker (PID 12345) analyzing 'trade_log.csv' with 4 threads... [SERVER] Please wait for analysis completion... WORKER (TID 1): Analysis complete. Anomalies: Massive=245, HFT=23, SellPressure=22 WORKER (TID 2): Analysis complete. Anomalies: Massive=248, HFT=25, SellPressure=21 WORKER (TID 3): Analysis complete. Anomalies: Massive=241, HFT=24, SellPressure=23 WORKER (TID 4): Analysis complete. Anomalies: Massive=248, HFT=23, SellPressure=22 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ FINANCIAL ANOMALY DETECTION ANALYSIS REPORT โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Worker PID: 12345 | Threads: 4 | Status: SUCCESS Maximum Trade Amount: $224450000 --- Anomaly Summary --- • Massive Trades: 982 detected • High-Frequency Trading Patterns: 95 detected • Abnormal Sell Pressure: 88 detected • Total Anomalies: 1165 --- Detailed Anomalies (First 20) --- [Massive Trade] Massive trade detected: Stock S1015, Type: S, Amount: $223750000 at 10:23:46 [High-Frequency Trading] Stock S1045: 15 trades within 1 second at 00:15:32 [Abnormal Sell Pressure] Stock S1067: Abnormal sell pressure (Sell:Buy = 40:10, ratio: 4.00) ... |
![]() ![]() |
3) ์ํ ์กฐํ
| > status โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ REAL-TIME SYSTEM STATUS โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Last Updated: Thu Dec 05 15:30:42 2025 CPU Usage: 45.30% Memory: 62.15% used (3842156 KB free / 10156032 KB total) Active Worker: None (Idle) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
![]() ![]() ![]() |
์ฒจ์ธ
'6. CS ๊ธฐ์ด ๐ > Linux & Unix ๐ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Linux/Unix][12-1] ํ์ดํ (0) | 2025.12.08 |
|---|---|
| [Linux/Unix] [11] ์๊ทธ๋ (0) | 2025.12.08 |
| [Linux/Unix] [10] Pthread (0) | 2025.12.08 |
| [Linux/Unix] [09] ํ๋ก์ธ์ค (0) | 2025.12.08 |
| [Linux/Unix][8-2] (1) | 2025.11.11 |






