操作系统提供的服务和用户接口.ppt
24页单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Operating,System,OS,操作系统,郑州大学,申丰山,主要内容:,操作系统提供的基本服务,操作系统提供的用户接口,程序接口与系统调用,操作接口与操作命令,1.3操作系统的基本服务和用户接口,1,创建程序和执行程序,数据,I/O,和信息存取:文件操作,通信服务:进程通信,差错检测和处理,还具有另外一些功能,:,1.,资源分配,2.,统计,3.,保护,一、操作系统提供的基本服务,2,操作系统为用户提供两种调用其服务和功能的接口,:,程序接口,:允许运行程序调用操作系统的服务和功能许多操作系统的程序接口由一组系统调用(,System Call),),组成,用户程序使用,“,系统调用,”,就可获得操作系统的底层服务,使用或访问系统的各种软硬件资源操作接口,:又称,作业级接口,,操作系统为用户提供的操作控制计算机工作和提供服务手段的集合,通常有操作控制命令、图形操作界面,(,命令,),、以及批处理系统提供的作业控制语言,(,命令,),等实现手段二、操作系统提供的用户接口(1),3,用户和操作系统间的两种接口,二、操作系统提供的用户接口(2),系统调用,操作命令或JCL,操 作 系 统,裸 机,(操作接口),(程序接口),4,系统调用:,内核提供一系列具有预定功能的内核函数,通过一组接口(系统调用)提供给用户。
系统调用把应用程序的请求传送至内核,调用相应的内核函数完成所需要的处理,把处理结果返回给应用程序内核的主体是系统调用的集合,可以把内核看作特殊的公共子程序系统调用是一种中介,把用户和硬件隔离开,程序只有通过系统调用才能请求系统服务并且使用系统资源系统调用的作用:,内核可以基于权限和规则对资源访问进行裁决,可以保证系统的安全性;,系统调用对资源进行抽象,提供一致性接口,避免用户在使用资源时发生错误,并且使编程效率提高注意:,系统调用是应用程序获得操作系统服务的唯一途径!,5,2.API、库函数和系统调用,直接使用系统调用存在两个困难:第一,接口复杂、使用困难;第二,应用程序的跨平台可移植性受到很大限制POSIX,标准:规定内核的系统调用接口标准,应用程序在遵循此标准的不同操作系统之间具有可移植性UNIX/Linux,在标准,C,函数库中为每个系统调用构造一个同名的封装函数,屏蔽其下层的复杂性,负责把操作系统所提供的服务接口,系统调用封装成应用程序能够直接调用,API,(应用编程接口)一个库函数就是一个,API,,它介于操作系统和应用程序之间一个,API,可能使用一个系统调用,也可能使用多个系统调用;也可能若干,API,封装相同的系统调用。
有的库函数可能与系统调用无关6,Windows,操作系统也提供与,POSIX,兼容的子系统Windows,不公开系统调用,仅提供以库函数形式定义的,API,,叫做,Win32API,在用户程序角度看,库函数和系统调用之间差别不大,但是在操作系统实现的角度看,两者存在重要差别:,使用库函数可以隐藏访管指令的细节,使系统调用形式上类似函数调用;,对用户隐藏系统调用,可以在操作系统内核改动时,应用程序不需要改动库函数属于用户程序,在,CPU,用户态工作,系统调用属于系统程序(操作系统),在核心态运行用户可以替换库函数,但是不能替换系统调用7,3.系统调用的分类,(1)进程管理:进程的创建、装入、执行、撤销、终止,进程属性的获取和设置2)文件操作:文件的建立、打开、读写、关闭、删除,文件属性的获取和设置3)设备管理:设备的申请、输入输出、释放、重定向,设备属性的获取和设置4)内存管理:内存的申请和释放5)进程通信:通信连接的建立、连接和断开、信息的发送和接受;传递状态信息;连接和断开远程设备6)信息维护:日期、时间及系统数据的获取和设置;获取和设置信息;生成诊断和统计数据三、程序接口与系统调用 (3),8,实例:,Windows,支持,API,(应用编程接口)的三个组件:,Kernel包含了多数操作系统函数,如内存管理、进程管理;,User集中了窗口管理函数,如窗口创建、撤销、移动、对话等相关函数;,GDI,提供画图函数、打印函数。
Windows,将三个组件置于动态链接库,DLL,中三、程序接口与系统调用 (4),9,Windows,和,UNIX/Linux,的部分系统调用:,三、程序接口与系统调用 (5),UNIX/Linux,Win32,说明,fork,CreatProcess,创建进程,waitpid,WaitForSingleObject,等待进程终止,open/close,CreatFile/CloseHandle,创建或打开/关闭文件,read/write,ReadFile/WriteFile,读/写文件,lseek,SetFilePointer,移动文件指针,mkdir/rmdir,Creat/Remove Directory,建立/删除目录,stat,GetFileAttributesEx,获得文件属性,10,3.系统调用的实现要点,(1)有关概念,陷阱或异常处理机制,-在操作系统中,实现系统调用功能的机制称为,陷阱或异常处理机制访管指令(陷阱指令或异常中断指令),-,由于系统调用而引起处理器中断的机器指令称为,访管指令(陷入指令或异常中断指令)2)系统调用的实现要点:,一,.,是编写系统调用处理程序;,二,.,是设计一张系统调用入口地址表,每个入口地址都指向一个系统调用的处理程序,有的系统还包含系统调用自带参数的个数;,三.是陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场。
11,(3)系统调用的处理过程,三、程序接口与系统调用 (7),System Call A,i,用户程序,A,0,SUB,0,SUB,1,SUB,i,SUB,n,A,1,A,i,A,n,系统调用处理子程序,取系统功能号找入口地址表,相应入口地址,结束处理恢复现场,A,0,A,1,A,i,A,n,保护CPU现场,陷入指令,系统调用陷入机构,入口地址表,12,(4)系统调用的参数传递,不同的系统调用需传递给系统调用处理程序不同的参数,系统调用执行的结果也要以参数形式返回给用户程序实现用户程序和系统调用之间的参数传递可用以下方法:,一是由访管指令或陷入指令自带参数,可以规定指令之后的若干个单元存放的是参数,这称为直接参数;或者在指令之后紧靠的单元中存放参数的地址,这称为间接参数二是通过,CPU,的通用寄存器传递参数,或在内存的一个块或表中存放参数,其首地址送入寄存器,实现参数传递三是在内存中开辟专用堆栈区域传递参数13,4.,系统调用与过程(函数)调用的区别,(1)调用形式和实现方式不同过程(函数)使用一般调用指令,其转向地址包含在跳转语句中,但系统调用不包含处理程序入口,仅仅提供功能号,按功能号调用。
2)被调用代码的位置不同在过程(函数)调用中,调用程序和被调用代码在同一程序内,经过连接编译后作为目标代码的一部分当过程(函数)升级或修改时,必须重新编译连接系统调用的处理代码在调用程序之外(在操作系统中),系统调用处理代码升级或修改时,与调用程序无关3)提供方式不同过程(函数)往往由编译系统提供,不同编译系统提供的过程(函数)可以不同;系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、种类与数量就固定不变了14,四、操作接口与系统程序(1),1.作业控制方式,用户如何来向操作系统提交作业和说明运行意图?操作系统提供了,联机作业控制方式,和,脱机作业控制方式,两个作业级的接口,这两个接口的使用手段为,:操作控制命令,和,作业控制语言(命令)1)联机用户接口-操作控制命令,这是为联机用户提供的调用操作系统功能,请求操作系统为其服务的手段,它由一组命令及命令解释程序组成,也称为,命令接口,其工作方式为:用户在键盘上键入一条命令后,系统立即转入命令解释程序,对该命令进行处理和执行15,四、操作接口与系统程序(2),常用的用户界面,有以下几种:,1)字符显示用户界面,主要通过命令语言来实现,又可分成两种方式:,命令行方式,它以命令为基本单位来完成预定的工作任务。
每个命令以命令行的形式输入并提交给系统一个命令行由命令动词和一组参数构成,其一般形式如下:,Command arg1 arg2.Argn,Command-命令名,又称命令动词arg1 arg2.argn-命令参数Linux,常用的五大类命令:,第一类,文件管理类:,cd,、,chmod,、,chgrp,、,comm,、,cp,、,crypt,、,diff,、,file,、,find,、,ln,、,ls,、,mkdir,、,mv,、,od,、,pr,、,pwd,、,rm,、,rmdir,16,四、操作接口与系统程序(3),第二类,进程管理类:,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,批命令方式,思想,:规定一种特别的文件称批命令文件,通常该类文件具有特殊的文件扩展名(如,MS-DOS,约定为,BAT,),用户可预先把一系列命令组织在该类文件中,一次建立,多次执行操作系统还支持命令文件使用一套控制子命令,可写出带形式参数的批命令文件这样的批命令文件可执行不同的命令序列,增强命令接口的处理能力17,UNIX,和,Linux,的,Shell,不但是一种交互型命令解释程序,也是命令级程序设计语言解释系统2)图形化用户界面,图形化用户接口,GUI,(,Graphics User Interface,)使用窗口、图标、菜单和鼠标等技术,将系统的功能、各种应用程序和文件用图形符号直观、逼真地表示出来,用户可通过选择窗口、菜单、对话框和滚动条完成对它们的作业的各种控制和操作3)新一代用户界面,虚拟现实技术的研究和应用,多感知通道用户接口,自然化用户接口,智能化用户接口的研究18,(2)脱机用户接口,-,作业控制语言,(,命令,),这种接口是专为批处理作业用户提供的,也称,批处理用户接口,。
操作系统提供了一个作业控制语言,JCL,(,Job Control Language,),它由一组作业控制卡,或作业控制语句,或作业控制操作命令组成其工作方式如下:,用户使用,JCL,语句,把运行意图,(,需要对作业进行的控制和干予,),写在作业说明书上,将作业连同作业说明书一起提交给系统批处理作业被调度执行时,系统调用,JCL,语句处理程序或命令解释程序对作业说明书进行解释处理,完成对作业的运行和控制19,实例:,一个需要编译、连结编辑的作业,源程序和数据穿在卡片上,编译、连结编辑的结果需在行式打印机上输出,编译结果要存盘,连结编辑结果还要从穿孔机输出,此作业用,JCL,语句组织如下,:,/HAROLD JOB,WILSON,MSGLEVEL=(2,0),PRTY=6,CLASS=b,/COMP EXEC PGM=IEYFORT,/SYSPRINT DD SYSOUT=A,/SYSIN DD*,.,.,/*,20,/GO EXEC PGM=FORTLINK,/SYSPRINT DD SYSOUT=A,/FTOTF001。





