담당교수 n 조장우, 동아대학교 컴퓨터공학과, SF 619호 n e-mail: jwjo@dau. ac. kr n www: http: //web. donga. ac. kr/jwjo n phone: 200 -7780
프로세서 Where Has CS Focused? Interactive Computers 200 M per Year Where Are the Processors? Direct 2% Robots Vehicles 6% 12% 8. 5 B Parts per Year Servers, etc. Embedded Computers 80% In Vehicles Embedded. In Robots Source: DARPA/Intel (Tennenhouse)
인터럽트 라운드로빈 구조의 예 void interrupt v. Handle. Device. B (void) BOOL f. Device. A = FALSE; BOOL f. Device. B = FASLSE; . . BOOL f. Device. Z = FALSE; { !! I/O 장치 B를 처리한다 f. Device. B = TRUE; }. . void interrupt v. Handle. Device. A (void) { !! I/O 장치 A를 처리한다 f. Device. A = TRUE; } . void interrupt v. Handle. Device. Z (void) { !! I/O 장치 Z를 처리한다 f. Device. Z = TRUE; } 15
Classic shared-data problem static int i. Temperature[2]; void interrupt v. Read. Temperatures (void) { i. Temperatures[0] = !! 하드웨어로부터 값을 읽음 i. Temperatures[1] = !! 하드웨어로부터 값을 읽음 } void main (void) { int i. Temp 0, i. Temp 1; while (TRUE) { i. Temp 0 = i. Temperatures[0]; i. Temp 1 = i. Temperatures[1]; if (i. Temp 0 != i. Temp 1) !! 비상 경보를 울린다; } }
Classic shared-data problem static int i. Temperature[2]; void main (void) { int i. Temp 0, i. Temp 1; while (TRUE) { // i. Temp 0 = i. Temperatures[0]; // i. Temp 1 = i. Temperatures[1]; // if (i. Temp 0 != i. Temp 1) if (i. Temperatures[0] != i. Temperatures[1]) !! 비상 경보를 울린다; } }
Classic shared-data problem static int i. Temperature[2]; void main (void) { int i. Temp 0, i. Temp 1; while (TRUE) { i. Temp 0 = i. Temperatures[0]; i. Temp 1 = i. Temperatures[1]; if (i. Temp 0 != i. Temp 1) !! 비상 경보를 울린다; } }
Classic shared-data problem static int i. Temperature[2]; void main (void) { int i. Temp 0, i. Temp 1; while (TRUE) { disable(); i. Temp 0 = i. Temperatures[0]; i. Temp 1 = i. Temperatures[1]; enable(); if (i. Temp 0 != i. Temp 1) !! 비상 경보를 울린다; } }