Windows&Linux中断、异常处理机制分析
- 格式:doc
- 大小:132.50 KB
- 文档页数:9
Windows系统中的winver指令主要用于查看当前安装的Windows版本、操作系统详细信息以及操作系统的构建号。
以下是使用winver指令的详细步骤:1. 打开命令提示符(cmd):按下win键,输入cmd后回车,即可打开“命令提示符”。
2. 查看系统版本:在打开的cmd窗口中,输入winver 后回车,这时会弹出一个新窗口,窗口中包含了关于Windows版本的各种信息。
这些信息对于了解正在使用的Windows版本以及可能需要的更新非常有用。
另外,需要注意的是,Windows系统的命令本质上都是“可执行程序”,默认存放在C:\Windows\System32目录下。
因此,winver命令对应的便是winver.exe文件,当执行winver命令时,本质上就是执行了winver.exe这个程序。
在macOS 系统中,虽然没有与Windows 中的`winver` 命令完全相同的命令,但你可以使用几个不同的方法来查看你的macOS 版本和系统信息。
1. 系统信息应用程序:macOS 自带的“系统信息”应用程序(System Information)提供了一个详细的界面,用于查看各种系统信息,包括操作系统版本、内核版本、硬件信息等。
你可以通过“应用程序”文件夹中的“实用工具”文件夹找到“系统信息”应用程序。
2. 关于本机:你可以在“苹果”菜单(Apple menu)中选择“关于本机”(About This Mac),这将打开一个窗口,显示你的Mac 的概览信息,包括macOS 的版本号。
3. 命令行工具:- `sw_vers` 命令:在终端(Terminal)中输入`sw_vers` 并按回车键,将会显示macOS 的版本信息,包括产品名称、版本和构建版本。
- `osascript -e 'tell app "System Events" to name of current locale'` 命令:这个命令可以用来查看当前的语言环境设置。
windows基本命令及文件操作Windows基本命令及文件操作有:1. cd:切换目录。
例如,cd C:\Users\username\Desktop 将当前目录切换到桌面。
2. dir:查看目录内容。
例如,dir 列出当前目录的文件和子目录。
3. copy:复制文件。
例如,copy file1.txt file2.txt 将file1.txt复制为file2.txt。
4. del:删除文件。
例如,del file.txt 删除file.txt。
5. move:移动文件。
例如,move file.txtC:\Users\username\Documents 将file.txt移动到Documents文件夹。
6. ren:重命名文件。
例如,ren oldname.txt newname.txt 将oldname.txt重命名为newname.txt。
7. mkdir:创建目录。
例如,mkdir newfolder 创建一个名为newfolder的文件夹。
8. rmdir:删除目录。
例如,rmdir folder 删除名为folder的文件夹(只能删除空文件夹)。
9. cls:清屏。
例如,cls 清除命令提示符窗口上的所有输出。
10. type:显示文件内容。
例如,type file.txt 在命令提示符窗口中显示file.txt的内容。
11. echo:在命令行窗口中输出文本。
例如,echo Hello, World! 在命令提示符窗口中输出“Hello, World!”。
12. tasklist:列出当前运行的进程。
例如,tasklist 查看当前正在运行的所有进程。
请注意,上述命令只是Windows中的一些基本命令,还有很多其他的命令和选项可用。
您可以使用“/?” 参数来获取命令的详细用法和选项。
Windows操作系统的版本历史Windows操作系统是微软公司开发的图形化操作系统,自1985年发行以来,已经经历了多个版本的更新和升级。
每一个新版本都引入了新的功能和改进,并不断优化用户体验。
本文将探讨Windows操作系统的版本历史,介绍各个版本的特点和重要变化。
一、Windows 1.0Windows 1.0是最初的Windows版本,于1985年发行。
它是一种图形化用户界面的扩展,可以在DOS系统上运行。
Windows 1.0的主要特点是增加了可视化操作,例如窗口、菜单、对话框等元素。
但是,它只能运行单独的应用程序,而不能同时运行多个应用程序。
二、Windows 2.0Windows 2.0于1987年发布,与Windows 1.0相比带来了很多改进。
它支持多任务处理、印刷和其他硬件设备的控制。
此时,Windows开始落后于Apple公司的运算系统,但在PC平台上赢得了支持。
三、Windows 3.0Windows 3.0于1990年发布,是Windows操作系统的一个突破。
在Windows 3.0中引入了虚拟内存、多任务处理、可拖动的窗口和菜单操作。
由于这些增强功能,Windows 3.0变得更易用和流行。
四、Windows 95Windows 95于1995年发布,是Windows家族中首个32位操作系统,它引入了开始菜单、任务栏和快速启动栏等功能。
Windows 95的推出标志着微软成为全球主导的PC操作系统供应商。
五、Windows 98Windows 98于1998年发布,Windows 95的改进版。
它支持USB设备、DVD光盘和音频和视频流的播放。
它还加入了Internet Explorer浏览器,并更好地支持网络。
六、Windows 2000Windows 2000是Windows操作系统的企业版,于2000年发布。
它是全面的基于网络的操作系统,支持更高级别的安全和网络功能。
windows文件介绍总结├WINDOWS│ ├-system32(存放Windows的系统文件和硬件驱动程序)│ │ ├-config(用户配置信息和密码信息)│ │ │ └-systemprofile(系统配置信息,用于恢复系统)│ │ ├-drivers(用来存放硬件驱动文件)│ │ ├-spool(用来存放系统打印文件。
包括打印的色彩、打印预存等)│ │ ├-wbem(存放WMI测试程序,用于查看和更改公共信息模型类、实例和方法等)│ │ ├-IME(用来存放系统输入法文件,类似WINDOWS下的IME文件夹)│ │ ├-CatRoot(计算机启动测试信息目录,包括了计算机启动时检测的硬软件信息)│ │ ├-Com(用来存放组件服务文件)│ │ ├-ReinstallBackups(电脑中硬件的驱动程序备份)│ │ ├-DllCache(用来存放系统缓存文件。
当系统文件被替换时,文件保护机制会复制这个文件夹下的文件去覆盖非系统文件)│ │ ├-GroupPolicy(组策略文件夹)│ ││ ├-system(系统文件夹,用来存放系统虚拟设备文件)│ ├-$NtUninstall$(系统每打一个补丁,就会自动创建这样的一个目录)│ ├-security(系统安全文件夹,用来存放系统重要的数据文件)│ ├-srchasst(搜索助手文件夹,用来存放系统搜索助手文件,与msagent文件夹类似)│ ├-repair(系统修复文件夹,用来存放修复系统时所需的配置文件)│ ├-Downloaded Program Files(下载程序文件夹,用来存放扩展IE功能的ActiveX等插件)│ ├-inf(用来存放INF文件,INF文件最常见的应用是为硬件设备提供驱动程序服务)│ ├-Help(Windows帮助文件)│ ├-Config(系统配置文件夹,用来存放系统的一些临时配置的文件)│ ├-msagent(微软助手文件夹,存放动态的卡通形象,协助更好地使用系统)│ ├-Cursors(鼠标指针文件夹)│ ├-Media(声音文件夹,开关机等wav文件存放于此)│ ├-Mui(多语言包文件夹,用来存放多国语言文件。
Windows入门指南Windows操作系统是当前最广泛应用的操作系统之一,常规的PC和笔记本电脑中均预装了Windows 操作系统。
本文旨在提供一个全面的Windows入门指南,帮助读者快速掌握Windows的基本操作和技巧。
1. Windows桌面当你打开一台电脑时,首先会看到Windows桌面。
桌面是包含图标、文件夹和工具栏等各种元素的工作界面,提供了一种快捷的方式来访问文件和程序。
如果你发现自己在使用Windows时感到迷茫,那么花些时间熟悉Windows桌面的各种元素将会对你帮助很大。
首先是Windows桌面环境的一些常用元素:a.图标:桌面上的图标用于访问文件和应用程序。
例如,我的电脑图标允许你访问计算机中的文件和驱动器,而Internet Explorer 图标用于访问互联网。
Windows系统提供了许多默认图标,你也可以制定自定义图标。
b.任务栏:任务栏位于桌面的底部,由一系列快捷方式组成。
它为你提供了快速访问打开的程序,在任务栏有一些自带的常用应用,如Windows资源管理器,音量控制,时间和日期等。
c.菜单栏:菜单栏是窗口顶部的那一栏。
菜单栏由一系列菜单组成,比如“文件”、“编辑”、“工具”等。
它允许你暴露出窗口的不同选项和功能。
d.窗口:Windows操作系统中的每个程序都可以成为一个窗口。
窗口通常由标题栏、菜单栏、工具栏、状态栏和内容组成。
2. Windows文件管理了解文件管理对于使用Windows操作系统十分重要。
通过文件管理,你可以组织、查找和浏览计算机中的文件夹和文件。
让我们来看看Windows文件管理的基础。
a.文件夹:您的计算机有许多文件夹(或称之为文件目录),用于存放文件和其他文件夹,以及为软件存储配置文件和其他系统文件。
我们可以在文件夹中组织文件,便于查找、浏览和备份。
b.文件浏览器:文件浏览器是用来访问和管理文件和文件夹的工具。
在Windows中,Windows资源管理器就是文件浏览器,提供许多工具来帮助管理你的文件和文件夹。
Windows系统的常见问题及解决方法Windows操作系统是目前使用最广泛的操作系统之一,然而在使用过程中常常会遇到一些问题。
本文将介绍一些常见问题,并提供相应的解决方法,以帮助用户解决Windows系统使用中的困扰。
一、系统启动问题1. 问题描述:开机后屏幕显示黑屏,无法进入系统。
解决方法:先确认硬件连接正常,如显示器、电源线等。
若正常,请尝试进入安全模式,按下F8键进入“高级引导选项”,选择“安全模式”启动。
如能进入安全模式,可尝试修复系统注册表或回滚驱动程序。
2. 问题描述:系统启动速度慢,长时间停留在启动画面。
解决方法:清理系统垃圾文件、禁用开机自启动项、更新驱动程序和安装最新的补丁,可以改善系统的启动速度。
二、应用程序问题1. 问题描述:某些应用程序闪退或崩溃。
解决方法:尝试重新安装应用程序,或更新应用程序版本。
如果问题依然存在,可以通过右键点击应用程序图标,选择“属性”>“兼容性”>“以兼容模式运行此程序”,以修复兼容性问题。
2. 问题描述:应用程序无法启动,显示缺少.dll文件。
解决方法:该问题可能是由于.dll文件丢失或损坏引起的。
尝试重新安装相关的软件,或者通过下载并安装缺少的.dll文件来解决此问题。
三、网络连接问题1. 问题描述:无法连接无线网络。
解决方法:首先确保无线网络开关已打开,并检查密码是否正确。
若密码正确,尝试重新启动路由器或电脑,并更新无线网卡驱动程序。
2. 问题描述:网络速度慢。
解决方法:排除网络瓶颈因素,如关闭其他设备的下载或影音播放程序。
可以通过重启路由器、更换DNS服务器地址、清理临时文件等方法来改善网络速度。
四、系统更新问题1. 问题描述:无法成功安装系统更新。
解决方法:确保系统时间准确,并尝试重新运行系统更新。
如问题依然存在,可以尝试手动下载并安装更新,或者通过卸载安全软件等方法来解决更新失败的问题。
2. 问题描述:系统更新后出现错误代码。
Win+R 运行命令2012-10-08 15:47:55| 分类:小IT | 标签:运行命令 cmd win+r xp/win7 电脑|字号大中小订阅1、cleanmgr:打开磁盘清理工具2、compmgmt.msc:计算机管理3、conf:启动系统配置实用程序4、charmap:启动字符映射表5、calc:启动计算器6、chkdsk.exe:Chkdsk磁盘检查7、cmd.exe:CMD命令提示符8、certmgr.msc:证书管理实用程序9、Clipbrd:剪贴板查看器10、dvdplay:DVD播放器11、diskmgmt.msc:磁盘管理实用程序12、dfrg.msc:磁盘碎片整理程序13、devmgmt.msc:设备管理器14、dxdiag:检查DirectX信息15、dcomcnfg:打开系统组件服务16、explorer:打开资源管理器17、eventvwr:事件查看器18、eudcedit:造字程序19、fsmgmt.msc:共享文件夹管理器20、gpedit.msc:组策略21、iexpress:工具,系统自带22、logoff:注销命令23、lusrmgr.msc:本机用户和组24、MdSched:来启动Windows内存诊断程序25、mstsc:远程桌面连接26、Msconfig.exe:系统配置实用程序27、mplayer2:简易widnowsmediaplayer28、mspaint:画图板29、magnify:放大镜实用程序30、mmc:打开控制台31、mobsync:同步命令32、notepad:打开记事本33、nslookup:网络管理的工具向导34、narrator:屏幕“讲述人”35、netstat:an(TC)命令检查接口36、OptionalFeatures:打开“打开或关闭Windows功能”对话框37、osk:打开屏幕键盘38、perfmon.msc:计算机性能监测程序39、regedt32:注册表编辑器40、rsop.msc:组策略结果集41、regedit.exe:注册表42、services.msc:本地服务设置43、sysedit:系统配置编辑器44、sigverif:文件签名验证程序45、shrpubw:创建共享文件夹gpedit.msc-----组策略dxdiag---------检查DirectX信息rononce-p----15秒关机sndrec32-------录音机Nslookup-------IP地址侦测器explorer-------打开资源管理器logoff---------注销命令tsshutdn-------60秒倒计时关机命令lusrmgr.msc----本机用户和组services.msc---本地服务设置oobe/msoobe /a----检查XP是否激活notepad--------打开记事本cleanmgr-------垃圾整理net start messenger----开始信使服务compmgmt.msc---计算机管理net stop messenger-----停止信使服务conf-----------启动netmeetingdvdplay--------DVD播放器charmap--------启动字符映射表diskmgmt.msc---磁盘管理实用程序calc-----------启动计算器dfrg.msc-------磁盘碎片整理程序chkdsk.exe-----Chkdsk磁盘检查devmgmt.msc---设备管理器regsvr32/u *.dll----停止dll文件运行drwtsn32------系统医生regedt32-------注册表编辑器Msconfig.exe---系统配置实用程序rsop.msc-------组策略结果集mem.exe--------显示内存使用情况regedit.exe----注册表winchat--------XP自带局域网聊天progman--------程序管理器winmsd---------系统信息perfmon.msc----计算机性能监测程序winver---------检查Windows版本sfc /scannow-----扫描错误并复原winipcfg-------IP配置taskmgr-----任务管理器(2000/xp/2003)command--------cmdfsmgmt.msc 共享文件夹netstat-an----查看端口osk屏幕键盘install.asp----修改注册网页eventvwr.msc 事件查看器secpol.msc 本地安全设置services.msc 服务accwiz.exe > 辅助工具向导acsetups.exe > acs setup dcom server executable actmovie.exe > 直接显示安装工具append.exe > 允许程序打开制定目录中的数据arp.exe > 显示和更改计算机的ip与硬件物理地址的对应列表at.exe > 计划运行任务atmadm.exe > 调用管理器统计attrib.exe > 显示和更改文件和文件夹属性autochk.exe > 检测修复文件系统autoconv.exe > 在启动过程中自动转化系统autofmt.exe > 在启动过程中格式化进程autolfn.exe > 使用长文件名格式bootok.exe > boot acceptance application for registry bootvrfy.exe > 通报启动成功cacls.exe > 显示和编辑aclcalc.exe > 计算器cdplayer.exe > cd播放器change.exe > 与终端服务器相关的查询charmap.exe > 字符映射表chglogon.exe > 启动或停用会话记录chgport.exe > 改变端口(终端服务)chgusr.exe > 改变用户(终端服务)chkdsk.exe > 磁盘检测程序chkntfs.exe > 磁盘检测程序cidaemon.exe > 组成ci文档服务cipher.exe > 在ntfs上显示或改变加密的文件或目录cisvc.exe > 索引内容ckcnv.exe > 变换cookiecleanmgr.exe > 磁盘清理cliconfg.exe > sql客户网络工具clipbrd.exe > 剪贴簿查看器clipsrv.exe > 运行clipboard服务clspack.exe > 建立系统文件列表清单cluster.exe > 显示域的集群_cmd_.exe > 没什么好说的!cmdl32.exe > 自动下载连接管理cmmgr32.exe > 连接管理器cmmon32.exe > 连接管理器监视cmstp.exe > 连接管理器配置文件安装程序comclust.exe > 集群comp.exe > 比较两个文件和文件集的内容*compact.exe > 显示或改变ntfs分区上文件的压缩状态conime.exe > ime控制台control.exe > 控制面板convert.exe > 转换文件系统到ntfsconvlog.exe > 转换iis日志文件格式到ncsa格式cprofile.exe > 转换显示模式cscript.exe > 较本宿主版本csrss.exe > 客户服务器runtime进程csvde.exe > 日至格式转换程序dbgtrace.exe > 和terminal server相关dcomcnfg.exe > dcom配置属性dcphelp.exe > ?dcpromo.exe > ad安装向导ddeshare.exe > dde共享ddmprxy.exe >debug.exe > 就是debug啦!dfrgfat.exe > fat分区磁盘碎片整理程序dfrgntfs.exe > ntfs分区磁盘碎片整理程序dfs_cmd_.exe > 配置一个dfs树dfsinit.exe > 分布式文件系统初始化dfssvc.exe > 分布式文件系统服务器diantz.exe > 制作cab文件diskperf.exe > 磁盘性能计数器dllhost.exe > 所有com+应用软件的主进程dllhst3g.exe >dmadmin.exe > 磁盘管理服务dmremote.exe > 磁盘管理服务的一部分dns.exe > dns applications dnsdoskey.exe > 命令行创建宏dosx.exe > dos扩展dplaysvr.exe > 直接运行帮助drwatson.exe > 华生医生错误检测drwtsn32.exe > 华生医生显示和配置管理dtcsetup.exe > installs mdtcdvdplay.exe > dvd播放dxdiag.exe > direct-x诊断工具edlin.exe > 命令行的文本编辑器(历史悠久啊!)edlin.exe > 命令行的文本编辑器(历史悠久啊!)esentutl.exe > ms数据库工具eudcedit.exe > type造字程序eventvwr.exe > 事件查看器evnt_cmd_.exe > event to trap translator; configuration toolevntwin.exe > event to trap translator setupexe2bin.exe > 转换exe文件到二进制expand.exe > 解压缩extrac32.exe > 解cab工具fastopen.exe > 快速访问在内存中的硬盘文件faxcover.exe > 传真封面编辑faxqueue.exe > 显示传真队列faxsend.exe > 发送传真向导faxsvc.exe > 启动传真服务fc.exe > 比较两个文件的不同find.exe > 查找文件中的文本行findstr.exe > 查找文件中的行finger.exe > 一个用户并显示出统计结果fixmapi.exe > 修复mapi文件flattemp.exe > 允许或者禁用临时文件目录fontview.exe > 显示字体文件中的字体forcedos.exe > forces a file to start in dos mode. 强制文件在dos模式下运行freecell.exe > popular windows game 空当接龙ftp.exe > file transfer protocol used to transfer files over a network connection 就是ftp了gdi.exe > graphic device interface 图形界面驱动grovel.exe >grpconv.exe > program manager group convertor 转换程序管理员组help.exe > displays help for windows 2000 commands 显示帮助hostname.exe > display hostname for machine. 显示机器的hostnameie4uinit.exe > ie5 user install tool ie5用户安装工具ieshwiz.exe > customize folder wizard 自定义文件夹向导iexpress.exe > create and setup packages for install 穿件安装包iisreset.exe > restart iis admin service 重启iis服务internat.exe > keyboard language indicator applet 键盘语言指示器ipconfig.exe > windows 2000 ip configuration. 察看ip配置ipsecmon.exe > ip security monitor ip安全监视器ipxroute.exe > ipx routing and source routing control program ipx路由和源路由控制程序irftp.exe > setup ftp for wireless communication 无线连接ismserv.exe > intersite messaging service 安装或者删除service control manager中的服务jdbgmgr.exe > microsoft debugger for java 4 java4的调试器jetconv.exe > convert a jet engine database 转换jet engine数据库jetpack.exe > compact jet database. 压缩jet数据库jview.exe > command-line loader for java java的命令行装载者krnl386.exe > core component for windows 2000 2000的核心组件label.exe > change label for drives 改变驱动器的卷标lcwiz.exe > license compliance wizard for local or remote systems. 许可证符合向导ldifde.exe > ldif cmd line manager ldif目录交换命令行管理licmgr.exe > terminal server license manager 终端服务许可协议管理lights.exe > display connection status lights 显示连接状况llsmgr.exe > windows 2000 license manager 2000许可协议管理llssrv.exe > start the license server 启动许可协议服务器lnkstub.exe >locator.exe > rpc locator 远程定位lodctr.exe > load perfmon counters 调用性能计数logoff.exe > log current user off. 注销用户lpq.exe > displays status of a remote lpd queue 显示远端的lpd打印队列的状态,显示被送到基于unix 的服务器的打印任务lpr.exe > send a print job to a network printer. 重定向打印任务到网络中的打印机。
1981年提出设计思路,1983年诞生第一个预览版,Windows,现今我们最为熟悉的操作系统之一,已经30岁啦!Windows作为我们的同龄人,也与我们一样经历着变化,不停地完善着自身、日益强大。
在这三十年里,Windows的强大家族,经历了哪些版本的变迁呢?Windows 1.0预览版微软最初在1981年9月开发管理界面,随后命名为Microsoft Windows。
1983年诞生第一个预览版。
Windows 1.0Windows1.0发布于1985年11月20日。
实用性方面比预览版有所超越,允许用户使用鼠标操作系统,使用系统内置的不同功能和应用程序。
Windows 1.0不需要推出和重启,就能在程序间进行切换。
还能显示256色、调整窗口大小、最小化窗口。
Windows2.0Windows2.0发布于1987年4月2日。
Windows 2.0所带应用程序与Windows 1.0相似,但在管理方面做出不少改良。
携Intel 286处理器、扩充内存优势,微软改进了处理速度和使用动态数据交换(DDE)的通讯能力。
Windows 2.0支持VGA图形标准,用户能够重新定义窗口的尺寸或是任意定位窗口位置。
窗口之间可随意交迭,用户能够利用键盘快速操作Windows。
Windows 2.0版(也被称做Windows 2.0/386)支持当年初期发布的386增强模式,与Windows 2.0/286不同的是,386增强模式能在扩充内存里同步运行多重MS-DOS程序,突破了640KB基础内存的局限。
当然,Windows 2.0在硬件及软件局限方面未能造成全面突破,但还是有不少开发者开始编写他们第一款基于Windows 2.x的应用程序,而且386增强模式是Windows历史上的一大突破Windows2.1Windows3.0Windows 3.0 发布于1990年5月22号。
Windows 3.0的出现带来不少改进,但还缺乏多媒体和网络功能,这让Windows3.0迅速被Windows 3.1取代。
Windows系统文件解析概述:Windows操作系统是一种广泛应用于个人电脑和服务器的操作系统,它包含了大量的系统文件。
这些系统文件对于操作系统的正常运行至关重要。
本文将对Windows系统文件进行解析,介绍它们的作用、存储位置以及常见的系统文件。
一、Windows系统文件的作用:1.核心系统文件:这些文件包含操作系统的核心组件,负责控制计算机的硬件和软件资源。
例如,ntoskrnl.exe是Windows NT内核,它负责管理内存、进程和设备驱动程序等重要任务。
2.系统配置文件:这些文件保存了操作系统的配置信息,包括用户账户、网络设置、安全策略等。
例如,registry.pol是Windows注册表策略文件,它定义了计算机的注册表设置。
3.系统服务文件:这些文件是操作系统提供的服务的关键组成部份。
例如,services.exe是Windows服务控制管理器,它负责启动、住手和管理系统服务。
4.应用程序支持文件:这些文件是操作系统用于支持应用程序的组件。
例如,msvcrt.dll是Microsoft Visual C++运行时库,它提供了应用程序所需的标准C运行时功能。
二、Windows系统文件的存储位置:1.系统目录:Windows系统文件通常存储在系统目录下。
在不同版本的Windows中,系统目录的位置可能有所不同。
例如,在Windows 10中,系统目录默认为C:\Windows\System32。
2.系统驱动器根目录:一些重要的系统文件,如boot.ini和NTLDR,存储在系统驱动器的根目录下。
系统驱动器通常是安装Windows的主要硬盘分区。
3.其他目录:除了系统目录和系统驱动器根目录,一些系统文件可能存储在其他目录中,例如C:\Program Files和C:\ProgramData。
三、常见的Windows系统文件:1.ntoskrnl.exe:Windows NT内核文件,负责管理内存、进程和设备驱动程序等核心任务。
一、引言 处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然差强人意。既然硬件的响应这么慢,那么内核就应该在此期间处理其他事务,等到硬件真正完成了请求的操作之后,再回过头来对它进行处理。想要实现这种功能,轮询(polling)可能会是一种解决办法。可以让内核定期对设备的状态进行查询,然后做出相应的处理。不过这种方法很可能会让内核做不少无用功,因为无论硬件设备是正在忙碌着完成任务还是已经大功告成,轮询总会周期性地重复执行。更好的办法是由我们来提供一种机制,让硬件在需要的时候再向内核发出信号(变内核主动为硬件主动),这就是中断机制。 众所周知,在C++中有着较为完善的异常处理机制,同样在C语言中也有很不错的异常处理机制来支持,另外在其它许多现代编程语言中,也都有各自的异常处理编程机制,如Ada语言等。但我们更应该知道这些编程语言所提供的异常处理机制的实现,都是建立在操作系统中所提供的异常处理机制之上,如Windows平台上的VC编译器所实现的C++异常处理模型,它就是建立在SEH机制之上的。如果没有采用这种方式,比如Linux操作系统上的gcc就没有采用到操作系统中所提供的异常处理机制,这样就会有一个很大的缺点,那就是对于应用程序的开发者而言,它不能够很好在自己的应用程序中,来有效控制操作系统中所出现的一些意外的系统异常,例如程序执行过程中可能出现的段错误,被零除等计算异常,以及其它许多不同类型的系统异常等。所以Linux操作系统上的gcc编译的程序中,它只能捕获程序中,曾经被自己显式地抛出来的异常,而对于系统异常,catch block则毫无办法。 因此,操作系统平台中所提供的中断、异常处理机制是非常有必要的。它除了能够帮助开发人员发现和解决软件中的错误外,还被广泛应用于软件保护技术、软件漏洞利用等方面。因此,深入研究中断、异常处理机制的原理和实现以扩展其应用的范围是有必要的。
二、中断处理方式 Ⅰ、WINDOWS系统的中断处理方式 Windows内核对于中断使用了陷阱派发机制,它使用中断陷阱处理器来响应设备的中断,中断陷阱处理器或者将控制权给负责处理中断的外部例程(中断服务程序,ISR),或者传递给一个响应该中断的内部内核例程。设备驱动程序提供了ISR来处理设备中断,内核为其他类型的中断提供了ISR。 Windows的中断主要有硬件中断和软件中断,通过Windows核心我们可以禁止软件中断和硬件中断。软件中断主要引发对线程的调度以及以异步方式打断一个线程执行的机制。而硬件中断主要是为了实现处理器和设备并行工作。对于硬件中断,Windows 将硬件中断转化为能够触发执行的驻留在不同虚拟机中的ISR(中断服务程序)事件,这是一个较好的中断处理方法。下面我们来讨论一下Windows系统的硬件终端处理机制。 在Windows系统下,处理器可以在不同的状态(V86、实模式和保护模式)下运行。当DOS运行时,则处理器运行V86模式。当Windows 执行时或当DOS VM已经切换进保护模式时,处理器则运行Ring3保护模式。当VMM(虚拟机管理器)或VXD(虚拟设备驱动程序)执行时,处理器则运行在Ring0 保护模式。在Windows系统环境中,Windows将所有的IDT入口指向VMM 中的一个函数。VMM会判断出来自IDT入口项的调用是作为异常被调用还是作为中断被调用。VMM本身负责处理异常而将所有硬件中断交给一个名为VPICD(虚拟可编程中断控制器设备)的VXD。如果某个VXD 已经为某个硬件中断注册了中断处理函数,那么VPICD 就将中断传递给该VXD。如果没有,VPICD 将把某个中断传递给某个VM,这一过程被称作“中断反射”。 VXD通过调用VPICD的VPICD_Viutualize_IRQL 服务函数为特定的硬件中断注册并将回调函数传递给VPICD。一旦VXD 已经为中断注册,它将作为一个真正的中断处理器,为中断设备进行中断服务,同时VXD 可能使用另一个VPICD 服务函数VPICD_Set_Int_Request来把中断映射到VM,让VM 的中断处理函数来提供服务。
从IDT 到VXD 中断处理函数的途径 在使用中断服务时,我们也要对下列情况进行注意。 1、中断响应时间:为了实现实时操作,一般要求中断响应时间尽可能的短。由于硬件中断的响应过程比较复杂,中断响应时间通常在1ms 以上。为了使中断响应时间最短,硬件中断的处理应在VXD 中进行。但即使在VXD 中进行,VXD 也不能保证对硬件中断的实时响应。原因在于ring 转换以及VMM 和VPICD之间存在多个层次的联系。 2、中断结束处理(EOI):在编写中断处理函数时,常见的错误是忘记EOI,导致一个硬件中断仅被调用一次。虽然设备本身能产生更多的中断,但是PIC(可编程中断控制器)不让这些中断到达处理器,并会一直持续到PIC 接受到EOI 为止。Windows 使用与DOS 不同的中断控制器的EOI机制。VPICD 是被中断通知的第一个VXD,然后VPICD 立即发送“特定EOI” 到控制器。然后VPICD 屏蔽控制器上的中断级别。这两个操作使得其他的中断级别可以被识别,包括那些比正在中断的级别低的优先权。当VXD 在退出中断处理函数前调用VPICD_Phys_EOI 服务函数时,VPICD 将清除相同级别上的中断的屏蔽。 3、内存管理:处理硬件中断的驱动程序对所有分配的内存有严格的要求。所有在中断期间要访问的代码和数据都必须是固定的、页码锁定的和不可废弃的。这包括中断处理函数本身的代码以及在中断处理过程中要用到的驱动程序代码段、任何动态分配的缓冲区和应用程序分配的要传递给驱动程序的缓冲区。内存要求必须是固定的。因为内存管理器把中断处理函数要用到的数据段移动了,在一些字节被拷贝后,硬件中断发生,这时硬件中断处理函数被执行。硬件中断处理函数会更新正在移动的数据段中的一些内容,当处理函数结束运行之后,内存管理器接着移动数据段,而这时的数据段已经被处理函数更改过了。内存管理器并不知道处理函数已经改变了数据。而使用该数据段的应用程序就得不到希望得到的数据。同时内存又要求必须是页面锁定的。假设硬件中断发生了,而内存管理器是在可废弃的代码中,那么就会发生段不在内存中的警告,在此种情况下就有可能发生重入DOS 的情况,而DOS 代码是不可重入的,所以代码段是不可废弃的。 Ⅱ、LINUX系统的中断处理方式 当一个中断发生时,并不是所有的操作都具有相同的急迫性。事实上,把所有的操作都放进中断处理程序本身并不合适。需要时间长的、非重要的操作应该推后,因为当一个中断处理程序正在运行时,相应的IRQ 中断线上再发出的信号就会被忽略。另外中断处理程序不能执行任何阻塞过程,如I/O 设备操作。因此,Linux 把一个中断要执行的操作分为下面的三类: 1、紧急的(Critical) 这样的操作诸如:中断到来时中断控制器做出应答,对中断控制器或设备控制器重新编程,或者对设备和处理器同时访问的数据结构进行修改。这些操作都是紧急的,应该被很快地执行,也就是说,紧急操作应该在一个中断处理程序内立即执行,而且是在禁用中断的状态下。 2、非紧急的(Noncritical) 这样的操作诸如:修改那些只有处理器才会访问的数据结构(例如,按下一个键后,读扫描码)。这些操作也要很快地完成,因此,它们由中断处理程序立即执行,但在启用中断的状态下。 3、非紧急可延迟的(Noncritical deferrable) 这样的操作诸如:把一个缓冲区的内容拷贝到一些进程的地址空间(例如,把键盘行缓冲区的内容发送到终端处理程序的进程)。这些操作可能被延迟较长的时间间隔而不影响内核操作,有兴趣的进程会等待需要的数据。 尽管分为上述的三种,但所有的中断处理程序都执行四个基本的操作:1、在内核栈中保存IRQ 的值和寄存器的内容;2、给与IRQ 中断线相连的中断控制器发送一个应答,这将允许在这条中断线上进一步发出中断请求;3、执行共享这个IRQ 的所有设备的中断服务例程(ISR);4、跳到ret_to_usr( )的地址后终止。 Linux系统的中断主要有3种组织形式: 1、IRQ 描述符irq_desc:对于每个IRQ 中断线,Linux 都用一个irq_desc_t 数据结构来描述,我们把它叫做IRQ 描述符,NR_IRQS 个IRQ 形成一个全局数组irq_desc[],其定义在/include/linux/irq.h 中。 2、中断控制器描述符irq_chip:由于CPU 不同,故每个处理器对于中断的处理方式不一样。Linux 为了实现统一的中断处理,提供了底层的中断处理抽象接口,对于每个平台都需要实现底层的接口函数。这样对于上层的中断通用处理程序就无需任何改动。 3、中断服务例程描述符irqaction:在IRQ 描述符中我们看到指针action 的结构为irqaction,它是为多个设备能共享一条中断线而设置的一个数据结构,代表了每个注册中断对应的信息,其在include/linux/interrupt.h 中定义。 下面我们来具体讨论一下中断过程。当外设的驱动程序都已完成了初始化工作,并且已把相应的中断服务例程挂入到特定的中断请求队列,同时当前进程正在用户空间运行(随时可以接受中断),且外设已产生了一次中断请求,CPU 就在执行完当前指令后来响应该中断。 中断处理系统在 Linux 中的实现是非常依赖于体系结构的,实现依赖于处理器、所使用的中断控制器的类型、体系结构的设计及机器本身。设备产生中断,通过总线把电信号发送给中断控制器。如果中断线是激活的,那么中断控制器就