제가 임베디드라는 과목을 듣고있는데요...
RTOS 배우는 단계인데. 문제 답을모르겠어요...
풀어보실수있는 능력자분 계신가요 .. ㅠㅠ 도와주세요`
다음의 코드는 시스템에서 변수 iSharedDeviceXData 를 사용하는 유일한 코드라고 가정하자. 루틴vGetDataFromDeviceXData 은 인터럽트 루틴이다. vTaskZ 에 있는 모든 인터럽트를 금지시키는 대신, 아래에 나와있는 것처럼 장치 X 의 인터럽트를 금지시키고 다른 모든 인터럽트는 가능하게 했다고 가정하자. 이 방법은 여전히 변수 iSharedDeviceXData 를 보호하는가? 만약 그렇지 않다면, 왜 그렇지 않은가? 만약 그렇다면, 이 방법은 모든 인터럽트를 금지시키는 것과 비교해서 장점(있다면)은 무엇이고 단점(있다면)은 무엇인가?
Int iSharedDeviceXData;
Void interrupt vGetDataFromDeviceX (void)
{
iSharedDeviceXData = !! 장치 X 하드웨어로부터 데이터를 가져온다.
!! 하드웨어를 초기화 시킨다.
}
void vTaskZ (void) /* 낮은 우선 순위 태스크 */
{
Int iTemp;
While (FOREVER)
{
.
.
.
!! 인터럽트 금지
iTemp = iSharedDeviceXData;
!! 인터럽트 복원
!! iTemp로 계산수행
}
}