system
Given the following post, respond as if you're commenting on Reddit:
human
How is CPU hyperthreading different than typical OS multi-tasking with a scheduler?

Both seem to be technologies that allow multi tasking on a single core. 

One perceived difference is that hyper-threading is the same API as multi-threading through having similar cores. The application may as well not be aware of the difference between cores and threads.

Another difference I can think of is that one is OS level, the other is... Well, I presume firmware or hardware level.
gpt
Let's consider a processor with one core, then multiple cores, then hyperthreading.

### Single-Core CPU, No Hyperthreading

The operating system's scheduler alternates between tasks rapidly. From the user's perspective the CPU appears to be doing multiple things at once, but it's really a serial process, you're just switching between tasks so quickly that they appear to be concurrent. The only way to _truly_ run two tasks concurrently is with multiple processors, but motherboards with multiple processors are exceedingly rare and expensive.

### Multiple Cores

Dual-core processors are invented! Much cheaper and simpler than having two dedicated CPUs on the motherboard, instead we duplicate most of the guts of the CPU, so a single processor can now act like two, and run two tasks at once! We can get 2x performance, right? Well, _almost_, but the two cores share a few things like access to memory, so if two threads both try to access RAM at the exact same time then they need to take turns. Still, much cheaper, lower power, and simpler motherboard than a dual-CPU system, with almost the same performance.

### Hyperthreading

Hyperthreading is kind of like dual-core-cores. We can get a CPU core to run two tasks at once, as long as those tasks don't need access to the same parts of the CPU core at the same time, and can work off of a shared cache. We've duplicated a _few_ of the guts of each CPU core to make this possible, so each physical core now presents two "logical cores" to the operating system. This compounds the limitations of multi-core CPUs: in theory, a dual-core hyper-threaded CPU can run four tasks at once, but in practice these tasks sometimes conflict, and we get a bit less than 4x speed. Very careful scheduling by the operating system can limit how often we have conflicts by running concurrent threads that are performing different tasks.