Embedded OS: Windows vs. Linux
The August 2019 announcement by Microsoft that they would no longer be supporting Windows Embedded 2009 or Windows Embedded POS Ready 2009 left many OEMs, designers, and industrial users questioning what decisions they should make about embedded operating systems (OS) in the future. Would it be better to opt for another Windows OS, or should they rewrite applications to use a completely different OS, such as Linux. When comparing Windows and Linux for embedded operating systems, there is no simple, one-size-fits-all answer. For embedded systems, it is best to weigh the pros and cons of both Windows and Linux for each specific application, before deciding which one is the right fit. Everything from cost to maintenance and upgrades should feature prominently in your decision-making. You must also consider the overall familiarity of the application designers with each system. Here is a closer look at how Windows and Linux embedded operating systems compare to help you make an informed choice for your project.
A Brief History of Embedded Systems
Embedded systems are essentially devices within devices. They are controllers that have specific functions to perform within an application and come in a huge variety of sizes and designs. Embedded systems can be very small—such as embedded systems within mobile phones—or they can be quite large, such as the embedded systems that are found within automation machines in manufacturing plants. In a very broad sense, any system within a larger application that has a microcontroller or microprocessor is an embedded system.
Embedded systems are used in countless ways in consumer, commercial, and industrial applications. Chances are that you are using many more embedded systems each day than you realize. If you take money out of an ATM, have a medical device, or use a gaming console, you are using an embedded system.
When embedded systems were initially developed, many companies had their own in-house proprietary systems. However, as the field expanded and embedded systems became more sophisticated, developers gravitated towards Windows and Linux embedded systems for their applications. Each system has its ardent supporters, and the number of users of each is fairly evenly split, though Linux has a slight advantage.
Cost is, naturally, a major concern for any developer, and when considered on the basis of cost alone, Linux seems like a no-brainer. Linux is an open-source system that operates almost entirely on a General Public License—GNU—which means that it can be used for free without paying for a copyright license. Programmers took up the torch for Linux almost as soon as it was created in 1991, thanks to its open-source format, and essentially created a community of free support and add-ons to the system. Everything created from the foundation of the original source code is also covered by the GNU. In other words, you can use Linux embedded OS without paying any licensing fees or support fees.
This, of course, is not the case for Windows OS. All Windows systems require users to purchase a license. Depending on the size of the embedded system and how it will be used, the license can be costly. Additionally, the license must be purchased for each device, so the costs continue to grow.
However, the cost alone should not be the only decision point when choosing between Linux and Windows OS. The free use of almost all Linux services—though some do have a small distribution fee—is certainly appealing, but it also comes with less support. Some developers find that paying for Windows means paying for the infrastructure that comes with Microsoft, which gives them easier access to support tools. Effectively using Linux operating systems means navigating the systems without support and staying on top of new developments and changes, making updates on your own as necessary. Some developers and end users can do so without any issues, but others may find it too challenging, offsetting the cost-saving benefits that come with the Linux OS.
If you wish to customize the operating system for your application, then Linux is a clear winner. Because the code is open-source, you can adjust any component of the operating system to meet your needs. There are hundreds of different pre-existing designs of Linux operating systems available, so you can select one of the systems that aligns with the role you need it to play in your application. If necessary, you can also select the one that is closest to what you need, and then tweak it until it meets the demands of your application as efficiently as possible. This not only improves the operability of the application, but also helps to save precious space by not taking up storage with OS tools that are not required.
Microsoft is a closed-source system. When you purchase a Microsoft embedded OS, then you get that OS as it was built, even if you really only need part of the functionality. You don’t get to tinker beneath the hood of a Microsoft operating system, because Microsoft does not share enough code with you to do so. One caveat is that Microsoft is often willing to solve problems for you. So, if you contact support and tell them that you’re concerned about some component of the embedded OS, they may be able to make tweaks to optimize the system for use in your application. The key difference is that, unlike with Linux’s DIY approach to customization, you won’t know exactly what has been changed. Some users prefer to let Microsoft do its thing and only care that the OS behaves as efficiently as possible, while others prefer to have more hands-on, personal involvement in the design of the OS, which Linux offers.
For industrial embedded systems in particular, security is an issue that looms large. With critical data on the line, security has to be a consideration when choosing between Windows and Linux embedded operating systems. However, they both have high marks for security. The US military relies on Linux for embedded systems to use in applications with extremely sensitive data. Using Linux open-source systems allows the military to make any customizations they need to in order to achieve the level of security they want.
On the other hand, many financial institutions use Windows embedded OS for their applications, including ATMs and other systems that handle monetary transactions and sensitive data. Financial institutions rely on the security of their systems to not only protect their assets, but to protect their reputation in their market as well. Thus, their willingness to rely on Windows demonstrates the confidence they have in the security of the OS.
One additional security factor to consider, however, is the propensity of Windows systems to be vulnerable to viruses. Most viruses that are created are designed to infect Windows systems, so any Windows OS user has to actively use antivirus software and be prepared for the potential of an attack. Because viruses can compromise and expose user data, this is a major concern for users of Windows OS.
Linux is less prone to virus issues for a few different reasons. One reason is the vast number of variations of Linux operating systems. Because of the customizable open-source code, creating a virus that can infect large numbers of Linux systems is almost impossible. Furthermore, Linux has clearly defined account privileges, which create a layer of protection for the core processes. Only viruses that affect users with administrator account privileges can reach the core processes. This minimizes the risks associated with exposure to a virus.
Of course, anyone choosing an embedded OS not only has to think about the right choice for the application today, but also what the right choice will be in the future. In this regard, there are significant differences between Microsoft and Linux embedded OS.
Microsoft’s decision to stop supporting Windows Embedded 2009 and Windows Embedded POS Ready 2009 is a reminder of something that is a fact of life with Microsoft platforms. Eventually, they will age out and Microsoft will stop supporting them, which means that developers are faced with rewriting applications for a new embedded system.
To further complicate the picture, the future of Microsoft embedded OS is not clear. The company has introduced Windows 10 IoT, or Internet of Things, which many observers think hints that the company will be pushing IoT as an alternative to embedded OS. The expected supported lifecycle of Windows 10 IoT is approximately 10 years, but there are still some challenges. One of the biggest issues is that Windows 10 IoT comes in three versions: Core, Mobile, and Enterprise. The three versions are not all available to support the ARM platform, which is a deal-breaker for many applications.
Linux is likely to have a much more manageable growth rate, and versions of Linux will almost always be supported, as long as members of the community continue to support them. This means that it is conceivable that a Linux embedded OS can have a longer lifespan in an application, reducing the costs and complications that come with modifying an application to be compatible with a new embedded OS.
Making a Choice between Windows and Linux Embedded Systems
Both Windows and Linux have pros and cons, so the easiest way to choose between them is to consider your application and how it will be used, as well as your priorities. Consider the following:
- Linux is a low- or even no-cost system. Though some components have small distribution fees, they are easily avoided. Further, the GNU also covers any upgrades or adaptations that are built from the Linux source code, so they are available without cost as well. Windows has to be licensed for each device, which can involve a significant upfront cost. If budget is a serious issue, opting for Linux can drastically reduce expenses.
- If you’re looking for a plug-and-play solution, Windows is probably a better fit. It has straightforward build tools and extensive support, from free training videos to phone support from Microsoft. If you and your team are new to embedded systems, this can help you get started quickly and easily.
- Linux is complex and constantly evolving. Programmers are always tweaking the format and adding new applications, extensions, and drivers. In the long run, this can be an advantage, and if your team is already experienced in Linux, it may not matter. However, if Linux is new to you, expect a big learning curve and time commitment up front as you get used to the system.
- Getting the most out of Linux embedded tech requires constant engagement with the Linux community. There will be new developments that could enhance your embedded system and your application, but finding out about them doesn’t happen in the same way that a Windows update happens. You will have to be actively engaged to find out what is available and how to get the best use out of it. For this reason, again, it helps to have a development team that is experienced with Linux or to have the time to invest in growing your knowledge of Linux as you go.
Generally, if you want a set-it-and-forget-it option, a Windows embedded OS could be the best choice for you. However, if you want something that allows you to be more hands-on and lets you make adjustments to the embedded system so that it functions as smoothly and efficiently as possible within your application, then Linux might be a better fit—even if there is a learning curve at the outset.
At Delkin, we are more than a storage manufacturer. We want to help you find customized solutions for your application, so that your industrial device works exactly as you need it to. Before you make any decisions, talk to one of our team members today about your application and your needs. We will consider the specifics of your device and help you find solutions that work for you and your budget. For more information about our industrial flash storage and engineering support, reach out to us today.