로봇 소프트웨어 구조설계로봇미들웨어개발로봇 미들웨어 사양 분석
출제기준 좌표2·1·1·1
2과목 · 로봇 소프트웨어 구조설계

로봇 소프트웨어 운영체제

로봇미들웨어개발로봇 미들웨어 사양 분석
# 로봇소프트웨어구조설계
01

📌 개요

  • 미들웨어 분석의 출발점 = 그 아래에서 모든 것을 떠받치는 운영체제(OS, Operating System)
  • 로봇은 보통 상위 컴퓨터(계획·인지)와 하위 제어기(실시간 모터 구동)가 서로 다른 성격의 OS 사용 → 이 구분이 로봇 소프트웨어 구조의 출발점
  • 시험 출제 포인트: 범용 OS vs 실시간 OS(RTOS) 비교, 선점형 스케줄링, 우선순위 역전과 해결책, "ROS는 OS가 아니라 미들웨어"라는 함정
02

📖 핵심 개념

운영체제는 무엇을 하는가

  • 운영체제(OS) = 하드웨어 자원을 관리하고 응용 프로그램에 공통 서비스를 제공하는 기반 소프트웨어

  • 핵심 관리 기능 4가지:

  • 프로세스 관리: 어떤 프로그램에 CPU를 줄지 결정 (스케줄링)

  • 메모리 관리: 프로세스마다 메모리 공간을 배분·보호

  • 파일(저장장치) 관리: 데이터를 파일 형태로 저장·접근

  • 장치(입출력) 관리: 센서·모터·네트워크 등 주변장치와의 입출력 중개 (디바이스 드라이버)

응용 프로그램은 시스템 콜(System Call)이라는 표준 창구로 이 서비스들을 요청한다.

프로세스, 스레드, 스케줄링 — 최소 상식

  • 프로세스(Process): 실행 중인 프로그램. 각자 독립된 메모리 공간을 가진다
  • 스레드(Thread): 프로세스 안의 실행 흐름. 같은 프로세스의 스레드들은 메모리를 공유한다 (상세는 미들웨어 프로세스 관리)
  • 스케줄링(Scheduling): 준비된 여러 작업 중 누구에게 CPU를 줄지 정하는 규칙
    • 비선점형(Non-preemptive): 한 번 잡으면 스스로 내놓을 때까지 실행
    • 선점형(Preemptive): 더 급한(우선순위 높은) 작업이 준비되면 실행 중인 작업을 중단시키고 CPU를 빼앗는다
    • 대표 기법: 라운드 로빈(Round Robin, 시간 조각을 돌아가며 배분), 우선순위 스케줄링

범용 OS vs 실시간 OS (RTOS)

구분 범용 OS 실시간 OS (RTOS)
목표 평균 처리량·공평성·사용자 편의 데드라인 안의 응답 보장 (결정론)
스케줄링 공평 위주 시분할 우선순위 기반 선점형
응답 지연 비결정적 (편차 큼) 결정적 — 최악 지연이 한정(bounded)
Linux, Windows, macOS FreeRTOS, VxWorks, QNX, Zephyr
로봇에서 상위 제어기 (계획·인지·UI) 하위 제어기 (모터 제어, 안전)
  • 실시간의 의미 = "빠르다"가 아니라 "정해진 시간 안의 응답을 보장한다"임베디드 프로그래밍 특성에서 본 하드/소프트 실시간 구분이 그대로 적용
  • 하드 실시간: 모터 전류 루프처럼 한 번의 지연이 사고로 이어짐 / 소프트 실시간: 화면 갱신처럼 품질 저하에 그침

RTOS의 핵심 메커니즘

  • 우선순위 기반 선점형 스케줄링: 가장 급한 태스크가 항상 먼저 실행되도록 보장 — RTOS의 심장
  • 짧고 예측 가능한 인터럽트 지연(Interrupt Latency): 사건 발생부터 처리 시작까지의 최악 시간이 작고 일정
  • 태스크 간 통신·동기화 도구: 메시지 큐, 세마포어, 뮤텍스 (→ 미들웨어 프로세스 관리)
우선순위 역전 (Priority Inversion) — 단골 출제

낮은 우선순위 태스크(L)가 잡고 있는 자원(뮤텍스)을 높은 우선순위 태스크(H)가 기다리는 사이, 자원과 무관한 중간 우선순위 태스크(M)가 L을 선점해 버리면 — H가 M보다 뒤로 밀리는 역전이 일어난다. 화성 탐사선 패스파인더의 반복 리셋 사고로 유명해진 문제다. 해결책: 우선순위 상속(Priority Inheritance) — 자원을 쥔 L을 H의 우선순위로 잠시 승격 / 우선순위 천장(Priority Ceiling) — 자원 자체에 최고 우선순위를 미리 부여.

리눅스로 실시간을 — PREEMPT_RT와 이중 커널

  • 로봇 상위 제어기의 사실상 표준은 리눅스지만, 기본 리눅스는 하드 실시간을 보장하지 않음 → 실시간성이 필요한 상위 제어에는:

  • PREEMPT_RT 패치: 커널 내부까지 선점 가능하게 만들어 최악 지연을 크게 줄인 리눅스 실시간 확장

  • 이중 커널 방식(Xenomai 등): 실시간 마이크로커널을 리눅스와 나란히 두고 실시간 태스크를 그쪽에서 실행

로봇 시스템의 전형적 OS 구성 — 2계층

"빠른 보장이 필요한 일은 아래로, 무겁고 똑똑한 일은 위로"가 로봇 OS 구성의 기본 원칙이다.

"ROS는 운영체제인가?" — 이름에 속지 말 것

  • ROS(Robot Operating System)는 이름과 달리 운영체제가 아니다
  • CPU 스케줄링·메모리 관리 같은 OS 기능은 리눅스에 맡기고, 그 위에서 노드 간 통신·패키지 관리·개발 도구를 제공하는 미들웨어(프레임워크) (상세는 로봇 미들웨어 구조 설계)
  • "ROS가 OS 기능을 수행한다"는 선지는 오답
03

📊 다이어그램 · 수식

로봇 소프트웨어 스택에서 OS의 위치

DIAGRAM
flowchart TD
    APP["응용 계층
경로계획 · 인지 · 작업 로직"] MW["미들웨어 (ROS 등)
노드 통신 · 도구"] OS["운영체제 (Linux / RTOS)
스케줄링 · 메모리 · 장치 관리"] HW["하드웨어
CPU · 메모리 · 센서 · 모터"] APP --> MW --> OS --> HW

우선순위 역전의 진행

DIAGRAM
flowchart LR
    A["L(낮음)이
자원 획득"] --> B["H(높음) 실행 시도
→ 자원 대기로 블록"] B --> C["M(중간)이 L을 선점
→ L이 자원을 못 놓음"] C --> D["H가 M보다
뒤로 밀림 = 역전"] D -. "해결: L을 H 우선순위로
잠시 승격 (우선순위 상속)" .-> E["L이 자원 반납
→ H 즉시 실행"]
04

🎯 핵심 요약 · 암기 포인트

익힘 0 / 7카드를 눌러 뒤집고, 앞면에서 아는지 표시하세요.
Q · 1
운영체제의 4대 관리 기능은?
A
프로세스(CPU 스케줄링) · 메모리 · 파일(저장장치) · 장치(입출력) 관리
Q · 2
프로세스와 스레드의 차이는?
A
프로세스는 독립된 메모리 공간을 갖는 실행 단위, 스레드는 프로세스 안에서 메모리를 공유하는 실행 흐름
Q · 3
선점형(Preemptive) 스케줄링이란?
A
더 높은 우선순위 작업이 준비되면 실행 중인 작업을 중단시키고 CPU를 빼앗는 방식 — RTOS의 기본
Q · 4
RTOS와 범용 OS의 본질적 차이는?
A
RTOS는 데드라인 안의 응답을 보장(결정론적), 범용 OS는 평균 성능·공평성 위주라 지연이 비결정적
Q · 5
대표적인 RTOS 3가지는?
A
FreeRTOS, VxWorks, QNX (그 외 Zephyr 등)
Q · 6
우선순위 역전(Priority Inversion)이란?
A
낮은 태스크가 점유한 자원을 높은 태스크가 기다리는 동안, 중간 태스크가 끼어들어 높은 태스크의 실행이 밀리는 현상
Q · 7
우선순위 역전의 해결책 2가지는?
A
우선순위 상속(자원 점유 태스크를 잠시 승격), 우선순위 천장(자원에 최고 우선순위를 미리 부여)

리눅스에 실시간성을 부여하는 대표 방법은?::PREEMPT_RT 패치(커널 선점성 강화), Xenomai 같은 이중 커널 방식

로봇의 전형적 2계층 OS 구성은?::상위는 임베디드 PC의 리눅스+미들웨어(계획·인지), 하위는 MCU의 RTOS/베어메탈(실시간 모터 제어) ROS는 운영체제인가?::아니다 — 이름과 달리 리눅스 등 OS 위에서 동작하는 로봇 미들웨어(프레임워크)다

05

✏️ 예상문제

1. 실시간 운영체제(RTOS)의 특징으로 옳지 않은 것은?

① 우선순위 기반 선점형 스케줄링을 사용한다 ② 최악 응답 지연이 한정되어 있어 결정론적이다 ③ 모든 태스크에 공평하게 CPU를 배분하는 것이 최우선 목표다 ④ 인터럽트 지연이 짧고 예측 가능하다

정답 및 해설

정답: ③ 공평한 배분은 범용 OS의 목표다. RTOS는 공평성을 희생하더라도 급한 태스크의 데드라인을 보장하는 것이 최우선이며, 그래서 우선순위 선점형 스케줄링을 쓴다.

2. 낮은 우선순위 태스크가 점유한 뮤텍스를 높은 우선순위 태스크가 기다리는 동안, 중간 우선순위 태스크가 실행되어 높은 태스크가 계속 밀리는 상황이 발생했다. 이 현상과 해결 기법의 연결로 옳은 것은?

① 교착상태 — 은행가 알고리즘 ② 우선순위 역전 — 우선순위 상속 ③ 기아 상태 — 라운드 로빈 ④ 경쟁 상태 — 폴링 전환

정답 및 해설

정답: ② 전형적인 우선순위 역전(priority inversion) 시나리오다. 자원을 쥔 낮은 태스크를 높은 태스크의 우선순위로 잠시 승격시키는 우선순위 상속(priority inheritance)이 대표 해결책이며, 우선순위 천장 프로토콜도 쓰인다.

3. ROS(Robot Operating System)에 대한 설명으로 옳은 것은?

① CPU 스케줄링과 메모리 관리를 직접 수행하는 커널이다 ② MCU의 펌웨어를 대체하는 실시간 실행 환경이다 ③ 하드 실시간 응답을 기본적으로 보장한다 ④ 리눅스 등 운영체제 위에서 동작하는 로봇 미들웨어다

정답 및 해설

정답: ④ ROS는 이름에 "Operating System"이 들어 있지만 실제 OS 기능(스케줄링·메모리 관리)은 리눅스에 맡기고, 그 위에서 노드 간 통신과 개발 도구를 제공하는 미들웨어/프레임워크다. 하드 실시간 보장도 기본 제공하지 않는다.

4. 같은 프로세스에 속한 스레드들이 공유하지 않는 것은?

① 스택 ② 코드(텍스트) 영역 ③ 전역 데이터 영역 ④ 힙

정답 및 해설

정답: ① 스레드는 코드·전역 데이터·힙을 공유하지만, 함수 호출과 지역 변수를 담는 스택은 스레드마다 따로 가진다. 그래야 각자 독립적인 실행 흐름을 유지할 수 있다.

5. 로봇의 하위 모터 제어기에 범용 OS 대신 RTOS(또는 베어메탈 펌웨어)를 사용하는 주된 이유는?

① 그래픽 사용자 인터페이스를 제공하기 위해 ② 제어 주기의 데드라인을 결정론적으로 보장하기 위해 ③ 대용량 파일 시스템을 관리하기 위해 ④ 다양한 응용 프로그램을 동시에 설치하기 위해

정답 및 해설

정답: ② 모터 전류·속도 루프는 정해진 주기를 한 번도 놓치면 안 되는 하드 실시간 작업이다. 범용 OS는 지연이 비결정적이므로, 최악 지연이 보장되는 RTOS나 베어메탈 구조를 쓴다. ①③④는 범용 OS의 영역이다.

06

🔗 관련 노트

로봇소프트웨어개발기사 필기 · 학습 교재출제기준 2025.1.1 – 2027.12.31