1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,提 纲,程序接口,-,系统调用,四,用户接口的定义和分类,一,脱机用户接口,二,联机用户接口,三,1,操作系统用户概述,1,用户接口的定义,2,用户接口的分类,3,程序接口,4,操作接口,2,1.,操作系统的用户接口定义,什么是用户接口?,用户接口是操作系统提供给用户与计算机打交道的外部机制。用户能够借助这种机制和系统提供的手段来控制用户所在的系统。,3,操作系统为用户提供两种调用其服务和功能的接口,:,程序接口,:,又称应用编程接口,API,(,Application Programming Interface,),,
2、允许运行程序调用操作系统的服务和功能,操作接口,:又称作业级接口,操作系统为用户提供的操作控制计算机工作和提供服务手段的集合,2.,操作系统提供的用户接口分类,4,用户和操作系统间的两种接口,2.,操作系统提供的用户接口分类,(,续,),系统调用,操作命令或,JCL,操 作 系 统,裸 机,(,操作接口,),(,程序接口,),5,许多操作系统的程序接口由一组,系统调用,(,System Call),),组成,用户程序使用“系统调用”就可获得操作系统的底层服务,使用或访问系统的各种软硬件资源,系统调用的,主要功能,是使用户可以使用操作系统提供的有关设备管理、文件系统、进程控制进程通讯以及存储管理
3、方面的功能,而不必要了解操作系统的内部结构和有关硬件的细节问题,从而减轻用户负担和保护系统以及提高资源利用率,3,、程序接口,6,操作系统为用户操作控制计算机工作和提供服务的手段的集合,通常有,操作控制命令,图形操作界面,批处理系统提供的作业控制语言,(,命令,),等实现手段,4,、操作接口,7,二,.,脱机用户接口,脱机用户接口,-,作业控制语言,(,命令,),这种接口是专为批处理作业用户提供的,也称批处理用户接口,操作系统提供了一个作业控制语言,JCL,(,Job Control Language,),,它由一组作业控制卡,或作业控制语句,或作业控制操作命令组成,8,其工作方式如下:,用户
4、使用,JCL,语句,把运行意图,(,需要对作业进行的控制和干予,),写在作业说明书上,将作业连同作业说明书一起提交给系统,批处理作业被调度执行时,系统调用,JCL,语句处理程序或命令解释程序对作业说明书进行解释处理,完成对作业的运行和控制,在批处理操作系统时代,用户使用机是采用脱机方式,即用户将自己的程序、数据和用作业控制语言编写的上机操作的步骤的程序一起提交给计算中心(或机房),隔一段时间去机房取结果。,作业控制语言是一种语言,,用来写程序,操作步骤,的程序,二,.,脱机用户接口,9,三,.,联机用户接口,联机用户接口,-,操作控制命令,由一组命令及命令解释程序组成,也称为,命令接口,其工作
5、方式为:用户在键盘上键入一条命令后,系统立即转入命令解释程序,对该命令进行处理和执行,不同操作系统的命令接口不同,命令的种类不同,命令的数量不同,功能不同,不同的用法和形式组成了不同的用户界面,10,三,.,联机用户接口,1,字符显示用户界面,2,图形化用户界面,3,新一代用户界面,4,命令解释程序,11,1,、字符显示用户界面,主要通过命令语言来实现,又可分成两种方式:,1.1,命令行方式,1.2,批命令方式,12,1.1,命令行方式,命令行方式是以命令为基本单位来完成预定的工作任务,每个命令以命令行的形式输入并提交给系统,一个命令行由命令动词和一组参数构成,其一般形式如下:,Command
6、 arg1 arg2.,Argn,Command-,命令名,又称命令动词,arg1 arg2.,argn,-,命令参数,1,、字符显示用户界面,13,1.1,命令行方式,(,续,),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,第三
7、类 文本加工类,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,1,、字符显示用户界面,14,1.1,命令行方式,(,续,),也有时将键盘命令按命令的功能分类,如,UNIX,系统中把键盘命令分成:,基本命令、高级命令。,DO
8、S,系统把键盘命令分为如下几类:,1,、字符显示用户界面,15,DOS,系统把键盘命令分为:,文件管理,(,COPY,、,COMP,、,TYPE,、,DEL,、,REN,,,Attrib,),磁盘管理,(,FORMAT,、,CHKDSK,、,DISKCOPY,、,DISKCOMP,),目录管理,(,DIR,、,CD,、,MD,、,RD,、,TREE,),设备工作模式,(,CLS,、,MODE,),日期、时间、系统设置,(,DATE,、,TIME,、,VER,、,VOL,),运行用户程序,(MASM,、,LINK,、,DEBUG),1.1,命令行方式,(,续,),1,、字符显示用户界面,16,D
9、OS,命令使用举例,如果记不住众多的命令怎么办?这就要用到,help,命令,它可提供所有命令的帮助。,help,xxx/?(xxx,代表某个命令),1.1,命令行方式,(,续,),1,、字符显示用户界面,17,help,命令截图,1,、字符显示用户界面,18,xxx/?(xxx,代表某个命令),以,attrib/,?为例。,1.1,命令行方式,(,续,),1,、字符显示用户界面,19,attrib,的使用举例,Attrib,:,Displays or changes file attributes.,以某个文件,test.txt,说明这一个问题。,先在,windows,图形界面察看其属性,1,
10、字符显示用户界面,20,attrib,的使用举例,Windows,下察看结果,1,、字符显示用户界面,21,attrib,的使用举例,现在,+h,隐藏之,1,、字符显示用户界面,22,1.2,批命令方式,思想,规定一种特别的文件称批命令文件,通常该类文件具有特殊的文件扩展名(,如,MS-DOS,约定为,BAT,),,用户可预先把一系列命令组织在该类文件中,一次建立,多次执行,操作系统还支持命令文件使用一套控制子命令,可写出带形式参数的批命令文件。这样的批命令文件可执行不同的命令序列,增强命令接口的处理能力,1,、字符显示用户界面,23,UNIX,和,Linux,的,Shell,一种交互型命令
11、解释程序,命令级程序设计语言解释系统,1,、字符显示用户界面,24,图形化用户接口,GUI,(,Graphics User Interface,),使用窗口、图标、菜单和鼠标等技术,将系统的功能、各种应用程序和文件用图形符号直观、逼真地表示出来,用户可通过选择窗口、菜单、对话框和滚动条完成对它们的作业的各种控制和操作,Microsoft,公司的,Windows,系列就是这种图形化用户界面的代表。,图形化的用户界面的特点:,所有程序以统一的窗口形式出现,提供统一的菜单格式,系统资源、系统命令、操作功能以,图标,表示,统一的操作方法,2.,图形化用户界面,25,3.,新一代用户界面,虚拟现实技术的
12、研究和应用,多感知通道用户接口,自然化用户接口,智能化用户接口的研究,头盔显示器,数据手套,26,4,命令解释程序,接受和执行一条用户从键盘输入的命令,它通常保存一张命令名字(动词)表,其中记录着所有操作命令及其处理程序的入口地址或有关信息,当新的批作业被启动,或新的交互型用户登录时,系统就自动地执行命令解释程序,它负责读入控制卡或命令行,并作出相应解释和执行,4.1,命令解释程序的主要功能,27,一种是它自身包含了命令的执行代码,另一种是由专门的“系统程序”实现,自身不含命令处理代码,也不进行处理,仅仅把这条命令对应的命令文件装入内存执行,4,、命令解释程序,4.2,命令解释程序实现的两种方
13、式,28,系统启动命令解释程序,输出命令提示符,等待键盘中断。用户打入命令并按回车换行,申请键盘中断,CPU,响应后,控制权交给命令解释程序,它读入命令缓冲区内容,分析命令、接受参数,若为简单命令立即转向命令处理代码执行。否则查找命令处理文件,装入主存,传递参数,将控制权交给其执行,命令处理结束后,再次输出命令提示符,等待下一条命令,4.3,命令解释程序处理过程,4.,命令解释程序,29,系统调用,(system call),是操作系统与应用程序之间的接口,是为用户程序或其它系统程序在执行过程中访问系统资源,调用系统功能建立的,是用户程序获得操作系统服务的唯一途径。,OS,核心中都有一组实现系
14、统功能的过程(子程序),系统调用就是对上述过程的调用。,因此,系统调用像一个,黑箱子那样,,对用户屏蔽了操作系统的,具体动作,而,只提供有关的功能,。,四,.,系统功能调用,30,四,.,系统功能调用,31,System call,32,FQA About System,操作系统如何为用户程序提供服务?,操作系统提供实现各种功能的例行子程序,如何调用操作系统服务功能,?,采用统一的方式 访管指令与访管中断,四,.,系统功能调用,33,四,.,系统功能调用,1,Why-,为什么需系统调用,2,What-,系统调用是什么,3,How-,系统调用实现,4,Linux,的调用实现,34,1.Why-,
15、为什么需系统调用,系统调用是操作系统和用户的另一个接口,例如,在程序中要求显示某个子目录,这时就不能让正在运行的程序退出,然后发出,“,DIR,”,命令。这就要求在程序中能直接使用,“,DIR,”,命令,.,这种直接使用操作系统命令的功能称为系统调用。,35,例如程序语句中有如下命令:,open,打开文件,read/write,读,/,写文件,creat,创建文件,exit,进程终止(程序序结束),close,关闭文件,这些命令都会产生,访管中断,,来实现调用系统的相应功能。,1.Why-,为什么需系统调用,36,概念,系统调用,是为了扩充机器功能、增强系统能力、方便用户使用而在内核中建立的过
16、程(函数),它是用户程序或其它系统程序获得操作系统服务的唯一途径,系统调用也称为,广义指令,系统调用与机器指令的区别:,机器指令由硬件实现,广义指令(系统调用)是由操作系统在机器指令基础上实现的过程或子程序,2.What-,系统调用是什么,37,操作系统提供实现各种功能的例行子程序,其中的每一个功能对应访管指令的一个功能号。,例如:,svc 0,显示一个字符,svc 1,打印一个字符串,.,系统调用的机制本质上通过,特殊硬件指令,和,中断系统,实现的,但它,不是一条简单的硬指令,,而是带有一定功能号的,“,访管指令,”,。,它的功能的实现,并非由硬件直接提供,,而是由操作系统中的一段例行子程序
17、完成的,即,由软件方法实现的,。,2.What-,系统调用是什么,38,实现形式,早期操作系统的系统调用使用汇编语言编写,最新推出的一些操作系统,如,UNIX,新版本、,Linux,、,Windows,、,OS2,等,其系统调用用,C,语言编写,并以库函数形式提供。(有些库函数与系统调用无关,一般地说,库函数属于用户程序而非系统程序),2.What-,系统调用是什么,39,系统调用的实质,不同的操作系统,系统调用实现的具体方法有所不同,但其实质的特点是相同的:,每个系统调用对应一个,系统调用号,;,每个系统调用有一个,对应的执行程序段,;,每个系统调用要求,一定数量的输入参数和返回值,;,整个
18、系统有一个系统调用,执行程序入口地址表,;,2.What-,系统调用是什么,40,操作系统,(,进程管理、存储管理、文件管理、设备管理等,),标准库函数,(,打开、关闭、读、写、创建、撤销等,),标准系统程序,(,实用程序,),(,汇编、编译、编辑、,Shell,等,),用户,用户接口,库函数接口,系统调用接口,硬件,(,处理器、存储器、磁盘、打印机、终端等,),用,户,态,核,心,态,UNIX/Linux,系统程序、库函数、系统调用的分层关系,2.What-,系统调用是什么,系统调用层次,41,进程和作业管理:进程的创建、装入、执行、撤销、终止,进程属性的获取和设置,文件操作:文件的建立、打
19、开、读写、关闭、删除,文件属性的获取和设置,设备管理:设备的申请、输入输出、释放、重定向,设备属性的获取和设置,内存管理:内存的申请和释放,信息维护:日期、时间及系统数据的获取和设置,通信:通信连接的建立、连接和断开、信息的发送和接受,系统调用的分类,2.What-,系统调用是什么,42,实例,,Windows,支持,API,(,应用编程接口)的三个组件:,Kernel,包含了多数操作系统函数,如内存管理、进程管理,User,集中了窗口管理函数,如窗口创建、撤销、移动、对话等相关函数,GDI,提供画图函数、打印函数,Windows,将三个组件置于动态链接库,DLL,中,系统调用的分类,(,续,
20、),2.What-,系统调用是什么,43,Windows,和,UNIX/Linux,的部分系统调用,:,系统调用的分类,(,续,),UNIX/Linux,Win32,说明,fork,CreatProcess,创建进程,waitpid,WaitForSingleObject,等待进程终止,open/close,CreatFile/CloseHandle,创建或打开,/,关闭文件,read/write,ReadFile/WriteFile,读,/,写文件,lseek,SetFi,l,ePointer,移动文件指针,mkdir/rmdir,Creat,/Remove,Directory,建立,/,删
21、除目录,st,a,t,GetFileAttributesEx,获得文件属性,2.What-,系统调用是什么,44,3.1,系统调用实现的有关概念,3.2,系统调用的实现要点,3.3,系统调用的处理过程,3.4,系统调用的参数传递,3.5,系统调用与过程(函数)调用的区别,3.How-,系统调用实现,45,陷入或异常处理机制,-,在操作系统中,实现系统调用功能的机制称为陷入或异常处理机制,访管指令,(陷入指令或异常中断指令),-,由于系统调用而引起处理器中断的机器指令称为访管指令(陷入指令或异常中断指令),访管中断,:,当处理机执行到访管指令时就发生中断,该中断称为访管中断,它表示正在运行的程序
22、对操作系统的某种需求。,3.1,有关概念,3.How-,系统调用实现,46,访管指令格式。,PDP,11,系统计算机的,UNIX,系统:,TRAP n,微机系统,win 98/2k,、,NT,、,MS-DOS,:,INT N,教材上统称为自愿进管指令:,SVC N,其中:,SVC,(,supervisor call,),:自愿进管指令的操作码,N,:为地址码,(,功能号,),3.How-,系统调用实现,3.1,有关概念,47,系统调用是通过访管指令实现的。,在程序中,如果希望请求操作系统的服务,例如,打开一个文件,显示某个目录的内容等),就要执行一条访管指令(,trap,、,int,),然后系
23、统处理这个中断,即为用户提供相应的服务(或者称响应用户的请求)。,在汇编程序中是显式地使用访管中断命令,,trap,、,INT,。,在高级语言中(,C,语言)是,隐式使用访管,指令。,3.How-,系统调用实现,3.1,有关概念,48,3.2,系统调用的实现要点,编写系统调用处理程序,设计一张系统调用入口地址表,每个入口地址都指向一个系统调用的处理程序,有的系统还包含系统调用自带参数的个数,陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场,3.How-,系统调用实现,49,系统调用的流程如下:,用户程序执行,n,号系统调用,通过中断系统进入访管中断处理,保护现场,按功能号跳转,通
24、过系统调用入口地址表,找到相应功能的入口地址,执行相应例行程序,结束后返回系统调用的下一条指令继续执行。,3.3,系统调用的实现流程,3.,HOw,-,系统调用实现,50,3.What-,系统调用实现,51,系统调用的参数传递,不同的系统调用需传递给系统调用处理程序不同的参数,系统调用执行的结果也要以参数形式返回给用户程序,3.4,系统调用的参数传递,3.How-,系统调用实现,实现用户程序和系统调用之间的参数传递可用以下方法:,一是由访管指令或陷入指令自带参数,可以规定指令之后的若干个单元存放的是参数,这称为直接参数,或者在指令之后紧靠的单元中存放参数的地址,这称为间接参数,二是通过,CPU
25、的通用寄存器传递参数,或在内存的一个块或表中存放参数,其首地址送入寄存器,实现参数传递,三是在内存中开辟专用堆栈区域传递参数,52,系统调用,8,的处理子程序,操作系统,X:,参数,LOAD,AddR,X,System Call 8,X,从寄存器取,X,参数,寄存器,传递参数的一种方法,3.How-,系统调用实现,3.4,系统调用的参数传递,(,续),53,程序中执行系统调用或过程,(,函数,),调用,虽然都是对某种功能或服务的需求,但两者从调用形式到具体实现都有很大区别:,调用形式上的不同:,被调用代码的位置不同,提供方式的不同,调用的实现不同,3.How-,系统调用实现,3.5,系统调用
26、与函数调用的区别,54,调用形式不同,过程(函数)使用一般调用指令,其转向地址包含在跳转语句中,系统调用不包含处理程序入口,仅仅提供功能号,按功能号调用,被调用代码的位置不同,在过程(函数)调用中,调用程序和被调用代码在同一程序内,经过连接编译后作为目标代码的一部分。当过程(函数)升级或修改时,必须重新编译连接,系统调用的处理代码在调用程序之外(在操作系统中),系统调用处理代码升级或修改时,与调用程序无关,3.5,系统调用与,(,函数,),调用的区别(续),3.How-,系统调用实现,55,调用形式上的不同,过程,(,函数,),使用一般调用指令,其转向地址,(逻辑地址),是固定不变的,包含在跳
27、转语句中;,但系统调用中不包含,处理程序入口地址,,而仅仅提供功能号,按功能号查询系统调用程序入口地址表,然后,再依据查询得到的地址调用相应的例行子程序,。,3.How-,系统调用实现,56,提供方式不同,过程(函数)往往由编译系统提供,不同编译系统提供的过程(函数)可以不同,系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、种类与数量就固定不变了,调用的实现不同,程序使用一般机器指令(跳转指令)来调用过程(函数),是在,用户态,运行的,程序执行系统调用,是通过中断机构来实现的,需要从用户态转变到核心态,在,管理态,执行,3.5,系统调用与过程,(,函数,),调用的区别,(,续,),
28、3.How-,系统调用实现,57,一道考研题,选择题:用户程序在目态下使用特权指令引起的中断为(),硬件故障中断,程序中断,外部中断,访管中断,答案:,D,58,一道考研题,1.,在用户程序中要将一个字符送到显示器上显示,应使用操作系统提供的,_ _,接口。,A,系统调用,B,键盘命令,C,原语,D,子程序调用,答案,A,59,Linux,采用类似,Unix,技术实现系统调用,用户不能任意拦截和修改,保证了内核的安全性。,Linux,有,170,个系统调用,应用程序和,Shell,通过系统调用机制访问,Linux,内核,(,功能,),。每个系统调用由两部分组成:,1,)核心函数:,2,)接口函
29、数态。,4.Linux,系统调用实现,4.1 Linux,系统调用组成,(,续,),60,核心函数:运行在核心态,是,实现系统调用功能的,(,内核,),代码,作为操作系统的核心驻留在内存中,是一种共享代码,用,C,语言书写。,它,运行在核心态,数据也存放在内核空间,,通常它不能再使用系统调用,也不能使用应用程序可用的库函数。,4.Linux,系统调用实现,4.1 Linux,系统调用组成,61,接口函数:是提供给应用程序的,API,(,Application Program Interface,应用程序接口),以库函数形式存在,Linux,的,lib.a,中,该库中存放了所有系统调用的接口函数
30、的目标代码,用汇编语言书写。,其主要功能是把:系统调用号、入口参数地址传送给相应的,核心函数,,,并使用户态下运行的应用程序陷入核心态,。,4.Linux,系统调用实现,4.1 Linux,系统调用组成,(,续,),62,4.2 Linux,的系统调用入口地址表,Linux,中有一个系统调用入口程序,entry.s,,是用汇编写的,它包含了系统调用入口地址表,给出了所有系统调用核心函数的名字:,ENTRY(sys,-call-table),long SYMBOL-,NAME(sys-ni-syscall,)0,long SYMBOL-NAME(sys-exit)1,long SYMBOL-NA
31、ME(sys-fork)2,long SYMBOL-NAME(sys-read)3,long SYMBOL-NAME(sys-write)4,long SYMBOL-NAME(sys-open)5,long SYMBOL-,NAME(sys,-close)6,long SYMBOL-NAME(sys-,vfork,)190,4.Linux,系统调用实现,63,4.3Linux,的系统调用工作流程,Linux,的系统调用号就是系统调用入口表中位置的序号,所有系统调用通过接口函数将系统调用号传给内核,内核转入系统调用控制程序再通过调用号位置来定位核心函数,,Linux,内核的陷入由,0 x80(i
32、nt80h),中断实现。,系统调用控制程序的工作流程为:,取系统调用号;,根据系统调用号定位核心函数地址;,根据通用寄存器内容,从用户栈中取入口参数;,核心函数执行,把结果返回应用程序。,4.Linux,系统调用实现,64,4.4linux,系统调用的一个例程,该例程在,linux,/kernel/,entry.S,,,Entry(system_call,),的下一行。,#include,/*,定义宏,_,syscall,1*,,不同版本系统路径略有不同,/,#include ,/*,定义类型,time_t,*/,_syscall1(time_t,time,time_t*,tloc,),/*,
33、宏,展开后得到,time(),函数的原型*,/,main(),time_t,the_time,;,the_time,=,time(,(time_t,*),0);/*,调用,time,系统调用*,/,printf(The,time is%,ld,the_time,);,系统调用,time,返回从格林尼治时间,1970,年,1,月,1,日,0:00,开始到现在的秒数。,4.Linux,系统调用实现,65,大致服务:,创建程序:提供程序的编辑、调试、编译等生成工具,执行程序,:,装入内存、执行、异常报告、终止程序,数据,I/O,:以简单方式提供给用户进行,I/O,信息存取:文件操作,通信服务:进程通
34、信,错误检测和处理,还具有另外一些功能,:,资源分配,统计,保护,1.,操作系统提供的基本服务,自学知识,66,2.,系统程序,(1),概念,系统程序又称标准程序或实用程序(,Utilities,),,,虽非操作系统的核心,但却必不可少,为用户程序的开发、调试、执行、和维护解决带有共性的问题或执行公共操作,操作系统常以外部操作命令形式向用户提供许多系统程序,它的功能和性能很大程度上反映了操作系统的功能和性能,用户看待操作系统,不是看系统调用怎么样,而是看系统程序怎么样,67,2.,系统程序,(,续,),(2),系统程序的分类,文件管理,文件和目录的建立、删除、复制、改名、打印、列表、转存等管理工作,状态信息,获得日期、时间、可用内存、磁盘空间数量、用户数及其它状态信息,程序设计语言,支持编译、汇编、解释程序,程序的装入和执行支持,绝对装入工具、重定位装入工具、链接编辑程序、调试程序等,通信,机间通信、电子邮件、远程登录、文件传输,其它软件工具,Web,浏览器、字处理工具、电子表格、数据库系统、画图软件包、统计分析包、游戏程序等,自学知识,68,Q&A,69,The End,70,






