面试题答案
一键面试区别
- 资源管理:
- 进程上下文切换:进程是资源分配的基本单位,进程上下文切换时,涉及到虚拟地址空间、文件描述符、信号处理等资源的切换。例如,不同进程可能有不同的内存映射,切换进程时,要重新设置内存管理相关的数据结构,如页表等。
- 线程上下文切换:线程是 CPU 调度的基本单位,同一进程内的线程共享进程的资源,如地址空间、文件描述符等。线程上下文切换主要是切换线程的寄存器值、栈指针等,不涉及资源的重新分配。
- 数据结构:
- 进程上下文切换:需要保存和恢复进程控制块(PCB)中的各种信息,包括进程状态、程序计数器、寄存器值、内存管理信息等。
- 线程上下文切换:主要保存和恢复线程控制块(TCB)中的信息,TCB 相对简单,主要包含线程的运行状态、寄存器值、栈指针等,因为共享进程资源,无需保存进程级别的资源信息。
线程上下文切换性能优势原因
- 资源切换开销小:由于线程共享进程资源,上下文切换时无需像进程那样重新分配资源,例如无需重新映射内存空间,减少了内存管理相关的操作开销。比如,一个进程内多个线程切换,无需重新加载页表,而进程切换则需要。
- 数据结构简单:线程控制块(TCB)比进程控制块(PCB)简单,保存和恢复 TCB 信息的开销更小。保存和恢复少量寄存器值和栈指针等信息,相比保存和恢复进程的全部资源信息要快得多。