[操作系统] 分页系统的实现问题

现代操作系统 第4版 第3章笔记 #第三章 阅读详情

分页系统的实现问题



1. 与分页有关的工作

操作系统在四段时间里做与分页有关的工作:进程创建时,进程执行时,缺页中断时和进程终止时。

  1. 当在分页系统中创建一个一个新进程时,操作系统需要确定该进程的程序和数据在初始时有多大,并为它们创建一个页表。操作系统还要在内存中为页表分配空间并对其进行初始化。当进程被换出时,页表不需要驻留在内存中,但当进程运行时,页表必须在内存中。

    另外,操作系统要在磁盘交换区中分配空间,以便在一个进程换出时在磁盘上有放置此进程的空间。操作系统还要用程序正文和数据对交换区进程初始化,这样当新进程发生缺页中断时,可以调入需要的页面。某些操作系统直接从磁盘上的可执行文件对程序正文进行分页,以节省磁盘空间和初始化时间。

    最后,操作系统必须把有关页表和磁盘交换区的信息存储在进程表中。

  2. 当调度一个进程执行时,必须为新进程重置MMU,刷新TLB,以清除以前的进程遗留下的痕迹。

  3. 当缺页中断发生时,操作系统必须通过读硬件寄存器来确定是哪个虚拟地址造成的缺页中断。并计算出需要的页面以及要替换的老的页面。最后,还要备份程序计数器,使其指向引起缺页终端的指令,并重新执行该指令。

  4. 当进程退出的时候,操作系统需要释放进程的页表,页面和页面在硬盘上所占用的空间。但如果有些页面是被共享的,那只有当所有使用共享页面的进程终止时,该共享页面才会被释放。

2. 缺页中断处理

缺页中断时,发生的的事件顺序如下:

  1. 硬件陷入内核,在堆栈中保存程序计数器。大多数机器将当前指令的各种状态信息保存在特殊的CPU寄存器中。

  2. 启动一个汇编代码例程保存通用寄存器和其他易失的消息,以免被操作系统破坏。

  3. 当操作系统发现一个缺页中断时,尝试发现需要哪个虚拟页面。通常一个硬件寄存器包含了这以信息,如果没有的话,操作系统必须检索程序计数器,取出这条指令,用软件分析这条指令,看看它在缺页中断时正在做什么。

  4. 一旦知道了发生缺页中断的虚拟地址,操作系统检查这个地址是否有效,并检查存取与保护是否一致。如果不一致,向进程发出一个信号或杀掉该进程。如果地址有效且没有保护错误发生,系统则检查是否有空闲页框。如果没有空闲页框,执行页面置换算法寻找一个页面来淘汰。

  5. 如果选择的页框被修改过了,安排该页写回磁盘,并发生一次上下文切换,挂起产生缺页中断的进程,让其他进程运行直至磁盘传输结束。无论如何,该页框被标记为忙,以免因为其他原因而被其他进程占用。

  6. 一旦页框干净后,操作系统查找所需页面的在磁盘上的地址,通过磁盘操作将其装入。该页面被装入后,产生缺页中断的进程仍然被挂起,并且如果有其他可运行的用户进程,则选择另一个用户进程运行。

  7. 当磁盘中断发生时,表明该页已经被装入,页表已经更新可以反映它的位置,页框也被标记为正常状态。

  8. 恢复发生缺页中断指令以前的状态,程序计数器重新指向这条指令。

  9. 调度引发缺页中断的进程,操作系统返回调用它的汇编语言例程。

  10. 该例程恢复寄存器和其他状态信息,返回到用户空间继续执行,就好像缺页中断没有发生过一样。

3. 指令备份

当程序访问不在内存中的页面时,引起缺页中断的指令会半途停止并引发操作系统的陷阱,系统取出所需的页面后,需要重新启动引起陷阱的指令。

为了重启指令,操作系统需要知道指令第一个字节的位置。在陷阱发生时,程序计数器的值依赖于引起缺页中断的那个操作数以及CPU中微指令的实现方式。

可以,使用一个隐藏的内部寄存器。在每条指令执行之前,把程序计数器的内容复制到该寄存器。可能会有第二个寄存器,用来提供哪些寄存器已经自动增加或者自动减少以及递减的数量信息。通过这些信息就可以重启指令了。

4. 锁定内存中的页面

假如一个进程刚刚通过系统调用从文件或其他设备中读取数据到其地址空间中的缓冲区。在等待I/O完成时,该进程被挂起,另一个进程被允许运行,而这个新运行的进程产生一个缺页中断。

如果分页算法是全局算法,包含I/O缓冲区的页面有可能会被淘汰出内存。如果一个I/O设备正处在对该页面进程DMA传输的过程之中,将这个页面移出去将会导致部分数据写入它们所属的缓冲区中,而部分数据被写入到最新装入的页面中。

一种解决方法是锁住正在做I/O操作的内存中的页面以保证
它不会被移出内存。锁住一个页面通常称为在内存中钉住页面。另一种方法是在内核缓冲区中完成所有的I/O操作,然后再将数据复制到用户页面。

5. 后备存储

在内存中被置换出的页面应该放在磁盘中的什么位置?

  1. 静态交换区分页

    在磁盘上分配页面空间的最简单的算法是在磁盘上设置特殊的交换分区,甚至从文件系统划分一块独立的磁盘。

    当系统启动时,以该交换分区为空,并在内存中以单独的项给出它的起始大小。在最简单的情况下,当第一个进程启动时,留出与这个进程一样大的交换区块,剩余的为总空间减去这个交换分区。当新进程启动后,同样被分配与其核心映像同等大小的交换分区。进程结束后,会释放其磁盘上的交换区。交换分区以空闲块列表的形式组织。

    与每个进程对应的是其交换区的磁盘地址,即进程映像保存的地方。这一信息是记录在进程表里的。

    写回一个页面时,计算写回地址的过程为:将虚拟地址空间中页面的偏移量加到交换区开始的地址。但在进程启动前必须初始化交换区,一种方法是将整个进程映像复制到交换区,以便随时可以将所需内容装入,另一种方法是将整个进程装入内存,并在需要时换出。

    这种方法可能出现的问题是:进程再启动后可能增大。所以最好为正文、数据和堆栈分别保留交换区,并且允许这些交换区在磁盘上多于一个块。

  2. 动态备份页面

    另一个极端的情况是,事先什么也不分配,在页面换出时为其分配磁盘空间,并在换入时回收磁盘空间,这样内存中的进程不必固定于任何交换空间。缺点是内存中的每个页面都要记录相应的磁盘地址,即每个进程都必须有一张表,记录每一个页面在磁盘上的位置。

后备存储

如图所示,在a中,页面0,3,4,6在内存中,页面1,2,5和7在磁盘上。磁盘上的交换区与进程虚拟地址空间一样大(8个页面),每个页面有固定的位置,当它从内存中被淘汰时,便写道相应位置。该地址的计算需要知道进程的分页区域的起始位置,因为页面是按照它们的虚拟页号的顺序连续存储的。内存中的页面通常在磁盘上有镜像副本,但是如果页面装入内存后被修改过,那么这个副本可能已经过期,磁盘上的页面应该被内存中的所替代。但如果一个内存页面要被换回磁盘,并且未被修改过,那么应该使用磁盘中的副本。

在b中,页面在磁盘上没有固定地址。当页面换出时,要及时选择一个空磁盘页面并据此来更新磁盘映射,即每个虚拟页面都有一个磁盘地址空间。内存中的页面在磁盘上没有副本,它们在磁盘映射表中的表项包含一个非法的磁盘地址或者一个表示它们未被使用的标记位。

不能保证总能够实现固定的交换分区,例如没有磁盘分区可用时,这种时候可以利用正常文件系统中的一个或多个较大的,事前定位的文件。

更好的方法是,由于程序正文通常是只读的,当内存紧张时,可以丢弃程序页,在需要的时候从可执行文件(因为每个进程的程序正文来自可执行文件)读入即可。共享库也可用这个方式工作。

6. 策略和机制的分离

使大多数存储管理器作为用户级进程运行。

外部页面调度程序

如图所示,其中存储管理系统被分为三个部分:

  1. 一个底层MMU处理程序。
  2. 一个作为内核一部分的缺页中断处理程序。
  3. 一个运行在用户空间中的外部页面调度程序。

当一个进程启动时,需要通知外部页面调度程序以建立进程页面映射,如果需要的话还要在磁盘上分配后备存储。

当进程正在运行时,可能要把新对象映射到其地址空间,还要通知外部页面调度程序。

当进程开始运行,有可能出现缺页中断,此时由缺页中断处理程序找出需要的虚拟页面,然后发送一条消息给外部页面调度程序通知它。

外部页面调度程序从磁盘中读入所需页面,把它复制到自己地址空间的某一位置。并告诉缺页中断处理程序该页面的位置。

缺页中断处理程序从外不页面调度程序的地址空间中清除该页面映射,然后请求MMU处理程序把它放到用户地址空间的正确位置,最后重启用户进程。

在这个方法中,可以将页面置换算法存储在外部页面调度程序中。但外部页面调度程序无权访问页面的访问位和修改位。所以需要某种机制把这些信息传递给外部页面调度程序,或者把算法存储在内核中。如果算法存储在内核中,那么缺页中断处理程序负责告诉外部页面调度程序,应该被淘汰的页面。

这种方法优点是模块化和好的适应性,缺点是用户陷入内核需要开销。

参考书目:现代操作系统第三版

西北工业大学GeekOS实验踩坑记:从分段到分页,手把手教你搞定Project4的虚拟内存 本文详细解析西北工业大学GeekOS实验Project4的虚拟内存实现过程,涵盖分页存储管理、缺页中断处理等核心内容。通过实战代码示例和调试技巧,帮助开发者解决版本兼容、宏定义缺失等常见问题,掌握操作系统底层原理与优化方法。 阅读详情

相关推荐

《现代操作系统》第三章:存储管理

操作系统中管理分层存储器体系的部分称为存储器管理(memory manager) 3.1 无存储器抽象 直接使用物理地址; 并行问题; 重定位问题(因为使用的是绝对物理地址); 装载器需要一定的方法来辨别地址和常数(地址值需要重定位,而常数不需要重定位)。 3.2 一种存储抽象:地址空间 要保证多个应用程序同时处于内存中并且不互相影响,需要解决的问题:保护和重定位。 保护:给内存块标记保...

u014209688的专栏 662

操作系统10:分页存储和分段存储

连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。如果允许将一个进程直接分散地装入到许多不相邻接的分区中,便可充分地利用内存空间,而。基于这一思想而产生了离散分配方式。根据在时所,又可将离散分配分为以下三种:分页存储管理方式//程序分页,存储分块分段存储管理方式。

swadian2008的博客 9150

操作系统分页:提升计算机资源利用率的利器

本文旨在全面介绍操作系统中的分页机制,解释其工作原理、优势以及在现代计算机系统中的实际应用。我们将从基础概念出发,逐步深入到实现细节和优化策略。文章首先介绍分页的基本概念和解决的问题,然后详细解释分页机制的工作原理,包括地址转换过程、页表结构等。接着我们会探讨分页的性能优化技术,最后通过实际案例展示分页在现代操作系统中的应用。分页(Paging):一种内存管理方案,将物理内存和虚拟内存划分为固定大小的块(称为页)虚拟内存(Virtual Memory):使应用程序认为自己拥有连续可用的内存空间的技术。

操作系统内核探秘的博客 874

操作系统(5.2)--请求分页储存管理模式

通常,由于对换区是采用连续分配方式,而文件区是采用离散分配方式,故对换区的磁盘I/0速度比文件区的高。但对于那些可能被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都应从文件区调入。2)请求调页策略当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便立即提出请求,由OS将其所需页面调入内存。又假定系统中可用的物理块总数为m,则每个进程所能分到的物理块数为bi,将有:应该取整,它必须大于最小物理块数。

码银的博客 4542

Oracle Scheduler任务故障诊断 实战指南

当基础环境无异常时,需聚焦任务本身的配置与状态。定义(JOB)→ 调度(SCHEDULE)→ 执行(SLAVE进程)→ 日志(LOG),每个环节都可能存在卡点。Oracle Scheduler任务的“隐性故障”看似棘手,实则是环境配置、资源竞争、时间逻辑等问题的集中体现。通过本文的诊断工具和排查思路,你可以构建从“基础环境→任务配置→执行链路→日志追踪”的全维度分析体系,让每一个“消失”的任务都无所遁形。

Nuzbb的博客 1073

Voicebox本地部署:模型下载与离线模式实战指南

在本地语音处理场景中,模型下载失败和离线运行需求是开发者最常遇到的两大难题。理解语音工具的本地推理原理,关键在于掌握模型文件与程序逻辑的分离管理:模型独立下载,程序负责推理,输出留在本机。这种架构带来显著的技术价值——数据不出本地、不依赖公网、批量任务不中断。无论是语音识别转写、语音合成,还是集成到自动化脚本中,本地离线模式都能在隐私敏感或网络不稳定环境下稳定运行。对开发者而言,先解决模型文件的完整获取,再验证离线启动流程,就能绕过“无法下载模型”的常见坑。本文从环境准备、模型放置、服务启动到接口调用,提供

weixin_29048309的博客 306

操作系统核心原理-5.内存管理(中):分页内存管理

原创:https://www.cnblogs.com/edisonchou/p/5094066.html 分页内存管理 1 解决问题之道   为了解决交换系统存在的缺陷,分页系统横空出世。分页系统的核心在于:将虚拟内存空间和物理内存空间皆划分为大小相同的页面,如4KB、8KB或16KB等,并以页面作为内存空间的最小分配单位,一个程序的一个页面可以存放在任意一个物理页面里。   (1)解决空...

z1026544682的专栏 744

主流双目相机技术参数横向评测:从ZED到国产新锐

本文对主流双目相机技术参数进行了横向评测,涵盖ZED、Bumblebee等国际品牌及国产新锐产品。详细分析了分辨率、帧率、视场角等关键参数,并针对机器人导航、AR/VR交互、工业检测等场景提供选型建议。特别推荐ZED相机在科研领域的成熟应用,以及国产方案在长基线设计和主动双目技术上的创新突破。

weixin_33670786的博客 317

分页管理系统的结构和流程

分页管理系统很像你逛图书馆找书的体验。想象你的脑袋是一个大图书馆,里面有各种各样的书(程序或程序中的数据),但是书实在太多了,不能全部一次性搬进来。所以,图书馆员想了个好办法,把所有的书架(计算机的主内存)都分成了一堆堆的相同大小的格子(页框),还给你准备了一个清单(页表),这个清单记录着每一本书对应的格子。这个清单好比是书的目录,里面的每个小节对应一本书的一整章(比如是一套儿童百科全书的第一章)。所以这个清单不是一个一个地指向整本书的,而是每个小节(小章节)都对应到图书馆的一个格子上。

la1466128339的博客 808

普冉(PUYA)单片机开发笔记 [完结篇]:使用体会

这一篇是 PY32F003 应用实验的完结篇,总结了对这颗 MCU 的使用体会。我已经把自己实验用的代码打包上传,供各位码神参考。

Tomcat0130 - 代码生涯 9597

告别Keil手动分区!用CubeMX+VS Code一键生成带Bootloader的STM32 OTA工程

本文详细介绍了如何利用STM32CubeMX和VS Code实现STM32 OTA工程的自动化构建,告别传统Keil手动分区的繁琐流程。通过图形化配置Flash分区、自动生成链接脚本以及实现Bootloader跳转逻辑,开发者可以高效完成远程升级功能开发,显著提升嵌入式开发效率。

weixin_33720956的博客 389

操作系统哲学原理(14)内存原理-段式内存管理

说明:该系类文章主要是从哲学视角看操作系统 这门学科。同时也是博主阅读《操作系统之哲学原理》的笔记总结。因为博主 这些年主要是以研究安卓系统和 嵌入式Linux为主,因此这个系类文章也是这两个领域不可或缺的基石之一,尤其是对操作系统感兴趣的伙伴可特别关注。 ...

wangdsh的博客 923

CAD文件转换避坑指南:Inventor导出STP时这些设置千万别忽略

本文深入解析了使用Autodesk Inventor导出STP文件时的关键设置与避坑指南。重点探讨了应用协议选择、样条曲线拟合精度对几何保真度的影响,以及装配体结构和元数据的保全策略,旨在帮助用户实现高质量、零误差的CAD数据交付,避免下游软件打开时出现特征丢失或曲面破碎等问题。

weixin_29214559的博客 517

电子科大操作系统期末复习之经典大题

系统先假定可为P2分配资源,并修改Available,Allocation2和Need2向量:Availabe=(0,4,0,0)Allocation2=(2,5,7,6)Need2=(1,1,3,4) ,进行安全性检查:此时对所有进程,条件Needi≦ Available(0,4,0,0)都不成立,即Available不能满足任何进程的请求,故系统进入不安全状态。因此,在这个系统中,处于“运行”状态的进程数量最小值和最大值都是1;

m0_63230155的博客 1598

海康VisionMaster与西门子Smart 200进行S7通信

海康VisionMaster与西门子Smart 200进行S7通信

haier123888的博客 8177

英飞凌 AURIX TC3XX 系列单片机的链接文件

这篇介绍英飞凌 AURIX TC3XX 系列单片机的链接文件,主要是针对使用 SOTA 功能如何修改链接文件,完整地实现 SOTA 功能

大橙子的博客 4385

现代操作系统(三)

现代操作系统(三) 三.内存管理 分层存储器体系:MB级别的快速、昂贵、易失的高速缓存(cache);GB级别的速度与价格适中、易失的内存;TB级别的低速、廉价、非易失的磁盘存储;USB等可移动存储设备 操作系统中管理分层存储器体系的部分称为存储管理器 无存储器抽象 直接访问物理内存,所以想在内存中同时运行两个程序是不可能的,因为新的程序会覆盖前一个程序在相同位置的所有内容 在不使用存...

SEUXXD的博客 715

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

现代操作系统_内存管理

内存管理 内存RAM是计算机中一种需要认真管理的重要资源,将讨论操作系统是怎样对存储器创建抽象模型以及如何管理它们的。 分层存储器体系(memory hierarchy),即在这个体系中,计算机有若干兆(MB)快速、昂贵且易失性的高速缓存(cache),数千兆(GB)速度与价格适中且同样易失性的内存,以及几兆兆(TB)低速、廉价、非易失性的磁盘存储,另外还有诸如DVD和USB等可移动存储装置。 操作系统的工作是将这个存储体系抽象为一个有用的模型并管理这个抽象模型。 操作系统中管理分层存储器体系的部分称为存储

cbzFocus的博客 534

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

现代操作系统 第三章 内存管理

现代操作系统 第三章 内存管理 文章目录现代操作系统 第三章 内存管理无存储器抽象ー种存储器抽象:地址空间交换技术空闲内存管理虚拟内存分页分页过程的两个问题加速分页减小页表空间页面置换算法用软件模拟LRU —— 老化算法工作集页面置换算法工作集时钟页面置换算法分页系统中的设计问题有关实现的问题缺页中断处理习题 本文为读书摘要(个人认为重要的知识点),穿插课后习题的选取(主要选取考察概念性的习题) 无存储器抽象 最开始并没有对存储器进行抽象,直接简单粗暴的使用物理内存地址,直接从0到某个上限值。每个地址可

qq_53111905的博客 1751

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

操作系统学习笔记005

存储管理 为什么要对内存资源进行管理? 内存时计算机中一种重要的资源,内存容量并不能无限大、速度也不能无限快、也不能永久性的存储数据,价格也并不便宜。正因为这样,所以要合理高效的利用内存的资源。 1、分层存储器体系”(memory hierarchy) 在这个体系中,计算机有若干兆(MB)快速、昂贵且易失性的高速缓存(cache),数千兆(GB)速度与价格适中且同样易失性的内存,以及几兆兆(TB)低速、廉价、非易失性的磁盘存储,另外还有诸如DVD和USB等可移动存储装置。操作系统的工作是将这个存储体系抽象为

hui1097的博客 624

《计算机操作系统》练习题

一、填空题。 1.( 内存储器 )可被CPU直接访问,但CPU不能直接访问辅存。 2.存储管理是对主存空间的( 用户区 )进行管理。 3. 为了防止各个进程之间相互干扰和保护各个区域内的信息不被破坏,必须实现( 存储保护 )。 4.存储保护工作是由硬件和( 软件 )配合实现的。 5.把逻辑地址转换绝对地址的工作称为( 重定位 )。 6.内存管理中引入对换技...

HackerAC的博客 2252

浙江大学 远程教育 计算机科学,浙江大学远程教育2014-计算机科学--操作系统原理-在线作业答案...

浙江大学远程教育2014-计算机科学--操作系统原理-在线作业答案您的本次作业分数为100分 单选题 1.一个采用三级索引文件系统每块大小为4KB,每块地址占用4字节。管理的最大的文件是( )。 A 512MB B 1TB C 2TB D 4TB 正确答案D 单选题 2.关于优先权大小的论述中,正确的论述是( )。 A 计算型进程的优先权,应高于I/O型进程的优先权。 B 用户进程的优先权,应高于...

weixin_39689870的博客 425

操作系统第四章习题

操作系统第四章习题 1.对一个将页表放在内存中的分页系统: (1) 如果访问内存需要0.2μs,有效访问时间为多少? (2) 如果加一快表,且假定在快表中找到页表的几率高达90%,则有效访问时间又是多少(假定查快表需花的时间为0)? 分析:每次访问数据时,若不使用快表,则需要两次访问内存,即先从内存的页表中读出页对应的块号,然后再根据形成的物理地址去存取数据;使用快表时,若能从快表中直接找到对应的...

zeng_jun_yv的博客 1万+

[操作系统] 分页系统的设计问题

分页系统的设计问题 局部策略与全局分配策略 负载控制 页面大小 分离的指令空间和数据空间 共享页面 共享库 内存映射文件 清除策略 虚拟内存接口

LLLZH 1056

基于Hash页表的分页系统实现实验

生成N个用户线程和一个管理线程,用户线程随机产生一些逻辑地址和读写操作(读操作表示不修改页面,写操作表示修改页面),,管理线程负责按顺序将各用户线程产生的逻辑地址转换为物理地址。系统采用带TLB的分页系统,所有用户线程各。,每个用户线程的,实际页面数和页表随机生成(但是页表中的有效无效位总数应小于等等线程实际页面数)。所有用户线程的,Hash函数为H( ID,page)自定义。链表中的结点由页号、帧号和下一节点的指针构成,页号的Hash值相同的所有结点构成一张链表,Hash页表中存储该链表的头结点地址。

weixin_74334636的博客 904

分页系统的实际实现问题

分页系统的实际实现问题      操作系统在四个阶段要做与分页相关的工作:进程创建,缺页中断时,进程执行,进程结束时。    当在分页系统创建一个新进程时,操作系统首先要确定程序和数据在初始时有多大,并为他们创建一个页表,然后在内存中为页表分配内存空间以及初始化,当进程被换出时,页表不用留内存中。另外,操作系统要在磁盘交换区分配空间,以便在某进程交换出区时有磁盘空间可以用,操作系统还要用程序

hero_zouzongling的专栏 1374
上一篇: [操作系统] 分页系统的设计问题
下一篇: [操作系统] 分段
LLLZHLIU
博客等级 码龄10年 19粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值