ARX 실시간 운영체계를 위한 사용자 레벨 쓰레드

내장 실시간 시스템이 높은 우선순위의 비동기적 이벤트를 적시에 처리하려면 필수적으로 적은 비용의 선점 다중쓰레드를 지원해야 한다. 사용자 레벨 쓰레드는 커널 레벨 쓰레드 보다 적은 비용의 유연한 추상적 기법들을 제공하지만, 기존의 실시간 시스템에서는 스케쥴링과 시그날(signal) 처리가 단순하다는 이유로 커널 레벨 쓰레드가 선호되어 왔다. 본 논문에서는 내장 실시간 시스템에 적합한 새로운 사용자 레벨 다중쓰레드 방식을 제안한다. 이 기법은 가상 쓰레드(virtual threads)와 개선된 스케쥴링 이벤트 업콜(scheduling event upcall) 메카니즘을 기반으로 한다. 가상 쓰레드는 사용자 레벨 쓰레드에게 커널 레벨의 실행 환경을 제공할 수 있도록 사용자 레벨 쓰레드를 커널 레벨로 형상화한 것이다. 이 쓰레드는 필요에 의해 잠시동안 사용자 레벨 쓰레드에 묶이는 수동적인 존재이다. 스케쥴링 이벤트 업콜 메카니즘은 쓰레드 블록킹과 타이머 만기와 같은 커널 이벤트를 유저 프로세스에게 전달할 수 있게 한다. 본 논문의 개선된 업콜 방식은 scheduler activation과 시그날과 같은 전통적인 업콜 구조에서 예측하기 힘든 요소들을 배제했다. 순간적인 시스템의 과부하 상황에서도 이벤트를 놓치지 않으면서 커널과 유저 프로세스의 비싼 동기화 작업들을 피할 수 있도록 하는 잠금(lock)이 필요 없는 이벤트 큐를 사용한다. 본 기법은 서울대학교 실시간 운영체계 실험실에서 구현한 ARX위에서 완벽하게 구현되었다. ARX 사용자 레벨 쓰레드가 사용자 레벨 쓰레드의 장점을 손상하지 않으면서 솔라리스와 윈도즈 98과 같은 상용 운영체제의 커널 쓰레드보다 성능이 우수함을 실험적 비교에 의해서 입증한다.