Devin.KR

응답 시간·메모리와 전력 모델

조건을 고정해 PC 실행을 측정하고 모델에서 자원·절전의 한계를 계산합니다.

진도 0%

레슨

  1. 이벤트 지연과 호스트 시간

    C 단조 시계와 Python perf_counter로 조건·반복수·최대 지연을 기록합니다.

  2. 메모리 예산과 배치

    sizeof와 버퍼 개수로 정적 사용량을 계산하고 연속·분산 접근의 호스트 시간을 비교합니다.

  3. 깨어 있는 시간과 추정 전력

    3.3V·활성 10mA·절전 1mA 모델에서 시간 비율별 평균 전류·전력·에너지를 계산합니다.

  4. 절전과 지연의 균형

    가상 깨우기 지연 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의 대응이 드러납니다.
  • 하드웨어 의존 경계와 실패 처리의 선택 이유를 설명합니다.
  • 미션별 측정·관찰 증거를 실제 실행한 결과로 남깁니다.