Smallest possible bootable operating system
Laitala, Leevi (2025)
Kandidaatintyö
Laitala, Leevi
2025
School of Engineering Science, Tietotekniikka
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi-fe2025021812843
https://urn.fi/URN:NBN:fi-fe2025021812843
Tiivistelmä
This thesis explores the fundamental core components of an operating systems and examines trade-offs between minimalism and functionality in small operating system implementations. Small operating systems are widely used in low-spec devices, such as embedded devices and IoT, but can also have utilization on server and cloud platforms. The thesis defines the core responsibilities of an operating system, such as memory management and processor virtualization, while briefly exploring their different implementations, which depend on desired use case.
The research finds that defining “smallest possible” operating system highly depends on the context. Software size can be measured in the terms of lines of source code or amount of features it implements based on its design goals. Some features, for instance IPC, can be considered in most deployments an essential core feature, but a functioning, although limited, system could be build without it. Some operating system core features, such as memory management, can be implemented in many ways with varying levels of complexity. Although it is a single feature of the system, more sophisticated implementations can cause unnecessary overhead and depending on the intended deployment, might not bring any benefit over simpler solutions.
Existing small operating systems are reviewed and analyzed, including seL4, FreeRTOS and TinyOS, and the implementations of their key features are explored briefly. Findings align with prior research on small operaring systems, supporting that the modular architechture of microkernels provide enhanced security, stability and maintainability. Tämä opinnäytetyö tutkii käyttöjärjestelmien fundamentaalisia komponentteja ja tarkastelee kompromisseja niiden toiminnallisuuden sekä implementaatioiden välillä. Pieniä käyttöjärjestelmiä käytetään laajasti pienitehoisissa laitteissa, kuten sulautetuissa järjestelmissä ja IoT-laitteissa, mutta niillä on myös sovelluksia sekä palvelin- että pilviympäristöissä. Työssä määritellään käyttöjärjestelmien ydintoiminnot, kuten muistin hallinta ja prosessorin virtualisointi, sekä tarkastellaan lyhyesti niiden eri toteutustapoja, jotka vaihtelevat käyttötarkoituksen mukaan.
Työ osoittaa, että ”pienimmän mahdollisen” käyttöjärjestelmän määrittely riippuu laajalti asiayhteydestä. Ohjelmiston kokoa voidaan mitata esimerkiksi lähdekoodirivien määrällä tai sen toteuttamien ominaisuuksien perusteella, jotka riippuvat suunnittelutavoitteista. Joitakin ominaisuuksia, kuten IPC:tä, voisi pitää olennaisena ominaisuutena useimmissa ympäristöissä, mutta käyttökelpoisen, vaikkakin rajoitetun, järjestelmän voi myös toteuttaa ilman sitä. Käyttöjärjestelmien muille ydintoiminnoille, kuten muistin hallinnalle, löytyy monia eri toteutustapoja vaihtelevalla monimutkaisuudella. Vaikka kyseessä onkin vain yksi järjestelmän ominaisuus, monimutkainen implementaatio voi aiheuttaa ylimääräistä kuormaa, josta ei ole hyötyä, vaan pikemmin haittaa yksinkertaisempiin ratkaisuihin verrattuna riippuen käyttöympäristöstä.
Työssä tarkastellaan ja analysoidaan olemassa olevia pieniä käyttöjärjestelmiä, kuten seL4, FreeRTOS ja TinyOS, sekä niiden keskeisten ominaisuuksien toteutuksia. Havainnot ovat linjassa aiempien tutkimusten kanssa ja tukevat käsitystä että pieten mikroytimien modulaarinen arkkitehtuuri mahdollistaa paremman järjestelmäturvallisuuden, vakauden sekä parantaa niiden ylläpidettävyyttä.
The research finds that defining “smallest possible” operating system highly depends on the context. Software size can be measured in the terms of lines of source code or amount of features it implements based on its design goals. Some features, for instance IPC, can be considered in most deployments an essential core feature, but a functioning, although limited, system could be build without it. Some operating system core features, such as memory management, can be implemented in many ways with varying levels of complexity. Although it is a single feature of the system, more sophisticated implementations can cause unnecessary overhead and depending on the intended deployment, might not bring any benefit over simpler solutions.
Existing small operating systems are reviewed and analyzed, including seL4, FreeRTOS and TinyOS, and the implementations of their key features are explored briefly. Findings align with prior research on small operaring systems, supporting that the modular architechture of microkernels provide enhanced security, stability and maintainability.
Työ osoittaa, että ”pienimmän mahdollisen” käyttöjärjestelmän määrittely riippuu laajalti asiayhteydestä. Ohjelmiston kokoa voidaan mitata esimerkiksi lähdekoodirivien määrällä tai sen toteuttamien ominaisuuksien perusteella, jotka riippuvat suunnittelutavoitteista. Joitakin ominaisuuksia, kuten IPC:tä, voisi pitää olennaisena ominaisuutena useimmissa ympäristöissä, mutta käyttökelpoisen, vaikkakin rajoitetun, järjestelmän voi myös toteuttaa ilman sitä. Käyttöjärjestelmien muille ydintoiminnoille, kuten muistin hallinnalle, löytyy monia eri toteutustapoja vaihtelevalla monimutkaisuudella. Vaikka kyseessä onkin vain yksi järjestelmän ominaisuus, monimutkainen implementaatio voi aiheuttaa ylimääräistä kuormaa, josta ei ole hyötyä, vaan pikemmin haittaa yksinkertaisempiin ratkaisuihin verrattuna riippuen käyttöympäristöstä.
Työssä tarkastellaan ja analysoidaan olemassa olevia pieniä käyttöjärjestelmiä, kuten seL4, FreeRTOS ja TinyOS, sekä niiden keskeisten ominaisuuksien toteutuksia. Havainnot ovat linjassa aiempien tutkimusten kanssa ja tukevat käsitystä että pieten mikroytimien modulaarinen arkkitehtuuri mahdollistaa paremman järjestelmäturvallisuuden, vakauden sekä parantaa niiden ylläpidettävyyttä.
