{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:37:10Z","timestamp":1750307830360,"version":"3.41.0"},"reference-count":36,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2008,7,1]],"date-time":"2008-07-01T00:00:00Z","timestamp":1214870400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Embed. Comput. Syst."],"published-print":{"date-parts":[[2008,7]]},"abstract":"<jats:p>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.<\/jats:p>","DOI":"10.1145\/1376804.1376814","type":"journal-article","created":{"date-parts":[[2008,8,5]],"date-time":"2008-08-05T13:35:10Z","timestamp":1217943310000},"page":"1-37","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":10,"title":["MTSS"],"prefix":"10.1145","volume":"7","author":[{"given":"Bhuvan","family":"Middha","sequence":"first","affiliation":[{"name":"University of Maryland, College Park, Maryland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Matthew","family":"Simpson","sequence":"additional","affiliation":[{"name":"University of Maryland, College Park, Maryland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Rajeev","family":"Barua","sequence":"additional","affiliation":[{"name":"University of Maryland, College Park, Maryland"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2008,8]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1016\/0020-0190(87)90175-X"},{"key":"e_1_2_1_2_1","doi-asserted-by":"crossref","unstructured":"Appel A. W. and Ginsburg M. 1998. Modern Compiler Implementation in C. Cambridge University Press Cambridge UK.   Appel A. W. and Ginsburg M. 1998. Modern Compiler Implementation in C. Cambridge University Press Cambridge UK.","DOI":"10.1017\/CBO9781139174930"},{"edition":"4","volume-title":"ARM7TDMI Technical Reference Manual","key":"e_1_2_1_3_1","unstructured":"ARM 2003. ARM7TDMI Technical Reference Manual 4 th Ed. Document No. ARM DDI 0210B. ARM 2003. ARM7TDMI Technical Reference Manual 4th Ed. Document No. ARM DDI0210B."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/REAL.1990.128747"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/945445.945471"},{"volume-title":"Proceedings of the 13th Euromicro Conference on Real-Time Systems","author":"Bennett M.","key":"e_1_2_1_6_1","unstructured":"Bennett , M. and Audsley , N . 2001. Predictable and efficient virtual addressing for safety-critical real-time systems . In Proceedings of the 13th Euromicro Conference on Real-Time Systems . Delft, The Netherlands. IEEE Computer Society, Los Alamitos, CA. 183--190. Bennett, M. and Audsley, N. 2001. Predictable and efficient virtual addressing for safety-critical real-time systems. In Proceedings of the 13th Euromicro Conference on Real-Time Systems. Delft, The Netherlands. IEEE Computer Society, Los Alamitos, CA. 183--190."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1196636.1196637"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/362375.362379"},{"key":"e_1_2_1_9_1","unstructured":"Brylow D. Damgaard N. and Palsberg J. 2000. Stack-size estimation for interrupt-driven microcontrollers. Tech. rep. Purdue University.  Brylow D. Damgaard N. and Palsberg J. 2000. Stack-size estimation for interrupt-driven microcontrollers. Tech. rep. Purdue University."},{"volume-title":"Proceedings of the 23rd International Conference on Software Engineering. 47--56","author":"Brylow D.","key":"e_1_2_1_10_1","unstructured":"Brylow , D. , Damgaard , N. , and Palsberg , J . 2001. Static checking of interrupt-driven software . In Proceedings of the 23rd International Conference on Software Engineering. 47--56 . Brylow, D., Damgaard, N., and Palsberg, J. 2001. Static checking of interrupt-driven software. In Proceedings of the 23rd International Conference on Software Engineering. 47--56."},{"key":"e_1_2_1_11_1","unstructured":"Carbone J. 2004. Efficient memory protection for embedded systems. RTC Magazine.  Carbone J. 2004. Efficient memory protection for embedded systems. RTC Magazine."},{"key":"e_1_2_1_12_1","unstructured":"Dionne D. J. 1998. uClinux -- Embedded Linux Microcontroller Project.  Dionne D. J. 1998. uClinux -- Embedded Linux Microcontroller Project."},{"key":"e_1_2_1_13_1","unstructured":"Durrant M. 2000. Running linux on low cost low power mmu-less processors. http:\/\/www.linuxdevices.com\/articles\/AT6245686197.html.  Durrant M. 2000. Running linux on low cost low power mmu-less processors. http:\/\/www.linuxdevices.com\/articles\/AT6245686197.html."},{"key":"e_1_2_1_14_1","unstructured":"GCC. The GCC Compiler. http:\/\/gcc.gnu.org\/.  GCC. The GCC Compiler. http:\/\/gcc.gnu.org\/."},{"key":"e_1_2_1_15_1","unstructured":"GDB. GDB: The GNU Project Debugger. http:\/\/www.gnu.org\/software\/gdb\/gdb.html.  GDB. GDB: The GNU Project Debugger. http:\/\/www.gnu.org\/software\/gdb\/gdb.html."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/237090.237149"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.5555\/1128020.1128563"},{"key":"e_1_2_1_18_1","first-page":"245","article-title":"Burroughs b 6500\/b 7500 stack mechanism","volume":"32","author":"Hauck E.","year":"1968","unstructured":"Hauck , E. and Dent , B. 1968 . Burroughs b 6500\/b 7500 stack mechanism . In Proceedings of AFIPS SJCC. 32 , 245 -- 251 . Hauck, E. and Dent, B. 1968. Burroughs b 6500\/b 7500 stack mechanism. In Proceedings of AFIPS SJCC. 32, 245--251.","journal-title":"Proceedings of AFIPS SJCC."},{"key":"e_1_2_1_19_1","volume-title":"Computer Architecture: A Quantitative Approach","author":"Hennessy J.","year":"2002","unstructured":"Hennessy , J. and Patterson , D . 2002 . Computer Architecture: A Quantitative Approach 3 rd Ed. Morgan Kaufmann , Burlington, MA . Hennessy, J. and Patterson, D. 2002. Computer Architecture: A Quantitative Approach 3rd Ed. Morgan Kaufmann, Burlington, MA.","edition":"3"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1103845.1094836"},{"key":"e_1_2_1_21_1","doi-asserted-by":"crossref","unstructured":"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.  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.","DOI":"10.1007\/3-540-57186-8_97"},{"key":"e_1_2_1_22_1","unstructured":"Jagger D. and Seal D. 2000. ARM Architecture Reference Manual. Addison Wesley Reading MA.   Jagger D. and Seal D. 2000. ARM Architecture Reference Manual. Addison Wesley Reading MA."},{"key":"e_1_2_1_23_1","first-page":"10","article-title":"Safety-Critical Operating Systems","volume":"14","author":"Kleidermacher D.","year":"2001","unstructured":"Kleidermacher , D. and Griglock , M. 2001 . Safety-Critical Operating Systems . Embedded Syst. Program. 14 , 10 . http:\/\/www.embedded.com\/story\/-OEG20010829S0055. Kleidermacher, D. and Griglock, M. 2001. Safety-Critical Operating Systems. Embedded Syst. Program. 14, 10. http:\/\/www.embedded.com\/story\/-OEG20010829S0055.","journal-title":"Embedded Syst. Program."},{"key":"e_1_2_1_24_1","doi-asserted-by":"crossref","unstructured":"Middha B. 2006. MTSS: Multi task stack sharing for embedded systems. M.S. thesis University of Maryland College Park MD.  Middha B. 2006. MTSS: Multi task stack sharing for embedded systems. M.S. thesis University of Maryland College Park MD.","DOI":"10.1145\/1086297.1086323"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/JSSC.1996.542315"},{"key":"e_1_2_1_26_1","unstructured":"Moore R. 2001. Unbound stacks and stoppable tasks. http:\/\/www.programmersheaven.com\/articles\/smx\/article3.htm.  Moore R. 2001. Unbound stacks and stoppable tasks. http:\/\/www.programmersheaven.com\/articles\/smx\/article3.htm."},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/375977.375978"},{"key":"e_1_2_1_28_1","volume-title":"Proceedings of International Conference on Parallel and Distributed Processing Techniques and Applications.","author":"Pizka M.","year":"1999","unstructured":"Pizka , M. 1999 . Thread segment stacks . In Proceedings of International Conference on Parallel and Distributed Processing Techniques and Applications. Pizka, M. 1999. Thread segment stacks. In Proceedings of International Conference on Parallel and Distributed Processing Techniques and Applications."},{"volume-title":"Proceedings of the 3rd International Conference on Embedded Software. Springer-Verlag","author":"Regehr J.","key":"e_1_2_1_29_1","unstructured":"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. 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."},{"volume-title":"Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications.","author":"Shantanu Sardesai D. M.","key":"e_1_2_1_30_1","unstructured":"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. 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."},{"key":"e_1_2_1_31_1","volume-title":"Operating Systems Concepts","author":"Silberschatz A.","unstructured":"Silberschatz , A. and Peter Baer Galvin , G. G. Operating Systems Concepts 7 th Ed. John Wiley , New York . Silberschatz, A. and Peter Baer Galvin, G. G. Operating Systems Concepts 7th Ed. John Wiley, New York.","edition":"7"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/378239.378467"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/92.335012"},{"volume-title":"Proceedings of the 6th International Conference on Real Time Computer Systems and Applications.","author":"Wang Y.","key":"e_1_2_1_34_1","unstructured":"Wang , Y. and Saksena , M . 1999. Scheduling fixed priority tasks using preemption threshold . In Proceedings of the 6th International Conference on Real Time Computer Systems and Applications. Wang, Y. and Saksena, M. 1999. Scheduling fixed priority tasks using preemption threshold. In Proceedings of the 6th International Conference on Real Time Computer Systems and Applications."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/605397.605429"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/326619.326822"}],"container-title":["ACM Transactions on Embedded Computing Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1376804.1376814","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1376804.1376814","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T13:57:55Z","timestamp":1750255075000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1376804.1376814"}},"subtitle":["Multitask stack sharing for embedded systems"],"short-title":[],"issued":{"date-parts":[[2008,7]]},"references-count":36,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2008,7]]}},"alternative-id":["10.1145\/1376804.1376814"],"URL":"https:\/\/doi.org\/10.1145\/1376804.1376814","relation":{},"ISSN":["1539-9087","1558-3465"],"issn-type":[{"type":"print","value":"1539-9087"},{"type":"electronic","value":"1558-3465"}],"subject":[],"published":{"date-parts":[[2008,7]]},"assertion":[{"value":"2006-04-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2007-09-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2008-08-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}