페이지 선택
Generic selectors
Exact matches only
Search in title
Search in content
Search in pages

공유자원의 문제

공유자원에 대한 문제는 순차 프로그램밍 방식에서도 존재하지만 여기서 말하는 문제는 RTOS 동작환경에서 발생하는 새로운 유형의 문제를 설명한다.

이 새로운 문제는  RTOS 시스템에서 자신의 작업을 묵묵히 수행해가는 독립성이 강한 쓰레드들이 시분할 방식으로 동작하는 과정에서 자연스레 발생한다.

 

 

 

1. 공유자원의 문제 유형1 (Mutex 또는 Binary 세마포어로 해결)

momo는 T1에서 센서A(0x12번지 값)와 센서B(0x13번지 값)에 의해 측정되었던 결과를 더하는 일을 한다. T1에서 측정  값의 합은 10이다.

momo는 0x12번지의 값은 읽었고, 0x13번지 값을 읽는 차례에서 스케쥴러가 toto에게 실행을 넘겼다.

 

 

T2에서 부터 toto가 새로 측정한 센서값을 각각 0x12, 0x13번지에 갱신하였다. 이 일이 toto가 하는 일이다.

이후 momo가 실행을 넘겨받아 실행의 흐름을 이어 가면서 0x13번지 값을 읽어 더한다. 더한 값은 12로 T1에서의 값 10과 다르게 되었다.

 

 

 

2. 공유자원의 문제 유형2 (Count 세마포어로 해결)

 

 

 

 

3. Critical Section

위에서 문제가 발생하는 부분이  공유자원을 액세스하는 부분인데,  이 코드영역에 특별한 이름을 붙여 Critical Section(임계영역)이라 명칭한다.

좀더 직감적으로 예민한 영역이라 할 수도 있겠다.

 

 

 

 

3. 공유자원의 문제에 대한 해법

♦ 가장 명쾌한 해법은 자원을 공유하여 사용하지 않으면 되겠다. → 근데 써야하는 이유가 있게죠, 그 중에 가장 큰 이유는 제한된 리소스(비용)의 문제일 것.

♦ 공유자원을 써야하는 상황에서 해법으로는 결국 쓰레드들이 임계영역을 액세스 할때 모종의 시간적 조절(Sync)이나 질서가 필요하겠다.

 

 

 

 

 

Adsense

EMW3070

Viewed Page List