Linux多线程面试题及详细答案.docxVIP

  • 2
  • 0
  • 约1.37万字
  • 约 16页
  • 2026-05-18 发布于河北
  • 举报

Linux多线程面试题及详细答案

一、基础概念类(高频必问)

1.什么是Linux多线程?线程和进程的区别是什么?

问题解析:考察对线程、进程核心区别的理解,避免只说表面差异,要结合Linux内核实现(Linux没有真正的线程,是用进程模拟的)。

详细答案:Linux多线程,本质是“轻量级进程(LWP)”,多个线程共享同一个进程的地址空间(代码段、数据段、堆、共享库等),但各自拥有独立的栈空间、程序计数器(PC)和寄存器集合。

线程和进程的核心区别(结合Linux实际实现):

资源占用:进程是资源分配的最小单位,每个进程有独立的地址空间、文件描述符表,占用资源多;线程是调度的最小单位,不单独分配资源,共享所属进程的资源,占用资源少。

切换开销:进程切换需要切换页表(地址空间),开销大;线程切换只需要切换栈、PC和寄存器,开销远小于进程。

通信方式:进程间通信(IPC)需要借助管道、消息队列、共享内存等外部机制,麻烦;线程间通信可直接访问共享内存(同进程地址空间),更高效,但需处理同步问题。

内核视角:Linux内核没有“线程”概念,所有调度实体都是进程(task_struct),线程其实是和父进程共享地址空间的子进程,通过clone()系统调用创建时,指定共享资源的flags(如CLONE_VM、CLONE_FS等)。

2.Linux线程的状态有哪些?和进程状态有什么区别?

文档评论(0)

1亿VIP精品文档

相关文档