用户态应用程序特权级转换的研究与实现

合集下载

简述系统调用的过程

简述系统调用的过程

简述系统调用的过程系统调用是操作系统提供给应用程序的一种接口,它允许应用程序请求操作系统执行特权操作,比如读写文件、创建进程等。

系统调用的过程可以简单分为五个步骤:用户程序发起系统调用,用户态切换到内核态,内核执行系统调用,结果返回给用户程序,用户态恢复执行。

用户程序发起系统调用。

当用户程序需要执行某个特权操作时,它会通过系统调用接口发起请求。

这个接口通常是通过软中断、硬件中断或特殊指令来实现的,具体实现方式取决于操作系统的设计。

接着,用户态切换到内核态。

由于系统调用涉及到特权操作,而用户程序运行在用户态下,没有权限执行这些操作。

因此,在发起系统调用时,用户程序需要将控制权转交给操作系统,即从用户态切换到内核态。

这一切换是通过硬件的特殊机制来实现的,通常涉及到堆栈的切换和特权级的变更。

然后,内核执行系统调用。

一旦用户程序进入内核态,操作系统会根据系统调用的参数和类型,执行相应的操作。

操作系统内部会根据系统调用的类型,调用相应的内核函数来完成请求。

内核函数会使用操作系统提供的各种服务和资源,以满足用户程序的需求。

接着,结果返回给用户程序。

在内核执行完系统调用后,它会将执行结果返回给用户程序。

通常,这个结果会被写入到用户程序指定的内存区域中,以便用户程序后续处理。

用户态恢复执行。

当内核将执行结果返回给用户程序后,用户程序会从内核态切换回用户态,继续执行下一条指令。

这个切换是通过硬件的特殊机制来实现的,通常也涉及到堆栈的切换和特权级的变更。

总结起来,系统调用的过程包括用户程序发起系统调用、用户态切换到内核态、内核执行系统调用、结果返回给用户程序以及用户态恢复执行。

系统调用是操作系统提供给应用程序的一种接口,它允许应用程序请求执行特权操作,如文件读写、进程创建等。

系统调用是操作系统与应用程序之间的桥梁,它为应用程序提供了访问操作系统功能的能力,是操作系统的核心功能之一。

处理机的特权级

处理机的特权级
操作系统的结构和硬件支持
第 2章 操作系统的结构和硬件支持
操作系统的结构和硬件支持——主要内容
操作系统虚拟机 操作系统的组织结构 处理机的特权级 中断技术 必要的硬件支持
1
操作系统的结构和硬件支持——操作系统虚拟机
操作系统虚拟机
操作系统的结构和硬件支持——操作系统虚拟机
1. 什么是操作系统虚拟机
操作系统的结构和硬件支持——操作系统的结构
1. 操作系统的结构类型
操作系统的设计方法
单体结构 模块化结构 可扩展内核结构 层次结构
ⅰ 单体结构
应用软件
ⅱ 模块化结构
应用软件
其他系统软件其他系统软件操 Nhomakorabea 系 统
操作系统其他功能 内核
操 作 系 统
操作系统其他功能
内核
4
操作系统的结构和硬件支持——操作系统的结构
在裸机上配置了操作系统程序


程 序 器 裸机

后 的 机
后就构了操作系统虚拟机。
操作系统的核心在裸机上


运行;用户程序在扩充后的机
器上运行。 思考:什么是虚拟机?为什么要设 置虚拟机?


统 序
用 户 程
操作系统虚拟机
"All problems in computer science can be solved by another level of indirection" —— David Wheeler See also: https:///wiki/Indirection
(2) Linux系统的核心结构
用户程序 用户级 核心级 系统调用界面 文件子系统 程序库

Operating-System第二章(1)

Operating-System第二章(1)
RAM主要用作存放随机存取的程序的数据
第二十二页,编辑于星期四:十六点 十四分。
只读型的存储器: 只能从其中读取数据,但不能随意用普通方法写入数据(写入
数据只能用特殊方法) 称为只读存储器(ROM:Read-Only Memory) 变型:PROM和EPROM PROM:一种可编程只读存储器,使用特殊PROM写入器写入
物理地址、线性地址或者有效地址,用于某种特定方式
的寻址。如index register、segment pointer、stack pointer
条件码寄存器保存CPU操作结果的各种标记位 如算术运算产生的溢出、符号等等
第八页,编辑于星期四:十六点 十四分。
控制和状态寄存器
用于控制处理器的操作 大部分对于用户是不可见的 一部分可以在某种特权模式(由OS使用)下访问
界限寄存器的内容进行比较,以判断是否越界 如果未越界,则按此地址访问主存,否则将产生程序中
断——越界中断(存储保护中断)
第三十页,编辑于星期四:十六点 十四分。
界地址寄存器 存储保护技术
第三十一页,编辑于星期四:十六点 十四分。
存储键
每个存储块有一个由二进位组成的存储保护键
一用户作业被允许进入主存,OS分给它一个唯一 的存储键号
每比特的价格将下降,容量将增大
速度将变慢,处理器的访问频率也将下降
第二十五页,编辑于星期四:十六点 十四分。
层次化的存储体系结构
第二十六页,编辑于星期四:十六点 十四分。
3、存储分块
存储最小单位:“二进位”,包含信息为0或1 最小编址单位:字节,一个字节包含八个二进位 主流个人电脑
主存:128MB~512MB之间 辅助存储器:在20GB~70GB

Linux内核空间与用户空间通信机制的研究

Linux内核空间与用户空间通信机制的研究

Linux内核空间与用户空间通信机制的研究Linux kernel space and user space communicationmechanism摘要Linux是一个源码开放的操作系统,无论是普通用户还是企业用户都可以编写自己的内核代码,再加上对标准内核的裁剪从而制作出适合自己的操作系统,深受大家喜爱。

Linux系统中,在使用虚拟内存技术的多任务系统上,内核和用户有不同的地址空间,因此,在内核与用户之间进行数据交换需要专门的机制来实现。

一个或多个内核模块的实现并不能满足一般Linux 系统软件的需要,因为内核的局限性太大,内核空间与用户空间进程通信的方法就显得尤为重要。

本文将列举几种内核态与用户态进程通信的方法:Netlink通信机制,基于文件系统的通信机制,内核启动参数通信机制,并用实验板对几种重要的通信机制进行验证,详细分析它们的实现和适用环境,优缺点,并做出比较。

提供用户适合使用这种通信机制的环境,以便更好的运用Linux操作系统。

关键字内核空间用户空间地址空间ABSTRACTLinux is an open source operating system, whether ordinary users or business users can write your own kernel code, with the modification of the standard kernel,everyone can make up their own operating system, which makes Linux popular.In Linux systems, in the use of multi-tasking system with virtual memory technology, the kernel and the user have different address spaces, so the change of data between kernel and user needs Special Method to achieve. One or more kernel modules can not meet the general needs of Linux system software, just because the limitations of the kernel, make it important that the process communication method between kernel space and user space. In this article I will list some kernel mode and user mode process communication methods: Netlink communication mechanism, communication mechanism based on the file system, the kernel boot parameters of communication mechanism.I will analysis of their implementation, application environment, the advantages and disadvantages in detail, and make the comparison. I will provide users with suitable environment for each communication mechanism in order to let others make good use of Linux operating system.Keywords kernel space user space address spaces目录第一章绪论 (1)1.1操作系统发展史 (1)1.2选题背景及研究意义 (2)1.3主要工作 (2)第二章内核空间与用户空间通信机制概述 (4)2.1L INUX嵌入式操作系统简介 (4)2.2课题研究所需知识点解释 (4)2.3内核空间与用户空间通信概述 (5)第三章用户空间与内核空间通信机制 (9)3.1N ETLINK通信机制 (9)3.2基于文件系统的通信机制 (14)3.3内核启动参数通信机制 (22)第四章典型通信机制的验证 (24)4.1验证环境简介 (24)4.2N ETLINK通信机制 (24)4.3 PROCFS通信使用方法 (27)4.4系统调用的使用方法 (29)第五章结论 (32)5.1九种通信机制总结 (32)致谢 (33)参考文献 (34)第一章绪论1.1 操作系统发展史操作系统的发展历程和计算机硬件的发展历程是密切相关的。

系统调用 调用门 原理-概述说明以及解释

系统调用 调用门 原理-概述说明以及解释

系统调用调用门原理-概述说明以及解释1.引言1.1 概述系统调用是操作系统提供给应用程序使用的一种接口,它允许应用程序请求操作系统执行特定的功能或操作。

系统调用提供了应用程序与底层硬件和系统资源的交互方式,使得应用程序能够进行文件读写、网络通信、进程管理等操作。

调用门是一种机制,它可以让应用程序在用户态和内核态之间进行切换,从而实现对操作系统功能的访问。

调用门提供了一条特殊的指令,应用程序通过调用这条指令来进入内核态执行系统调用,完成需要操作系统权限才能进行的操作。

系统调用和调用门是操作系统中非常重要的概念和机制。

系统调用允许应用程序使用操作系统提供的功能,使得应用程序可以以一种安全又可控的方式访问系统资源。

调用门则是系统调用的一种实现方式,它提供了一种高效、可靠的切换机制,使得应用程序可以方便地进行系统调用,从而完成需要操作系统权限的操作。

在本文中,我们将详细介绍系统调用和调用门的原理和工作过程,探讨它们的应用场景和优势。

我们还将深入分析调用门的结构和运行机制,了解它在操作系统中的实现和使用。

最后,我们将对系统调用和调用门的重要性进行总结,并展望它们在未来的发展前景。

通过阅读本文,读者将能够更好地理解系统调用和调用门的作用和原理,为深入研究操作系统提供理论和实践基础。

【1.2 文章结构】本篇文章将从以下几个方面进行讲述系统调用和调用门的原理和应用。

首先,在引言中会概述整篇文章的主要内容和目的。

接下来,在正文部分,会详细介绍系统调用的定义和作用,包括其实现方式和分类,并对其优缺点进行探讨。

同时,还会对调用门进行概述,阐述其原理和工作过程,并介绍其在实际应用中的场景和优势。

最后,将重点解释调用门的原理,探讨引入调用门的背景,分析调用门的结构和运行机制,并讨论调用门的实现和使用。

在结论部分,会总结系统调用和调用门的重要性,并对其未来发展进行展望。

最后,以简短的结束语作为结尾,对文章内容进行总结。

通过以上的结构安排,本文将全面而系统地介绍系统调用和调用门的原理和应用,读者能够明确了解系统调用和调用门的概念、工作原理、应用场景及其未来发展前景。

用户态和内核态

用户态和内核态

⽤户态和内核态内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,⽹卡,cpu也可以将⾃⼰从⼀个程序切换到另⼀个程序。

⽤户态:只能受限的访问内存,且不允许访问外围设备,占⽤cpu的能⼒被剥夺,cpu资源可以被其他程序获取。

为什么要有⽤户态和内核态?由于需要限制不同的程序之间的访问能⼒, 防⽌他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到⽹络, CPU划分出两个权限等级 -- ⽤户态和内核态。

⽤户态与内核态的切换所有⽤户程序都是运⾏在⽤户态的, 但是有时候程序确实需要做⼀些内核态的事情, 例如从硬盘读取数据, 或者从键盘获取输⼊等. ⽽唯⼀可以做这些事情的就是操作系统, 所以此时程序就需要先操作系统请求以程序的名义来执⾏这些操作.这时需要⼀个这样的机制: ⽤户态程序切换到内核态, 但是不能控制在内核态中执⾏的指令这种机制叫系统调⽤, 在CPU中的实现称之为陷阱指令(Trap Instruction)他们的⼯作流程如下:1. ⽤户态程序将⼀些数据值放在寄存器中, 或者使⽤参数创建⼀个堆栈(stack frame), 以此表明需要操作系统提供的服务.2. ⽤户态程序执⾏陷阱指令3. CPU切换到内核态, 并跳到位于内存指定位置的指令, 这些指令是操作系统的⼀部分, 他们具有内存保护, 不可被⽤户态程序访问4. 这些指令称之为陷阱(trap)或者系统调⽤处理器(system call handler). 他们会读取程序放⼊内存的数据参数, 并执⾏程序请求的服务5. 系统调⽤完成后, 操作系统会重置CPU为⽤户态并返回系统调⽤的结果当⼀个任务(进程)执⾏系统调⽤⽽陷⼊内核代码中执⾏时,我们就称进程处于内核运⾏态(或简称为内核态)。

此时处理器处于特权级最⾼的(0级)内核代码中执⾏。

当进程处于内核态时,执⾏的内核代码会使⽤当前进程的内核栈。

每个进程都有⾃⼰的内核栈。

当进程在执⾏⽤户⾃⼰的代码时,则称其处于⽤户运⾏态(⽤户态)。

mret sret ret指令

mret sret ret指令全文共四篇示例,供读者参考第一篇示例:mret、sret和ret是处理器指令中的三个重要指令,它们在处理器的控制流管理中发挥着重要的作用。

本文将详细介绍这三个指令的作用、使用方法及其在处理器中的应用。

首先我们来介绍mret指令。

mret指令是Machine mode返回指令,在RISC-V指令集中扮演着重要的角色。

mret指令用于从机器模式返回到先前的用户模式或者监管者模式。

在RISC-V处理器中,通常会有三种级别的特权模式,即用户模式、监管者模式和机器模式。

用户模式一般是应用程序运行的环境,监管者模式是用于操作系统的管理,而机器模式则是最高特权级别的模式,用于处理器的控制和配置。

当处理器处于机器模式时,通过mret指令可以返回到之前的用户或监管者模式,从而实现特权级别的转换。

接着我们介绍sret指令。

sret指令是Supervisor mode返回指令,在RISC-V指令集中也扮演着重要的角色。

sret指令用于从监管者模式返回到先前的用户模式。

与mret指令类似,sret指令也是用于特权级别的转换。

在RISC-V处理器中,监管者模式通常是操作系统内核运行的环境,可以对硬件资源进行管理和控制。

通过sret指令,处理器可以从监管者模式返回到用户模式,让应用程序继续执行。

最后我们来介绍ret指令。

ret指令是普通的函数返回指令,在大多数处理器架构中都有类似的指令。

ret指令用于函数返回时将控制流从子函数回到调用函数。

当一个函数调用另一个函数时,处理器会将当前返回地址入栈保存,并跳转到另一个函数。

当子函数执行完毕后,通过ret指令可以将控制流返回到调用函数,并弹出保存的返回地址,实现函数的正常返回。

总结一下,mret、sret和ret指令都是在处理器控制流管理中起到关键作用的指令。

mret指令用于从机器模式返回到用户或监管者模式,实现特权级别的转换;sret指令用于从监管者模式返回到用户模式,让操作系统内核能够管理硬件资源;ret指令用于普通函数的返回,实现函数调用关系的维护。

操作系统高级教程

操作系统高级教程1.为什么开始启动计算机的时候,执行的是BIOS代码而不是操作系统自身的代码?计算机启动的时候,内存未初始化,CPU不能直接从外设运行操作系统,所以必须将操作系统加载至内存中,而这个工作最开始的部分,BIOS需要完成一些检测工作,和设置实模式下的中断向量表和服务程序,并将操作系统的引导扇区加载值0x7c00处,然后将跳转至0x7c00。

这些就是由bios程序来实现的。

所以计算机的启动最开始执行的是BIOS代码。

2.为什么BIOS只加载了一个扇区,后续扇区却是由bootsect代码加载?为什么BIOS没有直接把所有需要加载的扇区都加载?对于bios来说,“约定”在接到启动操作系统的命令后,“定位识别”只从启动扇区把代码加载到0x7c00这个位置。

后续扇区则由bootsect代码加载,这些代码由编写系统的用户负责,与bios无关。

这样构建的好处就是站在整个体系的高度,统一设计和统一安排,简单而有效。

Bios和操作系统的开发都可以遵循这一约定,灵活地进行各自的设计。

操作系统的开发也可以按照自己的意愿,内存的规划等等都很灵活。

3.为什么BIOS把bootsect加载到0x07c00,而不是0x00000?加载后又马上挪到0x90000处,是何道理?为什么不一次加载到位?(1)因为bios将从0x00000开始的1KB字节构建中断向量表,接着的256K字节内存空间构建了bios数据区,所以不能把bootsect 加载到0x00000,0x07c00是bios设置的内存地址,不是bootsect 能够决定的。

(2)首先,在启动扇区中会有一些数据,将会被内核利用到。

其次,依据系统对内存的规划,内核终会将占用0x0000其中的空间,因此0x7c00可能被覆盖。

将该扇区挪到0x90000,在setup.s中,获取一些硬件数据保存在0x90000-0x901ff 处,可以对一些后面内核将要利用的数据集中保存和管理。

操作系统实验进程状态转换及其PCB的变化

操作系统实验进程状态 转换及其PCB的变化
XX,a click to unlimited possibilities
汇报人:XX
目录
01 添 加 目 录 项 标 题
02 进 程 状 态 转 换
03 P C B 的 变 化
04 实 验 操 作 步 骤
05 实 验 结 果 与 讨 论
Part One
优先级:用于确定进程的调度 优先级
内存指针:指向进程在内存中 的起始地址
PCB在进程状态转换时的变化
PCB中进程状态的变化 PCB中进程优先级的变化 PCB中进程控制块的变化 PCB中进程调度信息的变化
PCB变化的意义
跟踪进程状态转 换:通过PCB的 变化,可以跟踪 进程在操作系统 中的状态转换, 从而更好地理解 操作系统的调度 机制。
单击添加章节标题
Part Two
进程状态转换
进程的三种基本状态
执行状态:进程已获得CPU, 正在执行
就绪状态:进程已获得除 CPU外的所有必要资源,等 待分配CPU
阻塞状态:进程因等待某个 条件(如I/O操作)而暂时
无法执行
进程状态的转换过程
进程创建状态:新进程从 无到有,创建并初始化 PCB
PCB变化的实现方式
进程状态转换:描述进程在执行过程中状态的变化过程,包括就绪态、 运行态、阻塞态等。
PCB结构:介绍PCB的结构和组成,包括进程名、进程标识符、进程状 态、优先级等。
PCB变化过程:描述在进程状态转换过程中,PCB中各字段的变化情况, 如状态、优先级、时间片等。
调度算法:介绍常见的进程调度算法,如先来先服务、最短作业优先、 优先级调度等,以及它们对PCB变化的影响。
实验结果分析

通用数据转换平台研究与实现

龙源期刊网 http://www.qikan.com.cn 通用数据转换平台研究与实现 作者:韩宪勇,郝文宁,陈兴建,刘庆河 来源:《电脑知识与技术》2010年第10期

摘要:针对数据集成中各种数据异构问题而产生的数据转换需求,提出了基于面向图编程的数据转换过程模型,设计并实现了一个基于Java和SWT技术的通用数据转换平台。同时也对系统的体系结构和具体实现如转换节点设计和数据转换引擎等关键部分进行了论述。

关键词:数据集成;数据转换;面向图编程;数据转换过程模型 中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)10-2321-03 Research and Implementation of Universal Data Transformation Platform HAN Xian-yong, HAO Wen-ning, CHEN Xing-jian, LIU Qing-he (Engineering Institute of Corps of Engineers, PAL University of Science and Technology, Nanjing 210007, China)

Abstract: The paper aims at the requirement of data transformation for the various heterogeneous data problem arising from data integration, proposes a data transformation process model based on graph-oriented programming, designs and implements a universal data transformation platform based on Java and SWT technology. It describes the key parts such as the system architecture, implementation such as node designing and data transformation engine and so on.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第29卷第8期 2006年8月 合肥工业大学学报(自然科学版) 

JOURNAL OF HEFEI UNIVERSITY OF TECHNOLOGY Vo1.29 No.8 

Aug.2006 

用户态应用程序特权级转换的研究与实现 汪明光 (南京大学大气科学系,江苏南京210093) 

摘要:通过分析虚拟内存保护模式下特权保护原理,研究用户态应用程序特权级转换的一种途径一一中断 门;提出了在中断门中添加新的软件中断钩子扩展系统功能的方法,并给出用汇编语言编写软件中断钩子的 代码;实际应用表明,在应用程序中只要内嵌该软件中断钩子,就可进入系统内核态,实现低特权代码访问高 特权级资源。 关键词:保护模式;特权转换;中断门;软件中断钩子 中图分类号:TP31 1.52 文献标识码:A 文章编号:1003—5060(2006)08—0996—05 

Research on privilege level transformation of the application in the user mode and its implementation 

WANG Ming-guang (Dept.of Atmospheric Sciences,Nanjing University,Nanjing 210093,China) 

Abstract:The privilege protection principle in the virtual memory protected mode is analyzed,and an approach to privilege level transformation of the application in the user mode,the interrupt gate,is re— searched.It is put forward that new software interrupt hooks can be added in the interrupt gate SO as to expand the system’S functions.The source code of the software interrupt hook is given with the as— sembly language.Embedding the presented interrupt hook in applications can make the programs en- ter the system’S kernel mode,thus realizing the low privilege level code's visiting of the high privilege level resources. Key words:protected mode privilege transformation;interrupt gate;software interrupt hook 

为了防止应用程序之间的相互干扰以至破坏 操作系统,保证应用程序之间以及操作系统与应 用程序之间代码和数据的安全隔离,为多任务操 作提供有力的支持,从80286起,Intel公司的 CPU引人了4个特权级(Privilege leve1):ringO、 ringl、ring2和rign3。其中,ring0为最高级; ring3为最低级,处于某特权级的代码只能访问同 级或较低特权级的数据或代码。Win32(win— dows9X/NT/2000)操作系统运行在特权级 ringO,可以使用系统的所有资源,而用户态程序 运行在ring3级,只能访问自己的地址空间。 在Win32系统的架构下,使用面向机器的汇 编语言编写的应用程序因受特权的限制,不能运 行操作系统限制的特权级指令,包括对一些重要 端口的读写,否则就会引发程序异常。在保护方 式下,为了实现用户态应用程序能够调用操作系 统的所有资源,如申请I/0操作、硬件端口的读 写等,32位处理器引人了一种特殊的特权转换机 制——门,通过门用户可以实现低特权级向高特 权级转换。通过在中断描述符表中增加新的中断 

收稿日期:2005—09—08 作者简介:汪明光(1968一),男,安徽无为人,安徽省巢湖市气象局工程师. 

维普资讯 http://www.cqvip.com 第8期 汪明光:用户态应用程序特权级转换的研究与实现 997 门,提供软件中断钩子,实现用户态应用程序运行 在特权级ring0上,进行某些特权操作口 。 

1特权转换的基本原理 1.1保护模式下的特权访问 所谓保护,主要是对内存的保护。保护模式 是32位CPU的主要工作模式,在此模式下,全部 地址线都能寻址,并提供对程序和数据进行安全 检查的保护机制。 在采用分段和分页制度下,内存段用段描述 符表示,用于说明内存段的32位基地址、长度以 及访问权限。段寄存器的值是段描述符表的一个 指针,表示段描述符在描述符表中的索引。在32 位保护模式下程序使用的逻辑地址是由16位段 地址和32位偏移地址组成。通过段地址在描述 符表中选取相应的段描述符,将段描述符中的段 基地址与偏移地址相加得到线性地址。如果未启 动分页机制,那么线性地址就是物理地址,否则线 性地址经过分页部件处理后,才能得到物理地址。 因此对于同一虚拟地址,在不同程序中通常对应 着不同的物理地址。32位保护模式的特权分为 以下几种 : (1)任务特权CPL。任务在当前运行时的特 权(Current Privilege Leve1),它决定该任务的特 权级别。一个任务的CPL如果要改变,必须通过 门机制。如果一个CPL--3的应用程序通过门调 用一个PL=O的操作系统子程序,在执行这个子 程序时,当前任务的特权CPL=0。 (2)描述符特权DPL。描述符所表示的内存 段的特权级(Descriptor Privilege Leve1),由描述 符访问权字节规定。DPL规定了访问内存段任 务的最低特权级,即只有满足CPL≤DPL时,当 前任务才能访问该内存段。 (3)选择子特权RPL。选择子是段寄存器的 值,每一个任务是通过选择子来寻找段的描述符, 选择子的最低两位确定了选择子的特权(Re— quired Privilege Leve1)。对于一个任务而言,只 有CPI 和RPL的最大值max(CPL,RPI )≤ DPL时,任务才能访问该内存段。 (4)I/O特权IOPL。在保护模式下,1/O指 令是敏感指令,IOPL的值可以由在特权级0下 运行的程序用指令设置。在CPL>IOPL时,如 果执行IN、INS、0UTS、ST1和CI I等1/0指令, 就会产生异常13。 1.2 Windows门机制简介 按照特权级的规定,低特权级程序不能访问 高特权级的软硬件资源。然而应用程序常常需要 调用系统高特权级服务程序,直接访问系统所有 资源。为此80X86系统引入了特殊的机制—— 门(Gate)。门是指向某个高特权级程序代码的入 口处,是低特权级代码调用高特权级程序必须经 过的中间环节,包括中断门、调用门等。当系统发 生中断或异常时,处理器会捕捉这个动作,并将系 统控制转移到一个固定的处理程序处进行相应的 操作处理。在处理器开始处理发生的中断或异常 前,必须保存一些处理器环境参数到堆栈中,以备 系统还原时使用。系统是通过一种称为陷阱帧的 方式来实现的,它将系统中全部线程环境数据保 存到内核堆栈中,在执行后通过堆栈的出栈机制 将环境恢复到系统控制流程的执行点。 需要指出的是,在Windows系统引入分页、 分段和虚拟存储机制后,就存在一种调度机制,将 需要执行的代码和数据调入内存,将不需要的数 据调到外存中(辅助存储器,如硬盘等)。如果在 执行某些代码时发现需要的数据不在内存中,就 会发出一个“缺页中断”,这时系统就会在IDT中 搜寻这个中断的1SR(Interrupt Service Routine, 中断服务例程),执行相应的调入工作。由于中断 描述符表所处的内存位置不是固定的,一旦中断 描述符表被调出内存,系统将无法定位“缺页中 断”的服务例程,至此系统将会崩溃 J。 1.3中断处理及其流程 1.3.1 中断处理 中断是系统中随机发生的异步事件,与当前 系统的处理器状态无关。中断分为硬件中断和软 件中断。硬件中断是与硬件相关的,比如I/0设 备执行的某些操作,处理器时钟或硬件端口上的 处理等。软件中断则是通过中断指令INTXX引 入的,它往往是应用程序在用户模式执行后进入 操作系统的代码,这时系统为用户提供了各种各 样的系统服务。 在保护模式下,32位处理器的中断系统引入 了描述符结构,用中断描述符表代替16位处理器 的中断向量表。中断服务程序的入口地址不再是 

维普资讯 http://www.cqvip.com 998 合肥工业大学学报(自然科学版) 第29卷 中断向量表4个字节的分段地址。每个中断都对 应1个8字节的门描述符,所有门描述符(最多 256个)组成1个中断描述符表IDT(Interrupt Descriptor Table),是一个可容纳8 192个单元的 数组。在IDT中门可分为4种:中断f-1(Inter— rupt Gate)、陷阱门(Trap Gata)、调用门和任务 门 (Task Gate),本文只考虑IDT的中断门。 1.3.2 中断处理流程 应用程序运行在用户模式(Ring3)下,而中断 描述符表IDT存在于内核模式(Ring0)才可以访 应 用 程 序 执行INT XX L_.J根据中断号 开始中断 l l进行地址转换 POP SS:ESP POP FLAGS POP C S:ESP 在血 级 执行中断例程 执行iretd 问的系统地址空间内。在软件中断发生后,处理 器先检查中断门的权限等级,看是否允许Ring3 下的应用程序调用,这样操作系统就可以保留对 软件中断调用控制的权力,而硬件中断和异常并 不关注权限问题。然后处理器将用户模式下线程 环境保存起来执行中断服务历程后,系统将保存 在堆栈中的线程环境数据还原,待系统恢复中断 指令执行前的环境后,继续执行应用程序的后续 代码。 中断处理流程,如图1所示。 

图1中断处理流程 1.4 中断处理的数据结构和指令 1.4.1 中断描述符 在保护模式中,系统不再使用简单的中断向 量处理中断程序,而是引入了中断描述符。系统 中的每个中断对应一个中断描述符,每个中断描 述符占8个字节,其结构如图2所示 ]。 

l中断处理代码偏移地址的低16位(A 15 ̄A0)I 1 目标选择器 1 

相关文档
最新文档