Skip to content

Operating Systems

I believe it's important you start by understanding what an operating system is, how they work and how you can manage one. With these skills everything else will make a lot more sense. Without them you're going to struggle to deploy software as without an operating system you simply cannot deploy software.

An operating system is defined by Wikipedia as:

An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. - https://en.wikipedia.org/wiki/Operating_system

I am going to recommend you study and use Linux on a daily basis.

Here is how I would go about studying operating systems in more detail. Keep in mind this is a massive topic that is potentially endless. I've listed the core concepts below so that you can focus your time on the key items and minimise wasting time.

I'd also like to mention that I'm going to be providing these resources from the perspective of managing a server, not a desktop environment. Some of the links will therefore be referring to Linux server environments.

Basic concepts

These are high level concepts that apply to any operating system you're going to interact with (Linux, Windows, macOS, etc.)

  • The kernel
  • Memory management
  • Resource management
  • Device management
  • Processes and threads
  • System calls

Resources

Wikipedia has these topics covered pretty well. You don't need much more than these pages.

Topic Resource Location Link
Kernel Wikipedia Kernel (operating system)
Memory Management Wikipedia Memory management
Resource Management Wikipedia Kernel (operating system) Resource Management
Device Management Wikipedia Kernel (operating system) Device Management
Processes Wikipedia Process (computing)
Processes Management Wikipedia Process management (computing)
Threads Wikipedia Thread (computing)
System Calls Wikipedia System call

Specific tasks

The tasks below are common operation you're going to perform when working with operating systems locally, remotely, on hardware, in virutalisation, and more.

  • Remote access via SSH
  • User management
  • File management and access
  • Software installation
  • Service management
  • Resource utilisation discovery

Resources

Each of these tasks changes based on the operating system being managed. I'm going to provide resources for Linux only.

The thing with Linux is there are a lot of distributions available and companies can use a variety, sometimes in the same organisation. The most common Linux distributions you'll find in the wild include:

  • RedHat Enterprise Linux (RHEL)
  • CentOS
  • Ubuntu Linux
  • Debian Linux

From here things get a bit more interesting (and therefore complex) because RHEL is based off of CentOS, and Ubuntu is based off of Debian. This means they share common traits and you can learn one and have a decent understanding of the other. Therefore what I suggest is you use CentOS and Ubuntu to start learning the Linux ecosystem. In the interest of keeping things simple, I'll provide resources for Ubuntu below as I'd argue it's probably the most common distribution in use today.

Topic Resource Location Link
SSH Access phoenixNAP How to Use SSH to Connect to a Remote Server in Linux or Windows
User management Ubuntu Server Docs User Management
File management DigitalOcean Community Basic Linux Navigation and File Management
File permissions DigitalOcean Community An Introduction to Linux Permissions
Software installation Ubuntu Server Docs Package Management
Service management DigitalOcean Community Systemd Essentials
Resource utilisation Vitux.com How to use htop to monitor system processes in Ubuntu

Next

Let's look at some resources that cover the above topics so you can begin studying.