ACM Home Page
Please provide us with feedback. Feedback
MTSS: Multitask stack sharing for embedded systems
Full text PdfPdf (715 KB)
Source
ACM Transactions on Embedded Computing Systems (TECS) archive
Volume 7 ,  Issue 4  (July 2008) table of contents
Article No. 46  
Year of Publication: 2008
ISSN:1539-9087
Authors
Bhuvan Middha  University of Maryland, College Park, Maryland
Matthew Simpson  University of Maryland, College Park, Maryland
Rajeev Barua  University of Maryland, College Park, Maryland
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 19,   Downloads (12 Months): 190,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1376804.1376814
What is a DOI?

ABSTRACT

Out-of-memory errors are a serious source of unreliability in most embedded systems. Applications run out of main memory because of the frequent difficulty of estimating the memory requirement before deployment, either because it depends on input data, or because certain language features prevent estimation. The typical lack of disks and virtual memory in embedded systems has a serious consequence when an out-of-memory error occurs. Without swap space, the system crashes if its memory footprint exceeds the available memory by even 1 byte. This work improves reliability for multitasking embedded systems by proposing MTSS, a multitask stack sharing technique. If a task attempts to overflow the bounds of its allocated stack space, MTSS grows its stack into the stack memory space allocated for other tasks. This technique can avoid the out-of-memory error if the extra space recovered is sufficient to complete execution. Experiments show that MTSS is able to recover an average of 54% of the stack space allocated to the overflowing task in the free space of other tasks. In addition, unlike conventional systems, MTSS detects memory overflows, allowing the possibility of remedial action or a graceful exit if the recovered space is not enough. Alternatively, MTSS can be used for decreasing the required physical memory of an embedded system by reducing the initial memory allocated to each of the tasks and recovering the deficit by sharing stack with other tasks. The overheads of MTSS are low: the runtime and energy overheads are 3.1% and 3.2%, on average. These are tolerable given that reliability is the most important concern in virtually all systems, ahead of other concerns, such as runtime and energy.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
 
3
ARM 2003. ARM7TDMI Technical Reference Manual 4th Ed. Document No. ARM DDI0210B.
 
4
Baker, T. 1990. A stack-based resource allocation policy for realtime processes. In Proceedings of the Real-Time Systems Symposium. 191--200.
5
 
6
7
8
 
9
Brylow, D., Damgaard, N., and Palsberg, J. 2000. Stack-size estimation for interrupt-driven microcontrollers. Tech. rep. Purdue University.
 
10
 
11
Carbone, J. 2004. Efficient memory protection for embedded systems. RTC Magazine.
 
12
Dionne, D. J. 1998. uClinux -- Embedded Linux Microcontroller Project.
 
13
Durrant, M. 2000. Running linux on low cost, low power mmu-less processors. http://www.linuxdevices.com/articles/AT6245686197.html.
 
14
GCC. The GCC Compiler. http://gcc.gnu.org/.
 
15
GDB. GDB: The GNU Project Debugger. http://www.gnu.org/software/gdb/gdb.html.
16
 
17
 
18
Hauck, E. and Dent, B. 1968. Burroughs b 6500/b 7500 stack mechanism. In Proceedings of AFIPS SJCC. 32, 245--251.
 
19
20
 
21
Hogen, G. and Loogen, R. 1993. A new stack technique for the management of runtime structures in distributed implementations. Tech. rep., RWTH Aachen, Germany. http://citeseer.ist.psu.edu/hogen93new.html.
 
22
 
23
Kleidermacher, D. and Griglock, M. 2001. Safety-Critical Operating Systems. Embedded Syst. Program. 14, 10. http://www.embedded.com/story/-OEG20010829S0055.
 
24
Middha, B. 2006. MTSS: Multi task stack sharing for embedded systems. M.S. thesis, University of Maryland, College Park, MD.
 
25
Montanaro, J. et al. 1996. A 160MHz, 32b, 0.5W CMOS RISC microprocessor. IEEE J. Solid State Circuit 31, 11, 1703--1714.
 
26
Moore, R. 2001. Unbound stacks and stoppable tasks. http://www.programmersheaven.com/articles/smx/article3.htm.
27
 
28
Pizka, M. 1999. Thread segment stacks. In Proceedings of International Conference on Parallel and Distributed Processing Techniques and Applications.
 
29
Regehr, J., Reid, A., and Webb, K. 2003. Eliminating stack overflow by abstract interpretation. In Proceedings of the 3rd International Conference on Embedded Software. Springer-Verlag, Berlin. 306--322.
 
30
Shantanu Sardesai, D. M. and Dasgupta, P. 1998. Distributed cactus stacks: Runtime stack-sharing support for distributed parallel programs. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications.
 
31
32
 
33
 
34
35
36

Collaborative Colleagues:
Bhuvan Middha: colleagues
Matthew Simpson: colleagues
Rajeev Barua: colleagues