1. (a). The number of threads in the pool can be set heuristically based upon system factors.
(b). More sophisticated thread-pool architectures can dynamically adjust the number of threads in the pool according to usage patterns.
2.One-to-one model provides more concurrency. It also another thread to run when a thread makes a blocking system call. It supports multiple thread to execute in parallel on microprocessors.
3. (a). Threads share the address space of the process that created it; processes have their own address space.
(b). Threads have direct access to the data segment of its process; processes have their own copy of the data segment of the parent process.
(c). Threads can directly communicate with other threads of its process; processes must use inter-process communication to communicate with sibling processes.
(d). Threads have almost no overhead; processes have considerable overhead.
(e). New threads are easily created; new processes require duplication of the parent process.
(f). Threads can exercise considerable control over threads of the same process; processes can only exercise control over child processes.
(g). Changes to the main thread (cancellation, priority change, etc.) may affect the behavior of the other threads of the process; changes to the parent process does not affect child processes.