ACM Home Page
Please provide us with feedback. Feedback
MTSS: multi task stack sharing for embedded systems
Full text PdfPdf (390 KB)
Source International Conference on Compilers, Architecture and Synthesis for Embedded Systems archive
Proceedings of the 2005 international conference on Compilers, architectures and synthesis for embedded systems table of contents
San Francisco, California, USA
SESSION: OS table of contents
Pages: 191 - 201  
Year of Publication: 2005
ISBN:1-59593-149-X
Authors
Bhuvan Middha  University of Maryland
Matthew Simpson  University of Maryland
Rajeev Barua  University of Maryland
Sponsors
ACM: Association for Computing Machinery
SIGBED: ACM Special Interest Group on Embedded Systems
SIGMICRO: ACM Special Interest Group on Microarchitectural Research and Processing
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 3,   Downloads (12 Months): 25,   Citation Count: 5
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

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

ABSTRACT

Out-of-memory errors are a serious source of unreliability in most embedded systems [22]. 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. Since there is no swap space for the application to grow into, the system crashes if its memory footprint is exceeded by even one byte.This work improves system reliability for multi-tasking embedded systems by proposing MTSS, a multi-task stack sharing technique, that grows the stack of a particular task into other tasks in the system after it has overflown its bounds. This technique can avoid the out-of-memory error if the extra space recovered is enough to complete execution. Experiments show that MTSS, on an average, is able to recover 47% of the stack space allocated to the overflowing task in the free space of other tasks. Therefore, even if we underestimate the stack size of a particular task by 47% on an average, it will still run to completion by reusing stack in other task's stack.Alternatively, MTSS can also be used for decreasing the physical memory for an embedded system by reducing the initial memory allocated to each of the tasks and recovering the deficit by sharing stack with other tasks. Results show that MTSS used in this way can be used to reduce the memory required in multi-tasking embedded systems by 18% on an average, thus reducing the memory cost of the system. MTSS also offers good real time guarantees, since it uses a paging system that never incurs an episodic increase in run-time.The overheads of MTSS are extremely low: the run-time and code size overheads are 1.8% and 2.6% on an average, making it a feasible method for increasing system reliability and reducing the memory footprint of embedded systems.


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
ARM7TDMI Technical Reference Manual, fourth edition, May 2003. Document No. ARM DDI0210B.
 
2
T. Baker. A stack-based resource allocation policy for realtime processes. In Proceedings of the Real-Time Systems Symposium, pages 191--200, 1990.
3
4
 
5
 
6
J. Carbone. Efficient memory protection for embedded systems, 2004. www.rtcmagazine.com/home/article.php?id=100120.
 
7
N. D. D. Brylow and J. Palsberg. Stack-size estimation for interrupt-driven microcontrollers. Technical report, Purdue University, June 2000.
 
8
D. J. Dionne. uClinux - Embedded Linux Microcontroller Project. http://www.uclinux.org/.
 
9
M. Durrant. Running linux on low cost, low power mmu-less processors, August 2000. www.linuxdevices.com/articles/AT6245686197.html.
 
10
The GCC Compiler. http://gcc.gnu.org/.
 
11
GDB: The GNU Project Debugger. http://www.gnu.org/software/gdb/gdb.html.
12
 
13
M. R. Guthaus, J. S. Ringenberg, D. Ernst, T. M. Austin, T. Mudge, and R. B. Brown. Mibench: A free, commercially representative embedded benchmark suite. In Proceedings of the IEEE 4th Annual Workshop on Workload Characterization, Dec 2001.
 
14
E. Hauck and B. Dent. Burroughs b6500/b7500 stack mechanism. In Proceedings of AFIPS, SJCC, vol 32, pages 245--251, 1968.
 
15
 
16
G. Hogen and R. Loogen. A new stack technique for the management of runtime structures in distributed implementations. Technical report, RWTH Aachen, Germany, 1993. citeseer.ist.psu.edu/hogen93new.html.
 
17
 
18
 
19
D. Kleidermacher and M. Griglock. Safety-Critical Operating Systems. Embedded Systems Programming, 14(10), September 2001. http://www.embedded.com/- story/OEG20010829S0055.
 
20
B. Lamie. A multitasking revolution, 2000. www.netsilicon.com/pdf/article expresslogic2.pdf.
 
21
R. Moore. Unbound stacks and stoppable tasks, 2001. www.programmersheaven.com/articles/smx/article3.htm.
22
23
 
24
M. Pizka. Thread segment stacks. In In Proceedings of International Conference on Parallel and Distributed Processing Techniques and Applications, June 1999.
 
25
J. Regehr, A. Reid, and K. Webb. Eliminating stack overflow by abstract interpretation. In Proceedings of the 3rd International Conference on Embedded Software, pages 306--322. Springer-Verlag, 2003.
 
26
D. M. Shantanu Sardesai and P. Dasgupta. 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, July 1998.
27
28
29
30


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