操作系统 进程管理之死锁

10 操作系统第二章 进程管理 死锁、死锁的处理策略 银行家算法 文章目录1 死锁1.1 死锁定义1.2 死锁、饥饿、死循环的区别1.3 死锁产生的必要条件1.4 什么时候会发生死锁1.5 死锁的处理策略1.6 死锁的概念小结2 死锁预防2.1 破坏互斥条件2.2 破坏不剥夺条件2.3 破坏请求和保持条件2.4 破坏循环等待条件2.5 预防死锁小结3 死锁避免3.1 安全序列3.2 银行家算法3.2.1 手动实现银行家算法3.2.2 代码实现银行家算法4 死锁的检测和解除4.1 死锁的检测 1 死锁 1.1 死锁定义 产生条件:每个人都占有一个资源,同时又在等待另 阅读详情

一、死锁的概念

1.1 死锁的定义

死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。

1.2 死锁产生的原因

1、系统资源的争夺
通常系统中拥有的不可剥夺资源,其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。只有对不可剥夺资源的竞争才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。

2、进程推进顺序非法
进程在运行过程中,请求和释放资源的顺序不当,也同样会导致死锁。例如,并发进程P1、P2分别保持资源R1、R2,而进程P1申请资源R2,进程P2申请资源R1时,两者都会因为需要资源被占用而阻塞。
信号量使用不当也会造成死锁。进程间彼此相互等待对方发来的消息,结果也会使得这些进程间无法继续向前推进。例如,进程A等待进程B发的消息,进程B又在等待进程A发的消息,可以看出进程A和B不是因为竞争同一资源,而是在等待对方的资源导致死锁。

3、死锁产生的条件
产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。
(1)互斥条件:进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
(2)不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)。
(3)请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
(4)循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。即存在一个处于等待状态的进程集合{P1,P2,...,Pn},其中Pi等待的资源被Pi+1占有,Pn等待的资源被P0占有。

二、死锁的处理策略

1、预防死锁
设置某些限制条件,破坏产生死锁的四个必要条件中的一个或几个,以防止发生死锁。
2、避免死锁
在资源的动态分配过程中,用某种方法预防系统进入不安全状态,从而避免死锁。
3、死锁的检测及解除
无需采取任何限制性措施,允许进程在运行过程中发生死锁。通过系统的检测机构及时地检测出死锁的产生,然后采取某种措施解除死锁。

三、死锁预防

1、破坏互斥条件
如果允许系统资源都能共享使用,则系统不会进入死锁状态。但有些资源根本不能同时访问,所以,破坏互斥条件而预防死锁的方法不太可行,而且在有些时候应该保护这种互斥性。
2、破坏不可剥夺条件
当一个已保持了某些不可剥夺资源的过程,请求新的资源而得不到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请。这意味着,一个进程已占有的资源会被暂时释放,或者说是被剥夺了,或从而破坏了不可剥夺条件。
3、破坏请求和保持条件
采用预先静态分配方法,即进程在运行前一次申请完它所需要的全部资源,在它的资源未满足前,不把它投入运行,一旦投入运行后,这些资源就一直归它所有,也不再提出其他资源请求,这样就额可以保证系统不会发生死锁。
4、破坏循环等待条件
为了破坏循环等待条件,可采用顺序资源分配法。首先给系统中的资源编号,规定每个进程,必须按编号递增的顺序请求资源,同类资源一次申请完。也就是说,只要进程提出申请分配资源Ri,则该进程在以后的资源申请中,只能申请编号大于Ri的资源。

四、死锁避免

4.1 系统安全状态

避免死锁的方法中,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,让进程等待。

安全状态:系统能按照某种进程推进顺序{P1,P2,...,Pn},为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺序地完成。此时称{P1,P2,...,Pn}为安全序列。

4.2 银行家算法

银行家算法是最著名的死锁避免算法。它提出的思想是:把操作系统看做是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统安装银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过该进程对资源的最大需求量,若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。

1、数据结构描述:
(1)可利用资源矢量(Available)
含有m个元素的数组,其中的每一个元素代表一类可用的资源数目。Available[j]=K,则表示系统中现有Rj类资源K个。
(2)最大需求矩阵(Max)
为n×m矩阵,定义了系统中n个进程中的每一个进程对m类资源的最大需求,简单来说,一行代表一个进程,一列代表一类资源。Max[i,j]=K,则表示进程i需要Rj类资源的最大数目是K。
(3)分配矩阵(Allocation)
为n×m矩阵,定义了系统中每一类资源当前分配给每一进程的资源数。Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。
(4)需求矩阵(Need)
为n×m矩阵,表示每个进程尚需的各类资源数。Need[i,j]=K,则表示进程i还需Rj类资源的数目为K。

上述三个矩阵间存在下列关系

Need=Max−Allocation

一般情况下,在银行家算法的题目中,Max和Allocation矩阵式已知条件,而求Need矩阵式解题的第一步。

2、算法描述
设Requesti是进程Pi的请求矢量,如果Requesti[j]=K,表示进程Pi需要j类资源K个。当Pi发出资源请求后,系统安装下述步骤进行检查
(1)如果Requesti[j]≤Need[i,j],便转向步骤(2),否则认为出错,因为它所需要的资源数已经超过它所宣布的最大值。
(2)如果Requesti[j]≤Available[j],便转向步骤(3);否则表示无足够资源,Pi必须等待。
(3)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:
Available=Available−Requesti
Allocation[i,j]=Allocation[i.j]+Requesti[j]
Need[i,j]=Need[i,j]−Requesti[j]
(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

3、安全性算法
(1)初始安全序列为空。
(2)从Need矩阵中找出符合下面条件的行:该行对应的进程不在安全序列中而且该行小于Avaliable向量,找到后,把对应的进程加入安全序列中,如果找不到,执行步骤(4);
(3)当进程Pi进入安全序列后,可顺序执行,直至完成,并释放分配给它的资源,故应执行:Avaliable=Available+Allocation[i],其中Allocation[i]表示进程Pi代表的在Allocation矩阵中对应的行,返回步骤(2)。
(4)如果此时安全序列中已经有所有的进程,则系统处于安全状态,否则,系统处于不安全状态。

操作系统01_进程管理_同步互斥信号量_PV操作_死锁---软考高级系统架构师006 3.这里有个概念要知道,因为我们知道CPU会把时间分成很多片,比如每10ns给一个进程,也就是用10ns秒去运行一个进程,然后下一个10ns再去运行其他进程,这样实际上CPU是轮询执行所有进程的,但因为足够快所以让整体上看来,电脑上的所有程序都是在并行运行的.2.然后从阻塞状态也可以进入就绪状态,就绪状态指的是所有条件都具备了,阻塞中等待的比如键盘输入事件也已经输入完成了,就只差CPU。其中比较重要的是进程管理,进程管理中的进程三态图,前趋图,同步与互斥,PV操作,死锁,线程,这个地方考的比较多。 阅读详情

相关推荐

当LightGBM推理遇上GPU:3种替代方案性能对比(含ONNX实战代码)

本文针对LightGBM官方不支持GPU推理的性能瓶颈,深度评测了RAPIDS cuML、ONNX Runtime GPU和Triton Inference Server三种GPU加速推理替代方案。通过详尽的性能对比和实战代码,为高并发、低延迟的在线预测场景提供了清晰的选型指南,帮助工程师打破推理性能枷锁,实现显著的吞吐量提升。

salt9的博客 813

死锁:系统中有资源n个,现有k个进程互斥使用,每个进程最多使用m个资源

死锁:系统中有资源n个,现有k个进程互斥使用案例:某计算机系统中有 8 台打印机,由 K 个进程竞争使用,每个进程最多需要 3台打印机。该系统可能会发生死锁的 K 的最小值是多少? 由于每个进程最多需要使用3台打印机,可以先给每个进程分配2台打印机,最后在总的资源中减1个出来分配给一个进程就能避免死锁。所以用7/2=3.5,向下取整为3,所以最多使用3个进程不会发生死锁。所以发生死锁的最小值为4.

Lt-grint的博客 1万+

Emscripten安装(wasm编译)

5:配置对应环境变量--替换成自己对应的安装路径(2025最新的Emscripten工具链默认使用LLVM/WebAssembly标准工作流,java依赖已经移除了,所以以下java环境不配,需要使用java的手动添加即可---->emsdk install java-8-152-64bit。3:下载相应的依赖库---->emsdk install latest(我这里下的是最新的,如果有指定版本,把latest替换成版本号即可)6:测试是否成功---> emcc- v/em++ -v。

qq_31578301的博客 554

【死锁】

当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。   死锁产生的四个必要条件: 资源互斥 每个进程占有资源并等待其他资源 系统不能剥夺进程资源 进程资源图是一个环路   死锁产生后,解决措施是打破四大条件,有下列方法: 死锁预防:采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁...

刘梦娇 2457

Mac M1安装Hive

如果你确定装过mysql,但是执行上述命令后,发现不存在mysql命令,那说明你的系统环境没有配置。出现一段空白,接着出现Initialization script completed。关闭hiveServer2时,执行如下命令查看hive进程;执行上面命令后,若有结果输出,则证明配置完成了。如果出现mac权限问题,解决方法参考。就可以见到hive的web界面了。若出现路径,则存在mysql。配置好后保存,使配置文件生效。用户名hive,密码hive。用户名通过如下命令查看。通过如下命令杀死该进程。

总结复盘,才能不迷失自己! 2387

【PyTorch项目实战】图像分类与识别:手写数字识别(MNIST)、普适物体识别(CIFAR-10)

主要介绍了两个经典的实战项目:(1)基于 MNIST 数据集的手写数字识别(2)基于 CIFAR-10 数据集进行图像分类

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 4400

OS第三章题目

某计算机系统中有8台打印机,有K个进程竞争使用,每个进程最多需要3台打印机。该系统可能会发生死锁的K的最小值是( ) A.2 B.3 C.4 D.5 正确答案 C 答案解析 [解析] 考查死锁的条件。 考虑最极端的情况,因为每个进程最多需要3台打印机,假设每个进程已经占有了两个打印机,那么只要还有多的打印机,总能满足达到3台的条件。将8台打印机分给K个进程,每个进程有2台打印机。如下图所示: [*...

默的博客 3369

某Z节验证码

某Z节验证码、captchaBody、滑块、旋转、空间推理

mamenqi_csdn的博客 770

学习打卡24/3/25

例题:某计算机系统中互斥资源R的可用数为8,系统中有3个进程P1、 P2 和P3竞争R,且每个进程都需要i个R,该系统可能会发生死锁的最小值为()。指两个以上线程因争夺资源而发生互相等待的现象!就造成线程一直互相等待,无法执行的情况。于是两者都不能执行而处于永远等待状态,此现象称为。不发生死锁的最少资源数=K*(n-1)+1,其中K表示进程的个数,n表示每个进程所需的资源数。根据 3*(i-1)+1>8 解得i>4,所以该系统可能会发生死锁的最小值为4。

m0_74170941的博客 697

【异常】OpenClaw 连接异常This site can‘t be reached 127.0.0.1 refused to connect Try: Checking the proxy

在访问OpenClaw相关服务时,浏览器提示如下异常信息,无法正常加载页面:Try:补充说明:该报错仅出现于本地访问场景(127.0.0.1为本地回环地址),涉及OpenClaw核心服务的本地连接交互,无外部网络及敏感信息泄露风险。

奶爸的编程之路,也就一周冷个三天 1483

Qt C++ + Qt 3D 的数字孪生工厂

以下是一个基于 **Qt C++ + Qt 3D** 的数字孪生工厂完整源码示例,集成了 **Qt 3D** 产线建模和 **WebSocket** 实时数据交互。ui->qualifiedProductsLabel->setText(QString("合格产品: %1").arg(data.qualifiedProducts));ui->totalProductsLabel->setText(QString("总产量: %1").arg(data.totalProducts));

寒寒豆豆软件公司的博客 149

死锁

死锁     所谓死锁,是指各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源,从而造成大家都想得到资源而又都得不到资源,各并发进程不能继续向前推进的状态。 死锁的起因是并发进程的资源竞争,产生死锁的根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数。 死锁产生的必要条件: (1)互斥条件,并发进程所要求

IT_YUAN的专栏 964

2026年国赛C题微网与外部电网电力调控策略 (三):问题三、问题四滚动预测、实时电价与结果核验

专栏内定期更新ABCDE五题详细思路、代码(含运行结果图)和讲解视频-(11号之前半价):问题三看起来只是多给了一个光伏预报附件,实质上它改变了整道题的信息结构:问题四则是在问题二、问题三之上替换价格来源。问题4-2相当于“确定性计划+实时电价”,问题4-3相当于“滚动预测+实时电价”。物理模型完全不变,改变的是价格序列和费用口径。本文先给出核心结果:从结果看,问题3比问题2多约164.21万元,问题4-3比问题4-2多约168.79万元。主要增量不是“储能没有工作”,而是预测误差、计划偏差和紧急购电造成的

YOLO 343

2.1.4操作系统-进程管理:死锁、死锁的产生条件、死锁资源数计算

破坏保持和等待,B等待一会儿,没有资源,就释放调自己占用的资源🍓,这样A进程就可以拿到缺少的资源🍓,然后继续执行,A用完释放掉资源,再给B用。破坏互斥条件,资源不再是不可共享的,也就是说B的🍓可以给A用,这样A进程就可以拿到缺少的资源🍓,然后继续执行,A用完释放掉资源,再给B用。破坏不剥夺,A去抢B的🍓,抢到后,这样A进程就可以拿到缺少的资源🍓,然后继续执行,A用完释放掉资源,再给B用。假设资源是🍍🍍🍓,现在有两个进程A、B,进程A需要🍍🍍🍓,进程B需要🍍🍓,现在状态是A🍍🍍,B🍓。

郝开的博客 1350

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RK-04进程管理,PV操作,死锁,操作系统

RK-04进程管理,PV操作,死锁,操作系统

shroud096的博客 467

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【操作系统】进程管理(六)—— 死锁

为什么会产生死锁? 产生死锁的条件; 解决死锁的方法。在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。发生死锁后若无外力干涉,这些进程都将无法向前推进。死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象。比如:在短进程优先(SPF)算法中,若有源源不断的短进程到来,则长进程将一直得不到处理机,从而发生长进程“饥饿”。死循环:某进程执行过程中一直跳不出某个循环

haoweixl的博客 1775

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

操作系统4小时速成:进程管理复习重点,进程,线程,处理机调度,进程同步,死锁

操作系统4小时速成:进程管理复习重点,进程,线程,处理机调度,进程同步,死锁

weixin_46838716的博客 779

操作系统进程管理——死锁避免

例如,资源总量为10,进程P₁(需5)、P₂(需7)、P₃(需3),排序后为P₃(3)、P₁(5)、P₂(7)。若已分配P₃=2,P₁=3,P₂=2,剩余3,则3 + (3-2) + (5-3) + (7-2) = 3+1+2+5=11 ≥7(P₂的最大需求),系统安全。银行家算法是最著名的死锁避免算法,由Dijkstra于1965年提出,其灵感来源于银行的贷款审批机制:银行在发放贷款时,需确保现有资金加上未来可收回的贷款,足以满足所有客户的最大贷款需求,否则会拒绝贷款。

分享人工智能领域原创文章 1179

操作系统——进程管理-死锁问题——2020.11.25

进程管理一丶死锁问题二丶死锁关系图——嗟险阻,叹飘零。关山万里作雄行—— 一丶死锁问题 进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题 如果一个进程在等待一件不可能发生的事,则进程就死锁了 而如果一个或多个进程产生产生死锁,就会造成系统死锁 ==例:==系统有5个进程:A,B,C,D,E,这5个进程都需要4个系统资源,如果系统至少有多少个资源,则不可能发生死锁 就直接算最坏情况,也不死锁就行了呀 (进程数量)*(需要的资源数-1)+ 1 本题:5*(4-1)+1 = 16个资源就行了

weixin_43402353的博客 441

操作系统(三)| 进程管理下 经典进程问题分析 线程 死锁

相互通信的进程间设有公共的内存区,每个进程既可向该公共内存中写,也可从公共内存中读,通过这种方式实现进程间的信息交换。用于连接一个读进程、一个写进程,以实现它们之间通信的共享文件,称为pipe文件。​ 硬件中断,进程异常,或者该进程请求IO,这些都会让CPU闲下来,我们就要给CPU找活干了。一个进程集合中的每个进程都在等待只能由该集合中的其它进程才能引发的事件,这种状态称作死锁。​ 看当前是否有进程可以执行,可以执行的话,该进程F[N]设置为1,同时释放他的资源。R[i][j]:进程i对资源j的申请数。

专注于人工智能的算法与应用 833

【操作系统表格解析】进程管理、内存管理、文件系统、设备管理、死锁、终端命令

本文系统梳理了操作系统核心知识,重点介绍了功能架构、进程管理、内存管理等关键模块。主要内容包括:1)操作系统五大核心功能和四种体系结构对比;2)进程与线程的本质区别及进程状态转换;3)主流进程调度算法特点与适用场景;4)通过多维度对比表格帮助读者构建完整的操作系统知识体系。文章适合开发、运维等技术人员系统提升操作系统原理认知。

独立思考,明辨是非 1582

操作系统进程管理——死锁预防

→Pₙ→P₁,其中P₁等待P₂的资源Rₐ,P₂等待P₃的资源Rᵦ,…,Pₙ等待P₁的资源Rᵧ。又因P₁等待的Rₐ由P₂持有,故P₂持有的资源编号 ≥ Rₐ(否则P₂无法申请Rₐ),同理可得Rₐ ≤ Rᵦ ≤ …例如,操作系统的CPU调度采用“可剥夺调度”:高优先级进程可以抢占低优先级进程的CPU资源,这本质上就是破坏了CPU资源的不可剥夺条件,避免因CPU竞争导致的死锁。例如,进程需要使用打印机(编号3)和内存(编号2)时,必须先申请内存(编号2),再申请打印机(编号3),而不能先申请打印机再申请内存。

分享人工智能领域原创文章 890

操作系统学习笔记——第二章 进程管理 和 第三章 死锁

在学习操作系统时总结了笔记,并分享出来,特别是蓝色和红色字体。有问题请及时联系博主:Alliswell_WP,转载请注明出处。 参考书:《操作系统》谌卫军等,清华大学出版社,2012年5月参考视频:清航全套计算机专业课视频 目录 第二章 进程管理 1.进程(Process) 2.线程(Thread) 3.进程间通信 4.经典的IPC问题 5.进程调度 第三章 死锁 第二章 进程管理(进程...

Alliswell_WP 503

软件设计师中级 操作系统1_进程管理_同步互斥_PV操作_死锁

软件设计师中级 操作系统1_进程管理_同步互斥_PV操作_死锁

Nancyuojuiivk的博客 443

操作系统基础/进程管理/死锁

操作系统基本特征1. 并发并发性是指宏观上在一段时间内能同时运行多个程序,而并行性则指同一时刻能运行多个指令。并行需要硬件支持,如多流水线或者多处理器。操作系统通过引入进程和线程,使得程序能够并发运行。2. 共享共享是指系统中的资源可以供多个并发进程共同使用。有两种共享方式:互斥共享和同时共享。互斥共享的资源称为临界资源,例如打印机等,在同一时间只允许一个进程访问,需要用同步机制来实现对临界资源的...

多多 441

[操作系统]进程管理之死锁

概念 死锁:多个进程由于临界资源的不合理分配导致无限阻塞的状态称为死锁。 死锁VS饥饿: 死锁的进程全部处于阻塞态,而饥饿的进程可能处于阻塞态也可能处于就绪态; 进入饥饿的进程可以只是一个,而死锁的进程数需大于等于2个 死锁产生的原因 系统资源的竞争; 进程推进顺序非法; 一句话即为系统临界资源的不合理分配。 必要条件 互斥条件 不剥夺条件 请求并保持条件 循环等待条件 死锁某种程度上可以...

qq_43715670的博客 658
上一篇: 操作系统 进程管理之处理机调度
下一篇: win10安装Tensorflow 0.12 && Tensorflow 1.0.0
JinbaoSite0144
博客等级 码龄12年 231粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值