普歌+线程和进程【超详细+拓展】

线程和进程【超详细+拓展】

线程和进程

我们现在使用的电脑很多都是几核几线程的,一个电脑的运行性能和CPU有着很大的关系,而几核的电脑直接影响到CPU的好坏!

我们正常来说:几核的电脑可以运行多少应用,多少个进程。而这多少个进程又带动着多线程。宏观上看去我们所打开的应用都是同时进行的,但是从微观上看,是有先后顺序的,它们互相争夺这CPU的资源。


我们之前所使用的单核电脑,为何也可以同时开启多个应用,同时进行着不同的功能,这就说到了CPU的复制,单核的电脑系统中,会分化出多个模拟的CPU,从而带动了多个应用的同时进行!

解释

  • 进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配合调度的一个独立单位
  • 线程:是进程的一个实体,是CPU调度合分派的基本单位,是比进程更小的能独立运行的基本单位。线程基本不拥有系统的基本资源,只拥有一点在运行中必不可少的资源(如:程序计数器、一组寄存器和栈),可以和同进程的线程共享进程所有的资源。

线程和进程之间的关系:

  • 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程可以并发执行!
  • 相对于进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。

区别:

  1. 主要区别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中不同的执行路径。
  2. 线程有自己的堆栈和局部变量,但线程之间没有独立的地址空间,一个线程死掉就等于一个进程死掉,所以多进程比多线程程序健壮。但在进程切换时,耗费资源过大,效率较差。
  3. 线程的划分尺度小于进程,使得多线程程序的并发性高
  4. 线程不能独立运行;进程可以跨机器迁移

拓展

进程树

进程树:一个进程树由多个不同的进程组成,这些进程有着父级和子级的关系

举例:

我们打开cmd.exe,这是一个进程。
在cmd.exe命令行窗口中,输入notepad.exe,打开了记事本。
此时cmd.exe和notepad.exe两个不同的进程,组成了一个进程树。
且cmd.exe是父级进程;notepad.exe是子级进程。

  • 特点:子级进程伴随着父级进程的结束而结束。而子级进程结束,不会影响到父级进程的运行。

时间片

时间片又称“量子”或“处理器片”,是分时操作系统分配给每个正在运行的进程微观上的一段CPU时间(在抢占内核中是:从进程开始运行直到被抢占的时间)。

解说:事实上,虽然一台计算机通常可能拥有多个CPU,但是同一个CPU永远不可能真正的同时运行多个任务。
在只考虑一个CPU的情况下,这些进程“看起来像”同时运行的,实则是轮流穿插地运行,由于时间片通常很短,用户感觉不到!

-时间片是由操作系统内核的调度程序分配给每个进程。首先,内核会给每个进程分配相等的初始时间片,然后每个进程轮番的执行相应的时间,当所有进程处于时间片耗尽的状态时,内核会重新为每个进程计算并分配时间片,如此往复,完成相应的性能和操作!

  • 时间片的拓展:

下文来自百度百科:
通常状况下,一个系统中所有的进程被分配到的时间片长短并不是相等的,尽管初始时间片基本相等(在Linux系统中,初始时间片也不相等,而是各自父进程的一半),系统通过测量进程处于“睡眠”和“正在运行”状态的时间长短来计算每个进程的交互性,交互性和每个进程预设的静态优先级(Nice值)的叠加即是动态优先级,动态优先级按比例缩放就是要分配给那个进程时间片的长短。一般地,为了获得较快的响应速度,交互性强的进程(即趋向于IO消耗型)被分配到的时间片要长于交互性弱的(趋向于处理器消耗型)进程。


以上是,对于进程和线程的理解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值