I am studying "Threads" part with a textbook, Operating system concepts written by Abraham Silberschatz, Peter, Greg.
First, I'm going to say something in the textbook related to my question, and then to ask the question. If someone already knows the following theory, skip to my question, please.
The book defined parallelism and concurrency like the following:
Concurrency supports more than one task making progress.
Concurrent execution on single-core system:
Parallelism implies a system can perform more than one task simultaneously.
Parallelism on a multi-core system:
Many-to-one model: true concurrency is not gained because kernel can schedule only one thread at a time.
One-to-one model: provides more concurrency than many-to-one model."
My question is why concurrency is not gained in many-to-one model and why one-to-one model provides more concurrency than many-to-one model.
I think that many-to-one model's performance is not gained, but I think concurrency is 4 times greater than single thread. In addition, one-to-one model provides 4 times more concurrency than single thread (same as many-to-one model). Moreover, parallelism is 4 times better than many-to-one model in multi-processor architectures.
My conclusion is the textbook wrote wrongly. So it should be changed like the following
Many-to-one model: concurrency is improved up to the number of user threads, but performance is not gained because kernel can schedule only one thread at a time.
One-to-one model: concurrency is improved up to the number of user threads, and performance is also improved up to the number of processors.
Is my thought right or wrong? Thank you for reading.