임베디드기사 실기 10 — 커널 프로그래밍 ② (워킹셋·스레싱·메모리 할당·파일시스템·소켓)
출제기준 3-2: 임베디드 커널 프로그래밍하기 (후반부)
워킹셋은 4번, 최적 적합 계산은 2번, TCP 소켓은 최근 2022·2023·2025 연속 출제!
정의형 + 계산형 + 순서형이 한 단원에 모여 있어요.
📎 필기 시리즈의 메모리 관리·네트워크 프로그래밍 편과 함께 보면 좋아요. (링크 추가 예정)
실기 출제 포인트 ⭐⭐⭐
| 키워드 | 핵심 내용 | 빈도 | 기출 |
| 워킹셋 / 스레싱 | 자주 참조하는 페이지 집합 / 페이지 교체 과다 | ⭐⭐⭐ | 워킹셋 2016 Q13, 2018, 2023 Q15, 2024 Q16 스레싱 2020 Q14, 2024 Q14 |
| 페이징 / 세그멘테이션 | 고정 길이 vs 가변 길이 분할 | ⭐⭐ | 2017 Q12, 2021 |
| 최적 적합 (Best-fit) | 가장 작은 적합 빈 공간 선택 | ⭐⭐ | 2016 Q6, 2019 Q10 |
| 파일시스템 | JFFS2, YAFFS, Btrfs, VFS, LVM/RAID | ⭐⭐ | 2020 Q12, 2022 Q9 |
| TCP 소켓 시퀀스 | socket → bind → listen → accept (서버) | ⭐⭐⭐ | 2022 Q11, 2023 Q10 |
| TCP 3-way / 4-way | 연결 수립·해제 | ⭐ | 2025 Q13 |
| UDP / TFTP | 비연결형, TFTP = UDP 69 | ⭐ | 2017 Q9 |
키워드 박스 — 답안에 반드시 들어가야 할 단어
워킹셋 : 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합 (메모리에 유지)
스레싱 : 페이지 부재가 빈번 → 페이지 교체 시간이 처리 시간보다 커져 성능 급락
페이징 : 고정 길이로 분할 / 세그멘테이션 : 가변 길이(논리 단위)로 분할
최적 적합: 요청 이상인 빈 공간 중 가장 작은 곳
JFFS2 : NAND 플래시용 로그 구조 저널링 파일시스템
TCP 서버 : socket → bind → listen → accept → close / 클라이언트 : socket → connect → close
워킹셋과 스레싱 ⭐⭐⭐
기출 (2016 Q13 = 2023 Q15 동일) 자주 사용하는 페이지를 주기억장치에 유지하는 페이지의 집합은?
→ 워킹 세트 (Working Set)
기출 (2020 Q14 = 2024 Q14 동일) 페이지 부재가 빈번하게 발생하여 CPU가 프로세스 수행보다 페이지 교체에 더 많은 시간을 소요해 시스템이 느려지는 비정상적인 현상은?
→ 스레싱 (Thrashing)
| 구분 | 워킹셋 (Working Set) | 스레싱 (Thrashing) |
| 정의 | 프로세스가 일정 시간 동안 자주 참조하는 페이지의 집합 | 페이지 교체에 소요되는 시간이 처리 시간보다 많아지는 현상 |
| 성격 | 이를 메모리에 유지하는 해결책 | 메모리 부족으로 생기는 문제 현상 |
| 이론 | 국소성(Locality) 이용 (Denning) | 메모리 부족 → 페이지 부재 증가 → 디스크 I/O 반복 → 처리량 급감 |
스레싱 발생 흐름
메모리 부족 → 페이지 부재 증가 → 페이지 교체(디스크 I/O) 반복 → CPU 대기 증가 → 처리량 급감
⚠️ 함정: 정의를 서로 바꿔 쓰는 실수가 가장 많아요.
"자주 쓰는 페이지의 집합" = 워킹셋, "교체에 시간을 다 쓰는 현상" = 스레싱.
페이징 vs 세그멘테이션 ⭐⭐
기출 (2017 Q12) 가상 기억장치 공간 할당에서 고정 길이와 가변 길이를 수행하는 것은?
→ 페이징(Paging) / 세그멘테이션(Segmentation)
| 구분 | 페이징 | 세그멘테이션 |
| 분할 단위 | 동일한 고정 크기 블록(Page) | 논리적 구조에 따라 가변 크기 블록(Segment) |
| 단편화 | 내부 단편화 발생 가능 | 외부 단편화 발생 가능 |
페이지 수 계산(영역 ÷ 페이지 크기)과 주소 분해는 3편(1-2)에서 다뤘어요.
메모리 할당 전략 — 최적 적합 ⭐⭐
기출 (2016 Q6 = 2019 Q10 동일) 다음과 같이 할당되어 있을 때 15kb를 Best fit으로 할당할 경우 할당될 영역은?
| 영역 | 크기 | 할당 상태 |
| A | 15kb | 할당됨 |
| B | 10kb | 할당 안 됨 |
| C | 25kb | 할당됨 |
| D | 30kb | 할당 안 됨 |
| E | 40kb | 할당됨 |
| F | 20kb | 할당 안 됨 |
| G | 5kb | 할당됨 |
풀이
1. 빈(할당 안 됨) 영역만 후보: B(10), D(30), F(20)
2. 15kb 이상인 곳: D(30) → 남는 공간 15kb / F(20) → 남는 공간 5kb (B는 부족)
3. Best-fit = 그중 가장 작은 곳 = F
→ 정답: F
First / Best / Worst 비교 (응용)
같은 표에서 전략만 바꾸면 이렇게 돼요. (직접 계산한 응용 예시)
| 전략 | 선택 기준 | 15kb 요청 결과 |
| First-fit | 앞에서부터 처음 만나는 충분한 빈 공간 | D (B는 부족, D가 처음 충분) |
| Best-fit | 충분한 빈 공간 중 가장 작은 곳 | F |
| Worst-fit | 충분한 빈 공간 중 가장 큰 곳 | D |
⚠️ 함정: 표에 A(15kb)처럼 크기가 딱 맞는 영역이 "할당됨" 으로 섞여 있어요.
할당된 영역은 후보에서 먼저 제외하세요!
파일시스템 ⭐⭐
기출 (2022 Q9) 플래시 메모리를 위해 개발된 임베디드 리눅스 파일시스템으로, 로그 구조 기반의 NAND 플래시용 저널링 파일시스템은?
→ JFFS2 (Journalling Flash File System version 2)
기출 (2020 Q12) 리눅스 기반의 포맷 방식을 사용하는 파일시스템으로, 데이터 관리와 안정성 확보를 강화했고 시놀로지 등 리눅스 기반 제품에서 사용되는 것은?
→ Btrfs (B-tree File System)
| 파일시스템 | 특징 |
| JFFS2 | 플래시용 로그 구조 저널링 파일시스템 (MTD 위에서 동작) |
| YAFFS | NAND 플래시용 로그 구조 파일시스템 |
| Btrfs | Copy-on-Write, 스냅샷, RAID 지원으로 데이터 무결성 강화 |
| VFS | 여러 파일시스템을 같은 인터페이스로 다루게 하는 가상 파일시스템 계층 |
플래시 계층 구조: 플래시 메모리 → MTD(파티션) → JFFS2 / YAFFS 같은 플래시 파일시스템
(MTD/FTL은 5편에서 정리)
RAID-5 가용 용량 (기출 없음 — 보강)
가용 용량 = (N − 1) × S (N: 디스크 수, S: 디스크 1개 용량)
예) 4TB 디스크 4개 → (4 − 1) × 4TB = 12TB
TCP 소켓 프로그래밍 ⭐⭐⭐
서버와 클라이언트 시퀀스
서버 : socket() → bind() → listen() → accept() → (통신) → close()
클라이언트: socket() → connect() ───────────────────→ (통신) → close()
| 단계 | 함수 | 역할 |
| 1 | socket() |
소켓 생성 |
| 2 | bind() |
소켓에 IP:Port 주소 할당 |
| 3 | listen() |
연결 요청 대기 상태로 전환 |
| 4 | accept() |
클라이언트 연결 수락 |
| (클라이언트) | connect() |
서버에 연결 요청 — accept()와 짝 |
| 5 | close() |
소켓 종료 |
기출 (2022 Q11) TCP 서버 소켓 시퀀스: socket() → (______) → listen() → accept() → close()
→ bind()
기출 (2023 Q10) 그림을 보고 빈칸을 채우시오. (서버·클라이언트 흐름도의 빈칸 (1)~(5))
→ 정리본 정답: (1) socket() (2) listen() (3) connect() (4) accept() (5) close()
/* TCP 서버 골격 */
int s = socket(AF_INET, SOCK_STREAM, 0);
bind(s, (struct sockaddr *)&addr, sizeof(addr));
listen(s, 5);
int c = accept(s, NULL, NULL);
/* 통신 ... */
close(c);
close(s);
⚠️ 함정
- connect()는 "클라이언트" 쪽 함수예요. 서버 시퀀스에 connect를 넣으면 오답!
- 공부할 때 socket→bind→listen→accept→connect→close 처럼 한 줄로 외우면
서버/클라이언트가 섞이므로, 두 줄(서버·클라이언트)로 나눠서 기억하세요.
- 2023 Q10은 그림형 문항이라 번호가 가리키는 위치(서버/클라이언트)를 먼저 확인
TCP 3-way / 4-way Handshake
기출 (2025 Q13) 3-Way Handshake에서 서버는 클라이언트의 시퀀스 번호에 ( ① )을 더한 값을 전달한다. 연결을 해제할 때는 ( ② ) Handshake가 사용된다.
→ ① 1 / ② 4-Way
3-way (연결 수립)
클라이언트 → 서버 : SYN (seq = x)
서버 → 클라이언트 : SYN + ACK (seq = y, ack = x + 1)
클라이언트 → 서버 : ACK (seq = x + 1, ack = y + 1)
4-way (연결 해제)
FIN → ACK → FIN → ACK
UDP와 TFTP
기출 (2017 Q9) UDP를 기반으로 하며 인증 기능 없이 간단한 파일 전송만을 지원하는 가벼운 프로토콜은?
→ TFTP (Trivial File Transfer Protocol), UDP 69번 포트
| 구분 | TCP | UDP |
| 연결 | 연결 지향 (핸드셰이크) | 비연결형 |
| 신뢰성 | 보장 (순서·재전송) | 보장 안 함 |
| 예시 | HTTP, FTP | DNS, TFTP, 스트리밍 |
기출 문제 모음
Q. 자주 사용하는 페이지를 주기억장치에 유지하는 페이지의 집합은? (2016·2023)
A. 워킹 세트
Q. 페이지 교체 시간이 처리 시간보다 많아져 시스템이 느려지는 현상은? (2020·2024)
A. 스레싱
Q. 가상 기억장치에서 고정 길이·가변 길이로 분할하는 기법은? (2017 Q12)
A. 페이징 / 세그멘테이션
Q. 15kb를 Best-fit으로 할당할 영역은? (2016·2019, 위 표)
A. F
Q. NAND 플래시용 로그 구조 저널링 파일시스템은? (2022 Q9)
A. JFFS2
Q. TCP 서버 socket() → ( ) → listen() → accept() → close() 의 빈칸은? (2022 Q11)
A. bind()
Q. TCP 3-way에서 ACK 번호 = 상대 시퀀스 번호 + ( ), 연결 해제는 몇 way? (2025 Q13)
A. 1 / 4-Way
💡 실무에서는?
- 스레싱 — 서버에서 스왑이 폭증하며 응답이 느려지는 상황이 스레싱의 실무 모습이에요.
vmstat의 si/so(스왑 입출력),free로 메모리와 스왑 사용량을 확인하고 메모리 증설이나 프로세스 조정으로 대응합니다. - 파일시스템/RAID — 스토리지 설계에서 RAID-5 가용 용량 계산, Btrfs 스냅샷 같은 기능 선택은 NAS·백업 구성의 기본 판단 기준이에요.
- 소켓 시퀀스 — 서비스가 포트를 안 열 때
bind/listen실패(포트 충돌)를 의심하고,ss -lntp로 LISTEN 상태를 확인하는 흐름이 이 시퀀스에서 나옵니다. - TCP 핸드셰이크 — 방화벽 정책, 패킷 캡처 분석(SYN만 오가고 ACK가 없을 때 등)에서 3-way/4-way는 매일 만나는 개념이에요.
핵심 정리
✅ 워킹셋 = 자주 참조하는 페이지 집합 / 스레싱 = 페이지 교체에 시간을 다 쓰는 현상
✅ 페이징 = 고정 길이 / 세그멘테이션 = 가변 길이
✅ Best-fit = 충분한 빈 공간 중 가장 작은 곳 (15kb → F) / 할당된 영역은 먼저 제외!
✅ JFFS2 = NAND 플래시용 로그 구조 저널링 FS / Btrfs = CoW·스냅샷·RAID
✅ TCP 서버 = socket → bind → listen → accept → close / 클라이언트 = socket → connect → close
✅ 3-way: SYN → SYN+ACK → ACK (ack = seq + 1) / 해제는 4-way
✅ TFTP = UDP 기반, 포트 69, 인증 없음
다음 편에서는 프로그램 분석·설계 — UML(출제기준 4-1)로 이어갑니다!
궁금한 점은 댓글로 남겨주세요!
'자격증 정복 > 임베디드기사(기능사)' 카테고리의 다른 글
| 임베디드기사 실기 09 — 커널 프로그래밍 ① (시스템 콜·pthread·뮤텍스/세마포어/스핀락·교착상태) (0) | 2026.10.31 |
|---|---|
| 임베디드기사 실기 08 — 임베디드 OS 이해 (커널 구조·소스 트리·PCB·리눅스 디렉터리·runlevel·chmod) (0) | 2026.10.30 |
| 임베디드기사 실기 07 — 디바이스 드라이버 작성 (module_init·mknod·printk·Makefile·EXPORT_SYMBOL) (0) | 2026.10.29 |
| 임베디드기사 실기 06 — 임베디드 OS 이해·포팅 (커널 빌드·부트로더·교차개발·크로스 컴파일) (0) | 2026.10.28 |
| 임베디드기사 실기 05 — 펌웨어 설계·구현·테스팅 (ELF·링커·스타트업 코드·부팅·플래시) (0) | 2026.10.27 |