You are getting locked up by terminology. Let me try to hopefully un-confuse you with new terminology.
There are THREADS (aka kernel threads) and there are SIMULATED THREAD (aka user threads and what I have never heard before green threads.
CPUs only knows about processes. A traditional process consisted of a single stream of execution (you could call that a THREAD) and an address space. The operating system can fool the CPU by creating multiple instruction streams (THREADS) that share the same address space.
In a modern operating system, a process consists of an address space and one or more streams of execution (THREADS). Because these are managed by the operating system kernel, they have been called "kernel threads,:
On a system that supports THREADS, a process consists of an address space and one or more instruction streams of execution (ie THREADS).
In ye olde days, operating systems only allowed one thread per process. And it was not even called a "thread." We just had processes. Then came along languages, such as Ada, that needed multi-threading. Because the operating system did not support threads, the threads were implemented in language support libraries. These libraries used timers to switch among different streams of execution. These libraries simulated threads. Operating system books call this method "user threads."
The big question is why this is a major topic at all in an operating system book. Either the operating system supports threads or it does not.
"User threads" are application level programming so there is no need to operating system books to cover them other than to say they exist when threads are not available.
You are suffering from a simple topic being made overly complex.