操作系统第7章操作系统接口.ppt

上传人:本田雅阁 文档编号:3043475 上传时间:2019-06-29 格式:PPT 页数:44 大小:4.95MB
返回 下载 相关 举报
操作系统第7章操作系统接口.ppt_第1页
第1页 / 共44页
操作系统第7章操作系统接口.ppt_第2页
第2页 / 共44页
操作系统第7章操作系统接口.ppt_第3页
第3页 / 共44页
操作系统第7章操作系统接口.ppt_第4页
第4页 / 共44页
操作系统第7章操作系统接口.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《操作系统第7章操作系统接口.ppt》由会员分享,可在线阅读,更多相关《操作系统第7章操作系统接口.ppt(44页珍藏版)》请在三一文库上搜索。

1、7.3 系 统 调 用,7.3.1 系统调用的基本概念,1.系统态和用户态 特权指令:是在系统态时运行的指令,是关系到系统全局的指令。 非特权指令:是在用户态时运行的指令。,2. 系统调用 (1) 运行在不同的系统状态。调用程序是运行在用户态,而被调用程序是运行在系统态。 (2) 状态的转换通过软中断进入。 (3) 返回问题。当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行,而调用进程放入就绪队列。 (4) 嵌套调用。系统调用可以嵌套进行。,图 7-3 系统功能的调用,3. 中断机制 系统调用是通过中断机制实现的,并且一个操作系统的所

2、有系统调用都通过同一个中断入口来实现。如MS-DOS提供了INT 21H。 Linux给应用程序授权了4个中断号:3、4、5和80h;3、4和5中断号是提供给应用程序调试所使用的,而80h是系统调用的中断号。,7.3.2 系统调用的类型,1. 进程控制类系统调用,创建和终止进程的系统调用。 (2) 获得和设置进程属性的系统调用。 (3) 等待某事件出现的系统调用。,2. 文件操纵类系统调用,创建和删除文件。 creat和unlink。 (2) 打开和关闭文件。 open和close。 (3) 读和写文件。 read和write。,3. 进程通信类系统调用,在OS中经常采用两种进程通信方式,即消

3、息传递方式和共享存储区方式。 当系统中采用消息传递方式时,在通信前,必须先打开一个连接。为此,应由源进程发出一条打开连接的系统调用open connection, 而目标进程则应利用接受连接的系统调用accept connection表示同意进行通信;然后,在源和目标进程之间便可开始通信。可以利用发送消息的系统调用send message或者用接收消息的系统调用receive message来交换信息。通信结束后,还须再利用关闭连接的系统调用close connection结束通信。,在使用共享存储区方式进行通信时,须先利用建立共享存储区的系统调用来建立一个共享存储区,在利用建立连接的系统调用

4、将该共享存储区连接到进程自身的虚地址空间上,然后便可利用读和写共享存储区的系统调用实现互相通信。 除上述系统调用外,还有设备管理类系统调用和信息维护类系统调用。,7.3.3 POSIX标准,POSIX定义了标准应用程序接口(API),用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。 POSIX标准定义了一组过程,这组过程是构造系统调用所必须的。通过调用这些过程所提供的服务,确定了一系列系统调用的功能。,7.3.4 系统调用的实现,1. 中断和陷入硬件机构 (1) 中断和陷入的概念 中断是指CPU对系统发生某事件时的一种响应:CPU暂停正在执行的程序,在保留现场后自动地转去执行

5、该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行。外中断是指由于外部设备事件所引起的中断;内中断是指由于CPU内部事件所引起的中断,如程序出错等。内中断(trap)也译为“陷入”。 陷入是由于执行了现行指令所引起的;中断是由于系统中某事件引起的,该指令与现行指令无关 。,图 7 - 4 中断时的CPU轨迹,(2) 中断和陷入向量。,2. 系统调用号和参数的设置,在一个系统中设置了许多条系统调用,并赋予每条系统调用一个唯一的系统调用号。 在系统调用命令中把想要的系统调用号传递给中断和陷入机制的方法有: 直接把系统调用号放在系统调用命令中,如UNIX,系统调用命令的低8位用于存放系统

6、调用号; 将系统调用号装入某指定寄存器或内存单元中,如MS-DOS将系统调用号放在AH寄存器中,而Linux则是利用EAX寄存器存放应用程序传递的系统调用号。,陷入指令自带方式。陷入指令除带一个系统调用号外,还自带几个参数,但由于指令长度有限,自带参数是有限的少量几个。 直接将参数送入相应的寄存器中。 MS-DOS用MOV指令将各个参数是送入相应的寄存器中。但由于寄存器数量有限,也限制了所能设置的参数的个数。 (3) 参数表方式。将系统调用所需的参数放入一张参数表中,再将指向该参数表的指针放在某个指定的寄存器中。UNIX和Linux采用此方式。,每条系统调用都含有若干个参数,在执行系统调用时,

7、如何设置系统调用所需的参数,常用的实现方式有以下几种:,图 7 - 7 系统调用的参数形式,参数表方式又可采用直接或间接方式。直接参数方式将所有的参数值和参数的个数都放入一张参数表中;间接参数方式中参数表中仅存放参数个数和指向真正参数数据表的指针。,3. 系统调用的处理步骤,首先,将处理机状态由用户态转为系统态;之后,由硬件和内核程序进行系统调用的一般性处理,即首先保护被中断进程的CPU环境,将处理机状态字PSW、程序计数器PC、系统调用号、用户栈指针以及通用寄存器内容等,压入堆栈;然后,将用户定义的参数传送到指定的地方保存起来。 其次,是分析系统调用类型,转入相应的系统调用处理子程序。 最后

8、,在系统调用处理子程序执行完后,应恢复被中断的或设置新进程的CPU现场,然后返回被中断进程或新进程,继续往下执行。,4. 系统调用处理子程序的处理过程 以文件操作creat系统调用为例:进入creat的处理子程序后,内核将根据用户给定的文件路径名path,利用目录检索过程,去查找指定文件的目录项。查找目录的方式可以用顺序查找法,也可用Hash查找法。如果在文件目录中找到了指定文件的目录项,表示用户要利用一个已有文件来建立一个新文件。但如果在该已有(存)文件的属性中有不允许写属性,或者创建者不具有对该文件进行修改的权限,便认为是出错而做出错处理;若不存在访问权限问题,便将已存文件的数据盘块释放掉

9、,准备写入新的数据文件。如未找到指名文件,则表示要创建一个新文件,内核便从其目录文件中找出一个空目录项,并初始化该目录项,包括填写文件名、文件属性、文件建立日期等,然后将新建文件打开。,7.4 UNIX系统调用,7.4.1 UNIX系统调用的类型,1. 进程控制,创建进程(fork)。 (2) 终止进程(exit)。 (3) 等待子进程结束(wait)。 (4) 执行一个文件(exec)。 (5) 获得进程ID。getp-id获取调用进程的标识符;getpgrp获取调用进程的进程组ID;getppid获取调用进程的父进程ID。 (6) 获得用户ID。getuid获取真正用户ID;geteuid

10、获取有效用户ID;getgid获取真正用户组ID。 (7) 进程暂停(pause)。,2. 文件操纵,创建文件(creat)。 返回文件标识符fd。 (2) 打开文件(open)。返回文件标识符fd。 (3) 关闭文件(close)。 (4) 读和写文件read和write。三个输入参数: 文件描述符fd; buf缓冲区首址。 用户要求传送的字节数nbyte。,(5) 连接和去连接(link和unlink)。为了实现文件共享,在文件的索引结点中设置了一个连接计数i.link。当有一个用户要共享文件时,利用系统调用link建立链接,使i.link加1。用户不再使用该文件时,利用系统调用unlin

11、k去掉链接,使i.link减1。当i.link为0时,表示已无用户需要此文件,该文件被系统删除。UNIX无一条单独的删除文件的系统调用。,3. 进程间通信,消息机制。 (2) 共享存储器机制。 (3) 信号量机制。,4. 信息维护,设置(stime)和获得时间(time)。 (2) 获得进程和子进程时间(times)。 (3) 设置文件访问和修改时间(utime)。 (4) 获得当前UNIX系统的名称(uname)。,7.4.2 被中断进程的环境保护,在UNIX System V的内核程序中,有中断和陷入总控程序trap.s,该程序复杂中断和陷入的一般性处理工作。该文件采用汇编语言编写。每当系

12、统发生中断和陷入时,通常先进入trap.s程序。,1. CPU环境保护 当用户程序处在用户态,且在执行系统调用命令(即CHMK命令)之前,应在用户空间提供系统调用所需的参数表,并将该参数表的地址送入R0寄存器。在执行CHMK命令后,处理机将由用户态转为核心态,并由硬件自动地将处理机状态长字(PSL)、程序计数器(PC)和代码操作数(code)压入用户核心栈,继而从中断和陷入向量表中取出trap.S的入口地址然后便转入中断和陷入总控程序trap.S中执行。,trap.S程序执行后,继续将陷入类型type和用户栈指针usp压入用户核心栈,接着还要将被中断进程的CPU环境中的一系列寄存器,如R0R1

13、1的部分或全部内容压入栈中。至于哪些寄存器的内容要压入栈中,这取决于特定寄存器中的屏蔽码,该屏蔽码的每一位都与R0R11中的一个寄存器相对应。当某一位置成1时,表示对应寄存器的内容应压入栈中。,2. AP和FP指针,为了实现系统调用的嵌套使用,在系统中还设置了两个指针,其一是系统调用参数表指针AP,用于指示正在执行的系统调用所需参数表的地址,通常是把该地址放在某个寄存器中,如R12中;再者,还须设置一个调用栈帧指针FP。调用栈帧指针是指每个系统调用所保存的数据项。每当出现新的系统调用时,还需将AP和FP压栈。,图 7 - 8 用户核心栈,用户栈指针,陷入类型,代码操作符,系统调用参数表指针,调

14、用栈帧指针,7.4.3 系统调用陷入后需处理的公共问题,在中断和陷入发生后,先经硬件陷入机构予以处理,再进入trap.S,然后再调用trap.C继续处理。 trap.C程序是一个处理各种陷入情况的C程序文件,共有12种陷入处理要调用trap.C程序。它处理在中断和陷入发生后需处理的若干公共问题。其中包括:确定系统调用号、实现参数传送、转入相应的系统调用处理子程序。在由系统调用处理子程序返回到trap.C后,重新计算进程的优先级,对收到的信号进行处理等。,1. 确定系统调用号 trap(usp, type, code, PC, PSL) 其中,参数PSL为陷入时处理机状态字长,PC为程序计数器,

15、code为代码操作数,type为陷入类型号,usp为用户栈指针。对陷入的处理可分为多种情况,如果陷入是由于系统调用所引起的,则对此陷入的第一步处理,便是确定系统调用号。通常,系统调用号是包含在代码操作数中,故可利用code来确定系统调用号i。其方法是:令 i=code & 0377,若0i64,则i是系统调用号,可根据它和系统调用定义表,转向相应的处理子程序。若i=0,则表示系统调用号未被包含在代码操作数中,应采用间接参数方式,利用间接参数指针来找系统调用号。,2. 参数传送 这是对因系统调用引起的陷入的第二步处理。参数传送是指由trap.C程序将系统调用参数表中的内容,从用户区传送到User

16、结构的U.U-arg 中,供系统调用处理程序使用。由于用户程序在执行系统调用命令之前,已将参数表的首址放入R0寄存器中,在进入trap.C程序后,该程序便将该首址赋予U.U-arg 指针,因此,trap.C在处理参数传送时,可读取该指针的内容,以获得用户所提供的参数表,并将之送至U.U-arg 中。应当注意,对不同的系统调用所需传送参数的个数并不相同,trap.C程序应根据在系统调用定义表中所规定的参数个数来进行传送,最多允许10个参数。,3. 利用系统调用定义表转入相应的处理程序 在UNIX系统中,对于不同(编号)的系统调用,都设置了与之相应的处理子程序。为使不同的系统调用能方便地转入其相应

17、的处理子程序,也将各处理子程序的入口地址放入了系统调用定义表即Sysent中。 该表实际上是一个结构数组,在每个结构中包含三个元素: 第一个元素是相应系统调用所需参数的个数; 第二个元素是系统调用经寄存器传送的参数个数; 第三个元素是相应系统调用处理子程序的入口地址。,在系统中设置了系统调用定义表之后,便可根据系统调用号i从系统调用定义表中找出相应的表目,再按照表目中的入口地址转入相应的处理子程序,由该程序去完成相应系统调用的特定功能。在该子程序执行完后,仍返回到中断和陷入总控程序中的trap.C程序中,去完成返回到断点前的公共处理部分。,4. 系统调用返回前的公共处理 在UNIX系统中,进程

18、调度的主要依据,是进程的动态优先级。随着进程执行时间的加长,其优先级将逐步降低。每当执行了系统调用命令、并由系统调用处理子程序返回到trap.C后,都将重新计算该进程的优先级;另外,在系统调用执行过程中,若发生了错误使进程无法继续运行时,系统会设置再调度标志。处理子程序在计算了进程的优先级后,又去检查该再调度标志是否已又被设置。若已设置,便调用switch调度程序,再去从所有的就绪进程中选择优先级最高的进程,把处理机让给该进程去运行。,7.5 图形用户接口,7.5.2 桌面、图标和任务栏,1. 桌面与图标的初步概念 所谓桌面,是指整个屏幕空间,即在运行Windows时用户所看到的屏幕。该桌面是

19、由多个任务共享。为了避免混淆,每个任务都通过各自的窗口显示其操作和运行情况,因此,Windows允许在桌面上同时出现多个窗口。所谓窗口是指屏幕上的一块矩形区域。应用程序(包括文档)可通过窗口向用户展示出系统所能提供的各种服务及其需要用户输入的信息;用户可通过窗口中的图标去查看和操纵应用程序或文档。,2. 桌面上常见的图标,3. “开始”按钮和任务栏,“开始”按钮。 (2) 任务栏。 (3) 任务栏的隐藏方式。 (4) 任务子栏。,7.5.3 窗口,1. 窗口的组成,标题栏和窗口标题。 (2) 菜单栏。 (3) 工具栏。 (4) 控制菜单按钮。 (5) 最大化、 最小化和关闭按钮。 (6) 滚动

20、条。 (7) 窗口边框。 (8) 工作区域。,2. 窗口的性质,(1) 窗口的状态。,(2) 窗口的改变。,7.5.4 对话框,1. 对话框的用途,对话框的主要用途是实现人机对话,即系统可通过对话框提示用户输入与任务有关的信息,比如提示用户输入要打开文件的名字、其所在目录、所在驱动器及文件类型等信息;或者对于对象的属性、窗口等的环境设置的改变等,比如设置文件的属性、设置显示器的颜色和分辨率、设置桌面的显示效果;还可以提供用户可能需要的信息等。,2. 对话框的组成,标题栏 2) 输入框 3) 按钮 命令按钮。 (2) 选择按钮。 (3) 滑块式按钮。 (4) 数字式增减按钮。,图 7-11 对话框,(a)“另存为”对话框,图 7-11 对话框,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1