3강 / 20강
세 층으로 나눈다 — 드라이버 · 장치 · 순서
모의 드라이버로 실물 없이 쓴다
펌웨어를 한 덩어리로 쓰면 실물이 없으면 한 줄도 시험할 수 없습니다. 그래서 층을 나눕니다. 이 강의 전체가 이 세 층 위에 서 있습니다.
각 층은 바로 아래층만 압니다. 이 규칙 하나가 강의 끝까지 갑니다.
가짜 드라이버로 순서 계층까지 전부 시험할 수 있습니다. 파이가 없어도 됩니다.
Python
브라우저에서 실행
약속의 모양을 고정한다
장치가 열넷인데 저마다 다른 이름의 함수를 가지면 순서 계층이 감당하지 못합니다.
그래서 같은 모양을 강제합니다 — 파이썬에서는 Protocol 이나
abc.ABC 를 씁니다.
| 모든 장치가 갖는 것 | 무엇 |
|---|---|
open() / close() | 장치를 잡고 놓는다 (with 문으로) |
selftest() | 지금 말이 통하나 — test 워크플로가 부른다 |
read_state() | 지금 어떤 상태인가 (결함 검출이 쓴다 → 19강) |
safe() | 당장 안전한 상태로 — 19강의 페일세이프가 부른다 |
특히 safe() 를 처음부터 넣어 두십시오. 나중에 끼워 넣으려면
장치 열넷을 전부 다시 손대야 합니다.
🤔 확인 문제
드라이버 계층과 장치 계층을 나누는 가장 실용적인 이유는?
해설 기계는 늘 늦게 오고 한 대뿐입니다. 가짜 드라이버 위에서 순서 계층까지 다 만들어 두면, 실물이 왔을 때 드라이버만 갈아 끼우면 됩니다.
🤔 확인 문제
safe() 를 모든 장치에 처음부터 넣으라는 까닭은?해설 페일세이프(19강)는 “모든 장치를 당장 안전한 상태로” 를 부릅니다. 그 약속이 처음부터 모양에 들어 있어야 나중에 공짜로 얻습니다.