首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于进程线程---对比--切换开销

问题 一 进程线程的对比 二 为什么进程切换开销大,线程切换开销低呢?...一 进程线程的对比 几个方面对比: 根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销...;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。...所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行) 内存分配:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言...包含关系: 操作系统中的每一个进程中都至少存在一个线程,一个进程可拥有多个线程,一个线程只属于一个进程,线程也被称为轻权进程或者轻量级进程. 二 为什么进程切换开销大,线程切换开销低呢?

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux内核13-进程切换

    1 进程切换 进程切换,又称为任务切换、上下文切换、或者任务调度。本文就研究Linux内核的进程切换。我们首先理解几个概念。...但是,优化硬件上下文的切换是不可能的,因为都是由CPU完成的,而Linux是使用软件代替硬件上下文切换的,所以有优化的空间,以便提高执行时间。 进程切换只能发生在内核态。...1.3 线程域 每当进程切换时,将要被替换掉的进程硬件上下文内容都应该被保存到某个地址。显然不能保存在TSS中,因为Linux为每个CPU就建立了一个TSS,而不是为每个进程建立TSS。...2 执行进程切换 进程切换的时机: 中断处理程序中直接调用schedule()函数,实现进程调度。 内核线程,是一个特殊的进程,只有内核态没有用户态。...通过调用sysenter汇编指令从用户态切换到内核态引起的任何特权级别的改变都会导致将这个地址拷贝到esp寄存器中。 将新进程线程本地存储(TLS)段加载到当前CPU的GDT中。

    1.9K20

    Linux进程切换&&环境变量

    进程属于Linux操作系统非常重要的一部分,建议大家在熟练掌握Linux进程相关概念的基础上,再观看本篇博客 一.进程切换 1.进程特性 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至...并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行; 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发. 2.进程切换 1.进程切换的现象...日常使用的电脑大部分都是单核的,即同一时间仅执行一个进程。那为什么在电脑上可以同时打开多个软件呢?这就跟进程切换有关了。...2.HOME:指定用户的主工作目录(即用户登录到Linux系统时,默认的目录)。 3.SHELL:当前的shell,通常/bin/bash。...总结 进程切换 系统中存在很多的进程,这些进程都是按照时间片来回切换的,只是切换的时间非常短,造成了一个进程一直在运行的假象。

    14310

    Shopee 送命题:进程切换为什么比线程切换

    注意这里问的是为什么进程切换线程慢,而不是问为什么进程线程慢。当然这里的线程肯定指的是同一个进程中的线程。 老规矩,背诵版在文末。...至此,上述这一套 CPU 生成虚拟地址并进行地址翻译的流程就是虚拟寻址(virtual addressing): 进程切换为什么比线程切换慢?...是的,进程切换会涉及到虚拟地址空间的切换,而这正是导致进程切换线程切换慢的原因所在!...而线程切换呢,由于不涉及虚拟地址空间的切换,也就不存在这个问题了。 ---- 最后放上这道题的背诵版: 面试官:进程切换为什么比线程切换要慢呢?...然后,正是因为 TLB 这个东西,导致了进程切换线程切换慢。

    62920

    Linux 进程管理之调度和进程切换

    ; IDLE-Task调度器:每个CPU都会有一个idle线程,当没有其他进程可以调度时,调度运行idle线程; unsigned int policy 进程的调度策略有6种,用户可以调用调度器里的不同调度策略...//idle指向空闲内核线程, stop指向迁移内核线程 struct task_struct *curr, *idle, *stop; ...... } 三个调度队列: struct cfs_rq...重点是其中的两个函数,一个是选择需要切换任务的 pick_next_task,另外一个是完成进程上下文切换 context_switch。...关于选择task的策略涉及到不同的调度类,等我们讲到具体调度器的时候再展开,这里重点讲下上下文切换的函数 context_switch,进程上下文切换主要涉及到两部分主要过程:进程地址空间切换和处理器状态切换...完成了这一步,也就完成了进程的地址空间切换,确切的说是进程的虚拟地址空间切换。 寄存器状态切换 ?

    1.9K31

    Linux进程的调度与切换

    前言:   在Linux操作系统中,进程的调度与切换是操作系统核心功能之一,它直接影响着系统的性能和响应速度。那么话不多说,开启我们今天的话题!...进程切换   CPU中存在众多寄存器,不同的寄存器有不同的功能,这些寄存器都在CPU中保存着,每一个都能装一定的数据。   ...当进程在进行第二次及第N次调度进程的时候,进程被放到CPU上开始运行,将曾经保存的硬件上下文进行恢复。   所以进程切换最重要的就是 进程上下文的保存和恢复。   ...虽然寄存器数据放在了共享的CPU设备内,但是 所有的数据都是被进程私有的! 进程调度 ✈️活动状态进程队列   我们上次说过,Linux实现进程调度的算法,需要考虑 优先级,考虑进程饥饿,以及效率。...这样,我们竞争饥饿,优先级,以及进程效率都解决了。 ✏️总结  进程切换最重要的部分就是 进程上下文的保护和恢复。  进程调度的优先级问题由 活跃进程数组的下标与进程优先级形成一种映射关系 解决。

    11810

    Linux任务进程前后台切换

    当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务 进程的终止 后台进程的终止: 方法一: 通过jobs命令查看job号(假设为num),然后执行kill...%num 方法二: 通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid 前台进程的终止: ctrl+c kill的其他作用 kill除了可以终止进程,还能给进程发送其它信号...SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。...如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程进程不能监听这个信号。...,执行命令fg %num即可; 前台进程的挂起: ctrl+Z;

    2.2K20

    Linux进程——Linux进程切换与命令行参数

    如果对进程优先级还有没理解的地方可以先阅读: Linux进程优先级 本篇主要内容: 进程间的切换 Linux进程调度队列 命令行参数 了解环境变量---- 1....进程间的切换 在之前我们提到过CPU在调度进程时,每一个进程不是占有CPU就一直运行,每隔一段时间,自动被从CPU上剥离下来,因此必定会有进程进程之间的切换!...事实上:进程切换时会不断对自己的数据进行保存和恢复,保存是保存寄存器中的数据,而不是寄存器本身,并且这些数据会被保存到进程的PCB里面 进程在进行高并发运行时,是通过多个进程间来回快速的切换,在一个时间段内...Linux进程调度队列 下图是Linux2.6内核中进程队列的数据结构,之间关系也已经给大家画出来,方便大家理解,而我们主要讲的就是两个小框,也就是活跃进程和过期进程 2.1 活跃队列 在LInux...总结 本篇我们主要了解了以下知识:进程间的切换Linux进程调度队列,命令行参数,环境变量,当然环境变量我们还只接触到了它的冰山一角,还有很多知识等待着我们发掘!让我们下篇了解剩下的几个环境变量!

    6910

    进程线程切换究竟需要多少开销?

    线程据说比进程轻量,它的上下文切换会比进程切换节约很多CPU时间吗?带着这些疑问,让我们进入正题。...5 线程上下文切换耗时 前面我们测试了进程上下文切换的开销,我们再继续在Linux测试一下线程。看看究竟比进程能不能快一些,快的话能快多少。...在Linux下其实本并没有线程,只是为了迎合开发者口味,搞了个轻量级进程出来就叫做了线程。轻量级进程进程一样,都有自己独立的task_struct进程描述符,也都有自己独立的pid。...从上下文切换的耗时上来看,Linux线程(轻量级进程)其实和进程差别不太大。...6 Linux相关命令 既然我们知道了上下文切换比较的消耗CPU时间,那么我们通过什么工具可以查看一下Linux里究竟在发生多少切换呢?

    3.2K30

    Linux】详谈进程优先级&&进程调度与切换

    1.2、优先级的具体表示 进程的优先级其实就是PCB中的一个整形变量(int PRI)。Linux进程的默认优先级是80,这个默认优先级是可以被修改的。Linux中优先级的范围是[60,99]。...数字越小,进程优先级越高。Linux系统允许用户调整优先级,但是不能直接让你修改PRI的值,而是修改nice值。nice值不是进程的优先级,而是优先级的修正数据。...二、进程的调度与切换  进程被加载到CPU上运行的时候,并不是必须一口气把代码跑完,现代操作系统,都是基于时间片轮转执行的。...并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为 并发。  ...2.1进程切换   进程在运行的时候,会产生大量的临时数据,这些临时数据会保存在CPU对应的寄存器中。

    34510

    linux 切换内核版本,切换 Linux 内核版本

    Linux 内核是开源类 Unix 系统宏内核。仅仅一个内核并不是一套完整的操作系统。有一套基于 Linux 内核的完整操作系统叫作 Linux 操作系统。...Kernel 是 Linux 系统的核心,主要负责硬件的支持。 Linux 内核提供了安全补丁, bugfix 和新特性。 Linux 内核在 GNU 通用公共许可证第 2 版之下发布。...Linux 的 Kernel 主要提供以下五个基本的功能 硬件管理以及硬件的抽象 进程线程的管理,以及之间的通信 内存的管理,包括虚拟内存管理以及内存空间的包含 I/O 设备,包括文件系统,网络接口,...Linux 内核版本号的意义 Linux 内核版本号由 3 组数字组成:第一个组数字。第二组数字。第三组数字 第一个组数字:目前发布的内核主版本。...Linux Mint 那么在 Update Manager 中,选择 View -> Linux Kernels 可以查看当前安装的版本和正在使用的版本,或者选择安装新的版本切换

    23.8K20

    Rxjava 线程切换原理

    前言 rxjava 可以很方便的进行线程切换, 那么rxjava是如何进行线程切换的呢?阅读本文可以了解下rxjava 是如何进行线程切换的及线程切换的影响点。...WanRxjava ", "onComplete td ==" + Thread.currentThread().getName()); } }); 如上代码,实现了线程切换和观察者被观察者绑定的逻辑...调用Observer.OnSubscribe 方法是 不受线程调度影响的 b.subscribeOn 影响的是发送事件的线程 c.observerOn 影响的是观察者处理接受数据的线程,如果没有调用observeOn...则不会进行包装成 ObserveOnObserver,也就是说不会执行观察者的线程切换,和 发送者的线程一致 d.多次调用subscribeOn切换线程,每次都会new ObservableSubscribeOn...,触发事件发送时会往上调用,也就是第一次调用的subscribeOn传入的线程 会执行发送事件,后面的线程切换无效 e.Observer.OnSubscribe 只会执行一次,因为调用DisposableHelper.setOnce

    1.1K00

    Linux操作系统】进程优先级和进程切换

    文章目录 一.进程优先级 1.三段论谈优先级 2.PRI和NI 二.进程切换 1.进程的四个特性 2.上下文数据保护和恢复 一.进程优先级 1.三段论谈优先级 什么是优先级?...最终PRI= 80 +nice值 ps: Linux是给运行中的进程调整优先级,调整策略是修改niceness值 和成绩排名一样,最终PRI值越小表示优先级越高 2.PRI和NI 总体:PRI=80+NI...: NI值被修改为了-19 最终PRI值被修正为了61 二.进程切换 1.进程的四个特性 竞争性:进程数众多,CPU只有少量,进程之间要抢占CPU资源 独立性:进程之间各自以为独占资源,互不干扰 并发...:多个进程在一个CPU上运行,采取进程切换/CPU时间片轮转的方式 并行:多给进程在多个CPU上运行,同时运行 2.上下文数据保护和恢复 CPU内有很多寄存器,但是总归就一套寄存器....寄存器是各个进程共享的,但是寄存器内的数据是私有的—-属于当前正在运行的进程. 由于大部分电脑都是单核CPU,所以属于并发机制,并发采用的是进程切换/时间片轮转的方式.

    1.5K30

    进程切换内核源码分析

    罗军 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程调度的时机 (1)进程状态转换的时刻...标记调用schedule(),此时发生了用户抢占 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度;...用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度 进程切换的一般过程 (1)正在运行的用户态进程X (2)发生中断——save cs:eip/esp/...(3)SAVE_ALL //保存现场 (4)中断处理过程中或中断返回前调用了schedule(),其中的switch_to做了关键的进程上下文切换 (5) 标号1之后开始运行用户态进程Y(这里...stack (8)继续运行用户态进程Y 进程上下文信息 用户地址空间:包括程序代码,数据,用户堆栈等 控制信息:进程描述符,内核堆栈等 硬件上下文(注意中断也要保存硬件上下文只是保存的方法不同) 进程切换源码结构

    1.3K30

    Linux】关于进程的理解、状态、优先级和进程切换

    命令更改nice 5.特性 五、进程切换 1.并发 2.进程如何切换 时间片引出 一、操作系统进程 进程不同的状态本质都是在满足不同的运行场景的 1.运行队列 运行队列 进程如何在CPU上运行的:CPU...对于阻塞状态和挂起状态,阻塞不一定挂起,挂起一定是阻塞 这些都是概念性的,对于Linux下具体的又是什么样子的呢 ---- 二、Linux进程状态 为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态...一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)。...CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发 这里的独立性对于父进程和子进程是否还是存在?...---- 五、进程切换 1.并发 多进程在同一CPU下通过采用进程不断切换的方式让一个单CPU计算机在一个时间段内同时让多个进程代码同时推进的现象称为并发 采用进程切换的方式在一个时间段内不同的进程都可以把代码跑起来

    2.7K20

    RxJava源码浅析(三): subscribeOn线程切换和多次切换

    一、subscribeOn 这篇不仅看下subscribeOn线程切换本身,我们还要研究下多次subscribeOn为啥只有第一次有效。...(顺便说下,如果切换其他线程,比如subscribeOn(Schedulers.io()),那他最终创建的是IoScheduler类,是不是很好记。)...主线程还是新线程?...上面执行了两次subscribeOn,第一次会把订阅放在新线程中,第二次会把订阅放在主线程中,最终订阅是在主线程中执行。...三、总结 对于OnSubscribe方法而言,不管subscribeOn怎么切换线程,他都不受影响,他是最先开始执行的且只执行一次,只针对最下游有效,对于订阅而言,线程切换只是改变当前observer的所属线程

    1.9K50

    RxJava源码浅析(四): observeOn线程切换和多次切换

    上篇文章RxJava源码浅析(三): subscribeOn线程切换和多次切换 我们清楚了subscribeOn线程切换,对于Rxjava线程切换原理有了大致的理解。...subscribeOn线程切换,是整个订阅流程线程切换,而observeOn只是针对下游线程切换。 这篇我们来看下observeOn切换线程以及他多次切换的影响。...接着调用source.subscribe(newObserveOnObserver(observer, w, delayError, bufferSize));这句话我们读出信息:订阅流程的上游没有切换线程...,下游ObserveOnObserver切换线程。...总结下,observeOn就是把下游切换线程,相比subscribeOn好理解些。 二、多次observeOn 如果我们多次调用observeOn呢?是以哪个为准呢?

    1.1K10
    领券