1.3操作系统提供的服务和用户接口1.3.1操作系统提供的基本服务1.3.2操作系统提供的用户接口1.3.3程序接口与系统调用1.3.4操作接口与系统程序1.3.1操作系统提供的基本服务•创建程序•执行程序•数据I/O•信息存取•通信服务•错误检测和处理还具有另外一些功能:资源分配,统计,保护。操作系统提供的用户接口(1)用户和操作系统间的两种接口系统调用操作命令或JCL操作系统裸机(操作接口)(程序接口)操作系统提供的用户接口(2)•程序接口又称应用编程接口API(ApplicationProgrammingInterface),允许运行程序调用操作系统的服务和功能。•程序接口由一组系统调用(SystemCall))组成,用户程序使用“系统调用”就可获得操作系统的底层服务,使用或访问系统的各种软硬件资源。操作系统提供的用户接口(3)•在程序设计语言(如C语言)中,往往提供与各系统调用对应的库函数,应用程序可通过对应的库函数来使用系统调用,•库函数的目的是隐藏访管指令细节,使系统调用更象过程调用,但一般地说,库函数属于用户程序而非系统程序。•操作系统为用户提供系统调用也出于安全和效率考虑,使得用户态程序不能自由地访问内核关键数据结构或直接访问硬件资源。操作系统提供的用户接口(4)UNIX/Linux系统程序、库函数、系统调用的分层关系操作系统(进程管理、存储管理、文件管理、设备管理等)标准库函数(打开、关闭、读、写、创建、撤销等)标准系统程序(实用程序)(汇编、编译、编辑、Shell等)用户用户接口库函数接口系统调用接口硬件(处理器、存储器、磁盘、打印机、终端等)用户态核心态操作系统提供的用户接口(5)•操作接口又称作业级接口,操作系统为用户提供的操作控制计算机工作和提供服务手段的集合,通常有操作控制命令、图形操作界面(命令)、以及批处理系统提供的作业控制语言(命令)等等。操作系统提供的用户接口(6)Windows支持API的三个组件:•Kernel包含了多数操作系统函数,如内存管理、进程管理;•User集中了窗口管理函数,如窗口创建、撤销、移动、对话等相关函数;•GDI提供画图函数、打印函数。Windows将三个组件置于动态链接库DLL中。操作系统提供的用户接口(7)Win32API和UNIX/Linux系统调用粗略对应关系UNIX/LinuxWin32说明forkCreatProcess创建进程waitpidWaitForSingleObject等待进程终止open/closeCreatFile/CloseHandle创建或打开/关闭文件read/writeReadFile/WriteFile读/写文件lseekSetFilePointer移动文件指针mkdir/rmdirCreat/RemoveDirectory建立/删除目录statGetFileAttributesEx获得文件属性1.3.3程序接口与系统调用系统调用(1)1.系统调用的分类1)进程和作业管理:2)文件操作:3)设备管理:4)内存管理:5)信息维护:6)通信:系统调用(2)2.系统调用的实现要点一.是编写系统调用处理程序;二.是设计一张系统调用入口地址表,每个入口地址都指向一个系统调用的处理程序,有的系统还包含系统调用自带参数的个数;三.是陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场。系统调用(3)系统调用的处理过程SystemCall用户程序A0SUB0SUB1SUBiSUBnA1AiAn……系统调用处理子程序取系统功能号找入口地址表相应入口地址结束处理恢复现场A0A1…Ai…An保护CPU现场陷入指令系统调用陷入机构入口地址表系统调用(4)系统调用的参数传递一是由访管指令或陷入指令自带参数,直接参数间接参数二是通过CPU的通用寄存器传递参数,或在内存的一个块或表中存放参数,其首地址送入寄存器,实现参数传递。三是在内存中开辟专用堆栈区域传递参数。系统调用(5)传递参数的一种方法系统调用8的处理子程序操作系统X:参数LOADAddRXSystemCall8X从表X取参数寄存器系统调用(6)Linux系统调用Linux系统调用由两部分组成:•核心函数是实现系统调用功能的(内核)代码。•接口函数是提供给应用程序的API,以库函数形式存在Linux的lib.a中。系统调用(7)Linux系统调用控制程序的功能(1)取系统调用号,检验合法性;(2)建立调用堆栈,保护现场信息;(3)根据系统调用号定位核心函数地址;(4)根据通用寄存器内容,从用户栈中取入口参数;(5)核心函数执行,把结果返回应用程序;(6)执行退栈操作,判别调度程序scheduler是否要被执行。系统调用(8)系统调用与过程(函数)调用的区别一是调用形式二是被调用代码的位置三是提供方式四是调用的实现1.3.4操作接口与系统程序(1)操作接口又称作业(或功能)级接口,是操作系统为用户操作控制计算机工作和提供服务的手段的集合,通常可借助操作控制命令、图形操作界面(命令)、以及作业控制语言(命令)等来实现。操作接口与系统程序(2)1.作业控制方式操作系统提供联机作业控制方式和脱机作业控制方式两个作业级接口,使用的手段为操作命令:•操作控制命令•作业控制语言(命令)联机用户接口—操作控制命令•命令行方式•批命令方式•图形化方式批命令方式(1)在使用操作命令过程中,•有时需要连续使用多条命令;•有时需要多次重复使用若干条命令;•有时需要选择地使用不同命令可用批命令实现。批命令方式(2)批命令实现思想•规定特别的文件扩展名,用户先把一系列命令组织在该文件中,一次建立,多次执行。•操作系统支持命令文件使用一套控制子命令,可写出带形式参数的批命令文件。这样的批命令文件可执行不同的命令序列,增强命令接口的处理能力。UNIX的Shell(1)•Shell是交互型命令解释程序,也是命令级程序设计语言解释系统,例如,Myrun文件包含:cat$1/*显示文件*/cc$1/*编译源程序*/mva.out$2/*把目标程序改为$2*/$2/*运行$2*/执行cshmyrunprog1.cprog,将对源程序prog1.c进行显示和编译,把目标程序改名为prog并运行。UNIX的Shell(2)另一个UNIXShell的例子从/user/user1/fei文件中,利用循环控制语句找出含单词:process、thread信息行。其Shell程序feipro为foridogrep$i/user/usr1/feidone执行cshfeiproprocessthread依次打印出含process和thread的信息行。MS-DOS操作系统的批文件test.bat是查找某文件是否存在的批文件:echooffifexist%1gotolab1echo%1notfound!gotolab2:lab1echo%1isfound!:lab2用户键入命令:testwps.exe执行批文件,若找到文件显示wps.exeisfound!;否则显示wps.exenotfound!脱机用户接口—作业控制语言•批处理接口:作业控制语言JCL(JobControlLanguage)•用户使用JCL语句,把运行意图(需要对作业进行的控制和干予)写在作业说明书上,将作业连同作业说明书一起提交给系统•批处理作业的调度执行过程,系统调用JCL语句处理程序或命令解释程序IBMJCL的一个例子•//HAROLDJOB,WILSON,MSGLEVEL=(2,0),PRTY=6,CLASS=b•//COMPEXECPGM=IEYFORT•//SYSPRINTDDSYSOUT=A•//SYSINDD*•.•SourceProgramCard•.•/*•//GOEXECPGM=FORTLINK•//SYSPRINTDDSYSOUT=A•//FTOTF001DDUNIT=SYSCP•//GOSYSINDD*•.•DataCard•.•/*•//2.命令解释程序•命令解释程序的主要功能是:接受和执行下一条用户从键盘输入的命令。当新的批作业被启动,或新的交互型用户登录时,系统就自动地执行命令解释程序,它负责读入控制卡或命令行,并作出相应解释和执行。命令解释程序实现的两种方式•一种是它自身包含了命令的执行代码。•另一种是由专门的“系统程序”实现,自身不含命令处理代码,也不进行处理,仅仅把这条命令对应的命令文件装入内存执行。命令解释程序的处理过程•系统启动命令解释程序,输出命令提示符,等待键盘中断。用户打入命令并按回车换行,申请键盘中断。•CPU响应后,控制权交给命令解释程序,它读入命令缓冲区内容,分析命令、接受参数。•若为简单命令立即转向命令处理代码执行。否则查找命令处理文件,装入主存,传递参数,将控制权交给其执行。•命令处理结束后,再次输出命令提示符,等待下一条命令。系统程序(1)•系统程序又称标准程序或实用程序(Utilities),虽非操作系统的核心,但却必不可少,为用户程序的开发、调试、执行、和维护解决带有共性的问题或执行公共操作,•操作系统以外部操作命令形式向用户提供系统程序。它的功能和性能很大程度上反映了操作系统的功能和性能。系统程序(2)系统程序的分类:•文件管理•状态信息•程序设计语言支持•程序的装入和执行支持•通信•其它软件工具UNIX系统调用•系统调用符合可移植操作系统POSIX1003.1标准,每个兼容的UNIX都必须支持它。•UNIX的标准系统调用分进程管理、文件管理、设备管理、及状态控制等五十余条,系统调用是软件开发者进入UNIX内核的入口。UNIX标准函数•UNIX提供标准函数,POSIX1003.1标准定义了库过程的集合,组成了标准函数库,其中较重要的是I/O库函数。•库函数用汇编语言编写,却可以在C语言中调用,例如C程序可通过执行一个Read库过程来实现Read系统调用。•标准函数库建立在系统调用的上层,它提供的功能较系统调用强,使用也较方便。UNIX系统程序•UNIX含有丰富的系统程序(语言处理、文件编辑和种种软件开发及维护工具)。POSIX1003.2标准,描述了近百个系统程序语义,集中在文件管理、目录管理、编译和程序开发工具方面。•各种UNIX版本均实现了最常用的系统程序约五十多条,UNIX下运行的微机软件包己有1000多个,这些应用程序大大加强了UNIX的功能。