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

线程和进程区别

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等,然后,该进程被放入到进程的就绪队列,进程调度程序选中它,为它分配CPU及其它相关资源,该进程就被运行起来。

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

在没有实现线程的操作系统中,进程既是资源分配的基本单位,又是调度的基本单位,它是系统中并发执行的单元。而在实现了线程的操作系统中,进程是资源分配的基本单位,但线程是调度的基本单位,线程是系统中并发执行的单元。

具体而言,引入线程,主要有以下4个方面的优点:

(1)易于调度。
(2)提高并发性。通过线程可以方便有效地实现并发。
(3)开销小。创建线程比创建进程要快,所需要的开销也更少。
(4)有利于发挥多处理器的功能。通过创建多线程,每个线程都在一个处理器上运行,从而实现应用程序的并行,使每个处理器都得到充分运行。

需要注意的是,尽管线程与进程二者很相似,但也存在着很大的不同,区别如下

(1)一个线程必定属于也只能属于一个进程;而一个进程可以拥有多个线程并且至少拥有一个线程。
(2)属于一个进程的所有线程共享该线程的所有资源,包括打开的文件、创建的Socket等。不同的进程互相独立。
(3)线程又被称为轻量级进程。进程有进程控制块,线程也有线程控制块。但线程控制块比进程控制块小得多。线程间切换代价小,进程间切换代价大。
(4)进程是程序的一次执行,线程可以理解为程序中一段程序片段的执行。
(5)每个进程都有独立的内存空间,而线程共享其所属进程的内存空间。

相关文章:

  • 在Silverlight中动态绑定页面报表(PageReport)的数据源
  • xsd
  • Apache Struts2 远程命令执行漏洞
  • perf 简介
  • linux 压缩解压缩命令
  • Qt4过渡至Qt5
  • 啊速度发说法
  • Tiny6410 LED字符设备驱动
  • java对文件的检索
  • ×××服务让用户看得见
  • Sencha Touch 2.1学习图表Chart概述
  • tail tailf 使用
  • openal 基础知识3
  • JavaScript 表单验证
  • 网站架构资料收集整理
  • Google 是如何开发 Web 框架的
  • 分享的文章《人生如棋》
  • [笔记] php常见简单功能及函数
  • Babel配置的不完全指南
  • canvas 高仿 Apple Watch 表盘
  • IDEA常用插件整理
  • JavaWeb(学习笔记二)
  • oschina
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 笨办法学C 练习34:动态数组
  • 离散点最小(凸)包围边界查找
  • 力扣(LeetCode)22
  • 使用docker-compose进行多节点部署
  • 算法系列——算法入门之递归分而治之思想的实现
  • 我的面试准备过程--容器(更新中)
  • 异步
  • 优秀架构师必须掌握的架构思维
  • 原生JS动态加载JS、CSS文件及代码脚本
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​2020 年大前端技术趋势解读
  • ​2021半年盘点,不想你错过的重磅新书
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #etcd#安装时出错
  • #git 撤消对文件的更改
  • (70min)字节暑假实习二面(已挂)
  • (C#)获取字符编码的类
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (转) Face-Resources
  • .cfg\.dat\.mak(持续补充)
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET程序员迈向卓越的必由之路
  • .net实现客户区延伸至至非客户区
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .net项目IIS、VS 附加进程调试
  • @FeignClient注解,fallback和fallbackFactory
  • @ModelAttribute使用详解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)