자격증 정복/임베디드기사(기능사)

임베디드기사 실기 10 — 커널 프로그래밍 ② (워킹셋·스레싱·메모리 할당·파일시스템·소켓)

올드 IT직장인 2026. 11. 1. 02:54

임베디드기사 실기 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)로 이어갑니다!

 

궁금한 점은 댓글로 남겨주세요!

반응형