关于线程与CPU的关系理清

最近在啃《深入理解JVM》 看到垃圾收集器那一节关于CMS的并发清理线程时,下定决心要把线程和CPU的关系理清楚。

首先,先解释并发和并行的区别。如果不对请麻烦评论纠正一下。
1.我理解的并发是指执行多个任务。并且这些任务可能是同时进行的,也可能不是同时进行的。比如说单核CPU上的多线程通过抢占CPU资源获得时间片(CPU分配给线程的执行时间),执行自己线程的任务。因为时间片时间非常短,可能只有十几毫秒。使得用户觉得CPU可以同时执行多个任务。比如说在一个游戏软件中,线程A负责计算子弹的弹道并且改变子弹的位移矢量,而线程B负责控制玩家的行走,线程A在控制子弹运动,此时线程B来抢占CPU资源,将线程A踢出CPU,并且控制玩家移动了一下,最终玩家躲开了子弹爆头的致命一击,只是掉了点血。这个过程看起来像是子弹打出去,玩家也在运动,最终躲掉了子弹一样,其实是玩家走一点点,子弹再移动一点点,如此反复,最终子弹和玩家碰撞盒相遇造成伤害。这种可以执行多个任务的行为称为并发。

另外一种并发的情况是并行,下面来解释并行。
2.并行强调"同时"的概念,相像一下,许多线程平“行”,一“并”执行各自的任务。他们之间是平行关系,当然是同一时间进行的。在多核CPU上,如果每条线程都可以得到一个CPU资源来执行自己的任务,那这些线程都是同时间点执行自己的任务。如果线程比较多,而无法为每条线程都分配一个CPU核,那么可能发生两个或以上的线程抢占一个CPU核的情况。

当程序属于IO密集型或者其他非CPU使用密集型时,线程会频繁访问IO等非CPU资源。如果不支持并发,那么当许多线程都在访问IO或者其他非CPU资源,那CPU就会处于空闲状态,这时就无法让CPU的利用率达到最大。如果支持并发,那么当一个线程在访问CPU转而访问IO等资源时,其他线程就可以继续利用CPU进行运算,使得CPU利用率达到最大。

如果有错误还请改正。

### 回答1: 进程是操作系统资源分配的基本单位,每个进程都拥有独立的内存空间、文件描述符、网络连接等资源。线程则是进程中执行的最小单位,它共享进程的资源,但拥有独立的调度和执行栈。一个进程可以包含多个线程,它们共享进程的内存空间,但是各自拥有独立的执行栈和寄存器等。 CPU资源与进程和线程之间的分配关系是这样的:操作系统会将CPU的时间分配给各个进程和线程,每个进程和线程都会占用一定的CPU时间片。在多任务环境下,操作系统通过调度算法来决定分配给每个进程和线程CPU时间片大小和顺序,以实现高效的资源利用和任务完成。 总的来说,进程和线程之间的关系是协同合作的,它们共同占用CPU资源,实现系统的并发执行。 ### 回答2: 进程是指计算机中正在运行的程序的实例,它包含了程序代码、数据集合以及一些系统资源的拷贝,每个进程都有自己独立的内存空间和其他资源。而线程是进程中的执行单元,一个进程可以包含多个线程,它们共享同一个进程的资源。 进程的CPU资源分配是通过操作系统进行调度的,操作系统会根据一定的算法和策略来决定将CPU的执行时间片分配给哪个进程。在多任务系统中,操作系统会根据进程的优先级、等待时间等因素来进行调度,分配给进程合适的CPU资源。 而线程的分配则是在进程内部进行的。一个进程中的多个线程共享进程的资源,包括内存空间、文件句柄等,因此线程之间的切换开销相对较小。线程的分配由进程自己来管理,它可以将 CPU 的执行时间片分配给各个线程,也可以根据需要调整线程的执行优先级,或者进行线程的创建和销毁。 进程的CPU资源分配与线程的分配有着密切的关系。一个进程中的线程需要通过进程来获取 CPU 资源,所有线程共享同一个进程的 CPU 时间片。因此,如果某个线程需要更多的 CPU 时间来执行重要的任务,进程需要将更多的 CPU 资源分配给这个线程,以保证任务的及时完成。同时,进程也需要平衡各个线程之间的资源分配,以充分利用 CPU 的运行能力。 综上所述,进程的CPU资源与线程分配是相互关联的。进程通过操作系统来获取 CPU 时间片,而线程则是在进程内部相互竞争获取 CPU 资源。合理的进程和线程的资源分配可以提高系统的运行效率和响应速度,更好地满足用户的需求。 ### 回答3: 进程CPU资源与线程分配关系是指进程与线程之间在CPU资源分配方面的关系。 进程是操作系统中的一个执行实体,拥有独立的内存空间和运行环境,可以包含多个线程。而线程是进程中的一个执行单元,它与其他线程共享进程的地址空间和资源。 在CPU资源分配方面,操作系统会给予进程和线程不同的资源分配。每个进程都有自己的独立地址空间和资源,包括代码、数据、堆栈等,而且每个进程都有自己的CPU时间片,可以独立地进行调度和执行。每个进程都能够占用独立的CPU资源,通过操作系统的调度算法来决定进程之间的切换。 而线程是进程的一个执行单元,它与其他线程共享进程的地址空间和资源。线程之间可直接访问进程的全局变量、堆栈等资源,可以更快速地进行通信和数据共享。但是线程之间共享的资源也带来了一定的聚集问题,比如在多线程并发访问共享资源时可能发生竞争条件和数据不一致等问题。 进程和线程之间的CPU资源分配关系是由操作系统的调度算法决定的。操作系统会根据不同的调度算法,如时间片轮转调度、优先级调度等,来决定给予进程和线程CPU时间片大小和调度优先级。对于进程,操作系统会根据进程的优先级、等待时间、执行时间等因素进行调度。而对于线程,操作系统会根据线程的优先级、调用时机和等待时间等因素进行调度。 总的来说,进程与线程之间的CPU资源分配关系是在操作系统的调度算法下进行的。进程有独立的资源,并占用独立的CPU时间片,而线程则与其他线程共享进程的资源,共同竞争CPU资源。操作系统根据不同的算法来决定给予进程和线程CPU时间片大小和调度优先级,以实现有效的资源利用和任务执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值