进程和线程的联系和区别?

线程和进程的联系:

线程是进程当中的⼀条执⾏流程。

同⼀个进程内多个线程之间可以共享代码段、数据段、打开的⽂件等资源,但每个线程各⾃都有⼀套独⽴的寄存器和栈,这样可以确保线程的控制流是相对独⽴的。

os-271e450b-66ef-4f6c-b823-8e0b73347825.png

线程与进程的比较如下:

  • 调度:进程是资源(包括内存、打开的文件等)分配的单位线程是CPU调度的单位
  • 资源:进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈;
  • 拥有资源:线程同样具有就绪、阻塞、执行三种基本状态,同样具有状态之间的转换关系;
  • 系统开销:线程能减少并发执行的时间和空间开销——创建或撤销进程时,系统都要为之分配或回收系统资源,如内存空间、I/O设备等,操作系统所付出的开销显著大于在创建或撤销线程时的开销,进程切换的开销也远大于线程切换的开销。

标签: java, Java面试题, 操作系统, Java问题合集, Java编程, Java问题精选, Java常见问题, 操作系统面试题