07:45操作系统提供的基本服务操作系统提供的基本服务创建程序执行程序数据I/O信息存取通信服务错误检测和处理此外,还具有另外一些功能:资源分配、统计,保护07:45操作系统提供的用户接口操作系统的服务和功能可以用不同方式提供给用户,最基本的方式有两种:程序接口——系统调用(SystemCall)由操作系统实现的完成某种特定功能的过程;它是程序与操作系统的接口操作接口——系统程序(SystemProgram)操作系统为用户提供的解决使用计算机和计算共性问题的所有服务的集合;它可以看作是操作系统提供给用户的功能级接口07:45系统调用系统调用的分类进程和作业管理文件操作设备操作信息维护通信07:45系统调用的实现陷入处理机制(异常处理机制):操作系统中为控制和实现系统调用的机制由于系统调用而引起处理器中断的指令称访管指令(Supervisor),陷入指令(Trap)或异常中断指令(Interrupt)每个系统调用都事先规定了编号,还附带有传递给内部处理程序的参数07:45系统调用的实现要点编写系统调用处理程序设计一张系统调用入口地址表,每个入口地址指向一个系统调用的处理程序,有的系统还包含系统调用自带参数的个数陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场07:45系统调用的处理过程SystemCall用户程序A0SUB0SUB1SUBiSUBnA1AiAn……系统调用处理子程序取系统功能号找入口地址表相应入口地址结束处理恢复现场入口地址表A0A1…Ai…An保护CPU现场系统调用陷入机构陷入指令07:45系统调用的参数传递访管指令或陷入指令自带参数指令之后的若干单元存放参数,称直接参数指令之后的若干单元存放参数的地址,称间接参数通过通用寄存器传递参数通用寄存器传递参数通用寄存器传递参数地址,在内存的一个块或表中存放参数在内存中开辟专用堆栈区域传递参数07:45传递参数的一种方法操作系统X:参数LOADAddRXSystemCall8X取参数X系统调用8的处理程序寄存器07:45系统调用与过程(函数)调用的区别调用形式:过程(函数)使用一般调用指令,其转向地址是固定不变的,包含在跳转语句中系统调用中不包含处理程序入口,而仅仅提供功能号,按功能号调用被调用代码的位置:过程(函数)调用是一种静态调用,程序和被调代码在同一程序内,经过连接编辑后作为目标代码的一部份;当过程(函数)升级或修改时,必须重新编译连结系统调用是一种动态调用,系统调用的处理代码在调用程序之外(在操作系统中),系统调用处理代码升级或修改时,与调用程序无关07:45系统调用与过程(函数)调用的区别提供方式:过程(函数)往往由编译系统提供,不同编译系统提供的过程(函数)可以不同系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、种类与数量便固定不变了调用的实现:程序使用一般机器指令转子指令来调用过程(函数),是在用户态运行的程序执行系统调用,是通过中断机构来实现,需要从用户态转变到核心态,在管理状态下运行07:45Linux系统调用Linux有170个系统调用,其系统调用的组成:核心函数:运行在核心态,是实现系统调用功能的(内核)代码,作为操作系统的核心驻留在内存中,是一种共享代码,用C语言书写。它运行在核心态,数据也存放在内核空间,通常它不能使用系统调用,也不能使用应用程序可用的库函数接口函数:是提供给应用程序的API,以库函数形式存在Linux的lib.a中,该库中存放了所有系统调用的接口函数的目标代码,用汇编语言书写。其主要功能是把:系统调用号、入口参数地址传送给相应的核心函数,并使用户态下运行的应用程序陷入核心态07:45Linux系统调用Linux的系统调用号就是系统调用入口表中位置的序号,所有系统调用通过接口函数将系统调用号传给内核,内核转入系统调用控制程序再通过调用号位置来定位核心函数,Linux内核的陷入由0x80(int80h)中断实现系统调用控制程序的主要功能为:取系统调用号根据系统调用号定位核心函数地址根据通用寄存器内容,从用户栈中取入口参数核心函数执行,把结果返回应用程序07:45Linux系统调用入口程序entry.s,是用汇编写的,它包含了系统调用入口地址表,给出了所有系统调用核心函数的名字:ENTRY(sys-call-table).longSYMBOL-NAME(sys-ni-syscall)0.longSYMBOL-NAME(sys-exit)1.longSYMBOL-NAME(sys-fork)2.longSYMBOL-NAME(sys-read)3.longSYMBOL-NAME(sys-write)4.longSYMBOL-NAME(sys-open)5.longSYMBOL-NAME(sys-close)6...longSYMBOL-NAME(sys-vfork)19007:45系统程序系统程序的分类文件管理状态信息程序设计语言支持程序的装入和执行支持通信其它软件工具07:45命令解释程序命令解释程序的主要功能是接受和执行一条用户提出的对作业的加工处理要求。当一个新的批作业被启动,或新的交互型用户登录进系统时,系统就自动地执行命令解释程序,它负责读入控制卡或命令行,并作出相应解释和执行07:45命令解释程序实现的两种方式自身不含命令处理代码:所有的命令处理代码由专门的“系统程序”提供,命令解释程序负责把这条命令对应的命令文件装入内存执行自身包含了命令的执行代码:命令解释程序包含一些非常常用的简单的命令的处理代码07:45命令解释程序的处理过程操作系统做完准备工作后便启动命令解释程序,它输出命令提示符,等待键盘中断到来每当用户打入一条命令(暂存在命令缓冲区)并按回车换行时,申请键盘中断CPU响应后,将控制权交给命令解释程序,接着读入命令缓冲区内容,分析命令、接受参数。若为简单命令立即转向命令处理代码执行;否则查找命令处理文件,装入主存,传递参数,将控制权交给其执行命令处理结束后,再次输出命令提示符,等待下一条命令07:45作业控制方式操作系统提供了两个作业级的接口:联机作业控制方式脱机作业控制方式联机作业控制接口——操作控制命令命令行方式批命令方式图形化方式脱机作业控制接口——作业控制语言