무슨 차이일까? 배우신 분들께는 너무도 당연하게 차이를 설명할 수 있는 문제겠지만, 일단 내가 검색했을 때는 둘을 딱 놓고 비교한 글은 찾기 어려워서 직접 쓰게 되었다. 내가 보려고.
Firmware
논리회로로 이뤄진 디바이스를 구동하기 위한 소프트웨어
하드웨어 장치에 '포함된' 소프트웨어
ROM(Read-Only Memory)/Flash에 박혀서 하드웨어의 동작을 제어한다.
그래서 자유로운 업데이트는 어렵다.
OS, Operating System
상용 컴퓨터에서, 사용자의 하드웨어 및 시스템 리소스를 제어하는 소프트웨어
보조기억장치에 '별도로 설치'하곤 한다.
그래서 자유롭게 업데이트할 수 있다.
Firmware vs. OS
목적의 관점에서
OS는 그 위에서 동작하는 소프트웨어의 운영을 지원한다.
상용 PC의 경우 이 밑에 BIOS/UEFI라고 하는 일종의 펌웨어가 있다.
더 밑으로 가면 각 부품에도 펌웨어가 있을 것이다.
더 추상화된 것.
Firmware는 논리회로로 구성된 장치의 영혼 그 자체이다.
Firmware 밑에는 마이크로컨트롤러밖에 없다.
Capability의 관점에서
OS가 설치되어 있다면, 그 장치는 범용적 목적으로 쉽게 운영될 수 있다.
당초 펌웨어를 가진 여러 디바이스를 쉽게 제어할 수 있는 인터페이스를 제공하는 것이 역할 아닌가?
Firmware가 설치되어 있다는 것은, 오직 그 하드웨어 디바이스의 동작만을 보장한다.
그걸 어떻게 동작시키느냐(시스템 구성)는 디바이스 사용자가 알아서 할 일.
어딘가에 Plug-in 하든, 버튼을 눌러서 동작시키든... 등등.
변동성(?) 가변성(?)의 관점에서
OS는 보조기억장치에 주로 설치되므로, 쉽게 업데이트할 수 있다.
얘가 맛이 가더라도 펌웨어가 멀쩡히 살아 있다면 논리적 방법으로 복구가 될 것이다.
Firmware는 ROM/Flash 계열에 이식되므로, 특별히 업데이트 상황을 상정하진 않는다.
얘가 맛이 가면 ROM 자체를 재이식하거나 가능한 경우 장비를 이용해 재프로그래밍해야 한다.
현대에는 OTA 같은 게 나와서 상황이 달라졌지만...
SW & HW 구분의 관점에서
OS는 엄연히 소프트웨어 레벨로 본다.
Firmware는 하드웨어와 한 몸이라고 본다.
모호해진 경계
RTOS
Firmware 들어갈 곳에 RTOS를 설치할 수 있다.
RTOS는 마이크로컨트롤러를 훨씬 쉽게 프로그래밍할 수 있도록 도와 준다.
그럼 얘는 Firmware인가? OS인가?
확실히 Firmware이고, 확실히 OS이다.
Bare Metal Firmware
이제 전통적인 Firmware는 Bare Metal Firmware라 부르는 분위기다.
오직 하나의 HW Device를 위한 코드만 포함된 펌웨어
으악 머리야.