进程与线程的区别:一个简单又困难的问题

进程与线程的区别:一个简单又困难的问题

如果简单得记得,进程是操作系统分配资源的最小单位,线程是CPU调度的最小单位。其实是很难博得面试官的青睐的,因为面试官问100个人,90个人都会说这句话,体现不出差异性,所以本文从操作系统原理出发,详细讲述进程与线程的区别,看完之后,或许你对问题的回答,或许有新的理解。可以先收藏,再看。

进程执是什么

程序是一组指令集合,静态存储于磁盘中。当一个程序执行时,操作系统会将其加载进内存,形成一个逻辑实例,也就是进程,并为其分配所需资源包括CPU、文件、网络句柄等。所以也可以得出进程是操作系统分配资源的最小单位。进程的形象结构,如下图所示。

CPU的执行速度远超于磁盘、内存IO。所以一般CPU执行,都是使用时间片轮转策略。一个进程执行完其获取的CPU时间后,就需要被切换,等待下一次CPU调度。

当进程所需的资源就绪后,就可以等待CPU调度,其中除CPU外,进程所拥有的其他资源构成了进程的执行环境,即进程上下文。一个进程执行完其获取的CPU时间后,就需要被切换,切换前,需要保存其上下文切换后,等待CPU下一次临幸。

线程是什么

同一时间段,进程只能执行一个任务(读文件A的时候,不能同时读文件B),符合计算机单核CPU的环境。但是随着技术的发展,业界开始为计算机配备多核CPU,所以为了充分利用CPU的性能,操作系统引入了线程。一个进程可以创建多个线程,每个线程拥有私有栈、程序计数器等。但是线程之间可以共享父进程的资源,所以需要控制线程同步的方式(比如java中的锁)。

进程执行,其实就是进程中的线程获取到CPU时间后运行,所以线程是CPU调度的最小单位。一个进程可以创建多个线程,多核CPU可以同时调度多个线程,所以一个进程可以并发得执行多个任务。

进程和线程的区别

通过上面的介绍,可以很轻易得回答此问题。

  • 进程之间,相互独立,各不影响,而线程既拥有自己的私有资源(栈、程序计数器等),但又与其他线程共享父进程的资源(内存、文件、网络句柄等)。
  • 一个进程可以创建多个线程,线程不能脱离进程独立存在。
  • 创建一个线程消耗的资源比进程小。
  • 进程是操作系统分配资源的最小单位,线程是CPU调度的最小单位
发布了201 篇原创文章 · 获赞 601 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/zycxnanwang/article/details/105626093