The most difficult task a computer undertakes is simply to communicate its computations with other software, hardware, computers & through them us humans!
Communicating to another program involves "serializing" the data into a common usually-bytestream format for it to "lex" then "parse", same for sending data into the future. If the communication/storage channel is unreliable we need error-correction/detection. If it doesn't have enough bandwidth we need compression/decompression.
An OS (Operating System) is mostly a collection of software, including reusable code, pulling all of the software necessary for I/O together. And providing a user interface, a "shell", asking users what they want to do. What software they wish to run.
I enjoy going through all these components, figuring out how they work, & communicating that!
3/2 Truly fin!
For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).