Why does Linux have poor battery life by default compared to Windows?

A modern computer contains hundreds of parts that can be turned on and off or clocked faster or slower independently. The granularity is smaller than visible chips, smaller even than cores. A large part of power saving consists on turning parts on and off at the best time. Each part should be turned off when not in use, but only if it's going to remain unused for a long enough time to be worth it (when the part restarts, it needs some time and hence some power to reboot and restore its old state).

Thus good power management requires well-written drivers. Hardware manufacturers are very cagey about giving out details about their hardware to people who write drivers. Even people who write closed-source drivers under a non-disclosure agreement often lack detailed documentation — and people who are writing open-source drivers for an operating system that the manufacturer doesn't care much about have it a lot worse.

So on PCs, Linux starts at a disadvantage, not for technical reasons, but for social reasons.

Linux is used in many embedded devices and higher-end devices that run on batteries. The kernel matters a lot for battery life; most smartphones run Android, which is based on a Linux kernel.

To save battery, make sure not to run a “screen saver” (go for a plain black screen), and stay away from 3D effects (which stress the GPU). Don't keep web pages with CPU-intensive animations and other effects (Chrome has a nice view of per-tab CPU consumption). Enable CPU frequency scaling while not connected to the mains; it makes your computer slower by slowing down the main CPU, which saves power. Run Powertop to see where your power is going given the way you use your computer.


Is there something inherent to Linux operating systems that makes them poor managers of battery power by default?

No [but see my first comment below]. Note it is used on a wide range of low power devices where it is not even possible to run Windows. The battery can't be magically drained, so if it is happening at an unusual rate, it could be that you have something which is perpetually consuming resources. Install a CPU monitor and watch it.

The other possibility is that if you are used to walking away from the laptop with the lid up, you may not have linux configured to go to sleep, or go to sleep in a short enough period of time. I don't bother with this (I just put the lid down), so I can't tell you how to fix that (ask a more specific question if you think this is the problem). Windows, OTOH, seems to go to sleep fairly quickly by default.