CN110597641A - 一种线性地址空间的布局方法及计算装置 - Google Patents

一种线性地址空间的布局方法及计算装置 Download PDF

Info

Publication number
CN110597641A
CN110597641A CN201810605380.XA CN201810605380A CN110597641A CN 110597641 A CN110597641 A CN 110597641A CN 201810605380 A CN201810605380 A CN 201810605380A CN 110597641 A CN110597641 A CN 110597641A
Authority
CN
China
Prior art keywords
kernel
management structure
page management
register
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810605380.XA
Other languages
English (en)
Inventor
杨力祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201810605380.XA priority Critical patent/CN110597641A/zh
Priority to PCT/CN2019/086492 priority patent/WO2019237862A1/zh
Publication of CN110597641A publication Critical patent/CN110597641A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种线性地址空间的布局方法,涉及信息技术,特别是信息安全领域,进程和内核均独享一个完整的线性地址空间;还公开了一种计算装置,增加内核页目录表寄存器和目标进程也目录表寄存器,分别用于存放内核的页目录表的物理地址和进程的页目录表的物理地址。应用本发明提供的方案,攻击者无法直接利用其在用户态事先准备好的攻击程序,也无法将攻击获得的数据在不转换线性地址空间的情况下传回用户态程序占用的地址段。

Description

一种线性地址空间的布局方法及计算装置
技术领域
本申请涉及信息技术领域,特别涉及一种为内核、进程建立独享的全线性地址空间的方法及计算装置。
背景技术
现有的操作系统和应用程序的内存格局通常都是内核态与用户态共用一个线性地址空间,内核占一部分地址段,用户态程序占另一部分地址段。这样的格局为攻击者在用户态代码区事先准备好攻击程序提供了机会,当攻击发生时,使执行序从内核态跳转到用户态的攻击程序,此时用户态的程序具备内核态的特权级,具备极大的攻击力。
在此基础上,攻击者就可以修改授权信息、改变授权状态,从而获得超越授权的状态。进而可以进行诸如以下操作:
1、超越授权读取用户数据(包括内存和外设的数据)。
2、超越授权写入(包括篡改、删除)用户数据。
3、超越授权执行系统调用。
4、超越授权执行应用程序。
发明内容
针对现有技术中攻击者可以直接利用用户态事先准备好的攻击程序,进而超越授权等问题,本发明公开了一种为内核、进程建立独享的全线性地址空间的方法,以确保攻击者无法直接利用其在用户态事先准备好的攻击程序,也无法将攻击获得的数据在不转换线性地址空间的情况下传回用户态程序占用的地址段。进一步的,需要配套的重新设计中断等有关特权级切换的指令,使之能在执行特权级切换指令时,硬件同时自动地切换页管理结构基址寄存器的值。所述页管理结构基址寄存器是指页目录基址寄存器或一级页表基址寄存器,如在INTEL体系中的CR3寄存器。
为达到上述目的,本发明公开了一种线性地址空间的布局方法,所述方法包括:进程和内核均独享一个完整的线性地址空间。如除进程之外还有其他特权级的程序形式,则每个特权级的程序形式都拥有一个独立的线性地址空间,其管理形式参见进程。
由于每一个进程的用户态占用一个完整的线性地址空间,没有内核态的部分;内核单独占用一个独立、完整的线性地址空间。在这个条件下,内核的指令指针(例如,eip)无论如何都不可能直接跳转到进程的用户态的线性地址空间,攻击者在用户态线性地址空间预先准备攻击代码实施攻击的可能性彻底消除。
在本发明的一个具体实现方式中,所述进程的页管理结构和页表由内核管理,进程的线性地址空间内不存在任何内核的代码和数据,也不存在任何0特权级的数据段和代码段。
每个进程在用户态时有自身的用户栈,在进程存续期间,进程始终使用其自身的用户栈,当进程间切换时,用户栈也随之切换;
内核还为每个进程在内核的线性地址空间分配一个内核栈,当该进程发起系统调用进入内核后,内核使用这个栈。
在本发明的一个具体实现方式中,内核中设置专供中断服务程序使用的内核栈,当发生中断时,直接切换到中断的内核栈,而不使用任何一个进程的内核栈。
在本发明的一种具体实现方式中,当进程发起系统调用时,包括如下步骤:
S1:进程以固定格式将参数压入进程栈,并提供参数的类型、个数、长度;
S2:通过软中断或者快速系统调用切换到内核后,内核将进程栈中的参数拷贝至该进程的内核栈;然后再进行系统调用函数的执行;
S3:当内核需要向用户态返回数据时,先将要拷贝的数据写入进程的用户栈,然后再切换到进程;
在本发明的一种具体实现方式中,当内核切换到进程时,页管理结构基址寄存器的值切换到指定进程的页管理结构的物理地址;当进程切换到内核时,页管理结构基址寄存器的值切换到内核的页管理结构的物理地址;不允许进程直接切换到另一个进程。所述页管理结构是指页目录表或一级页表。
进一步的,为了能够使CPU能够自动找到内核页管理结构和目标进程页管理结构,增加两个寄存器,内核页管理结构基址寄存器和目标进程页管理结构基址寄存器,分别用于存放内核页管理结构的物理地址和进程页管理结构的物理地址。其中,进程页管理结构基址寄存器的值在内核中被设定为具体某一个进程的页管理结构的物理地址。当需要切换到内核时,将页管理结构基址寄存器赋值为内核页管理结构基址寄存器的值;当需要切换到进程时,将页管理结构基址寄存器赋值为进程页管理结构基址寄存器的值。页管理结构基址寄存器为CPU寻址时访问的寄存器。
在本发明的一种具体实现方式中,当发生中断时,CPU在执行其他动作之前,先将内核页管理结构基址寄存器的值赋给页管理结构基址寄存器。
当通过中断返回指令进行特权级改变的返回时,首先进行相应的特权级检查,再弹出栈中的返回地址后,CPU自动将进程页管理结构基址寄存器的值赋给页管理结构基址寄存器;如进程页管理结构基址寄存器的值为0,则发生异常。
其中,进行特权级检查的具体方式可参照现有CPU的方式进行;在Intel体系下,所述页管理结构基址寄存器是指CR3寄存器;在Intel体系下,所述中断返回指令是指iret指令。
当发生中断时,CPU根据代码段寄存器(例如Intel体系下的CS寄存器)的特权级判断当前是在执行用户程序还是在执行内核程序,如果是执行用户程序,则将页管理结构基址寄存器,赋值为内核页管理结构基址寄存器的值,剩余动作(如找IDT表等、特权级处理等)与现有技术类似,然后将关键寄存器的值压入内核栈中,将其他寄存器的值保存在tss,并将tss保存在进程管理信息中;如果是执行内核程序,则不需要切换页管理结构基址寄存器,其它动作相同。
所述关键寄存器包括代码段寄存器、数据段寄存器、栈段寄存器、指令指针、栈寄存器等;例如,在Intel体系下,所述关键寄存器可以包括CS、DS、SS、IP、SP。
当内核需要对进程数据访问时,具体步骤包括:
内核先根据进程提供的线性地址,和内存中保管的该进程的页管理结构算出这个地址对应的实际物理地址;
为上述物理地址在内核的线性空间中临时映射一个新的线性地址;
内核通过临时线性地址对数据进行读写;
读写完成后,内核再解除对该物理地址的临时映射关系。
一种计算装置,其特征在于:增加两个寄存器,内核页管理结构基址寄存器和目标进程页管理结构基址寄存器,分别用于存放内核的页管理结构的物理地址和进程的页管理结构的物理地址。切换到内核时,将页管理结构基址寄存器赋值为内核页管理结构基址寄存器的值;切换到进程时,将页管理结构基址寄存器赋值为进程页管理结构基址寄存器的值;页管理结构基址寄存器为CPU寻址时访问的寄存器。
如果该装置支持更多的特权级,则为每个特权级增设一个页管理结构基址寄存器,用于存储该特权级对应的线性地址空间的页管理结构基址。
本发明的技术方案可以实现以下技术效果:
1)、攻击者无法直接利用其在用户态事先准备好的攻击程序,也无法将攻击获得的数据在不转换线性地址的情况下传回用户态程序占用的地址段。
2)、能够防范CPU硬件可能出现的错误,比如CPU中硬件出现对跨特权级访问的失控,即3特权级下程序可以直接访问到0特权级下程序,本方案跨特权级访问必须切换页管理结构基址寄存器,这样可以做到3特权级程序除了进行正常系统调用外(伴随切换页管理结构基址寄存器)外,无法直接访问0特权级下程序。
3)、能够在内存空间比较小的领域内(如嵌入式),以最小的防护成本,最大限度的防止攻击。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1:现有技术的线性地址空间布局示意图
图2:本发明的线性地址空间布局示意图
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是现有技术中线性地址空间布局的示意图,在大多数现有操作系统的线性地址空间分布中,并不存在严格意义上的内核这一概念,在每个线性地址空间中,只有进程的用户态和进程的内核态,当进程处于用户态时,只有权访问线性地址空间中用户态代码的访问范围,当进程处于内核态时,内核态代码能够访问的范围为整个线性地址空间。例如,进程A的用户态程序只能访问图中线性地址空间中的用户态代码访问范围;当通过系统调用进入到进程A内核态,进程A内核态程序有权访问内核态代码访问范围。
在攻击条件下,如果攻击者将返回地址修改为用户态地址空间,并且在这个位置准备了攻击代码,就会形成攻击执行序分支。特别是由于攻击发生在系统特权级(例如0特权级),系统特权级中代码的可访问范围涵盖了包括用户态线性地址空间在内的全部线性地址空间,所以,一旦跳转到被攻击者修改的处于用户态线性地址空间中的位置,且攻击者在所述位置处准备了攻击代码或伪装为数据的攻击代码,由于此时处在系统特权级,上述攻击代码就会在系统特权级被执行。这些代码是攻击者精心准备的,可以实现攻击者想要拥有的一切功能,攻击力很强。
针对上述问题,本发明为每一个进程的用户态建立一个完整的线性地址空间,没有内核态的部分。为内核建立一个独立、完整的线性地址空间。实现了内核和进程的线性隔离。
本发明中线性地址空间的布局如图2所示,进程和内核均独享一个完整的线性地址空间。在原有模式下,进程和内核共享一个线性地址空间,意味着,用户态下的一个线性地址所对应的物理地址,进入内核态后仍然对应着原来的物理地址。用户态到内核态的切换,本质只是特权级的切换,而在内核态时,理论上可以直接跳转到当前线性地址空间内的任何位置的代码,也可以直接访问任何这个空间内的数据。此时,进程和内核不是隔离的。
在本发明的线性地址空间布局下,每个进程独享一个完整的线性空间。进程的页管理结构由内核管理。进程的线性地址空间内不存在任何内核的代码和数据,也不存在任何0特权级的数据段和代码段。因此,当内核执行时,不可能直接跳转到任何一个进程的线性地址空间内的代码执行,也不可以直接访问进程的线性地址空间内的数据。
在一个具体的实施方式中,改进主要包括以下方面:
进程拥有独立的线性地址空间
进程使用的cs、ds、ss段的起始位置为0,段限长为CPU最大寻址空间,特权级为3。
每个进程拥有独立于内核的页管理结构。
进程可以在0到最大寻址空间内任意寻址,如发生缺页,则通过引发缺页中断由内核进行页面分配,整个线性空间对应的物理页面在页管理结构和页表中的U/S标志位都为1。一个完整的线性空间不再切割为内核态可访问的空间和用户进程可访问的空间。当前为用户态时,整个线性地址空间全部属于进程。
内核拥有独立的线性地址空间
内核使用的cs、ds、ss段的起始位置为0,段限长为CPU最大寻址空间,特权级为0。
内核拥有独立于所有进程的页管理结构。
内核也可以在0到最大寻址空间内任意寻址,如发生缺页,则通过引发缺页中断由内核进行页面分配,整个线性空间对应的物理页面在页管理结构中的U/S标志位都为0。内核管理所有的进程的页管理结构。
进程的栈和内核的栈
每个进程在用户态时有自身的用户栈,栈的页面由内核分配,属于用户态,在进程的线性地址空间。在进程存续期间,进程始终使用其自身的用户栈。当进程间切换时,用户栈也随之切换。
每个进程创建后,内核为该进程分配一个内核栈,在内核的线性地址空间,当该进程发起系统调用进入内核后,内核使用这个栈。
内核中除了有进程的内核栈,还有供中断服务程序使用的内核栈。当发生中断时,切换到中断的内核栈,而不使用任何一个进程的内核栈。
内核中的每个独立线程,也拥有属于自己的内核栈,不与其他内核栈混用。
进程的用户栈和内核栈分别记录在进程的tss结构中,在切换时可由CPU自动找到对应的栈段、栈顶指针、栈底指针,实现切换。
进程与内核的参数传递
当进程发起系统调用时,有可能需要传递参数。
一种优选的方案是:
进程以固定格式将参数压入进程栈,并提供参数的类型、个数、长度。
通过软中断或者快速系统调用切换到内核后,内核将进程栈中的参数拷贝至该进程的内核栈。然后再进行系统调用函数的执行。
当内核需要向用户态返回数据时,先将要拷贝的数据写入进程的用户态栈,然后再切换到进程。
内核与进程的切换
在本发明中,导致线性地址空间切换共有以下几种方式:
a)内核切换到进程。
这与现有技术中的进程切换基本相似。都是在内核中选定要切换的进程目标,然后切换tss以及各种寄存器。差别在于,在现有技术中,页管理结构基址寄存器的值是由一个进程的页管理结构的物理地址切换到另外一个进程的页管理结构的物理地址;而在本发明中,是将目标进程的页管理结构的物理地址赋值给进程页管理结构基址寄存器的值,然后将进程页管理结构基址寄存器的值的值赋给页管理结构基址寄存器。
b)发生中断,切换到内核
在现有系统中,当中断发生时系统正处于内核态,那么既不需要切换特权级,也不需要切换线性地址空间,只需跳转到对应的中断服务程序;如果中断发生时正处于用户态,那么需要切换特权级到0,但是不需要切换线性地址空间,使用的内核栈是刚才正在运行的进程的内核栈。所以发生中断时,硬件会自动完成特权级的切换,但是不会对线性地址空间进行任何改变。
在本发明中,进程和内核处于不同的线性地址空间,当在进程运行时发生中断,CPU必须自动切换特权级以及将线性地址空间从用户的线性地址空间切换到内核的线性地址空间。CPU的IDTR寄存器记录着中断描述符表(IDT)的地址,这个地址是线性地址,而且是内核空间的线性地址。因此CPU在访问IDT表前代码地址之前,须先将页管理结构基址寄存器寄存器的值记为内核页管理结构的物理地址,这样CPU才能正常访问IDT。
本发明的另外一种实施方式如下:
CPU增加两个寄存器:内核页管理结构基址寄存器,存放内核的页管理结构的物理地址;目标进程页管理结构基址寄存器,存放即将执行的进程的页管理结构的物理地址。
在内核的页管理结构创建完成后,内核代码将页管理结构的物理地址赋给内核页管理结构基址寄存器。在系统退出之前,不再修改寄存器的值。
在内核选定即将切换的进程后,内核代码将该进程的页管理结构的物理地址赋给目标进程页管理结构基址寄存器,在完成切换后自动将该寄存器清0。
发生中断信号时(包含硬件中断、软件中断、异常),CPU在执行其他动作之前,首先将内核页管理结构基址寄存器的值赋给页管理结构基址寄存器,实现将当前线性地址空间切换到内核的线性地址空间。
通过iret指令进行特权级改变的返回时,首先进行相应的特权级检查,这一部分与现有CPU相同,再弹出栈中的返回地址后,CPU自动将进程页管理结构基址寄存器的值赋给页管理结构基址寄存器。如进程页管理结构基址寄存器的值为0,则发生异常。
c)进程发起系统调用,切换到内核
以下以INTEL体系下的快速系统调用为例:
当进程发起一个系统调用,会通过软中断或者快速系统调用指令进入内核。在现有系统中,这仅带来特权级的切换和栈的切换,在本发明中,还会带来页管理结构基址寄存器的切换。
1)快速系统调用
具体方案如下:
增加SYSENTER_CR_MSR寄存器
SYSENTER指令:执行时,CR3内是进程的页管理结构首地址,内核页管理结构基址寄存器的值是内核的页管理结构首地址,在其他操作之前,首先将进程页管理结构基址寄存器的值的值赋值给CR3,完成后,将CR3的值(进程的页管理结构首地址值)赋给SYSENTER_CR_MSR寄存器。后续处理动作与现在相同
SYSEXIT指令:EIP跳转之前,读取SYSENTER_CR_MSR寄存器的值,赋给CR3。
栈切换与现在的方式一致。
2)软中断
软中断也是中断的一种,方式与中断导致切换到内核的基本一致,差别在于当通过软中断的方式进入内核后,内核会使用发起系统调用的进程的内核栈,内核栈信息从该进程的tss中获得。
内核对进程数据的访问
内核有可能会需要读写用户线性空间下的数据,如文件读写时,为该地址临时在内核线性空间中映射一个新的线性地址,读写完成后,解除该映射关系。
内核必须根据该进程的页管理结构、页表和具体的线性地址算出实际的物理地址,再由实际的物理地址反推出它在内核的线性地址,再根据内核里的线性地址进行读写。
具体步骤为:
内核先根据进程提供的线性地址,和内存中保管的进程的页管理结构算出这块内存实际的物理地址;为该物理地址临时映射内核中一个新的线性地址,进行读写。
这样,内核态的eip无论如何都不可能直接跳转到用户态的线性地址空间,攻击者在用户态线性地址空间预先准备攻击代码的可能性彻底消除。
通过以上的具体实施方式,本领域技术人员可以清晰的理解,在目前的CPU体系下,仅靠软件无法实现进程与内核的线性地址空间完全隔离,本发明对CPU进行了一系列的改造。
基于改造后的CPU体系下的线性地址空间隔离的设计,即使攻击程序能够改变内核执行序,也只能让被更改内核的执行序跳转到内核本身的其他指令,或者是跳转到一个无意义的地址。如果是跳转到无意义地址,内核会当即或者很快发生各种执行异常;如果是跳转到内核固有指令,能起到的攻击效果也非常有限。相较于内核执行到用户程序安排好的攻击代码,这两种情况的恶果会弱得多,能有效遏制攻击效果。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (15)

1.一种线性地址空间的布局方法,其特征在于:进程和内核均独享一个完整的线性地址空间。
2.根据权利要求1所述的方法,其特征在于:进程的页管理结构由内核管理,进程的线性地址空间内不存在任何内核的代码和数据,也不存在任何0特权级的数据段和代码段,所述页管理结构是指页目录表或一级页表。
3.根据权利要求1-2之一所述的方法,其特征在于:
每个进程在用户态时有自身的用户栈,在进程存续期间,进程始终使用其自身的用户栈,当进程间切换时,用户栈也随之切换;
内核还为每个进程在内核的线性地址空间分配一个内核栈,当该进程发起系统调用进入内核后,内核使用这个栈。
4.根据权利要求1-3之一所述的方法,其特征在于:内核中设置专供中断服务程序使用的内核栈,当发生中断时,直接切换到中断的内核栈,而不使用任何一个进程的内核栈。
5.根据权利要求1所述的方法,其特征在于:当进程发起系统调用时,包括如下步骤:
进程以固定格式将参数压入进程栈,并提供参数的类型、个数、长度;
通过软中断或者快速系统调用切换到内核后,内核将进程栈中的参数拷贝至该进程的内核栈。然后再进行系统调用函数的执行;
当内核需要向用户态返回数据时,先将要拷贝的数据写入进程的用户栈,然后再切换到进程。
6.根据权利要求1所述的方法,其特征在于:当内核切换到进程时,页管理结构基址寄存器的值切换到指定进程的页管理结构的物理地址;当进程切换到内核时,页管理结构基址寄存器的值切换到内核的页管理结构的物理地址;不允许进程直接切换到另一个进程,页管理结构基址寄存器为CPU寻址时访问的寄存器。
7.根据权利要求1所述的方法,其特征在于:增加两个寄存器,内核页管理结构基址寄存器和目标进程页管理结构基址寄存器,分别用于存放内核页管理结构的物理地址和进程页管理结构的物理地址。
8.根据权利要求7所述的方法,其特征在于:当发生中断时,CPU在执行其他动作之前,先将内核页管理结构基址寄存器的值赋给页管理结构基址寄存器。
9.根据权利要求7所述的方法,其特征在于:当通过中断返回指令进行特权级改变的返回时,首先进行相应的特权级检查,再弹出栈中的返回地址后,CPU自动将进程页管理结构基址寄存器的值赋给页管理结构基址寄存器。
10.根据权利要求7所述的方法,其特征在于:当发生中断时,CPU根据代码段寄存器的特权级判断当前是在执行用户程序还是在执行内核程序,如果是执行用户程序,则将页管理结构基址寄存器赋值为内核页管理结构基址寄存器的值。
11.根据权利要求6-10之一所述的方法,其特征在于:所述页管理结构基址是指页目录表基址或一级页表基址。
12.根据权利要求1所述的方法,其特征在于:当内核需要对进程数据访问时,具体步骤包括:
内核先根据进程提供的线性地址,和内存中保管的该进程的页管理结构算出这个地址对应的实际物理地址;
为上述物理地址在内核的线性空间中临时映射一个新的线性地址;
内核通过临时线性地址对数据进行读写;
读写完成后,内核再解除对该物理地址的临时映射关系。
13.一种计算装置,其特征在于:增加两个寄存器,内核页管理结构基址寄存器和进程页管理结构基址寄存器,分别用于存放内核的页管理结构的物理地址和进程的页管理结构的物理地址。
14.根据权利要求13所述的装置,其特征在于:切换到内核时,将页目录基址寄存器赋值为内核页管理结构基址寄存器的值;切换到进程时,将页目录基址寄存器赋值为进程页管理结构基址寄存器的值。
15.根据权利要求13-14之一所述的装置,其特征在于:如果所述装置支持更多的特权级,则为每个特权级增设一个页管理结构基址寄存器,用于存储该特权级对应的线性地址空间的页管理结构基址。
CN201810605380.XA 2018-06-12 2018-06-12 一种线性地址空间的布局方法及计算装置 Pending CN110597641A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810605380.XA CN110597641A (zh) 2018-06-12 2018-06-12 一种线性地址空间的布局方法及计算装置
PCT/CN2019/086492 WO2019237862A1 (zh) 2018-06-12 2019-05-11 一种线性地址空间的布局方法及计算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810605380.XA CN110597641A (zh) 2018-06-12 2018-06-12 一种线性地址空间的布局方法及计算装置

Publications (1)

Publication Number Publication Date
CN110597641A true CN110597641A (zh) 2019-12-20

Family

ID=68841922

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810605380.XA Pending CN110597641A (zh) 2018-06-12 2018-06-12 一种线性地址空间的布局方法及计算装置

Country Status (2)

Country Link
CN (1) CN110597641A (zh)
WO (1) WO2019237862A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131019A (zh) * 2020-09-17 2020-12-25 国网宁夏电力有限公司营销服务中心(国网宁夏电力有限公司计量中心) 微内核操作系统进程间快速通信方法
CN112579514A (zh) * 2020-12-10 2021-03-30 海光信息技术股份有限公司 多核处理器堆栈初始化的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103955438A (zh) * 2014-05-21 2014-07-30 南京大学 基于硬件辅助虚拟化技术的进程内存保护方法
US20180088988A1 (en) * 2016-09-27 2018-03-29 Microsoft Technology Licensing, Llc Return Flow Guard Using Control Stack Identified By Processor Register

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8060706B2 (en) * 2008-03-28 2011-11-15 Inventec Corporation Method of allocating physical memory in specified address range under Linux system platform
CN102819497B (zh) * 2012-05-31 2015-09-30 华为技术有限公司 一种内存分配方法、装置及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103955438A (zh) * 2014-05-21 2014-07-30 南京大学 基于硬件辅助虚拟化技术的进程内存保护方法
US20180088988A1 (en) * 2016-09-27 2018-03-29 Microsoft Technology Licensing, Llc Return Flow Guard Using Control Stack Identified By Processor Register

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131019A (zh) * 2020-09-17 2020-12-25 国网宁夏电力有限公司营销服务中心(国网宁夏电力有限公司计量中心) 微内核操作系统进程间快速通信方法
CN112579514A (zh) * 2020-12-10 2021-03-30 海光信息技术股份有限公司 多核处理器堆栈初始化的方法及装置
CN112579514B (zh) * 2020-12-10 2022-07-26 海光信息技术股份有限公司 多核处理器堆栈初始化的方法及装置

Also Published As

Publication number Publication date
WO2019237862A1 (zh) 2019-12-19

Similar Documents

Publication Publication Date Title
US8943288B2 (en) Method of controlling memory access
CN109583190B (zh) 监控进程的方法和装置
RU2513909C1 (ru) Ограничение областей памяти для считывания команд в зависимости от аппаратного режима и флага безопасности
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
US20080052709A1 (en) Method and system for protecting hard disk data in virtual context
KR20100122924A (ko) 멀티 오퍼레이팅 시스템(os) 기동 장치 및 멀티 os 기동 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 멀티 os 기동 방법
CN110928737B (zh) 监控样本进程的内存访问行为的方法和装置
KR20050027082A (ko) 메모리 관리 시스템 및 선형 어드레스 기반 메모리 엑세스보안 제공 방법
RU2580016C1 (ru) Способ передачи управления между областями памяти
US20180113816A1 (en) Memory protecting unit and method for protecting a memory address space
KR100995146B1 (ko) 개선된 메모리 엑세스 보안을 제공하는 메모리에 디바이스엑세스를 제어하기 위한 시스템 및 방법
CN112541166A (zh) 一种方法、系统和计算机可读存储介质
CN104536912A (zh) 在小型操作系统中实现内存保护模式的装置和方法
CN110597641A (zh) 一种线性地址空间的布局方法及计算装置
CN107463513B (zh) 在存储位置之间转移控制的系统和方法
CN110647764B (zh) 针对用户态非易失性内存文件系统的保护方法及系统
US20230281304A1 (en) Method for switching execution environment and related device thereof
CN110598406B (zh) 一种数据保护方法及计算装置
CN114741740B (zh) 基于risc-v的物理内存保护方法、系统和相关设备
KR20010078371A (ko) 컴퓨터 시스템 프로세서의 현재 특권 레벨 승격 방법 및컴퓨터 시스템의 인스트럭션 실행 방법
JPS599937B2 (ja) 情報処理装置
CN114217882A (zh) 在进程中运行应用的方法和装置
WO2021186142A1 (en) Memory accessor invalidation
JP7369720B2 (ja) アクションをトリガするための装置及び方法
CN107003950B (zh) 一种文件系统保护方法、装置及存储设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination