操作系统 3.2.3 页面置换算法(决定应该换入哪页、换出哪页)

 

 

 

 

 

 

 

 

 

 

酸哈哈哈~^_^在这个小节中我们会学习请求分页存储管理当中很重要的一个时点考点页面转换算法,那么通过之前的学习,我们知道在请求分页存储管理当中,如果说内存空间不够的话,那么操作系统会负责啊,把内存当中暂时用不到的那些信息先换,除完成那页面置换算法其实就是用于选择到底要把哪个页面换出,完全能通过之前的学习,我们知道页面的换入换出其实是需要启动磁盘的io的,因此它是会造成比较大的啊时间开销,所以一个好的页面置换算法应该尽可能地追求更少的缺页率也就是让换入换出的次数尽可能的少,那这个小节中我们会介绍考试中要求我们掌握的啊,5种页面转换算法,分别是最佳置换,先进先出,最最近最久未使用,还有时钟置换,改进型的,时钟置换等5种除了注意他们的英文缩写到底是什么从上至下一次接受专访。其中字画这样5种那除了注意他们的中文名字之外,大家也需要能够区分它们的英文的缩写到底分别是什么,那我们按从上至下的顺序依次介绍,首先来看什么是最佳置换算法,其实最佳置换算法的思想很简单,由于置换算法需要追求尽可能少的缺页率,那为了追求最低的缺页率的最佳置换算法,在每次淘汰页面的时候选择的都是那些以后永远不会被使用到的页面,或者啊,在之后最长的时间内不可能再被访问的页面,那我们直接来看一个例子来加深理解假设,系统为一个进程分配了三个内存块。执行的过程当中,会一次需要访问到这些页面,那刚开始进程需要访问的是7号页面,那由于刚开始为进程分配的这三个内存块都是空的,所以我们可以选择把阿七好一面放入内存款衣衣当中,那第2个要访问到的页面是凌浩晔由于此时依然还有空闲的内存块,所以我们可以把凌浩也放入内存和二当中,第3个要访问的是1号页面,呃,同样的此时还剩一个同行内存款,所以1号页面可以放到内存款三当中,那第4个我们需要访问到的是2号页面,但是由于此时给这个进程分配的三个内存块都已经啊占满了,所以我们必须用页面置换算法选择淘汰其中的某一个页面,把那个页面先换出外存,那根据最佳置换算法的规则,我们要选择的是,呃,在今后最长时间内不会被使用到的页面,所以其实我们在手动做题的时候可以看一下它的这个序列我们从当前访问的这个往后寻到此时在内存当中的二零一七三个页面。今后最长时间内不会被使用到的页面,所以其实我们在手动做题的时候可以看一下它的这个序列,我们从当前访问的这个页号开始往后寻找,看一下此时在内存当中的啊,017这三个页面出现的顺序到底是什么?那最后一个出现的序号肯定就是在之后最长时间内不会再被访问的页面,所以从这往后看,0号页面是最先出现的那3号页面不属于017当中的任何一个,所以唉,跳过银号页面之后会再次重现,然后4号也不属于01级之后又会出现2号页面,3号页面0号页面,然后一直到这个位置,我们发现1号页面也开始出现了,所以01期这三个页面当中,0号和一号会在之后啊一次被使用,但是7号页面是在之后最长的时间内不会再被访问到的页面,因此我们会选择淘汰7号页面,然后让2号页面放入到7号页面,原先占有的内存块也就是内存块一当中这个位置已经在内存中。7号页面,然后让2号页面放入到7号页面,原先占有的那种块也就是内存块一当中,因此2号页面是放在这个位置的,那接下来要访问的0号页面已经在啊内存当中了,所以此时不会发生缺页,可以正常的访问,在之后访问3号页面也会发现此时3号页面并没有在内存当中,所以我们依然需要用这个置换算法选择淘汰一个页面,那么那和刚才一样,我们从这个位置开始往后寻找,看一下此时内存当中存放的201这三个页面,呃出现的先后顺序,那我们会发现2017当中0号页面是最先出现的,啊,之后2号页面紧接着出现那么1号页面,就是最后一个出现的,因此1号页面是在今后最长时间内不会再被访问的页面,所以我们会选择把201这三个页面当中的1号页面给淘汰然后再换油的那个内存卡也就是内存释放在这个地方的对于之后的这些页面修好的访问我们就。对,然后3号页面再换入呃1号页面以前占有的那个内存块,也就是内存款三当中,所以3号页面是放在这个地方的,那对于之后的这些页面序号的访问,我们就不再细细的分析了,大家可以自己尝试的去完善一下这个表,那最终我们会发现啊,整个访问这些页面的过程当中,缺页中断发生了9次,也就这打勾的这些位置发生了缺页中断,但是页面置换是发生了6次,所以大家一定需要注意,缺页中断之后未必发现页面置换只有内存块已经都满了的时候,才需要页面置换,因此在刚开始访问701这三个页面的时候,虽然他们都没有在内存当中,但是由于刚开始那有空闲的内存快,所以啊,虽然发生了缺页中断虽然会发生掉页,但是并不会发生页面置换这件事情,那只有所有的内存块都已经占满了之后啊,再发生缺页的话,那才需要进行页面置换这件事情因此诞生了六次前面的三。多的内存块都已经占满了之后啊,再发生缺页的话,那才需要进行页面置换这件事情,因此7月中段总共发生了9次,但页面置换只发生了6次,前面的三次啊,只是发生了缺页,但是并没有页面置换,那痊愈率的计算也很简单,我们只需要把血液中断发生的次数再除以我们总共访问了啊多少次的液面就可以得到缺率是45%,那这是最佳置换算法,那其实最佳置换算法执行的前提条件是,我们必须要知道之后会依次访问的页面序列到底是哪些,不过在实际应用当中,只有在进程执行的过程当中,才能呃一步一步的知道接下来会访问到的到底是哪一个页面,所以操作系统其实根本不可能提前预判各个页面的访问序列,所以最佳置换算法它只是一种呃理想化的算法在实际当中是无法实现的我们再来看第二种方法的页面是最早进入内存的页面所以在躯体实现的。从发现需要换出一个页面的时候,只需要把对头的那个页面淘汰就可以了,那需要注意的是这个队列有一个最大长度的限制,那这个最大长度取决于系统被进程分配了多少的内存块,那我们还是来看一个例子,假设一个系统为进程分配了三个内存款,然后会按照这样的顺序一次访问各个页面,那首先访问的是3号页面,此时内存快一是空间了,所以可以把3号页面放到内存环境当中,并且把3号页面放到我们之前提到的这个队列的对头,第2个页面是2号页面,此时也有那综合空间,所以2号页面放到内循环二当中,然后再把嗯2号页面放到这个队列的队尾,也就是把它接在3号页面之后的这个位置,那同样的1号页面,此时也有内存栏,所以它放在内存块啊三当中放到这个队人四个页面的时候但是由于此时所有的那种必须选择其中的某一面那么这个队列。套页面只是要那种款,所以他放在那种块啊三当中,并且把1号页面放到这个对页的对位,接下来访问到第4个页面的时候,此时要访问的是0号页面,但是由于此时所有的内存块都已经占满了,所以必须选择淘汰其中的某一个页面,那么根据系统维持的这个队列可以知道3号页面进入内存的时间是最早的,所以会选择淘汰3号页面,然后把3号页面占有的这个内存块一分配给0号页面,那相应的0号页面放入内存之后,也需要把它插到这个队列的对位,那接下来如果还要再访问3号页面的话,同样的是需要把这个对头的页面给淘汰掉,所以2号页面会换出外存,然后3号页面放到2号页面,以前占有的内存框二当中,并且会把3号页面放到这个队列的队尾那以此类推,那剩下的这个过程就不再细细分析了,大家可以唉,自己再去尝动手尝试一下整个过程下来会发现如果这个进程分配了三个内存卡的话那么缺一二三四六七八九。动手尝试一下,那整个过程下来会发现如果给这个进程分配了三个内存块的话,那么缺页次数总共是123456789,确定了9次,那我们再把这个题目的条件改一下,如果说给这个进程分配的是4个内存块的话,按照我们之前分析的这种方法,最终会得到这样一系列的结果,大家也可以自己动手尝试分析这整个过程,不过这个地方呃,我们想强调的是,当为这个进程分配了4个内存块的时候,虽然说页面的访问序列依然是啊这样一个序列,但是整个过程下来缺页次数总共发生了10次大家可以数一下,但是之前本来改给进程分配的内存块只有三个,但是三个内存块的时候缺次数反而更少,只发生了9次,那其实乍一想来为一个进程分配的内存快越多,那这个进程的区域次数应该越少才对啊,所以像这个地方我们发现的这种现象就是为进程分配物理块增大的时候次数这种。呃,内存块越多,那这个进程的区域次数应该越少才对啊,所以像这个地方我们发现的这种现象就是为进程分配,物理块增大的时候,缺页次数不增反减的这种现象就称作为贝拉的异常,那在我们要学习的所有的这些算法当中,只有先进先出算法,会产生这种贝拉的异常,所以虽然先进先出算法,实现起来很简单,但是先进先出的这种规则,其实并没有考虑到进程实际运行时候的呃一些规律,因为新进入内存的页面,其实在之后也有可能会被经常访问到,所以,呃只是简单粗暴的让先进入的页面淘汰的话,那显然这是不太科学的,所以先进先出,置换算法的算法性能是很差的,那接下来我们再来看第3个,最近最久未使用置换算法,呃英文缩写是lru,大家也需要记住它的这个英文缩写,很多题目出题的时候就直接用这样liu来表示这个置换算法这个算法的规则就像他的名字一样就是要选择淘汰最近最久没有使用的页面为了实现这件事我们可以。最近最久的使用指环算法,呃英文缩写是liu,大家也需要记住它的这个应用的缩写,很多题目出题的时候就直接用这样lru来表示这个置换算法,那这个算法的规则就像它的名字一样,就是要选择淘汰最近最久没有使用的页面,所以为了实现这件事,我们可以在每个页面的列表项当中的访问字段,这记录啊,这个页面自从上一次被访问开始,到现在为止所经历的时间T,那我们需要淘汰一个页面的时候,只需要选择这个T值最大的也就是呃最久没有被访问到的那个页面进行淘汰就可以了,那我们依然还是结合一个例子,如果一个系统为进程分配了4个内存块,然后有这样的一系列的页面访问训练,那首先要访问的是1号也只是有那种和贡献,所以1号也放到这种怀疑当中,然后第2个方面吧号页面也可以直接放到空型的内存块2当中啊,以此类推访问1号页面,有一次是1号也已经在内存中了,所以不会发生缺页七号八号二号这些都不会发生。界面也可以直接放到空气能内存快20当中,呃因此呢可以访问1号页面,有一次是1号页已经在内存中了,所以呃,不会发生缺页那之后访问的7号的8号2号,所有的这些都不会发生页面置换,因为此时啊一直都会有空闲的那种快,那一直到后面访问到这个3号页面的时候,由于此时给这个进程分配的4个内存块都已经用完了,所以必须选择淘汰其中的某个页面,那如果我们在手中做题的时候,可以从这个也好开始逆向的往前检查,此时在内存当中拥有的1872这几个亿号,呃,从逆向扫描来看出现的先后顺序是什么样的,那最后一个出现的1号,那肯定就是最近最久没有使用的页面了,所以从这往前看,8号页面首先出现之后出现了1号页面,再之后出现了2号页面,所以7号页面其实是这4个页面当中最近最久没有被使用到的页面七号太三好一千七号也占用的内存在之后的这一系列防蚊当中。这个页面当中最近最久没有被使用到的页面,因此会选择把7号页面淘汰然后3号页就会放入到以前7号页占用的内存模块3当中,那同样的在之后的这一系列访问当中都不会发生缺页,一直到访问到7号页的时候,呃,又发生了一次缺页,并且需要选择淘汰一个页面,那和之前一样,我们从这个地方开始逆向的往前检查,看一下这几个1号出现的顺序分别是什么样的,那首先1号页是最先出现的,再往前那3号也出现了,再往前是2号页出现了,所以8号页是这几个页面当中最近最久没有被使用到的页面,因此会选择淘汰8号页,然后把7号页放入啊,8号页以前占用的内存,画二当中那最近最久未使用置换算法,在实际的应用当中啊,实际上是需要专门的硬件的支持的,所以这个方法虽然性能很好,但是实现起来会很困难,并且开销很大我们学习的这几个算法当中最近醉酒为使用这个算法的信任是最接近最佳。并且开销很大,那在我们学习的这几个算法当中,最近最久未使用这个算法的性能是最接近最佳置换算法的,那接下来我们再来看第4种是中质化的算法之前我们学到的这几种算法当中最佳置换算法性能是最好的,但是无法实现先进先出算法,虽然实现简单,但是算法的性能很差,并且也会出现被大的异常,那最近最久未使用的置换算法虽然性能也啊很好,但是实现起来开销会比较大,所以之前提到的那些算法啊,都不能做到算法效果,还有实际开销的一个平衡,因此人们就提出了始终置换算法,它是一种性能和开销比较均衡的算法,又称为Clark算法,或者叫最近备用算法,而英文缩写的是nru考试中分别是简单的做法还有我们先来看房的时候就表示这个页面最近被访问过这个界面最近。我们先来看简单的这种算法,首先我们要为每个页面设置一个访问位,访问位为1的时候,就表示这个页面最近被访问过,访问为0的时候,表示这个页面最近没有被访问过,因此如果说访问了某个页面的话,那需要把这个页面的访问位变为1,那内存中的这些页面需要通过链接指针的方式把它们链接成一个循环队列,那当需要淘汰某一个页面的时候啊,需要扫描这个循环队列,找到一个最近没有被访问过的页面,也就是访问位为0的页面,但是在扫描的过程中需要把访问位移的这些页面的呃访问位再重新置为0,所以这个算法有可能会经过两轮的扫描,如果说所有的页面访问位都是一的话,那第1轮扫描,这个循环对列就并不会找到任何一个防卫为0的页面,只不过在第1轮扫描当中,会把所有的页面的访问位都置为0肯定可以找到一个方法一个页面的时候最多会经历这个文字的描述其实还是很抽象的。所以在第2轮扫描的时候就肯定可以找到一个访问位为0的页面,所以这个算法在淘汰一个页面的时候,最多会经历两年的扫描,那光看这个文字的描述其实还是很抽象的,我们直接来看一个例子加上一个系统的进程分配了5个内存块,然后啊对各个页面号的引用是按照这样的顺序进行的,那刚开始由于有5个空间的内存化,所以前5个啊访问的这个页号13425都可以顺利的放入内存当中,只有在访问到6号页的时候才需要考虑啊淘汰某个页面,那么在内存当中的13425这几个页面会通过链接指针的方式连接成一个这样的循环队列,那由于接下来要访问6号页面,但是啊5个内存块都已经满了,所以需要用clock算法来选择淘汰其中的某一个页面,于是会从这个循环队列的对手开始扫描,尝试找到一个访问位为0的页面,并且被扫描过的页面,需要把访问位啊一改为0之后所有的这些页面的房子都有。但内存快都已经满了,所以需要用clock算法来选择淘汰其中的某一个页面,于是会从这个循环队列的对手开始扫描,尝试找到一个访问位为0的页面,并且被扫描过的页面需要把访问为啊一改为0,所以在经过第1轮的扫描之后,所有的这些页面的访问位都由意志为乐陵那再进行第2轮扫描的时候,1号页面的访问位为0,所以会选择淘汰1号页面,于是6号夜会装入到1号叶以前战友的这个内存块当中,并且6号夜的访问位会被置为1,然后这个扫描的指针指向下一个页面,那接下来的访问当中会一次访问到3号和4号页面,那在访问了3号页面之后,3号夜的访问为需要由零变为1,同样的在访问了4号页面的时候,啊,需要把4号夜的访问位由零变为一七号也有一次十七号也没有选择淘汰其中的某一件放到需要从此时早料到这个位置一次的扫描找到第一个。对,由于此时记号也没有在内存中,所以需要选择淘汰其中的某一个页面,然后把7号页放到那,其中那同样的需要从此时扫描到的这个位置依次的扫描,找到第1个访问位为0的页面,并且扫描过的那些页面的啊,这个访问费需要由一变为0,所以3号和4号在扫描过后,访问为会变为0,那再扫描到2号页面的时候,发现2号页面的访问为笔本来就是0了,因此会选择淘汰2号页面,然后让7号页面放到这个位置防卫之一,然后这个扫描的指针在指向下一个页面这位置,那可能通过这个动画会更容易理解啊,始终置换算法的一个运行的过程,并且通过刚才的这个例子,大家会发现这个扫描的过程有点像一个时钟的那个时针在不断的转圈的一个过程,所以为什么这个算法要叫做时中置换算法,它其实是一个很形象的比喻其实经过刚才的分析我们也很容易理解为什么他最近一个手表。其实经过刚才的分析,我们也很容易理解,为什么他啊还称作最精锐用方法,因为我们会为各个页面设置一个访问类访问,谓为一的时候表示最近用过访问率为0的时候表示自己没有用过,但是我们在选择淘汰一个页面的时候,是选择那种最近没有被访问过,也就是访问为为0的页面,因此这种算法也可以称作为最近未用算法,那接下来我们再来学习改进型的时空置换算法,其实在之前学习的这个简单的时钟置换算法当中,只是很简单的考虑到了一个页面,最近是否被访问过,但是通过之前的讲解我们知道如果一个被淘汰的页面没有被修改过的话,那么是不需要执行io操作啊,把它洗回外存的,所以如果说我们能够优先淘汰没有被修改过的页面的话,那么实际上就可以减少这些io操作的次数,从而让这个智能算法的性能得到进一步的提升那就是感情的一个思想they类的事情这件事我们还需要增加一个修改为修改为您的时候表示这个页面。那这就是改进型的始终置换算法的一个思想,所以为了实现这件事,我们还需要为各个页面增加一个修改,为修改为为0的时候表示这个页面啊,在内存当中没有被修改过,那修改为唯一的时候表示页面被修改过,那我们再接下来讨论当中会用访问未修改为这样的二元组的形式来啊,标识各个页面的状态,比如说访为唯一修改为也为一的话,那就表示这个页面近期被访问过,并且饿也曾经被修改过,那和简单的时钟置换算法一样,我们也需要把所有的可能被置换的页面排成一个循环对列在第1轮扫描的时候,会从当前位置开始往后依次扫描,尝试找到第1个最近没有被访问过,并且也没有修改过的页面而对它进行淘汰这样的话就需要尝试找到第一个最近没有但是被修改过的这个界面进行并且被扫描过的那些页面的房内都会设置,那第1轮扫描是不修改任何的标志位的,那如果第1轮扫描没有找到00这样的页面的话,就需要进行第2轮的扫描,第2轮扫描会尝试找到第1个最近没有被访问过,但是被修改过的这个页面进行替换,并且被扫描过的那些页面的访问类都会被设置为零。扫描第2轮扫描会尝试找到第1个最近没有被访问过,但是被修改过的这个页面进行计划并且被扫描过的那些页面的访问位都会被设置为0,那如果第2轮扫描失败需要进行第3轮扫描,第3轮扫描会尝试找到第1个啊,访问位和修改位,作为您的这个页面进行淘汰,并且第3轮扫描并不会修改任何的标志位,那如果第3轮扫描失败的话,还需要进行第4轮扫描,呃,找到第1个01的一针用于替换,那由于第2轮的扫描已经把所有的访问位都设为了0了,所以经过第3轮第4轮扫描之后肯定是可以找到一个啊要被淘汰的页面的哦,所以感情性的这种始终置换算法,选择一个淘汰页面,最多会进行4个扫描,那其实这个过程光看文字描述也是很抽象的,不太容易理解,假设系统的一个进程分配了5个内存卡,那当这个内存块被占满之后,各个页面会用这种链接的方式连成一个循环的队列,那此时如果要淘汰一个页面的话,需要从这个队列的对头开始一次的扫描。不需要尝试找到呃访问位和修改为周文明的这样一个页面,所以往后寻找了之后发现这个页面是满足条件的,所以在第1轮扫描的时候就找到了一个页面用于替换因此会淘汰这个页面,那这是只需要一轮扫描的情况再来看下一种情况,那假设此时各个页面的状态是这样的,那如果需要淘汰一个页面的话,那需要从啊第1个页面开始,往后一次的扫描,然后尝试找到第1个00这样的验证,并且第1轮的扫描是不改变任何的标志位的,所以一轮扫描下来发现所有的这些啊都不满足,明明这样的状态,因此会进行第2轮扫描,第2轮扫描会尝试找到一个原本就是0E的一个页面,并且扫描过的页面会把访问位置为0,所以在第2轮扫描当中这个页面被扫描过之后会把他的这个访问位置为0,那在扫描到这个页面的时候,发现他原先本来就是01这样的状态,因此会选择淘汰这个页面,所以这是需要进行两轮扫描的一个例子将军。见他原先本来就是林毅这样的状态,因此会选择淘汰这个页面,所以这是需要进行两轮扫描的一个例子,那接着看下种情况,假设此时各个页面的状态是这样的,那和之前一样,呃需要淘汰一个页面的时候需要进行扫描,第1轮的扫描需要找到00这样的页面,但是第1轮扫描下来,发现所有的页面啊都没有满足00这样的条件的,所以会进行第2轮扫描,第2轮扫描会开始了,寻找银一这样的页面并且被扫描过的页面,都会把访问位置为0,因此在经过第2轮的扫描之后,所有的这些页面的访问位都被置为了0,但是第2轮扫描依然没有发现原本就是01这样的页面,所以就会进行第3轮的扫描,那第3轮扫描需要找到啊第1个营营这样的页面,那扫描到这个页面的时候,就会发现它已经满足第3轮的扫描啊所要找到这种页面的条件,于是会淘汰这个页面,那这是需要经过三轮扫描的一个例子,那再来看四轮扫描的例子,假设此时所有的呃页面的状态都是11这样的状态,那第1轮扫描的时候需要找到00这样的页面,那显然所有的都不满足。要经过三轮扫描的一个例子,那再来看四轮扫描的例子,假设此时所有的呃页面的状态都是一1这样的状态,那第1轮扫描的时候需要找到00这样的页面,那显然所有的都不满足,第2轮扫描的时候,呃需要找到01这样的页面并且被扫描过的页面,呃防卫都会被置为0,所以经过第2轮扫描之后,所有的这些页面的访问率都被置为了0,但是依然没有找到原本就是隐喻的呃页面,于是会进行第3轮的扫描,第3轮扫描会尝试找00这样的页面,但是呃也不修改任何的标志类,所以第3轮扫描下来也没发现啊,满足这个条件的,于是会进行第4轮扫描,第4轮扫描会,呃,找到01这样的页面,那显然第1个页面此时已经满足条件了,所以此时应该淘汰这个页面,那这就是需要经过4种扫描的一个例子,因此通过刚才的这个例子我们也可以很直观的感受到,啊,改进型的时钟置换算法,在选择一个淘汰页面的时候,最多会进行四轮扫描而简单的时钟置换算法,在淘汰一个页面的时候,最多只会进行两元扫描我们在一个角度来看其实选择。并且也没有被修改过的页面,那他的第2个人要找的是01这样的页面,所以第二优先级的应该是最近没有被访问,但是修改过的页面,那如果第2轮都没有找到一个合适的页面的话,那就说明所有的这些页面在以前访问类其实都是因,因此其实在第3轮淘汰的这些页面其实是最近访问过,但是没有修改过的页面也就是啊,访问位以前是1,然后修改为以前是0这样的页面,那同意第四优先级的,被淘汰的页面应该是最近访问过,并且也被修改过的这样的页面,所以我们也可以用这样的角度来理解啊,个人选择淘汰的页面到底是哪种类型的页面好的,那么这个小节我们介绍了5种页面转换算法,分别是最佳做法的先进先出啊,最近最久未使用还有时钟置换也叫最近未用算法,另外还介绍了改进型的时钟,置换或者叫改进型的最近未用算法那种重点需要理解规则如果需要自己能够用手动的方式来模拟。你好也是只加这款先进先出,然后最近最久未使用还有十中置换也叫最近为用算法另外还介绍了改进型的时钟执法或者叫改进型的最新的一种算法,那这个小节的内容重点是要理解Ga算法的算法规则,如果题目中给出一个页面的访问序列,那需要自己能够用手动的方式来模拟各个算法运行的一个过程,那除了算法规则之外,各个算法的优缺点有可能在选择题当中进行考察,那需要重点注意的是最佳置换算法在现实当中是无法实现的,然后先进先出算法,它的性能差,并且是唯一一个有可能出现贝拉的异常的算法好的,那么以上就是这个小结的全部内容。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值