Linux, Windows, and macOS solve the same fundamental problems.
They isolate applications, schedule execution, manage memory, organize files, control devices, and provide networking. Most application developers use similar high-level operations on all three systems: start a program, open a file, create a thread, or connect to a server.
The important differences are below that surface.
Each system places kernel components differently, represents processes and resources through different abstractions, organizes storage into a different namespace, and exposes a different stable interface to applications.
| Platform | API used for that same request |
|---|---|
| Linux | POSIX API |
| Windows | Win32 API |
| macOS | POSIX and Apple APIs |
Below those APIs sit different kernel interfaces and filesystem models.
This chapter focuses on the differences that affect application behavior, deployment, debugging, and portability.