前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java并发之进程和线程

Java并发之进程和线程

作者头像
终有救赎
发布2023-12-26 09:22:17
1370
发布2023-12-26 09:22:17
举报
文章被收录于专栏:多线程多线程

一、定位

首先,进程和线程都是操作系统资源分配的基本单位,但它们在计算机中的定位不同。

进程是执行中的一段程序,一旦程序被载入到内存中并准备执行,它就是一个进程。进程表示资源分配的基本概念,是调度运行的基本单位,是系统中的并发执行的单位。每个进程都有各自独立的一块内存,使得各个进程之间内存地址相互隔离。

线程是进程中的执行流程,是程序执行的最小单位。线程是进程中的单一的顺序控制流程,是程序执行流的最小单元。同一个进程内多个线程之间可以共享代码段、数据段、打开的文件等资源,但每个线程各自都有一套独立的寄存器和栈,这样可以确保线程的控制流是相对独立的。

进程和线程在计算机中都扮演着重要的角色。进程是程序执行的起点,而线程则是程序执行过程中的最小工作单元。

两者的概念在面试中也是经常遇到,所以这篇文章将带着大家熟知进程和线程的概念、区别以及应用等。

图片.png
图片.png

二、什么是进程?

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。进程有动态性特征,它的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

上面的描述还是太过于抽象,我们日常生活中所使用的电脑中的各种应用程序,当我们运行某个程序时,就会在系统中形成一个进程

图片.png
图片.png

三、进程管理

提到进程,我们不得不说一下进程的管理,首先我们要知道进程管理是个啥?

进程管理是操作系统的重要组成部分,它负责协调和调度计算机系统中的多个进程,确保它们能够有效地共享计算机资源,并保证系统的稳定性和安全性。

进程管理包括进程的创建终止调度资源分配等方面。当一个程序需要执行时,操作系统会为它创建一个进程,并分配给它必要的资源,如内存空间、文件、设备等。在进程运行过程中,操作系统会根据需要对其进行调度,确保其能够按照预期的顺序和时间片执行。

进程管理还要负责对进程进行监控和管理,确保它们不会发生冲突或死锁等问题。如果一个进程无法正常执行或需要终止,进程管理需要对其进行相应的处理,如释放它所占用的资源,删除它的状态信息等。

能够协调和调度多个进程的执行,确保它们能够有效地共享计算机资源,并保证系统的稳定性和安全性。

图片.png
图片.png

进程中的PCB属性

进程的PCB属性是进程在系统中存在和运行的基础,它包含了进程的重要信息和状态。

  1. PCB中包含进程的控制块,这是进程存在的标志。控制块包含了进程的名称、标识符、状态等重要信息,同时也记录了进程的优先级、调度信息等。
  2. PCB中还包含了进程的堆栈信息。堆栈是进程在执行过程中用于保存局部变量、函数参数等信息的内存区域。在PCB中,堆栈指针是用来指示堆栈位置的重要信息,同时堆栈中还保存了进程的返回地址和中断向量表等信息。
  3. PCB中还包含了进程的内存信息寄存器信息等。反映了进程在运行时的状态和环境,对于系统进行进程调度和资源分配具有重要的参考价值。

四、多任务处理

概念补充:这里的CPU核心数指的是逻辑核心。例如我的电脑是8内核和16线程处理器,即8个物理核心,16个逻辑核心。

并发并行是计算机科学中两个重要的概念,它们都是指同时执行多个任务或操作。

并发是指两个或多个任务在时间上交替执行,但它们在空间上是分开执行的。这意味着每个任务都有自己的数据和资源,并且不会共享其他任务的数据和资源。

例如,考虑一个多线程应用程序,其中多个线程可以同时执行不同的任务。在这种情况下,每个线程都有自己的堆栈和局部变量,并且不会与其他线程共享这些数据。这种并发执行可以提高程序的效率和响应性,但同时也增加了编程的复杂性。

并行是指两个或多个任务在同一时间执行,并且它们可以共享数据和资源。这意味着每个任务都可以访问相同的内存空间和处理器资源。

例如,考虑一个多核处理器,其中多个核心可以同时执行不同的指令。在这种情况下,每个核心都有自己的寄存器和高速缓存,但它们可以共享内存空间和处理器资源。这种并行执行可以大大提高程序的性能和效率,但同时也需要更复杂的同步和通信机制来避免竞态条件和死锁等问题。

并发和并行都是指同时执行多个任务或操作,但它们在空间和时间上有不同的表现形式。 并发执行可以提高程序的效率和响应性,但同时也增加了编程的复杂性; 而并行执行可以大大提高程序的性能和效率,但同时也需要更复杂的同步和通信机制来避免竞态条件和死锁等问题。 在实际应用中,我们需要根据具体的情况选择适当的执行方式来满足不同的需求。

图片.png
图片.png

五、什么是线程?

线程是计算机科学中的一个重要概念,它是进程的基本组成部分,是程序执行时的最小单位。线程允许程序同时执行多个任务或操作,从而提高程序的效率和响应性。

线程可以看作是进程中的一个执行路径,它包含了程序执行的指令和数据。每个线程都有自己的堆栈和局部变量,并且可以独立地执行代码。线程之间可以共享进程中的数据和资源,但同时也需要遵循一定的同步和通信规则,以避免竞态条件和死锁等问题。

线程可以分为两类:用户级线程内核级线程

用户级线程是由用户程序自己实现的,它们在进程中运行,但不依赖于操作系统内核的支持。

内核级线程是由操作系统内核实现的,它们可以直接访问硬件资源,并且可以在进程中切换执行。

在实际应用中,线程可以用于实现多种任务或操作。

  • 在Web服务器中,可以使用多线程来处理多个客户端的请求,从而提高服务器的吞吐量和响应性。
  • 在数据库系统中,可以使用多线程来并发地执行查询、插入和更新等操作,从而提高数据库的性能和效率。
  • 在分布式系统中,可以使用多线程来并发地处理不同的任务或操作,从而提高系统的可扩展性和可靠性。

六、进程和线程的区别

1.根本区别:进程是操作系统进行资源分配的最小单元,线程是操作系统进行运算调度的最小单元。

2.从属关系不同:进程中包含了线程,线程属于进程。

3.开销不同:进程的创建、销毁和切换的开销都远大于线程。

4.拥有资源不同:每个进程有自己的内存和资源,一个进程中的线程会共享这些内存和资源。

5.控制和影响能力不同:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

6.CPU利用率不同:进程的CPU利用率较低,因为上下文切换开销较大,而线程的CPU的利用率较高,上下文的切换速度快。

7.操纵者不同:进程的操纵者一般是操作系统,线程的操纵者一般是编程人员。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、定位
  • 二、什么是进程?
  • 三、进程管理
    • 进程中的PCB属性
    • 四、多任务处理
    • 五、什么是线程?
    • 六、进程和线程的区别
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档