linux之cpu特权级切换(操作系统镜象还原 笔记)

cpu只有通过“门结构”才能由低特权级转移到高特权级。

门结构是什么呢?就是记录一段程序起始地址的描述符。 有一种称为“门描述符”的结构,用来描述一段程序。进入这种神奇的“门”,处理器便能转移到更高的特权级上。 门描述符同段描述符类似,都是 8 字节大小的数据结构,用来描述门中通向的代码。 一共有 4 种门结构。这4种门结构如下图所示:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
从上图的 4 种门描述符可知,它们与段描述符最大的不同是除了任务门外,其他三种门都是对应到一段例程,即对应一段函数,而不是像段描述符对应的是一片内存区域。任何程序都属于某个内存段,所以程序确切的地址必须用“代码段选择子+段内偏移量”来描述,可见,门描述符基于段描述符,被调用的程序是用段描述符来给出基址的,所以门描述符中要给出代码段的选择子(用来确定段描述符的东西),但光给出基址远远不够,还必须给出程序在目标代码段的偏移量,这就是门描述符中记录的是段选择子和偏移量的原因。

任务门描述符可以放在 GDT(全局描述符表,可以认为放在一个数组中)、 LDT 和 IDT (中断描述符表,这些描述符表都可以视为数组)中,调用门描述符可以位于 GDT、 LDT 中,中断门和陷阱门描述符仅位于 IDT 中。 任务门、调用门都可以用 call 和 jmp 指令直接调用,原因是这两个门描述符都位于描述符表中,要么 是 GDT, 要么是 LDT,访问它们同普通的段描述符是一样的,也必须要通过选择子,因此只要在 call 或 jmp 指令后接任务门或调用门的选择子便可调用它们了。陷阱门和中断门只存在于 IDT 中,因此不能主动调用,只能由中断信号来触发调用。

任务门有点特殊,它用任务 TSS 的描述符选择子来描述一个任务, 除任务门之外,另外的三个门描述符都是用代码段选择子及偏移地址来描述一段程序例程的。但是,无论是哪种门描述符,它们中所记录的信息都已经可以确定所描述的对象(例程或任务)了,所以在被调用时, CPU 都会忽略调用指令中的偏移量。例如:假设某调用门描述符位于 GDT 中第 1 个位置,这样的指令“call 0x0008: 0x1234飞",在调用此调用门时,偏移量 0x1234 会被 CPU 忽略。 提供了4种门的原因是它们都有各自的应用环境,但它们都用来实现从低特权级的代码段转向高特权级的代码段,我们这里也只讨论有关特权级的功用。

1.调用门
call 和jmp 指令后接调用门选择子为参数,以调用函数例程的形式实现从低特权向高特权转移,可用来实 现系统调用。 call 指令使用调用门可以实现向高特权代码转移, jmp 指令使用调用门只能实现向平级代码转移。
2. 中断门
以 int 指令主动发中断的形式实现从低特权向高特权转移, Linux 系统调用便用此中断门实现。
3. 陷阱门
以 int3 指令主动发中断的形式实现从低特权向高特权转移,这一般是编译器在调试时用,本书中咱们 不用过多关注。
4. 任务门
任务以任务状态段 TSS 为单位,用来实现任务切换,它可以借助中断或指令发起。当中断发生时, 如果对应的中断向量号是任务门,则会发起任务切换。也可以像调用门那样,用 call 或jmp 指令后接任务 门的选择子或任务 TSS 的选择子。 坦白说,现代操作系统很少用到调用门和任务门,在我们的系统中也只用到了中断门,而陷阱门是供调试器用的。

不知道大家有没有想过,为什么可以使用门结构进入高特权级呢? 这肯定是 CPU 硬件电路中写好的规则,具体我也不清楚, 也不需要搞清楚,但我是这样理解的,举个例子,用门提升特权级,就像站在高处的台子上往蹦床上跳一样,人会被蹦床弹得比台子还高。关键点:台子的高度 位于蹦床和目标高度之间,至少得和蹦床一样高,这样人才能被弹得更高。 实际上,门也是按照这个蹦床原理实现的,我们把"门“分成门槛和门框来比喻。

门的“门槛”是访问者特权级的下限,访问者的特权级再低也不能比门描述符的特权级 DPL 低, 否则访问者连门都进不去, 更谈不上使用调用门。门描述符的特权级 DPL级要低于或等于当前特权级 CPL,即数值上 CPL<= 门的 DPL,此处可见,门描述符相当于数据段描述符 一样,只允许比自己特权级高或相同特权级的程序访问。 门的“门框”是访问者特权级的上限,访问者的特权级再高也不能比门描述符中目标程序所在代码段 的 DPL 高,否则本身的特权级就比目标代码特权级还高的话,还使用门干吗?而且真要是这样的话,这 意味是特权级由高向低转移了,这绝对是被禁止的。也就是说,门中包含的目标程序所在的段的特权级 DPL 要高于或等于当前特权级 CPL,即数值上 CPL>=目标代码段 DPL,进门之后,处理器将以目标代码段 DPL 为当前特权级 CPL,因此cpu在进门之后,就能获得更高的特权级。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
网吧快速还原系统采用最新的动态还原技术。在不重启动操作系统的情况下,可以动态地实现还原、转存、保护状态转换和打开写入设备等操作。即可实现从可写设备写入数据后,动态还原为写入后的状态,实现真正意义上的“穿透更新”。 安装: 运行setup.exe,点安装驱动按钮即可。注意:安装本还原软件前,请卸载掉其他还原软件和还原卡。该软件本身就是一款还原软件。注意:请一定要先装好系统后,再装还原。装好还原后,不要克隆该系统。 使用: 运行setup.exe,选择需要操作的分区后,再选择保护状态和执行命令,最后,点应用即可。注意:对系统盘(C盘)和页面文件(pagefile.sys)所在盘符操作时仍然需要重启,对其他盘符操作时,会强制关闭打开的文件并执行操作(不需要重启)。 卸载: 运行setup.exe,点卸载驱动按钮后重启动即可完成卸载,系统会自动转存数据。 如果忘记了还原密码而导致无法卸载,只要在纯DOS下格式化C盘或者ghost恢复系统,还原即被移除。 快速安装:(假设setup.exe在D:\) 如果要安装驱动,密码设置为123,还原保护C、D盘。 请运行 D:\setup.exe /install /password:123 /protect:CD 如果需要安装驱动的同时设置启动保护,请加上/check 请运行 D:\setup.exe /install /check /password:123 /protect:CD 快速卸载: 如果还原密码为123,要卸载驱动。 请运行 D:\setup.exe /uninstall /password:123 启动保护: 在安装好驱动,并设置好还原保护分区后。运行setup.exe,点启动保护按钮,输入密码后,就可以每次开机检查还原分区是否处于还原状态。如还原分区因为更新时强行关机而失去保护,会自动转入还原状态。 手工备份文件: 可用增加备份文件和重设备份文件命令,手工添加需要备份的系统重要文件。如:(c:\windows\system32\userinit.exe)上述文件系统已经自动加入,已经可以免疫“机器狗”等穿透还原型病毒。 “机器狗”病毒资料 http://www.pubgen.net/bbs3/dispbbs.asp?boardID=4&ID=579&page=1 安装注意: 1、如果安装快速还原时出现设置失败,(ErrorCode=:0x5) 和 (ErrorCode=:0x2)错误,请先删除c:\protect.sys 和 c:\windows\system32\drivers\fakedisk.sys 文件后,再安装。 2、安装后,启动计算机按F8,选最后一次正确的配置,还原就会失效。 解决办法是:安装后,运行setup.exe,选C盘保存命令,再点应用,重起即可。最彻底解决方法是,安装补丁,屏蔽F8。 3、安装该还原系统后,不能再用ghost打包系统或整盘成镜象文件。应该打包没有安装还原的系统,恢复镜象后再装还原。客户机也要先卸载老的快速还原再克隆。 万一发生了安装驱动再克隆的情况,被克隆机器的还原卸载方法是:删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}\UpperFilters里面的fakedisk键并重起,再重新安装快速还原即可。 4、使用NF4主板的系统安装还原后,系统会启动缓慢是由于与他的驱动(NVIDIA IDE SW 驱动程序)冲突导致的。请卸载该驱动! 5、请打开Logical Disk Manager服务,不然动态切换还原状态后会提示找到新磁盘驱动器硬件。 6、快速还原系统与网吧收费软件pubwin EP的还原功能相冲突,请删除pubwin EP的genfs.sys文件即可。 对于Pubwin2007用户在使用菜单和快速还原时会发生蓝屏的现象只需要下载本补丁http://www.hintsoft.com.cn/Genfs.zip 在Pubwin中进行替换即可。如果还不行,删除genfs.sys文件。 7、请禁用操作系统的Shell Hardware Detection服务,以避免动态还原时,出现自动打开文件的对话框。 8、请使用字符命令 chkntfs /x c: d: e: 关闭操作系统启动时的磁盘检查,以避免频繁出现的文件损坏现象。 9、安装还原后,如果出现输入了正确的密码仍然显示密码错误无法登陆setup.exe管理界面,即使恢复了系统也不行。这个情况是因为你没有正常卸载老的还原或者打包的ghost镜象文件里有安装好的还原系统导致的。请用 FDISK /MBR 重建主磁盘的主引导记录,然后去除掉ghost镜象文件里安装好的还原,再重新恢复系统即可。 优化注意: 1、因为动态切换还原状态时会对整个保护分区重新扫描,建议把分区大小调小,多建立几个分区(如:系统盘、网络游戏盘、单机游戏盘和网友专用盘)。每个分区不要超过128G,大小60G以内比较好,建议用NTFS格式,,格式化时分配单元大小(族)尽量大些。 2、在“我的电脑”的系统属性->高->性能->高->处理器计划和内存使用 里,设置为调整以优化程序性能。 3、操作系统的虚拟内存页面文件请不要放在需要动态还原和穿透写入的分区!最好单独一个分区或者放在C盘,并预留足够的磁盘空间以备使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值