当前位置: 首页 > news >正文

线程与进程的区别(基础面试题)

1.定义

进程:

具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程:

进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

2.关系

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。

3.区别

  进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

1). 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

2). 线程的划分尺度小于进程,使得多线程程序的并发性高。

3). 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

4). 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

5). 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

4.优缺点

线程和进程在使用上各有优缺点:

线程执行开销小,但不利于资源的管理和保护;

而进程正相反。

同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

相关文章:

  • C#将控件置于最顶层和最底层
  • 带有去重以及字符串拼接、日期拼接、字段相除的SQL语句
  • 面试题收集最新
  • js 数组排序
  • Andrew Ng-ML-第十九章-应用举例:照片OCR(光学字符识别)
  • 泛型的理解(1)
  • 使用阿里云接口进行手机号(三网)实名认证
  • unique()函数使用
  • Install MongoDB to Ubuntu 18.04
  • SpringCloud Gateway入门
  • 使用jQuery操作input的value值
  • tpl-angularjs Web端开发工程模板
  • [python] RRT快速拓展随机树
  • 《Python从菜鸟到高手》已经出版,开始连载了,购买送视频课程
  • Clojure基础课程2-Clojure中的数据长啥样?
  • 《深入 React 技术栈》
  • 【mysql】环境安装、服务启动、密码设置
  • EventListener原理
  • flask接收请求并推入栈
  • Java比较器对数组,集合排序
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • SOFAMosn配置模型
  • win10下安装mysql5.7
  • 从0到1:PostCSS 插件开发最佳实践
  • 前嗅ForeSpider采集配置界面介绍
  • 区块链分支循环
  • 实现菜单下拉伸展折叠效果demo
  • 小程序button引导用户授权
  • 一个JAVA程序员成长之路分享
  • 一个SAP顾问在美国的这些年
  • Prometheus VS InfluxDB
  • ​用户画像从0到100的构建思路
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • (MATLAB)第五章-矩阵运算
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (编译到47%失败)to be deleted
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (原創) 未来三学期想要修的课 (日記)
  • (转载)深入super,看Python如何解决钻石继承难题
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .bat批处理(六):替换字符串中匹配的子串
  • .Net IOC框架入门之一 Unity
  • .net 设置默认首页
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • ?.的用法
  • [ C++ ] STL---string类的模拟实现
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [BZOJ4010]菜肴制作
  • [C++基础]-初识模板
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解