Why use an OS-backed event queue? 45 This chapter is a little special since we build some basic understanding from the ground up, which means some of it is quite low-level and requires a specific operating system and CPU family to run. Don't worry; I've chosen the most used and popular CPU, so this shouldn't be a problem, but it is something you need to be aware of. The machine must use a CPU using the x86-64 instruction set on Windows and Linux. Intel and AMD desktop CPUs use this architecture, but if you run Linux (or WSL) on a machine using an ARM processor you might encounter issues with some of the examples using inline assembly. On mac OS, the example in the book targets the newer M-family of chips, but the repository also contains examples targeting the older Intel-based Macs. Unfortunately, some examples targeting specific platforms require that specific operating system to run. However, this will be the only chapter where you need access to three different platforms to run all the examples. Going forward, we'll create examples that will run on all platforms either natively or using Windows Subsystem for Linux (WSL ), but to understand the basics of cross-platform abstractions, we need to actually create examples that target these different platforms. Running the Linux examples If you don't have a Linux machine set up, you can run the Linux example on the Rust Playground, or if you're on a Windows system, my suggestion is to set up WSL and run the code there. Y ou can find the instructions on how to do that at https://learn. microsoft. com/en-us/windows/ wsl/install. Remember, you have to install Rust in the WSL environment as well, so follow the instructions in the Preface section of this book on how to install Rust on Linux. If you use VS Code as your editor, there is a very simple way of switching your environment to WSL. Press Ctrl+Shift +P and write Reopen folder in WSL. This way, you can easily open the example folder in WSL and run the code examples using Linux there. Why use an OS-backed event queue? Y ou already know by now that we need to cooperate closely with the OS to make I/O operations as efficient as possible. Operating systems such as Linux, mac OS, and Windows provide several ways of performing I/O, both blocking and non-blocking.