{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,31]],"date-time":"2025-10-31T08:06:13Z","timestamp":1761897973337,"version":"build-2065373602"},"reference-count":41,"publisher":"MDPI AG","issue":"17","license":[{"start":{"date-parts":[[2024,9,7]],"date-time":"2024-09-07T00:00:00Z","timestamp":1725667200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100012331","name":"Vlaio TETRA Project RustIEC","doi-asserted-by":"publisher","award":["HBC.2021.0066"],"award-info":[{"award-number":["HBC.2021.0066"]}],"id":[{"id":"10.13039\/100012331","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Sensors"],"abstract":"<jats:p>Embedded Operating Systems (OSs) are often developed in the C programming language. Developers justify this choice by the performance that can be achieved, the low memory footprint, and the ease of mapping hardware to software, as well as the strong adoption by industry of this programming language. The downside is that C is prone to security vulnerabilities unknowingly introduced by the software developer. Examples of such vulnerabilities are use-after-free, and buffer overflows. Like C, Rust is a compiled programming language that guarantees memory safety at compile time by adhering to a set of rules. There already exist a few OSs and frameworks that are entirely written in Rust, targeting sensor nodes. In this work, we give an overview of these OSs and frameworks and compare them on the basis of the features they provide, such as application isolation, scheduling, inter-process communication, and networking. Furthermore, we compare the OSs on the basis of the performance they provide, such as cycles and memory usage.<\/jats:p>","DOI":"10.3390\/s24175818","type":"journal-article","created":{"date-parts":[[2024,9,9]],"date-time":"2024-09-09T05:06:06Z","timestamp":1725858366000},"page":"5818","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":4,"title":["Overview of Embedded Rust Operating Systems and Frameworks"],"prefix":"10.3390","volume":"24","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-6006-7480","authenticated-orcid":false,"given":"Thibaut","family":"Vandervelden","sequence":"first","affiliation":[{"name":"Department of Engineering Technology (INDI), Vrije Universiteit Brussel, Pleinlaan 2, 1050 Brussels, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0436-527X","authenticated-orcid":false,"given":"Ruben","family":"De Smet","sequence":"additional","affiliation":[{"name":"Department of Electronics and Informatics (ETRO), Vrije Universiteit Brussel, Pleinlaan 2, 1050 Brussels, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4552-409X","authenticated-orcid":false,"given":"Diana","family":"Deac","sequence":"additional","affiliation":[{"name":"Department of Electronics and Informatics (ETRO), Vrije Universiteit Brussel, Pleinlaan 2, 1050 Brussels, Belgium"},{"name":"Communications Department, Technical University of Cluj-Napoca, Memorandumului 28, 400114 Cluj-Napoca, Romania"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-5901-4218","authenticated-orcid":false,"given":"Kris","family":"Steenhaut","sequence":"additional","affiliation":[{"name":"Department of Engineering Technology (INDI), Vrije Universiteit Brussel, Pleinlaan 2, 1050 Brussels, Belgium"},{"name":"Department of Electronics and Informatics (ETRO), Vrije Universiteit Brussel, Pleinlaan 2, 1050 Brussels, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9965-915X","authenticated-orcid":false,"given":"An","family":"Braeken","sequence":"additional","affiliation":[{"name":"Department of Engineering Technology (INDI), Vrije Universiteit Brussel, Pleinlaan 2, 1050 Brussels, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"1968","published-online":{"date-parts":[[2024,9,7]]},"reference":[{"key":"ref_1","unstructured":"(2024, August 06). Project Zero: About Project Zero. Available online: https:\/\/googleprojectzero.blogspot.com\/p\/about-project-zero.html."},{"key":"ref_2","unstructured":"(2024, May 23). 0day \u201cIn the Wild\u201d\u2014Google Spreadsheets. Available online: https:\/\/docs.google.com\/spreadsheets\/d\/1lkNJ0uQwbeC1ZTRrxdtuPLCIl7mlUreoKfSIgajnSyY\/edit#gid=0."},{"key":"ref_3","unstructured":"(2022, September 14). MSRC-Security-Research\/2019_01-BlueHatIL-Trends, Challenge, and Shifts in Software Vulnerability Mitigation.Pdf at Master \u00b7 Microsoft\/MSRC-Security-Research. Available online: https:\/\/github.com\/microsoft\/MSRC-Security-Research."},{"key":"ref_4","unstructured":"Viitanen, R. (2020). Evaluating Memory Models for Graph-like Data Structures in the Rust Programming Language: Performance and Usability. [Ph.D. Thesis, Link\u00f6pings Universitet]."},{"key":"ref_5","doi-asserted-by":"crossref","unstructured":"Lankes, S., Breitbart, J., and Pickartz, S. (2019, January 27\u201330). Exploring Rust for Unikernel Development. Proceedings of the 10th Workshop on Programming Languages and Operating Systems, Huntsville, ON, Canada.","DOI":"10.1145\/3365137.3365395"},{"key":"ref_6","doi-asserted-by":"crossref","unstructured":"Costanzo, M., Rucci, E., Naiouf, M., and De Giusti, A. (2021). Performance vs Programming Effort between Rust and C on Multicore Architectures: Case Study in N-Body. arXiv.","DOI":"10.1109\/CLEI53233.2021.9640225"},{"key":"ref_7","doi-asserted-by":"crossref","unstructured":"Lin, Y., Blackburn, S.M., Hosking, A.L., and Norrish, M. (2016, January 14). Rust as a Language for High Performance GC Implementation. Proceedings of the 2016 ACM SIGPLAN International Symposium on Memory Management, Santa Barbara, CA, USA.","DOI":"10.1145\/2926697.2926707"},{"key":"ref_8","doi-asserted-by":"crossref","first-page":"28","DOI":"10.1016\/j.future.2021.09.042","article-title":"SHA3 and Keccak Variants Computation Speeds on Constrained Devices","volume":"128","author":"Vandervelden","year":"2022","journal-title":"Future Gener. Comput. Syst."},{"key":"ref_9","unstructured":"Fulton, K.R., Chan, A., Votipka, D., Hicks, M., and Mazurek, M.L. (2021, January 9\u201310). Benefits and Drawbacks of Adopting a Secure Programming Language: Rust as a Case Study. Proceedings of the Seventeenth Symposium on Usable Privacy and Security (SOUPS 2021), Berkey, CA, USA."},{"key":"ref_10","doi-asserted-by":"crossref","unstructured":"Pinho, A., Couto, L., and Oliveira, J. (2019, January 27\u201330). Towards Rust for Critical Systems. Proceedings of the 2019 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW), Berlin, Germany.","DOI":"10.1109\/ISSREW.2019.00036"},{"key":"ref_11","doi-asserted-by":"crossref","first-page":"144","DOI":"10.1145\/3418295","article-title":"Safe Systems Programming in Rust","volume":"64","author":"Jung","year":"2021","journal-title":"Commun. ACM"},{"key":"ref_12","doi-asserted-by":"crossref","first-page":"136:1","DOI":"10.1145\/3428204","article-title":"How Do Programmers Use Unsafe Rust?","volume":"4","author":"Astrauskas","year":"2020","journal-title":"Proc. ACM Program. Lang."},{"key":"ref_13","unstructured":"Yu, Z., Song, L., and Zhang, Y. (2019). Fearless Concurrency? Understanding Concurrent Programming Safety in Real-World Rust Software. arXiv."},{"key":"ref_14","doi-asserted-by":"crossref","unstructured":"Ayers, H., Laufer, E., Mure, P., Park, J., Rodelo, E., Rossman, T., Pronin, A., Levis, P., and Van Why, J. (2022, January 14). Tighten Rust\u2019s Belt: Shrinking Embedded Rust Binaries. Proceedings of the 23rd ACM SIGPLAN\/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems, San Diego, CA, USA.","DOI":"10.1145\/3519941.3535075"},{"key":"ref_15","doi-asserted-by":"crossref","unstructured":"Uzlu, T., and \u015eaykol, E. (2017, January 16\u201317). On Utilizing Rust Programming Language for Internet of Things. Proceedings of the 2017 9th International Conference on Computational Intelligence and Communication Networks (CICN), Girne, Northern Cyprus.","DOI":"10.1109\/CICN.2017.8319363"},{"key":"ref_16","unstructured":"Noseda, M., Frei, F., R\u00fcst, A., and K\u00fcnzli, S. (2022, January 21\u201323). Rust for Secure IoT Applications: Why C Is Getting Rusty. Proceedings of the Embedded World Conference, Nuremberg, Germany."},{"key":"ref_17","doi-asserted-by":"crossref","first-page":"2062","DOI":"10.1109\/COMST.2018.2817685","article-title":"Internet of Things (IoT) Operating Systems Support, Networking Technologies, Applications, and Challenges: A Comparative Review","volume":"20","author":"Javed","year":"2018","journal-title":"IEEE Commun. Surv. Tutor."},{"key":"ref_18","doi-asserted-by":"crossref","unstructured":"Cherkaoui, A., Merzouk, S., Marzak, A., and Hain, M. (2021, January 1\u20132). Review on Embedded Systems and the Internet of Things: Comparative Study. Proceedings of the 4th International Conference on Networking, Information Systems & Security, Kenitra, Morocco.","DOI":"10.1145\/3454127.3457636"},{"key":"ref_19","doi-asserted-by":"crossref","first-page":"10375","DOI":"10.1109\/JIOT.2019.2939008","article-title":"Operating Systems for Internet of Things Low-End Devices: Analysis and Benchmarking","volume":"6","author":"Silva","year":"2019","journal-title":"IEEE Internet Things J."},{"key":"ref_20","doi-asserted-by":"crossref","first-page":"103","DOI":"10.1145\/2692956.2663188","article-title":"The Rust Language","volume":"34","author":"Matsakis","year":"2014","journal-title":"ACM SIGAda Ada Lett."},{"key":"ref_21","unstructured":"(2023, July 18). Cortex-m-rt\u2014Rust. Available online: https:\/\/docs.rs\/cortex-m-rt\/0.7.3\/cortex_m_rt\/index.html."},{"key":"ref_22","unstructured":"(2024, April 04). Mips-rt\u2014Rust. Available online: https:\/\/docs.rs\/mips-rt\/0.3.5\/mips_rt\/index.html."},{"key":"ref_23","unstructured":"(2024, April 04). Riscv-rt\u2014Rust. Available online: https:\/\/docs.rs\/riscv-rt\/0.12.2\/riscv_rt\/index.html."},{"key":"ref_24","unstructured":"(2024, April 04). Esp32c-rt\u2014Rust. Available online: https:\/\/docs.rs\/esp32c-rt\/0.1.1\/esp32c_rt\/index.html."},{"key":"ref_25","unstructured":"(2024, June 26). Esp-Rs\/Rust: Rust for the Xtensa Architecture. Built in Targets for the ESP32 and ESP8266. Available online: https:\/\/github.com\/esp-rs\/rust."},{"key":"ref_26","unstructured":"(2024, April 04). Rust-Embedded\/Svd2rust. Available online: https:\/\/github.com\/rust-embedded\/svd2rust."},{"key":"ref_27","unstructured":"(2024, May 22). Smoltcp-rs\/smoltcp. smoltcp. Available online: https:\/\/github.com\/smoltcp-rs\/smoltcp."},{"key":"ref_28","doi-asserted-by":"crossref","unstructured":"Levy, A., Campbell, B., Ghena, B., Giffin, D.B., Leonard, S., Pannuto, P., Dutta, P., and Levis, P. (2017, January 6\u20138). The Tock Embedded Operating System. Proceedings of the 15th ACM Conference on Embedded Network Sensor Systems, New York, NY, USA. SenSys \u201817.","DOI":"10.1145\/3131672.3136988"},{"key":"ref_29","unstructured":"(2024, March 28). Embassy. Available online: https:\/\/embassy.dev\/."},{"key":"ref_30","unstructured":"Tj\u00e4der, H. (2021). RTIC A Zero-Cost Abstraction for Memory Safe Concurrency. [Ph.D. Thesis, Lule\u00e5 University of Technology]."},{"key":"ref_31","unstructured":"(2024, March 28). Hubris. Available online: https:\/\/hubris.oxide.computer\/."},{"key":"ref_32","doi-asserted-by":"crossref","unstructured":"Levy, A., Campbell, B., Ghena, B., Giffin, D.B., Pannuto, P., Dutta, P., and Levis, P. (2017, January 28). Multiprogramming a 64kB Computer Safely and Efficiently. Proceedings of the 26th Symposium on Operating Systems Principles, New York, NY, USA. SOSP\u201917.","DOI":"10.1145\/3132747.3132786"},{"key":"ref_33","unstructured":"(2024, June 26). N7space\/Aerugo: Safety-Critical Applications Oriented Real-Time Operating System Written in Rust. Available online: https:\/\/github.com\/n7space\/aerugo."},{"key":"ref_34","unstructured":"(2024, June 26). Bern RTOS \u00b7 GitLab. Available online: https:\/\/gitlab.com\/bern-rtos."},{"key":"ref_35","unstructured":"(2024, June 26). Drone OS. Available online: https:\/\/github.com\/drone-os."},{"key":"ref_36","unstructured":"(2024, June 26). Cbiffle\/Lilos: A Wee Async RTOS for Cortex-M. Available online: https:\/\/github.com\/cbiffle\/lilos."},{"key":"ref_37","unstructured":"(2024, May 03). Future-Proof-Iot\/RIOT-rs: Rust & RIOT Combined for Ergonomic Embedded Development. Available online: https:\/\/github.com\/future-proof-iot\/RIOT-rs."},{"key":"ref_38","unstructured":"(2024, June 26). Google\/Wasefire: Secure Firmware Framework Focusing on Developer Experience. Available online: https:\/\/github.com\/google\/wasefire."},{"key":"ref_39","doi-asserted-by":"crossref","unstructured":"Baker, T. (1990, January 5\u20137). A Stack-Based Resource Allocation Policy for Realtime Processes. Proceedings of the 11th Real-Time Systems Symposium, Lake Buena Vista, FL, USA.","DOI":"10.1109\/REAL.1990.128747"},{"key":"ref_40","unstructured":"(2024, May 03). ARMv7-M Architecture Reference Manual. Available online: https:\/\/developer.arm.com\/documentation\/ddi0403\/d\/System-Level-Architecture\/System-Level-Programmers--Model\/Registers\/The-special-purpose-mask-registers."},{"key":"ref_41","unstructured":"(2024, July 31). Tracking Issue for Coroutine Memory Usage \u00b7 Issue #69826 \u00b7 Rust-Lang\/Rust. Available online: https:\/\/github.com\/rust-lang\/rust\/issues\/69826."}],"container-title":["Sensors"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/1424-8220\/24\/17\/5818\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T15:50:10Z","timestamp":1760111410000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/1424-8220\/24\/17\/5818"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,9,7]]},"references-count":41,"journal-issue":{"issue":"17","published-online":{"date-parts":[[2024,9]]}},"alternative-id":["s24175818"],"URL":"https:\/\/doi.org\/10.3390\/s24175818","relation":{},"ISSN":["1424-8220"],"issn-type":[{"type":"electronic","value":"1424-8220"}],"subject":[],"published":{"date-parts":[[2024,9,7]]}}}