내장 실시간 프로그래밍을 위한 C 언어의 타임아웃 기능의 확장

An Extension to Time-out Facility in C Language for Embedded Real-Time Programming

  • 발행 : 2002.08.01

초록

실시간 프로그래밍에 있어 타임아웃 기능은 매우 중요한 기본적인 기능 중 하나이다. 그러나 내장 실시간 시스템에서 가장 많이 사용하는 C 언어에서는 타임아웃 기능을 지원하지 않는다. 그래서 C언어에서 실시간 프로그래밍 환경을 제공하기 위해 언어 자체를 확장하거나 실시간 엔진(또는 커널)을 지원하는 연구들이 있었다. 그러나 이것은 특정 실시간 커널과 컴파일러가 필요하다는 문제점을 갖고 있다. 본 논문에서는 운영체제에 최소한의 의존성을 갖고 라이브러리와 매크로 함수만으로 C 언어에서 타임아웃 기능을 제공한다. 또한 개발자가 편리하게 타임아웃 기능을 사용할 수 있도록 매크로 정의를 통해 구조화된 _within 문장을 제공한다. 이 기능은 리눅스의 단일 쓰레드 환경과 도스 환경뿐만 아니라 다중 쓰레드 환경인 POSIX 쓰레드에서도 구현하였다.

Time-out is one of the basic but important functions in real-time programming. However, the C language used commonly in the embedded real-time systems doesn't support this capability. For this capability, there have been numerous studies on language extension and/or special purpose real-time kernel (or engine). Those require preprocessor or new kernel support. In this paper, we propose a time-out facility supported by a library and some macro functions with a minimum dependency on operating systems. Furthermore, we also provide a structured _within statement, a macro function which makes programming easy. We have implemented this for the LINUX and the DOS environment, and for the POSIX multithread environment as well.

키워드

참고문헌

  1. N. Gehani and K. Ramamritham, 'Real-Time Concurrent C: A Language for Programming Dynamic Real-Time Systems,' Journal of Real-Time Systems, Vol. 2, No. 3, pp. 377-405, December 1991 https://doi.org/10.1007/BF00365999
  2. Y. Ishikawa, H. Tokuda, and C. W. Mercer, 'Object-Oriented Real-Time Language Design: Constructs for Timing Constraints,' Technical Report CMU-CS-90-111, Carnegie Mellon University, March 1990
  3. Michael Barr, Programming Embedded Systems in C and C++, O'Reilly, 1999
  4. W. Richard Stevens, Advanced Programming in the UNIX Environment, pp. 285-290, Addison-Wesley, 1992
  5. Lee, P., 'Exception Handling in C Programs,' Software-Practice and Experience, Vol. 13, No. 5, pp. 389-406, 1983 https://doi.org/10.1002/spe.4380130502
  6. Open Systems Resources, Inc., 'The Exception To The Rule: Structured Exception Handling,' The NT Insider, Vol. 6, Issue 2, March/April 1999, http://www.osr.com/ntinsider/1999/seh.htm
  7. Bruce W. Bigby, 'The GEF General Exception-Handling Library,' Dr. Dobb's Journal, November 1998, http://home.rochester.rr.com/bigbyofrocny/GEF/GEF.htm
  8. Neil Matthew and Richard Stones, Beginning Linux Programming, 2nd ed, Wrox Press, 1999
  9. Kay A. Robbins and Steven Bobbins, Practical UNIX Programming: A Guide to Concurrency, Communication, and Multithreading, Prentice-Hall, 1996
  10. Bil Lewis and Daniel J. Berg, Multithreaded Programming with Pthreads, Prentice-Hall, 1998
  11. N. H. Gehani et al, 'Concurrent C,' Software Proctice and Experience, Vol. 16, No. 9, pp. 821-844, 1986
  12. N. H. Gehani and W. D. Roome, Concurrent C, AT&T Bell Laboratories, 1985, http://www.cs.eng.uky.edu/~dclarke/cs570_98s/concurrentc.ps
  13. George Varghse and Anthony Lauck, 'Hashed and Hierarchical Timing Wheels: Efficient Data Structures for Implementing a Timer Facility,' IEEE/ACM Transactions on Networking, Vol. 5, No. 6, pp. 824-834, December 1997 https://doi.org/10.1109/90.650142
  14. Daniel P. Bovet and Macro Cesati, 'Understanding the Linux Kernel, O'Reilly, 2001