1主要内容:一、操作系统提供的基本服务二、操作系统提供的用户接口三、程序接口与系统调用四、操作接口与系统程序1.3操作系统提供的服务和用户接口21.创建程序:提供程序的编辑、调试、编译等生成工具。2.执行程序3.数据I/O4.信息存取:文件操作5.通信服务:进程通信6.错误检测和处理还具有另外一些功能:资源分配,统计,保护。一、操作系统提供的基本服务3操作系统为用户提供两种调用其服务和功能的接口:1.程序接口:又称应用编程接口API(ApplicationProgrammingInterface),允许运行程序调用操作系统的服务和功能。许多操作系统的程序接口由一组系统调用(SystemCall))组成,用户程序使用“系统调用”就可获得操作系统的底层服务,使用或访问系统的各种软硬件资源。二、操作系统提供的用户接口(1)42.操作接口:又称作业级接口,操作系统为用户提供的操作控制计算机工作和提供服务手段的集合,通常有操作控制命令、图形操作界面(命令)、以及批处理系统提供的作业控制语言(命令)等实现手段。二、操作系统提供的用户接口(2)5用户和操作系统间的两种接口二、操作系统提供的用户接口(3)系统调用操作命令或JCL操作系统裸机(操作接口)(程序接口)61.系统调用(1)概念系统调用是为了扩充机器功能、增强系统能力、方便用户使用而在内核中建立的过程(函数),它是用户程序或其它系统程序获得操作系统服务的唯一途径,系统调用也称为广义指令。机器指令由硬件实现,广义指令(系统调用)是由操作系统在机器指令基础上实现的过程或子程序。三、程序接口与系统调用(1)7(2)实现形式早期操作系统的系统调用使用汇编语言编写。最新推出的一些操作系统,如UNIX新版本、Linux、Windows、OS2等,其系统调用用C语言编写,并以库函数形式提供。(有些库函数与系统调用无关,一般地说,库函数属于用户程序而非系统程序)。三、程序接口与系统调用(2)8三、程序接口与系统调用(3)操作系统(进程管理、存储管理、文件管理、设备管理等)标准库函数(打开、关闭、读、写、创建、撤销等)标准系统程序(实用程序)(汇编、编译、编辑、Shell等)用户用户接口库函数接口系统调用接口硬件(处理器、存储器、磁盘、打印机、终端等)用户态核心态UNIX/Linux系统程序、库函数、系统调用的分层关系92.系统调用的分类(1)进程和作业管理:进程的创建、装入、执行、撤销、终止,进程属性的获取和设置。(2)文件操作:文件的建立、打开、读写、关闭、删除,文件属性的获取和设置。(3)设备管理:设备的申请、输入输出、释放、重定向,设备属性的获取和设置。(4)内存管理:内存的申请和释放。(5)信息维护:日期、时间及系统数据的获取和设置。(6)通信:通信连接的建立、连接和断开、信息的发送和接受。三、程序接口与系统调用(4)10实例:Windows支持API(应用编程接口)的三个组件:•Kernel包含了多数操作系统函数,如内存管理、进程管理;•User集中了窗口管理函数,如窗口创建、撤销、移动、对话等相关函数;•GDI提供画图函数、打印函数。Windows将三个组件置于动态链接库DLL中。三、程序接口与系统调用(5)11Windows和UNIX/Linux的部分系统调用:三、程序接口与系统调用(6)UNIX/LinuxWin32说明forkCreatProcess创建进程waitpidWaitForSingleObject等待进程终止open/closeCreatFile/CloseHandle创建或打开/关闭文件read/writeReadFile/WriteFile读/写文件lseekSetFilePointer移动文件指针mkdir/rmdirCreat/RemoveDirectory建立/删除目录statGetFileAttributesEx获得文件属性123.系统调用的实现要点(1)有关概念陷入或异常处理机制------在操作系统中,实现系统调用功能的机制称为陷入或异常处理机制。访管指令(陷入指令或异常中断指令)----由于系统调用而引起处理器中断的机器指令称为访管指令(陷入指令或异常中断指令)。三、程序接口与系统调用(7)13(2)系统调用的实现要点:一、是编写系统调用处理程序;二、是设计一张系统调用入口地址表,每个入口地址都指向一个系统调用的处理程序,有的系统还包含系统调用自带参数的个数;三、是陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场。三、程序接口与系统调用(8)14(3)系统调用的处理过程三、程序接口与系统调用(9)SystemCallAi用户程序A0SUB0SUB1SUBiSUBnA1AiAn……系统调用处理子程序取系统功能号找入口地址表相应入口地址结束处理恢复现场A0A1…Ai…An保护CPU现场陷入指令系统调用陷入机构入口地址表15(4)系统调用的参数传递不同的系统调用需传递给系统调用处理程序不同的参数,系统调用执行的结果也要以参数形式返回给用户程序。实现用户程序和系统调用之间的参数传递可用以下方法:一是由访管指令或陷入指令自带参数,可以规定指令之后的若干个单元存放的是参数,这称为直接参数;或者在指令之后紧靠的单元中存放参数的地址,这称为间接参数。三、程序接口与系统调用(10)16二是通过CPU的通用寄存器传递参数,或在内存的一个块或表中存放参数,其首地址送入寄存器,实现参数传递。三是在内存中开辟专用堆栈区域传递参数。三、程序接口与系统调用(11)17三、程序接口与系统调用(12)系统调用8的处理子程序操作系统X:参数LOADAddRXSystemCall8X从表X取参数寄存器传递参数的一种方法184.系统调用与过程(函数)调用的区别(1)调用形式不同。过程(函数)使用一般调用指令,其转向地址包含在跳转语句中,但系统调用不包含处理程序入口,仅仅提供功能号,按功能号调用。(2)被调用代码的位置不同。在过程(函数)调用中,调用程序和被调用代码在同一程序内,经过连接编译后作为目标代码的一部分。当过程(函数)升级或修改时,必须重新编译连接。系统调用的处理代码在调用程序之外(在操作系统中),系统调用处理代码升级或修改时,与调用程序无关。三、程序接口与系统调用(13)19(3)提供方式不同。过程(函数)往往由编译系统提供,不同编译系统提供的过程(函数)可以不同;系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、种类与数量就固定不变了。(4)调用的实现不同。程序使用一般机器指令(跳转指令)来调用过程(函数),是在用户态运行的;程序执行系统调用,是通过中断机构来实现的,需要从用户态转变到核心态,在管理态执行。三、程序接口与系统调用(14)20四、操作接口与系统程序(1)1.作业控制方式用户如何来向操作系统提交作业和说明运行意图?操作系统提供了联机作业控制方式和脱机作业控制方式两个作业级的接口,这两个接口的使用手段为:操作控制命令和作业控制语言(命令)。(1)联机用户接口-----操作控制命令这是为联机用户提供的调用操作系统功能,请求操作系统为其服务的手段,它由一组命令及命令解释程序组成,也称为命令接口。其工作方式为:用户在键盘上键入一条命令后,系统立即转入命令解释程序,对该命令进行处理和执行。21四、操作接口与系统程序(2)常用的用户界面有以下几种:1)字符显示用户界面主要通过命令语言来实现,又可分成两种方式:①命令行方式它以命令为基本单位来完成预定的工作任务。每个命令以命令行的形式输入并提交给系统。一个命令行由命令动词和一组参数构成,其一般形式如下:Commandarg1arg2...ArgnCommand-----命令名,又称命令动词。arg1arg2...argn-----命令参数。22四、操作接口与系统程序(3)Linux常用的五大类命令:第一类文件管理类:cd、chmod、chgrp、comm、cp、crypt、diff、file、find、ln、ls、mkdir、mv、od、pr、pwd、rm、rmdir。第二类进程管理类:at、kill、mail、nice、nohup、ps、time、write、mesg。第三类文本加工类:cat、crypt、grep、norff、uniq、wc、sort、spell、tail、troff。第四类软件开发类:cc、f77、login、logout、size、yacc、vi、emacs、dbs、lex、make、lint、ld。第五类系统维护类:date、man、passwd、stty、tty、who。23四、操作接口与系统程序(4)②批命令方式思想:规定一种特别的文件称批命令文件,通常该类文件具有特殊的文件扩展名(如MS-DOS约定为BAT),用户可预先把一系列命令组织在该类文件中,一次建立,多次执行。操作系统还支持命令文件使用一套控制子命令,可写出带形式参数的批命令文件。这样的批命令文件可执行不同的命令序列,增强命令接口的处理能力。UNIX和Linux的Shell不但是一种交互型命令解释程序,也是命令级程序设计语言解释系统。24四、操作接口与系统程序(5)2)图形化用户界面图形化用户接口GUI(GraphicsUserInterface)使用窗口、图标、菜单和鼠标等技术,将系统的功能、各种应用程序和文件用图形符号直观、逼真地表示出来,用户可通过选择窗口、菜单、对话框和滚动条完成对它们的作业的各种控制和操作。3)新一代用户界面虚拟现实技术的研究和应用,多感知通道用户接口,自然化用户接口,智能化用户接口的研究。25四、操作接口与系统程序(6)(2)脱机用户接口-----作业控制语言(命令)这种接口是专为批处理作业用户提供的,也称批处理用户接口。操作系统提供了一个作业控制语言JCL(JobControlLanguage),它由一组作业控制卡,或作业控制语句,或作业控制操作命令组成。26四、操作接口与系统程序(7)其工作方式如下:•用户使用JCL语句,把运行意图(需要对作业进行的控制和干预)写在作业说明书上,将作业连同作业说明书一起提交给系统。•批处理作业被调度执行时,系统调用JCL语句处理程序或命令解释程序对作业说明书进行解释处理,完成对作业的运行和控制。27四、操作接口与系统程序(8)实例:一个需要编译、连结编辑的作业,源程序和数据穿在卡片上,编译、连结编辑的结果需在行式打印机上输出,编译结果要存盘,连结编辑结果还要从穿孔机输出,此作业用JCL语句组织如下:•//HAROLDJOB,WILSON,MSGLEVEL=(2,0),PRTY=6,CLASS=b•//COMPEXECPGM=IEYFORT•//SYSPRINTDDSYSOUT=A•//SYSINDD*•.•SourceProgramCard•.•/*28四、操作接口与系统程序(9)•//GOEXECPGM=FORTLINK•//SYSPRINTDDSYSOUT=A•//FTOTF001DDUNIT=SYSCP•//GOSYSINDD*•.•DataCard•.•/*•//UNIX/Linux中的Shell也可以认为是一种作业控制语言JCL。29四、操作接口与系统程序(10)2.命令解释程序(1)命令解释程序的主要功能是:接受和执行一条用户从键盘输入的命令,它通常保存一张命令名字(动词)表,其中记录着所有操作命令及其处理程序的入口地址或有关信息。当新的批作业被启动,或新的交互型用户登录时,系统就自动地执行命令解释程序,它负责读入控制卡或命令行,并作出相应解释和执行。30四、操作接口与系统程序(11)(2)命令解释程序实现的两种方式•一种是它自身包含了命令的执行代码。•另一种是由专门的“系统程序”实现,自身不含命令处理代码,也不进行处理,仅仅把这条命令对应的命令文件装入内存执行。31四、操作接口与系统程序(12)(3)命令解释程序的处理过程•系统启动命令解释程序,输出命令提示符,等待键盘中断。用户打入命令并按回车换行,申请键盘中断。