In this chapter, we explored the components of an embedded operating system, by implementing one from scratch, with the only purpose of studying the internals of the system, how the various mechanisms can be integrated in the scheduler, and how blocking calls, driver APIs, and synchronization mechanisms can be provided to tasks.
There are, however, a number of open source and free software embedded operating systems available to run on similar platforms. In the next chapter, we'll see a few of them, and we'll evaluate their characteristics and key features to find out more about their implementation and design choices.