《软件接口技术》PPT课件.ppt

上传人:za****8 文档编号:12725965 上传时间:2020-05-19 格式:PPT 页数:57 大小:421.06KB
返回 下载 相关 举报
《软件接口技术》PPT课件.ppt_第1页
第1页 / 共57页
《软件接口技术》PPT课件.ppt_第2页
第2页 / 共57页
《软件接口技术》PPT课件.ppt_第3页
第3页 / 共57页
点击查看更多>>
资源描述
第5章软件接口技术,本章主要内容:软件接口概述DOS系统中的接口调用方法Windows系统中的接口调用方法Linux系统中的接口调用方法,5.1软件接口概述,操作系统是用户与计算机硬件系统之间的接口,是人与计算机之间进行交流的桥梁,因此也称操作系统为“人机接口”。操作系统为用户提供了命令接口和程序接口两种操作方式。命令接口由操作命令及作业控制语言组成,它是管理和控制运行的程序,可以通过交互式方式直接或间接控制作业的运行。程序接口是由一组系统调用命令组成的,是操作系统提供给程序设计人员的接口。用户通过在应用程序中使用系统调用命令来请求操作系统提供服务。,系统调用命令(简称系统调用)是用户应用程序与计算机的接口,它是用户在程序设计中直接调用操作系统提供的一组功能子程序,是一种特殊的过程调用,一般借助一条特殊的机器指令(如软中断INT指令)来实现。系统调用过程如下:(1)把系统调用所需的参数或参数区首地址装入指定的通用寄存器,然后设置一条调用指令;(2)将系统调用的功能编号装入指定的通用寄存器中,有的系统直接在调用指令中将功能编号给出,有的系统将功能编号作为系统调用的参数;(3)当用户程序执行到调用指令时,产生访管中断(又称软件中断),系统处理该中断,即为用户程序保留“现场”,然后提取系统调用编号,访问系统调用入口表,找到相应子程序入口地址转去执行;(4)系统调用命令执行返回,恢复“现场”,并把返回参数或参数区首地址放入指定的通用寄存器中,以供用户程序使用。与中断一样,系统调用也可以实现嵌套调用。,系统调用分为:(1)与进程有关的系统调用(2)与存储管理有关的系统调用(3)与文件管理有关的系统调用(4)与设备管理有关的系统调用(5)访问系统核心数据的系统调用(6)控制类的系统调用,5.2接口软件及层次结构,DOS,BIOS,硬件层,应用软件,应用环境,驱动软件,硬件层,应用软件,设备管理,用户空间,内核空间,B)Windows的调用层次,A)dos系统的调用层次,图5.2设备调用层次,5.3DOS系统下的接口调用,DOS系统是单用户的操作系统DOS系统提供给用户的编程界面,大体有如下几种:裸机层软件开发,利用芯片或板卡(适配器)支持的寄存器或内存数据区编程。需要用户非常清楚设备的硬件细节,编程较复杂,但软件实现速度最快。BIOS级软件开发,利用BIOS基本输入输出系统所提供的一些服务功能编程。系统功能级软件开发,利用DOS系统提供的系统功能编程。,5.3.1BIOS中断调用及实现,1BIOS级软件接口(中断调用)概述BIOS基本输入输出系统由一批子程序组成,负责管理系统内的输入输出设备直接为DOS操作系统和应用程序提供底层设备驱动服务。大多数的驱动程序以软件中断方式调用,少数由硬件中断调用。,基本步骤为:(1)设置分功能号:按实现的操作功能的要求,给指定寄存器(通常为AH)送入分功能号。(2)置入口参数:按操作要求,给寄存器填写相应参数的内容(某些调用无参数)。(3)使用中断语句INTn:执行调用的功能,其中n为中断号。(4)分析出口参数。,1)BIOS调用的基本操作,表5.1常用BIOS服务功能,2视频服务,INTl0HAH寄存器选择视频服务功能待写的字符或像素值一般在AL寄存器中传递。功能调用保存BX、CX、DX及段寄存器的值。其他寄存器的内容(特别是SI、DI)不保存X坐标(列号)在CX(图形功能)中或DL(正文功能)中传递显示页在BH中传递,显示页从零开始计数,例如:利用BIOS视频服务的AH=0CH子功能实现写像素点。调用子程序之前,需要用DX保存行号,CX保存列号,AL保存颜色值,这是0CH子功能要求的。WRITINGPIXELPROCNEARPUSHAXMOVAH,0CHINT10HPOPAXWRITINGPIXELENDP,3键盘服务,键盘ISR(键盘中断服务程序)INT09H硬件中断键盘DSR(键盘设备服务程序),INT16H软件中断BIOS键盘服务包括3个子功能:0号功能、1号功能、2号功能,4并行打印机服务,INT17H0号功能(给打印机传送个字符)1号功能(初始化打印机)2号功能(读打印机状态)均可通过AH返回打印机状态字节,BIOSI7H号中断指令提供了由AH寄存器指定的三种不同的操作。(1)BIOS中断17H号的功能0是打印一个字符。要打印输出的字符放在AL中,打印机号放在DX中,BIOS最多允许连接三台打印机,机号分别为0,1和2。如果只有一台打印机,那么就是0号打印机,打印机的状态信息被回送到AH寄存器。MOVAH,0;请求打印MOVAL,CHAR;写入打印字符MOVDX,0;设置0#打印口INT17H;调用BIOS,(2)17H号的功能1是初始化打印机并回送打印机状态到AH寄存器。如果把打印机开关关上然后又打开,打印机各部分就复位到初始值。此功能和打开打印机时的作用一样。在每个程序的初始化部分可以用17H号的功能1来初始化打印机。MOVAH,01;初始化打印机MOVDX,0;设置0#打印口INT17H;调用BIOS,BIOS串行通信口功能通过INT14H调用ROMBIOS串行通信口中断服务程序。该中断服务程序包括将串行口初始化为指定的字节结构和传输速率,检查控制器的状态,读/写字符等功能。,表串行通信口BIOS功能(INT14H),图串行通信口初始化参数,【例】要求0号通信口的传输率为2400波特,字长为8位,终止位为1位,无奇偶校验。MOVAH,0;串行通信口初始化MOVAL,0A3H;0A3H=10100011BMOVDX,0;指向COM1INT14H;调用BIOS,5.3.2DOS功能级软件接口及调用实例,1DOS功能级软件接口调用概述主要包括:磁盘管理、内存管理、基本输入输出管理等。子功能都有一个00H57H的功能编号INT21H,00H0CH:字符I/O管理。包括键盘、显示器、打印机、异步通信口的管理0DH24H:文件管理。包括复位、选择磁盘,打开、关闭、删除文件,顺序读、写文件,建立文件,重命名文件,查找驱动器分配表信息,随机读、写文件,查看文件长度25H26H:非设备系统调用。包括设置中断向量,建立新程序段27H29H:文件管理。包括随机块读写、分析文件名2AH2EH:非设备系统调用。包括读取、设置日期、时间2FH38H:扩充的系统调用。包括读取DOS版本号,终止进程,读取中断矢量,读取磁盘空闲空间39H3BH:目录组。包括建立子目录,修改当前目录,删除目录项,3CH46H:扩充的文件管理。包括建立、打开、关闭文件,从文件或设备读写数据,在指定路径删除、移动文件,修改文件属性,设备I/O控制,复制文件标志47H取当前目录组。48H4BH:扩充的内存管理。包括分配内存、释放已分配的内存、分配内存块、装入或执行程序等4CH4FH:扩充的系统调用。包括终止进程、查询子程序的返回代码、查找第一个相匹配的文件、查找下一个相匹配的文件50H53H:扩充的系统调用。供DOS内部使用54H57H:扩充的系统调用。包括读取校验状态、重新命名文件、设置读取日期及时间,2基本I/O功能调用,键盘输入(1号调用)无回显的键盘输入(8号调用)控制台输入输出(6号调用)无回显的控制台输入(7号调用)打印输出(5号调用)输出字符串(9号调用)输入字符串(0AH调用)异步通信输入输出(3、4号调用)日期与时间的设置与获取(2AH、2BH、2CH、2DH调用),系统功能调用(INT21H)的使用方法如下:,3DOS功能调用实例,;利用9号功能显示字符串MOVAX,MYDATAMOVDS,AXDISP:MOVDX,OFFSETMESSEGEMOVAH,09HINT21H;利用10号功能接收字符到缓冲区KEY:MOVDX,OFFSETPARAMETERSMOVAH,10INT21H,5.4Windows下的接口调用,5.4.1Windows的体系结构,5.4.2Windows操作系统的内核进程,1Windows9X的内核进程系统工作在基于Intel32位CPU的硬件平台上,运行在32全位地址空间的保护模式下。系统核心进程空间工作在CPU的最高特权级0,用户空间工作在CPU的低特权级3。系统核心进程是由虚拟设备驱动层VXD和虚拟机管理层VMM构成的,5.4.2Windows系统中用户态到内核态的转换过程,首先,这些API函数要将用户程序的请求转换为对内核态I/O系统服务的请求然后,设备驱动程序将结果交给I/O管理器,由I/O管理器转换CPU运行空间,将处理结果返回给Win32API函数,最终由所请求的Win32API将结果交给用户。,5.4.3Windows的系统调用在Windows系统中,对于用户提出的设备使用请求,是通过调用Win32子系统中的API函数实现的。,5.4.3Windows的功能调用,Windows系统中,对于用户提出的设备使用请求,是通过调用Win32子系统中的API函数实现的。Windows9X与WindowsNT中的Win32子系统并不相同,两个子系统是相互独立的WindowsNT中,Win32子环境有两类:一类位于用户态空间,用户态API而另一类位于内核态空间,内核态API,5.4.4Windows的功能调用函数API的分类及特征,API分类窗口管理类API图形设备接口类API系统服务类APIWindows的API函数担负着为所有的应用程序提供所有的服务功能。它们的主要特征是:支持多任务采用模块化的结构支持动态装载链接,5.4.5API应用举例1.Windows关于文件操作的主要API接口函数,建立文件函数CreatFile文件打开操作函数HFILE_lopenHFILE_lopen(LPCSTRlpPathName,intiReadWrite)文件建立操作函数HFILE_lcreatHFILE_lcreat(LPCSTRlpPathName,intiAttribute)移动文件的读写指针函数SetFilePointDWORDSetFilePoint(HANDLEhFile,LONGiDistanceToMove,PLONGlpDistanceToMoveHigh,DWORDdwMoveMethod)移动文件指针操作函数LONG_llseekLONG_llseek(HFILEhFile,LONGLOffset,intLOrigin)读文件函数ReadFile及写文件函数WriteFile,HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTESlpsecurityAttributes,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributrs,HADELhTemplateFile),BOOLReadFile(HANDLEhFile,LPVOIDipBuffer,DWORDnNumberOfByteToRead,LPDWORDlpNumberOfBytesRead,LPOVERLAPPEDlpOverlapped)BOOLWriteFile(HANDLEhFile,LPCVOIDlpBuffer,DWORDnNumderOfBytesToWrite,LPDWORDlpNumberOfBytesWrite,LPOVERLAPPEDlpOverlapped),文件读操作函数UINT_lread及文件写操作函数UINT_lwriteUINT_lread(HFILEhFile,LPVOIDlpBuffer,UINTuBytes)UINT_lwrite(HFILEhFile,LPCSTRlpBuffer,UINTuBytes)关闭对象句柄函数CloseHandle及文件关闭操作函数HFILE_lcloseBOOLCloseHandle(HANDLEhObject)HFILE_lclose(HFILEhFile)内存空间分配函数GlobalAllocHGLOBALGlobalAlloc(UintuFlags,DWORDdwBytes)锁定一个全局内存对象函数GlobalLockLPVOIDGlobalLock(HGLOBALhMem),2.应用举例下面的例子是调用Windows操作系统的文件服务功能,打开一个文件,将文件头部1000个字节后的内容读入缓冲区中的一段程序。BOOLLoadFile(char*FileName)HFILEhf;/定义文件句柄变量longhFilesize;/文件长度HGLOBALhFhandle;/内存分配句柄LPVOIDhFileBuffer;/内存缓冲区指针/按文件名打开文件,若文件不存在,失败返回if(hf=_lopen(Filename,OF_READ)=HFILE_ERROR)MessageBox(hWnd,Filenotfound!,ErrorMessage,MB_OK|MB_ICONEXCLAMATION);returnFALSE;,/打开文件后,文件的前两个字是文件长度_lread(hf,(LPCSTR)char*argv;intsourcefd,targetfd,num;chariobufferBUFFERSIZE;if(argc!=3)fputs(“usage:copysourcetarget”,stdout);exit(1);,if(sourcefd=open(*(argv+!),ORDONLY0)if(write(targetfd,iobuffer,num)!=num)fputs(“targetfilewriteerror”,stdout);exit(4);close(sourcefd);close(targetfd);exit(0);,在LINUX系统下,利用函数调用完成一个简易的拷贝程序。#includemain(argc,argv)intargc;charargv;FILEin,out;charch;if(argc!=3)printf(“youforgottoenterafilenamem”);exit(0);if(in=fopen(argv1,”r”)=MULL)printf(“cannotopeninfilen”);exit(0);if(out=fopen(argv2,”w”)=NULL)printf(“cannotopenoutfilen”);exit(0);while(!feof(in)fread(,小结,在计算机系统中,设备的使用方式与操作系统的性质有着密切的关系。在单用户操作系统中,由于用户对资源的使用是独占式的,故用户对设备的使用是任意的,用户进程可以跨越操作系统的层次对设备进行直接驱动,在多任务或者多用户的操作系统中,设备资源的使用是各个用户或任务共享的,所以用户不能跨越操作系统的管理层对设备进行操作。在单用户、单任务的DOS操作系统中,系统的调用接口可在基本I/O的BIOS层及DOS操作系统层进行。本章列举了视频显示、键盘输入、文件操作以及打印机驱动等这些典型接口,通过简单程序的例子,对这些接口的功能和调用方法进行了说明。,Windows系统是被广泛使用的图形界面、多任务的操作系统。通过对Windows体系结构的介绍,系统地介绍了Windows设备驱动程序的构成原理,Windows系统的软件结构,接口的功能和层次,以及如何通过Windows系统的类或应用编程接口的调用,编写Windows应用程序的方法。由于Windows系统的复杂和功能的强大,系统接口的API函数数量极多。本章通过简单的程序例子,对应用编程接口API函数的文件和窗口操作中的部分功能调用进行了说明。其它的功能调用,请参考有关的API函数说明。Linux操作系统作为开放源码的自由软件的代表,近些年来发展迅猛,尤其是在中高端服务器上得到了广泛的应用。本章从Linux的体系结构的介绍入手,系统地介绍用户态到内核态的转换过程,详细讲解了用户应用程序与系统内核及更底层硬件的接口方法,通过简单的例子分析了用户应用程序分别通过用户态的函数调用和系统内核态系统调用与系统接口的方法。,小结,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!