응답 시간·메모리와 전력 모델
조건을 고정해 PC 실행을 측정하고 모델에서 자원·절전의 한계를 계산합니다.
진도 0%
레슨
- 이벤트 지연과 호스트 시간
C 단조 시계와 Python perf_counter로 조건·반복수·최대 지연을 기록합니다.
- 메모리 예산과 배치
sizeof와 버퍼 개수로 정적 사용량을 계산하고 연속·분산 접근의 호스트 시간을 비교합니다.
- 깨어 있는 시간과 추정 전력
3.3V·활성 10mA·절전 1mA 모델에서 시간 비율별 평균 전류·전력·에너지를 계산합니다.
- 절전과 지연의 균형
가상 깨우기 지연 5ms를 추가해 소비 추정치와 응답 예산의 변화를 비교합니다.
응답 시간·메모리와 전력 모델 미션
m08-concurrency-queues solution의 전체 소스·HAL·회귀를 포함한 starter에서 resource.c를 완성합니다. 실제 누적 파이프라인에 가상 응답 측정을 연결하고 독립100ms 전력 모델을 함께 보고합니다.
요구사항
- 기존 회귀 소스와 테스트를 보존합니다. resource.c의 latency_add 마감 초과 집계와 energy_mj 시간 가중합을 완성합니다.
- raw 버튼 변화30ms부터 토글까지, 이벤트 due부터 MessageQueue 발행까지를 가상1ms 루프에서 측정합니다. 측정 timestamp는 보존하고 기존 소비자를 중복 호출하지 않습니다.
- 큐 high는 mutex 아래 snapshot으로 읽습니다. 고정 소유 객체 sizeof 합은 중첩 저장소를 중복하지 않고 범위를 명시합니다.
- 100ms 모델에서 작업20ms와 깨우기0/5ms를 활성10mA로 합산하고 나머지는절전1mA, 전압3.3V로 에너지를 계산합니다.
- C11 -Wall -Wextra -Werror -pthread로 빌드합니다. 호스트 실측은 make -s measure 실습의 별도 구간으로 기록하며 가상 마감과 장치 소비 추정을 섞지 않습니다.
- RESOURCE-EVIDENCE.md에 실제 실행 결과·환경·모델 가정·후속 실물 검증 범위를 기록합니다. MCU 최악 시간·스택 최고점·보드 전류는 검증했다고 주장하지 않습니다.
완료 기준
- make test 종료0이며 m08의 queue135조건/10000건, pipeline55조건, state-recovery126조건을 포함한 누적 회귀와 resource23조건 실패0입니다.
- wake0의 버튼20ms/발행2ms, wake5의 버튼25ms/발행7ms는 버튼30ms/발행20ms 예산을 만족합니다. wake19의39ms/21ms 위반을 대조군으로 검출합니다.
- 기록16건·메시지16건을 포함한 고정 호스트 소유 객체 합은0초과4096바이트이하입니다. 이는 전체 링커 정적 영역·스택/힙 사용 실측이 아닙니다.
- 100ms 전력 모델: 활성20%는 평균2.8mA·9.24mW·0.924mJ, 깨우기5ms 포함25%는3.25mA·10.725mW·1.0725mJ입니다.
make test미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 요구사항과 테스트 fixture의 대응이 드러납니다.
- 하드웨어 의존 경계와 실패 처리의 선택 이유를 설명합니다.
- 미션별 측정·관찰 증거를 실제 실행한 결과로 남깁니다.