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