DESOSA 2022

Serenity Os

SerenityOS is a graphical Unix-like operating system for desktop computers! It is a love letter to the ’90s user interface with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.

Figure: Serenity OS User Interface

Why are you building SerenityOS? / What is your goal with SerenityOS? Andreas Kling: I started building SerenityOS to keep myself busy after finishing a 3-month drug addiction rehab program in 2018. My goal is to build a desktop system for myself to use. I’m not trying to attract users or appeal to anyone other than myself. Since I started, other people have joined the project with their own motivations, and I have no control over what motivates them.

Kernel features

  • x86 (32-bit) and x86_64 (64-bit) kernel with pre-emptive multi-threading
  • Hardware protections (SMEP, SMAP, UMIP, NX, WP, TSD, …)
  • IPv4 stack with ARP, TCP, UDP and ICMP protocols
  • ext2 filesystem
  • POSIX signals
  • Purgeable memory
  • /proc filesystem
  • Pseudoterminals (with /dev/pts filesystem)
  • Filesystem notifications
  • CPU and memory profiling
  • SoundBlaster 16 driver
  • VMWare/QEMU mouse integration

System services

  • Launch/session daemon (SystemServer)
  • Compositing window server (WindowServer)
  • Text console manager (TTYServer)
  • DNS client (LookupServer)
  • Network protocols server (RequestServer and WebSocket)
  • Software-mixing sound daemon (AudioServer)
  • Desktop notifications (NotificationServer)
  • HTTP server (WebServer)
  • Telnet server (TelnetServer)
  • DHCP client (DHCPClient)

Userland features

  • Unix-like libc and userland
  • Shell with pipes and I/O redirection
  • On-line help system (both terminal and GUI variants)
  • Web browser (Browser)
  • C++ IDE (HackStudio)
  • Desktop synthesizer (Piano)
  • E-mail client (Mail)
  • Various desktop apps & games
  • Color themes

References

Authors

Siyuan Fang

Master Student Embedded Systems. Great interests in Internet of Things, Real-Time Operating Systems and Smart Home devices.

Xiaoyu Liang

Exchange student. Major in Wireless Communication. Study in Blockchain and Internet of Thing.

Fanyuan Li

Master student Computer Engineering. Interested in Digital IC design

Tianyi Liu

Master Student of Embedded Systems.

SerenityOS - Architectural decisions

Indentification of key scalability challenges SerenityOS is an graphical Unix-like operating system which supports the x86 and x86-64 instruction sets, features a preemptive kernel, and hosts multiple complex applications including its own web browser and integrated development environment (IDE)1. All stakeholders have various needs and preferences and what they expect from SerenityOS are quite different. Therefore, it would be advantageous to stakeholders if SerenityOS exhibits great scalability. In this article, we discuss the scalability of SerenityOS in four aspects: Modularity, Reusablity, Configurability and Design Consistency.

SerenityOS - Quality and Evolution

Degree of achieving Quality attributes We have explained three key quality attributes in Essay 1: Functionality, Usability, and Consistency. This section will introduce how the extent to which these quality attributes are achieved. Functionality: As an operating system, SerenityOS undoubtedly does a good job of providing basic operating system functionality. This includes a web browser, email, desktop composer, and various desktop applications and games. All the features that can be implemented are included in the project manual1.

SerenityOS - From version to architecture

Architectural style Every system has an architecture and SerenityOS is no exception. As an operating system running on x86, SerenityOS has a layering architecture consisting of three layers: kernel, system function, and applications. The kernel controls the hardware of the computer and resides at the core of the architecture. System calls act as the interface between the kernel and applications. In the beginning, SerenityOS relied on a few external libraries. However, it has gradually gotten rid of them and developed by itself instead.

SerenityOS - Product Vision and Problem Analysis

The project aims SerenityOS is a free and open-source operating system, the operating interface simulates the interface of the 90s (picture shows below). Figure: Serenity OS User Interface The system aims to be a modern Unix-like operating system, and supports the x86 and x86-84 instruction sets, with a preemptive kernel. Support for multiple applications on the system, such as a proprietary Web browser and integrated development environment (IDE), as well as the ability to change system themes and run simple games.