One of Linus’ other posts provides the answer:
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.
See the layout in version 1.2.0 of the kernel, alternating task state segments and local descriptor tables.
386 task switching refers to the use of task state segments and task gates. These were an unusual set of features compared to other CPU architectures at the time, intimately tied to x86 segmentation. They were introduced with the 286, and provide hardware support for context switching — the CPU takes care of storing a task’s context and restoring it as necessary.
By the time Linux started being developed, other OS designers had concluded that implementing task switching in software was faster than letting the hardware handle it. Notably, OS/2 didn’t use hardware task switching (see The Design of OS/2, page 39); looking at similar Unix-style operating systems of the time for which source code is legally available, Coherent didn’t either (but its source code wasn’t available in 1991), nor did 386BSD (although that came later so it wouldn’t have influenced Linux).
However, using hardware task switching would seem natural to someone developing a 386 operating system and reading the Intel documentation available at the time. It would also simplify some of the context switching — one might argue that task state setup is complex, but any protected mode operating system for the 286 or 386 needs to set up at least one task anyway, so that complexity can’t be completely avoided. The Linux kernel emerged from Linus’ exploration of 386 protected mode and task switching, so it’s not all that surprising that it ended up using 386 task switching.
One x86 feature that Linux didn’t use, as far as I’m aware, is rings 1 and 2. As far as I remember, it also didn’t rely on segmentation to split memory up; as was typical on 386s, it used a flat memory model.