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

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

올드 IT직장인 2026. 8. 14. 17:28

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

3과목 [3-1] 파트입니다.
교착상태 4조건, 은행가 알고리즘, HRN 공식은 매 회차 출제돼요.
기출 검증 완료된 함정 문제들을 정확히 정리했습니다.


OS 기본개념

OS 분류

실시간 OS (RTOS)
  → 정해진 시간 안에 작업 처리 보장
  → Hard 실시간: 반드시 지켜야 함 (항공, 의료)
  → Soft 실시간: 지연 허용 가능
  → VxWorks, QNX, FreeRTOS

분산 OS
  → 여러 컴퓨터가 하나의 시스템처럼 동작
  → 사용자에게 단일 시스템으로 보임

네트워크 OS
  → 각 컴퓨터가 독자적인 OS 보유
  → 네트워크로만 연결 (분산OS와 차이!)

 

자원관리자 (Resource Manager)

OS의 핵심 역할: CPU·메모리·디스크·네트워크 자원을 효율적으로 배분

과정: 자원 상태 파악 → 분배 정책 수립 → 정책 수행 → 자원 회수

⚠️ "라이브러리 함수 생성"은 커널의 역할이 아님!

프로세스 관리

프로세스 vs 스레드

프로세스
  → 실행 중인 프로그램 (PCB에 상태 저장)
  → 독립적인 메모리 공간

스레드
  → 프로세스 내 실행 단위
  → 공유: 코드/데이터/힙
  → 독립: 스택/레지스터/PC (각자 따로!)

 

프로세스 상태 ⭐

생성 → 준비 → 실행 → 완료
              ↓
             대기 (I/O 요청)
              ↓ (I/O 완료)
             준비

전이 명칭:
  준비→실행: 디스패치
  실행→준비: 선점/타임아웃
  실행→대기: 블록(I/O요청)
  대기→준비: 웨이크업

 

리눅스 프로세스 상태 ⭐ (함정 주의!)

실행(Running), 대기(Sleep/Waiting), 좀비(Zombie)

⚠️ "복구(restore)"는 프로세스 상태가 아님! (오답)

 

좀비 프로세스 vs 고아 프로세스:

좀비: 자식이 종료됐지만 부모가 wait()로 회수 안 한 상태
고아: 부모가 먼저 종료 → init 프로세스가 새 부모 담당

 

문맥 교환 (Context Switching)

현재 실행 프로세스 상태 저장 → 다음 프로세스 상태 복구

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

CPU 스케줄링 ⭐⭐⭐

스케줄링 선택 기준

CPU 이용률, 처리율(Throughput), 응답시간, 반환시간, 대기시간

⚠️ "대입 시간"은 CPU 스케줄링 선택 기준이 아님!

 

비선점 스케줄링

 

FCFS (First Come First Served)

도착 순서대로 처리
단점: 호위 효과 (긴 작업 뒤에 짧은 작업이 오래 기다림)

 

SJF (Shortest Job First)

실행 시간 짧은 것 먼저
장점: 평균 대기시간 최소
단점: 기아(Starvation) 현상 — 긴 작업은 무한 대기

 

HRN (Highest Response-ratio Next) ⭐⭐

SJF의 기아 보완 기법

우선순위 = (대기시간 + 서비스시간) / 서비스시간

⚠️ 분모가 "서비스시간" — "(대기시간+서비스시간)/대기시간"은 오답!

 

선점 스케줄링

 

라운드 로빈 (Round Robin) ⭐⭐

시간 할당량(Time Quantum)만큼 실행 후 교체
모든 프로세스에 공평성 제공

⚠️ "실행 시간이 긴 프로세스에 유리하다" → 오답!
   (라운드 로빈은 공평성이 목적)

시간 할당량이 크면 → FCFS와 유사
시간 할당량이 작으면 → 문맥 교환 오버헤드↑

 

SRT (Shortest Remaining Time)

남은 실행 시간이 가장 짧은 것 선점
SJF의 선점 버전

 

기출 문제

Q. 선점 스케줄링 방식은?

A. SRT (FCFS, SJF, HRN은 모두 비선점)

 

Q. HRN 우선순위 계산식은?

A. (대기시간 + 서비스시간) / 서비스시간 (분모는 서비스시간!)


병행성 제어

상호배제 (Mutual Exclusion)

임계 구역(Critical Section): 공유 자원에 접근하는 코드 영역
→ 한 번에 하나의 프로세스만 접근 가능

핵심 원칙:
  임계 구역 안의 작업은 신속하게 끝내야 함!

⚠️ "임계 구역 수행 중인 프로세스를 인터럽트 가능하게" → 오답!

 

세마포어 (Semaphore) ⭐

P 연산 (wait/down): 세마포어 값 1 감소 (자원 획득)
V 연산 (signal/up): 세마포어 값 1 증가 (자원 반환)

시험에서: "P/V 연산으로 프로세스 동기 유지" → 세마포어

 

교착상태 (Deadlock) 4조건 ⭐⭐⭐

1. 상호배제 (Mutual Exclusion)
   → 자원을 한 번에 하나의 프로세스만 사용

2. 점유대기 (Hold & Wait)
   → 자원을 가진 채로 다른 자원을 기다림

3. 비선점 (Non-Preemption)
   → 자원을 강제로 빼앗을 수 없음

4. 환형대기 (Circular Wait)
   → 프로세스들이 원형으로 서로의 자원을 기다림

⚠️ 4가지 모두 성립해야 교착상태 발생
⚠️ "선점"은 교착상태 조건이 아님! (오히려 방지 방법)
⚠️ "자원요청"도 교착상태 조건이 아님!

 

교착상태 대처방법 ⭐⭐

방법 설명
예방(Prevention) 4조건 중 하나를 원천 차단 → 자원 낭비 가장 큼
회피(Avoidance) 안전한지 확인 후 자원 할당 → 은행가 알고리즘
발견(Detection) 발생 허용 후 탐지
복구(Recovery) 프로세스 강제 종료 또는 자원 선점
⚠️ "교착상태 프로세스를 역으로 진행시킨다" → 교착상태 처리 방법 아님!
⚠️ "Elimination" → 표준 대처방법 아님!

 

은행가 알고리즘 ⭐⭐

교착상태 회피(Avoidance) 기법 — 다익스트라 제안

자원 할당 전 안전 상태인지 검사

데이터 구조:
  Available — 현재 사용 가능한 자원 수 (1×m 벡터)
  Max       — 각 프로세스의 최대 자원 요구량 (n×m 행렬)
  Allocation — 현재 할당된 자원 수 (n×m 행렬)
  Need      — 앞으로 더 필요한 자원 수 (n×m 행렬)

⚠️ "Available은 n×m 행렬" → 오답! (1×m 벡터)

 

기출 문제

Q. 교착상태 필수 조건으로 거리가 먼 것은?

A. 선점 (또는 자원요청) — 실제 4조건: 상호배제/점유대기/비선점/환형대기

 

Q. 은행가 알고리즘은 교착상태 해결방법 중 어디에 해당하는가?

A. 회피(Avoidance)


메모리 관리

가상 메모리 ⭐

32비트 프로세서 → 각 프로세스 가상 주소 공간 = 4GB (2³²)

mlock() — 메모리를 물리 메모리에 고정 (스왑 방지)
⚠️ "mlock()이 메모리를 읽기 전용으로 만든다" → 오답!
   읽기 전용 = mprotect()

ioremap() — 물리 주소를 커널 가상 주소 공간으로 매핑

스래싱(Thrashing) = 페이지 교체에 시간을 다 쓰는 현상

파일시스템

/etc/fstab — 장치명·마운트 디렉토리·파일시스템 타입 정보

fsck — 파일시스템 점검·수리
  -A 옵션: /etc/fstab에 표시된 모든 파일시스템 점검
⚠️ "-A 옵션이 /etc/mtab 파일 기준" → 오답! (/etc/fstab이 정확)

quota — 사용자·그룹 디스크 할당량 제한 명령어

💡 실무에서는?

교착상태는 Oracle DB 트랜잭션에서 행(row) 잠금이 서로 물릴 때 가장 많이 봐요. DBA가 "Dead Lock 발생"을 알리면 은행가 알고리즘처럼 어느 세션을 강제 종료(kill)해서 자원을 해제시키는 게 기본 대응이에요. mlock()은 HSM(보안 키 관리 장비)에서 암호화 키를 스왑 파일로 빠져나가지 않도록 고정할 때 씁니다.


핵심 정리

✅ RTOS=시간보장 / 분산OS=단일처럼 / 네트워크OS=독자적OS+연결
✅ "라이브러리함수생성"=커널역할 아님
✅ "복구"=프로세스 상태 아님
✅ 좀비=부모가 wait()안함 / 고아=부모먼저종료
✅ 스케줄링 선택기준에 "대입시간" 없음
✅ HRN=(대기+서비스)/서비스 (분모=서비스시간!)
✅ "라운드로빈=긴프로세스유리"→오답! (공평성이 목적)
✅ SRT=선점 / FCFS·SJF·HRN=비선점
✅ 교착상태 4조건: 상호배제/점유대기/비선점/환형대기
✅ "선점"은 교착상태 조건 아님!
✅ 은행가알고리즘=회피(Avoidance)
✅ Available=1×m 벡터 (n×m 행렬 아님!)
✅ mlock()=스왑방지 (읽기전용 아님!)
✅ /etc/fstab=장치·마운트·파일시스템타입

 

다음 편에서는 리눅스 커널 프로그래밍 — chmod·파일시스템·RAID·LVM으로 이어갑니다!

 

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

 

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

 

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

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

tech.seanney.pe.kr

2026.08.11 - [자격증 정복/임베디드기사(기능사)] - 임베디드기사 필기 07 — 임베디드 펌웨어 ② OS 포팅 (커널소스트리·리눅스부팅·runlevel·busybox)

 

임베디드기사 필기 07 — 임베디드 펌웨어 ② OS 포팅 (커널소스트리·리눅스부팅·runlevel·busybox)

임베디드기사 필기 07 — 임베디드 펌웨어 ② OS 포팅 (커널소스트리·리눅스부팅·runlevel·busybox)2과목 [2-2] OS 포팅 파트입니다.커널소스트리 디렉토리와 runlevel은 리눅스마스터 1급과 겹치는 최빈

tech.seanney.pe.kr

 

반응형