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

임베디드기사 필기 10 — 임베디드 플랫폼 ② 리눅스 커널 프로그래밍(시그널·VFS·RAID·메모리매핑)

올드 IT직장인 2026. 8. 14. 18:20

임베디드기사 필기 10 — 임베디드 플랫폼 ② 리눅스 커널 프로그래밍(시그널·VFS·RAID·메모리매핑)

3과목 [3-2] 리눅스 커널 프로그래밍 파트입니다.
시그널 함수, arch/init 함정, 메모리 사상 입출력은 반복 출제돼요.


커널 소스트리 재정리 ⭐⭐ (함정 주의!)

arch    — 플랫폼에 종속적인 코드 (부팅·시그널·클록)
init    — 하드웨어에 독립적인 커널 초기화 루틴
kernel  — 하드웨어에 독립적인 시스템 콜·관리 루틴
drivers — 디바이스 드라이버
include — 헤더 파일

⚠️ "arch가 플랫폼에 독립적인 코드" → 오답! (종속적)
⚠️ "init이 하드웨어에 종속적인 코드" → 오답! (독립적)

fork() COW (Copy-On-Write) ⭐

fork() 직후 → 부모와 자식이 같은 물리 메모리 공유
실제 쓰기 시도 시 → 그때 비로소 페이지 복사

"복제된 프로세스의 메모리가 달라지는 시점까지
 메모리 복사를 미룬다" → 옳은 설명!

시그널 (Signal) ⭐⭐⭐

주요 시그널

시그널 발생 조건
SIGINT Ctrl+C
SIGQUIT Ctrl+\
SIGTSTP Ctrl+Z (일시 정지)
SIGTERM 정상 종료 요청 (kill 전에 먼저 시도)
SIGPIPE 연결 종료된 소켓/파이프에 send/write
SIGCHLD 자식 프로세스 종료/정지 시 부모에게 전송
⚠️ "SIGHUP은 Ctrl-S에서 발생" → 오답!
   (Ctrl-S는 터미널 출력 일시 정지, SIGHUP과 무관)
   SIGHUP = 터미널 연결 끊김

⚠️ "중복 시그널은 큐에 저장된다" → 오답!
   (표준 시그널은 중복 시 병합됨, 횟수 보존 안 됨)

 

시그널 처리 함수

signal()      — 구형 함수, 이식성 문제
sigaction()   — 표준(POSIX) 핸들러 등록 함수 (signal 대체)
sigprocmask() — 시그널 봉쇄(block) 시스템 호출
sigpending()  — 지연된(pending) 시그널 확인

"signal() → sigaction()으로 대체해야 한다" → 옳은 설명!
"sigprocmask() = 시그널 봉쇄" → 옳은 설명!
"sigpending() = 지연 시그널 확인" → 옳은 설명!

 

SIGCHLD 상세 ⭐

자식 프로세스 종료/정지 시 부모에게 자동 전송
부모가 wait() 안 하면 → 좀비(Zombie) 프로세스 발생

⚠️ "자식 종료 상태를 부모에게 보내지 않는다" → 오답!
   (자동 전송됨)
⚠️ "자식 결함이 부모에게 전파된다" → 오답!
   (스레드는 전파되나 프로세스는 전파 안 됨)

SIGTERM 특이사항:
  kill 시그널 보내기 전에 먼저 SIGTERM을 전송하는 것이 일반적 절차

 

기출 문제

Q. kill 시그널이 전송되기 전에 일반적으로 전송되는 시그널은?

A. SIGTERM

 

Q. 소켓 통신 중 연결이 종료된 소켓에 send를 시도할 때 발생하는 시그널은?

A. SIGPIPE


/proc 파일시스템 ⭐⭐

가상 파일시스템 — 실제 디스크에 없음, 메모리 상에만 존재
커널이 실시간으로 만들어내는 정보

주요 파일:
  /proc/partitions  — 파티션 정보
  /proc/modules     — 적재된 커널 모듈 목록 (lsmod가 참조)
  /proc/ioports     — 사용 중인 I/O 포트 영역
  /proc/misc        — misc 드라이버 목록

"블록 디바이스가 아닌 메모리상에 위치하는 파일시스템" → proc

메모리 관리

메모리 매핑 ⭐

mmap()    — 파일이나 메모리를 가상 주소 공간에 대응
            공유 메모리 IPC에도 활용
ioremap() — 물리 주소(하드웨어 레지스터)를 커널 가상 주소로 매핑

"파일이나 메모리를 가상 프로세스 공간에 대응,
 공유메모리 통신 프로그램 작성에 이용" → mmap()!

 

문맥 교환과 인터럽트

⚠️ "인터럽트 처리는 문맥 교환 없이 가능하다" → 오답!
   인터럽트도 문맥 저장·복구를 수반함

jiffies — 커널 부팅 후 타이머 인터럽트 횟수를 세는 카운터
          제한 시간 관리 기준으로 사용

디바이스 관리

메모리 사상 입출력 (Memory-Mapped I/O) ⭐⭐

메모리와 디바이스가 같은 하나의 주소 공간 공유
일반 메모리 명령어로 디바이스 접근 가능

⚠️ "메모리와 디바이스가 별도의 주소 공간을 사용" → 오답!
   (별도 주소 = Isolated I/O 방식)

적용: ARM, M68K, PowerPC, MIPS 등

 

디바이스 드라이버

하드웨어 자원은 한 드라이버가 독점 사용
⚠️ "동일 자원을 다른 목적으로 사용 가능" → 오답!

I/O 영역 등록: request_region()
사용 중인 I/O 영역 확인: /proc/ioports

파일시스템

VFS (Virtual File System)

서로 다른 파일시스템(ext4, FAT, NFS)을 하나의 인터페이스로
open/read/write/close 등 표준 인터페이스로 통일

 

LVM vs RAID ⭐⭐

 

LVM (Logical Volume Manager):

물리 디스크를 논리 볼륨으로 유연하게 관리
크기 조정 가능
단점: 복구 어려움!

 

RAID:

레벨 방식 특징
RAID 0 스트라이핑 빠른 I/O, 고장 대비 없음
RAID 1 미러링 완전 동일 복사
RAID 5 패리티 분산 (N-1)×S 가용 용량
RAID 6 패리티 2개 2개 디스크 동시 오류 허용

 

RAID-5 가용 용량 계산:

가용 용량 = (N-1) × S
예: 4개×100GB → (4-1)×100 = 300GB

 

JFS (Journaled File System)

저널링(Journaling) — 변경 사항을 로그에 먼저 기록
비정상 종료 시 빠른 복구 가능
ext3, ext4도 같은 저널링 계열

TCP/IP 스택

TCP/IP 4계층 ↔ OSI 7계층
응용계층      ↔ 응용/표현/세션
전송계층(TCP) ↔ 전송
인터넷계층(IP) ↔ 네트워크
링크계층      ↔ 데이터링크/물리

💡 실무에서는?

RAID는 인프라 SI에서 스토리지 설계의 핵심이에요. 보안 로그 서버에는 RAID-5나 RAID-6으로 안정성을 확보하고, 고성능이 필요한 DB 서버에는 RAID-0+1을 씁니다. mmap()은 대용량 로그 파일을 빠르게 분석할 때 파일을 메모리에 올려서 처리하는 방식으로 씁니다. SIGTERM→SIGKILL 순서로 프로세스를 종료하는 건 리눅스 서버 관리의 기본이에요.


핵심 정리

✅ arch=종속적 / init=독립적 (뒤바꾸면 오답!)
✅ COW=쓰기 시점에 복사 (미루기)
✅ SIGTERM=kill 전에 먼저 / SIGPIPE=끊긴소켓에 send
✅ SIGCHLD=자식종료시 부모에게 자동 전송
✅ "SIGHUP=Ctrl-S" → 오답!
✅ signal()→sigaction() 대체
✅ sigprocmask()=봉쇄 / sigpending()=지연확인
✅ /proc = 메모리상 가상 파일시스템
✅ mmap()=가상공간매핑/공유메모리IPC
✅ "인터럽트=문맥교환없이" → 오답!
✅ jiffies=타이머 인터럽트 카운터
✅ Memory-Mapped I/O=같은주소공간 ("별도주소"=오답!)
✅ "동일자원 다른목적 사용가능" → 오답!
✅ RAID-5 = (N-1)×S
✅ LVM 단점 = 복구 어려움

 

다음 편에서는 시스템 및 네트워크 프로그래밍 — TCP소켓·pthread·IPC·서브넷으로 이어갑니다!

 

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

 

2026.08.14 - [자격증 정복/임베디드기사(기능사)] - 임베디드기사 필기 09 — 임베디드 플랫폼 ① OS·프로세스관리·스케줄링·병행성제어

 

임베디드기사 필기 09 — 임베디드 플랫폼 ① OS·프로세스관리·스케줄링·병행성제어

임베디드기사 필기 09 — 임베디드 플랫폼 ① OS·프로세스관리·스케줄링·병행성제어3과목 [3-1] 파트입니다.교착상태 4조건, 은행가 알고리즘, HRN 공식은 매 회차 출제돼요.기출 검증 완료된 함

tech.seanney.pe.kr

2026.08.12 - [자격증 정복/임베디드기사(기능사)] - 임베디드기사 필기 08 — 임베디드 펌웨어 ③ 디바이스 드라이버 개발

 

임베디드기사 필기 08 — 임베디드 펌웨어 ③ 디바이스 드라이버 개발

임베디드기사 필기 08 — 임베디드 펌웨어 ③ 디바이스 드라이버 개발 (module_init·세마포어·뮤텍스·워치독)2과목 ③ 디바이스 드라이버 개발 파트입니다.세마포어 vs 뮤텍스 차이는 필기·실기

tech.seanney.pe.kr

 

반응형