计算机系统是由硬件和软件组成的,它们共同协作以运行应用程序。先来看下面这张一个典型的计算机系统的硬件组成图

从上图中看出一个系统由 CPU、ALU(算术逻辑单元)、PC(程序计数器)、总线(贯穿整个系统的一组电子管道)、IO设备、主存等组成。这些硬件的管理都是由操作系统来完成的。

进程

进程是操作系统对一个正在运行的程序的抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。而并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的。在大多数系统中,需要运行的进程数是多于可以运行他们的CPU个数的。传统的系统在一个时刻只能执行一个程序,而先进的多核处理器同时能够执行多个程序。无论是在单核系统还是多核系统中,一个CPU看上去都像是在并发地执行多个进程,这个通过处理器在进程间切换来实现的。操作系统实现这种交错执行的机制成为上下文切换。进程也是操作系统进行资源分配的最小单位。

操作系统保持跟踪进程运行所需的所有状态信息。这种状态也就是上下文,它包括许多信息,例如PC和寄存器文件的当前值,以及主存内容。在任何一个时刻,单处理器系统都只能执行一个进程的代码。当操作系统决定要把控制权从当前系统转移到某个新进程时,就会进行上下文切换,即保存当前进程的上下文,恢复新进程的上线文,然后将控制权传递到新进程,新进程就会从上次停止的地方开始。

程序本身不是进程,它只是一个被调用的实体,就是存在磁盘上的内容,进程是一个活动的实体,他有程序计数器以指示下一个要执行的指令。

上图展示了进程的上线文切换

上图展示创建一个进程时所属的资源

线程

进程间的切换和通信存在较大的开销,为了能并行执行更多的任务,提升系统的效率,才引入了线程的概念。线程间的切换开销比进程间的切换开销小的多。线程是CPU调度的最小单位,它是进程的一部分,只能由进程创建。一个进程有用很多个线程,这些线程共享进程的资源和程序代码。

尽管通常我们认为一个进程只有单一的控制流,但是在现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上线文中,并共享同样的代码和全局数据。由于网络服务器对并行处理的需求,线程成为越来越重要的编程模型,因为多线程之间比多进程之间更容易共享数据,也因为线程一般来说都比进程更高效。当有多处理器可用的时候,多线程也是一种使程序可用更快运行的方法。

总结

进程和线程都是计算系统抽象的一个概念,了解他们之间的区别和运行机制,对编写程序有很大的帮助,后面继续介绍Java中的jvm对线程的创建和管理。 线程的出现也如操作系统一样都是为了最大限度的合理分配管理和利用CPU的空闲资源。

jmeter进程和线程的区别_一文搞懂进程和线程的区别相关推荐

  1. tcp udp区别优缺点_一文搞懂TCP与UDP的区别

    一.TCP协议: 位于传输层, 提供可靠的字节流服务.所谓的字节流服务(Byte Stream Service) 是指, 为了方便传输, 将大块数据分割成以报文段(segment) 为单位的数据包进行 ...

  2. 红黑树和平衡二叉树的区别_一文搞懂红黑树

    文章参考 | https://segmentfault.com/a/1190000012728513 前言 当在10亿数据进行不到30次比较就能查找到目标时,不禁感叹编程之魅力! 二叉树 在了解红黑树 ...

  3. udp 使用connect优点_一文搞懂TCP和UDP的区别

    TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol ,用户数据报协议)都属于TCP/IP协议簇.TCP/IP协议集包括了超 ...

  4. dsp广告和信息流广告区别_一文搞懂DSP-蘑菇街DSP广告实践

    一.业务背景 无论哪个APP每天都会有不同程度的用户流失,为了保障站内GMV.UV稳定持续增长,拓展蘑菇街其他业务,需要庞大的用户量作为支撑,我们需要每天向外部进行广告投放,于是我们搭建了自己的广告投 ...

  5. 使用线程锁(lock)实现线程同步_一文搞懂Java多线程使用方式、实现原理以及常见面试题...

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. java吵醒线程_一文搞懂 Java 线程中断

    在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分 ...

  7. java sleep方法_一文搞懂 Java 线程中断!

    在之前的一文<如何"优雅"地终止一个线程>详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分享 ...

  8. 为什么派生的子类报错不能实例化抽象类_一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别...

    目录 #抽象类介绍 #为什么要用抽象类 #一个抽象类小故事 #一个抽象类小游戏 #接口介绍 #接口与类相似点: #接口与类的区别: #接口特性 #抽象类和接口的区别 #接口的使用: #接口最佳实践:设 ...

  9. 多线程的实现方式_一文搞懂Java多线程使用方式、实现原理以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

最新文章

  1. WinCE项目应用之车载导航
  2. 不正确 有三种形式 说法 通配泛型_一看就懂 详解JAVA泛型通配符T,E,K,V区别...
  3. 黑客宣言_情感设计宣言
  4. java 拖放文字_myeclipse2014如何实现jsp中的html代码的文字拖放
  5. c语言编写网页图形界面代码,「分享」C语言如何编写图形界面
  6. 锤子t1重置后怎么显示无服务器,解决锤子手机smartisanT1关机后无法正常开机(附带刷机教程图文)...
  7. python3 copy_Python3 深浅拷贝
  8. [Ext JS 7]7.4 样式主题(Theme)
  9. loadrunner之header相关,token等
  10. Java基础面试题:常见的异常类有哪些?
  11. unity界面按钮的位置
  12. java 接口 同名方法_java 实现多个接口 方法重名的解决办法——内部类
  13. [转]哈希算法(Hash Algorithm)初探
  14. 联想拯救者y7000p 固态移动硬盘安装Linuxmint19.1 操作系统
  15. 仓库5s管理推行难点分析
  16. Qt介绍---QPA(Qt Platform Abstraction)
  17. 【技能】Chrome扩展程序的使用
  18. 在excel中如何筛选重复数据_Excel如何快速筛选
  19. 支持度,置信度,提升度的区别和计算
  20. git合并某个或某些提交到其他分支

热门文章

  1. Python计算校验文件的MD5、SHA1、SHA256和CRC32,获取文件创建日期、修改日期和文件大小
  2. Debian11镜像更新为阿里巴巴开源镜像站镜像,切换root用户,解决用户名不在sudoers文件中此事将被报告,Debian11 文件夹对话框、火狐浏览器、命令终端等没有最大化和最小化
  3. 使用 Packer、Ansible 和 Terraform 构建不可变的基础设施Devops工具链
  4. python审批流系统_有赞移动关于权限与审批流程的标准化
  5. 最小值c语言 循环,C语言循环结构 -C语言求全班同学身高的最大值和最小值
  6. activiti 文档_免费、开源、多平台的PDF文档处理软件——PDFsam Basic
  7. Win7旗舰版系统0x0000007f蓝屏怎么办
  8. idea Maven图标的使用
  9. 注解 @CrossOrigin
  10. Java隐含对象实验报告,JSP隐含对象response实现文件下载