线程和进程

线程

进程

进程的定义, 进程是一个具有一定独立功能的程序, 在一个数据集合上一次动态执行的过程. 进程是一个正在执行的程序的实例, 包括程序计数器, 寄存器和程序变量的当前值

进程有那些特征?

  1. 进程依赖于程序运行而存在, 进程是动态的, 程序是静态的
  2. 进程是操作系统进行资源分配和调度的一个独立单位 (CPU除外, 线程是处理器任务调度和执行的基本单位)
  3. 每个进程拥有独立的地址空间, 地址空间包括代码区, 数据区和堆栈区, 进程之间的地址空间是隔离的, 互不影响的.

什么是线程?

进程的创建, 销毁与切换存在着较大的开销, 我们需要有一个轻型的进程技术来减少开销.

线程被设计成进程的一个执行路径, 同一个进程中的线程共享进程的资源,

进程和线程的区别:

  • 本质区别: 进程是操作系统资源分配的基本单位, 而线程是处理器任务调度和执行的基本单位
  • 包含关系: 一个进程至少有一个线程, 线程是进程的一部分,所以线程也被轻权进程或者轻量级进程
  • 资源开销: 每个进程都有独立的地址空间, 进程之间的切换会有较大的开销; 线程可以看作轻量级的进程, 同一个进程的线程共享进程的地址空间, 每个线程都有自己独立的运行栈和程序计数器, 线程之间切换的开销小
  • 影响关系: 一个进程崩溃后, 在保护模式下其他进程不会被影响, 但是一个线程崩溃可能导致整个进程被操作系统杀死. 所以多进程要比多线程健壮

在计算机这个大工厂里面. 进程被比作一个车间, 为生产活动提供了设计图, 场地等生产要素, 而线程是这个车间中的一条条生产线. 生产线本身会有一个操作台, 具体的零件在这个被生产. 生产线必须由工人操作才能动起来. 当工人来到一个生产线旁并启动它之前. 必须查阅生产线的生产记录一边弄清楚这个生产线的零件加工到那种程度了, 然后才能转却地连续生产, 当工人停止生产线钱也必须记录这次的生产进度,以备下次读取, 这些进度信息可以理解为上下文. 读取和记录生产进度的过程称为上下文切换

一个工人可以在多条生产线见穿梭操作, 就像CPU在不同线程见切换一样, 这个动作被称为并发, 与之对应的, 多个工人操作多条生产线同时生产, 称为并行. 如果生产线不需要太多原料就能生产, 那这种生产认为被称为CPU密集型, 如果生产线大部分时间在等待原料的输入, 那这种任务被称为IO密集型.

并行与并发

一个基本的事实前提: 一个CPU在一个瞬间只能处理一个任务.

在日常生活中, 通常可以一边浏览网页, 一边听音乐这属于是两个进程同时进行, 但是我们CPU一次只能处理一个任务, 这是为什么呢?

这是因为时间片轮转调度. 每个进程会被操作系统分配一个时间片, 即每次被CPU选中来执行当前进程所用的时间. 时间一到, 无论进程是否运行结束, 操作系统都会强制将CPU这个资源转到另一个进程去执行.

并行是多个人在一个时间段里面走路, 路是不同的, 并发是一个人在一个时间段里面走路, 任务不同路也不同

在这里插入图片描述

线程私有资源

函数运行时的信息保存在栈帧中.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中的线程进程是操作系统中两个基本的概念,它们在执行上下文中有着不同的含义: 1. **进程**(Process): 进程是操作系统分配资源的基本单位,每个进程都有自己的独立内存空间和系统资源。Java程序运行时会创建一个对应的JVM(Java Virtual Machine),JVM中可以有多个并发执行的线程进程的切换是由操作系统内核控制的,切换开销相对较高。 2. **线程**(Thread): 线程是在同一个进程中并行执行的轻量级实体,它们共享同一块内存空间,因此相比于进程线程之间的通信更快、切换更频繁。在Java中,每个Java应用至少有一个主线程,用户可以通过继承Thread类或实现Runnable接口来创建新的线程。 **主要区别**: - **资源占用**:进程拥有独立的内存空间,而线程共享进程的内存,所以线程更节省资源。 - **并发性**:同一进程内的线程可以直接相互访问数据,易于实现并发控制;而不同进程间的数据交换需要通过I/O操作。 - **调度粒度**:进程调度由操作系统进行,线程调度则由JVM或操作系统的用户级线程管理器完成,线程切换更快速。 - **同步与通信**:线程之间通常通过锁、条件变量等同步机制协作,而进程间的通信通常使用管道、消息队列等机制。 **相关问题**: 1. Java如何创建和管理线程? 2. 进程线程在性能优化上有什么考虑? 3. 在并发编程中,为什么要避免不必要的线程创建?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值