The foundational layer of computing: managing hardware, scheduling processes, and enabling software to run safely and efficiently.
An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. You may use macOS, Windows, Linux, cloud-based laptops (e.g., Chrome OS), or anything that fits your workflow. For learning, I recommend Debian-based systems (e.g., Ubuntu, Linux Mint) — they use the APT package manager and share consistent configuration patterns.
Popular Operating Systems
Microsoft Windows
A proprietary OS developed by Microsoft, dominant in personal computing worldwide.
UNIX & BSD Family
Rooted in 1960s research, UNIX influenced modern OS design. Its descendants emphasize stability, security, and portability.
- Sun Solaris — A historic UNIX OS for SPARC and Intel, once dominant in enterprise workstations.
- BSD Variants — Open-source derivatives of Berkeley’s UNIX, prioritizing correctness and security.
- macOS — Apple’s proprietary UNIX-based OS for Mac computers. Known for its polished UI and developer tools.
GNU/Linux
Powering servers, supercomputers, Android phones, and embedded devices — Linux is everywhere. It’s open, modular, and community-driven.
- Debian-based — Stable, secure, and the base for many popular distros.
Ubuntu offers official flavors (Kubuntu, Xubuntu, Lubuntu…) and community editions (Zorin OS, elementary OS, etc.).
- RPM-based — Enterprise-grade stability with strong tooling (e.g., dnf, yum).
- Arch-based — Rolling-release, DIY ethos. Ideal for learners who want control.
- Others
Desktop Environments
Linux supports multiple GUI environments — choose based on performance, aesthetics, or workflow.
Key Concepts
- Kernel: Core of the OS (e.g., Linux kernel, NT kernel)
- Shell: Command-line interface (Bash, Zsh, PowerShell)
- Filesystem: Layout (e.g., /, /home, C:\)
- Processes & Threads: Units of execution
- Permissions: User/group/other (rwx)
Common Commands (Linux/macOS)
ls # list files pwd # print working directory cd ~ # go to home mkdir dir # create directory nano file # edit text file sudo apt update # Debian/Ubuntu