版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 操作系统接口 7.3 系系 统统 调调 用用 7.3.1 系统调用的基本概念系统调用的基本概念 1.系统态和用户态 特权指令:是在系统态时运行的指令,是关系到系统全局的指令。 非特权指令:是在用户态时运行的指令。第七章 操作系统接口 2. 系统调用 (1) 运行在不同的系统状态。调用程序是运行在用户态,而被调用程序是运行在系统态。 (2) 状态的转换通过软中断进入。 (3) 返回问题。当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行,而调用进程放入就绪队列。 (4) 嵌套调用。系统调用可以嵌套进行。第七章 操作系统接口 图 7
2、-3 系统功能的调用 系统调用命令调用返回系统功能用户程序(a) 系统调用与返回系统调用命令调用系统功能系统调用命令返回系统子功能(b) 程序之间的嵌套调用第七章 操作系统接口 3. 中断机制 系统调用是通过中断机制实现的,并且一个操作系统的所有系统调用都通过同一个中断入口来实现。如ms-dos提供了int 21h。 linux给应用程序授权了4个中断号:3、4、5和80h;3、4和5中断号是提供给应用程序调试所使用的,而80h是系统调用的中断号。第七章 操作系统接口 7.3.2 系统调用的类型系统调用的类型 1. 进程控制类系统调用进程控制类系统调用 (1) 创建和终止进程的系统调用。 (2
3、) 获得和设置进程属性的系统调用。 (3) 等待某事件出现的系统调用。 第七章 操作系统接口 2. 文件操纵类系统调用文件操纵类系统调用 (1) 创建和删除文件。 creat和unlink。(2) 打开和关闭文件。 open和close。(3) 读和写文件。 read和write。第七章 操作系统接口 3. 进程通信类系统调用进程通信类系统调用 在os中经常采用两种进程通信方式,即消息传递方式和共享存储区方式。 当系统中采用消息传递方式时,在通信前,必须先打开一个连接。为此,应由源进程发出一条打开连接的系统调用open connection, 而目标进程则应利用接受连接的系统调用accept
4、connection表示同意进行通信;然后,在源和目标进程之间便可开始通信。可以利用发送消息的系统调用send message或者用接收消息的系统调用receive message来交换信息。通信结束后,还须再利用关闭连接的系统调用close connection结束通信。 第七章 操作系统接口 在使用共享存储区方式进行通信时,须先利用建立共享存储区的系统调用来建立一个共享存储区,在利用建立连接的系统调用将该共享存储区连接到进程自身的虚地址空间上,然后便可利用读和写共享存储区的系统调用实现互相通信。 除上述系统调用外,还有设备管理类系统调用和信息维护类系统调用。第七章 操作系统接口 7.3.3
5、 posix标准标准 posix定义了标准应用程序接口(api),用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。 posix标准定义了一组过程,这组过程是构造系统调用所必须的。通过调用这些过程所提供的服务,确定了一系列系统调用的功能。第七章 操作系统接口 7.3.4 系统调用的实现系统调用的实现 1. 中断和陷入硬件机构中断和陷入硬件机构 (1) 中断和陷入的概念 中断是指cpu对系统发生某事件时的一种响应:cpu暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行。外中断是指由于外部设备事件所引起的中断;内中断是指由
6、于cpu内部事件所引起的中断,如程序出错等。内中断(trap)也译为“陷入”。 陷入是由于执行了现行指令所引起的;中断是由于系统中某事件引起的,该指令与现行指令无关 。第七章 操作系统接口 图 7 - 4 中断时的cpu轨迹 被中断程序中断处理程序中断处理开始中断处理结束中断点第七章 操作系统接口 (2) 中断和陷入向量。 第七章 操作系统接口 2. 系统调用号和参数的设置系统调用号和参数的设置 在一个系统中设置了许多条系统调用,并赋予每条系统调用一个唯一的系统调用号唯一的系统调用号。 在系统调用命令中把想要的系统调用号传递系统调用号传递给中断和陷入机制的方法有: 直接把系统调用号放在系统调用
7、命令放在系统调用命令中,如unix,系统调用命令的低8位用于存放系统调用号; 将系统调用号装入某指定寄存器或内存单元装入某指定寄存器或内存单元中,如ms-dos将系统调用号放在ah寄存器中,而linux则是利用eax寄存器存放应用程序传递的系统调用号。第七章 操作系统接口 (1) 陷入指令自带方式。陷入指令除带一个系统调用号外,还自带几个参数,但由于指令长度有限,自带参数是有限的少量几个。(2) 直接将参数送入相应的寄存器中。 ms-dos用mov指令将各个参数是送入相应的寄存器中。但由于寄存器数量有限,也限制了所能设置的参数的个数。(3) 参数表方式。将系统调用所需的参数放入一张参数表中,再
8、将指向该参数表的指针放在某个指定的寄存器中。unix和linux采用此方式。 每条系统调用都含有若干个参数,在执行系统调用时,如何设置系统调用所需的参数设置系统调用所需的参数,常用的实现方式有以下几种:第七章 操作系统接口 图 7 - 7 系统调用的参数形式 参数表方式又可采用直接或间接方式。直接参数方式将所有的参数值和参数的个数都放入一张参数表中;间接参数方式中参数表中仅存放参数个数和指向真正参数数据表的指针。第七章 操作系统接口 3. 系统调用的处理步骤系统调用的处理步骤 首先,将处理机状态由用户态转为系统态;之后,由硬件和内核程序进行系统调用的一般性处理,即首先保护被中断进程的cpu环境
9、,将处理机状态字psw、程序计数器pc、系统调用号、用户栈指针以及通用寄存器内容等,压入堆栈;然后,将用户定义的参数传送到指定的地方保存起来。 其次,是分析系统调用类型,转入相应的系统调用处理系统调用处理子程序子程序。 最后,在系统调用处理子程序执行完后,应恢复被中断的或设置新进程的cpu现场,然后返回被中断进程或新进程,继续往下执行。 第七章 操作系统接口 4. 系统调用处理子程序的处理过程系统调用处理子程序的处理过程 以文件操作creat系统调用为例:进入creat的处理子程序后,内核将根据用户给定的文件路径名文件路径名path,利用目录检索过程,去查找查找指定文件的目录项目录项。查找目录
10、的方式可以用顺序查找法,也可用hash查找法。如果在文件目录中找到了指定文件的目录项,表示用户要利用一个已有文件已有文件来建立一个新文件新文件。但如果在该已有(存)文件的属性中有不允许写属性,或者创建者不具有对该文件进行修改的权限,便认为是出错而做出错处理;若不存在访问权限问题,便将已存文件的数据盘块释放掉,准备写入新的数据文件。如未找到指名文件,则表示要创建一个新创建一个新文件文件,内核便从其目录文件中找出一个空目录项,并初始化该目录项,包括填写文件名、文件属性、文件建立日期等,然后将新建文件打开将新建文件打开。 第七章 操作系统接口 7.4 unix系统调用系统调用 7.4.1 unix系
11、统调用的类型系统调用的类型 1. 进程控制进程控制 (1) 创建进程(fork)。(2) 终止进程(exit)。 (3) 等待子进程结束(wait)。 (4) 执行一个文件(exec)。 (5) 获得进程id。getp-id获取调用进程的标识符;getpgrp获取调用进程的进程组id;getppid获取调用进程的父进程id。 (6) 获得用户id。getuid获取真正用户id;geteuid获取有效用户id;getgid获取真正用户组id。(7) 进程暂停(pause)。 第七章 操作系统接口 2. 文件操纵文件操纵 (1) 创建文件(creat)。 返回文件标识符fd。(2) 打开文件(op
12、en)。返回文件标识符fd。(3) 关闭文件(close)。 (4) 读和写文件read和write。三个输入参数: 文件描述符fd; buf缓冲区首址。 用户要求传送的字节数nbyte。 第七章 操作系统接口 (5) 连接和去连接(link和unlink)。为了实现文件共享,在文件的索引结点中设置了一个连接计数i.link。当有一个用户要共享文件时,利用系统调用link建立链接,使i.link加1。用户不再使用该文件时,利用系统调用unlink去掉链接,使i.link减1。当i.link为0时,表示已无用户需要此文件,该文件被系统删除。unix无一条单独的删除文无一条单独的删除文件的系统调用
13、件的系统调用。第七章 操作系统接口 3. 进程间通信进程间通信 (1) 消息机制。 (2) 共享存储器机制。 (3) 信号量机制。 第七章 操作系统接口 4. 信息维护信息维护 (1) 设置(stime)和获得时间(time)。(2) 获得进程和子进程时间(times)。 (3) 设置文件访问和修改时间(utime)。 (4) 获得当前unix系统的名称(uname)。 第七章 操作系统接口 7.4.2 被中断进程的环境保护被中断进程的环境保护 在unix system v的内核程序中,有中断和陷入总控程序中断和陷入总控程序trap.s,该程序复杂中断和陷入的一般性处理工作。该文件采用汇编语言
14、编写。每当系统发生中断和陷入时,通常先进入trap.s程序。第七章 操作系统接口 1. cpu环境保护环境保护 当用户程序处在用户态,且在执行系统调用命令(即chmk命令)之前,应在用户空间提供系统调用所需的参数表,并将该参数表的地址送入r0寄存器寄存器。在执行chmk命令后,处理机将由用户态转为核心态,并由硬件自动地硬件自动地将处理机状态长字(psl)、程序计数器(pc)和代码操作数(code)压入用户核心栈,继而从中断和陷入向量表中取出trap.s的入口地址然后便转入中断和陷入总控程序trap.s中执行。 第七章 操作系统接口 trap.s程序执行后,继续将陷入类型type和用户栈指针us
15、p压入用户核心栈,接着还要将被中断进程的cpu环境中的一系列寄存器,如r0r11的部分或全部内容压入栈中。至于哪些寄存器的内容要压入栈中,这取决于特定寄存器中的屏蔽码,该屏蔽码的每一位都与r0r11中的一个寄存器相对应。当某一位置成1时,表示对应寄存器的内容应压入栈中。 第七章 操作系统接口 2. ap和和fp指针指针 为了实现系统调用的嵌套嵌套使用,在系统中还设置了两个指针,其一是系统调用参数表指针系统调用参数表指针ap,用于指示正在执行的系统调用所需参数表的地址,通常是把该地址放在某个寄存器中,如r12中;再者,还须设置一个调用栈帧指针调用栈帧指针fp。调用栈帧指针是指每个系统调用所保存的
16、数据项。每当出现新的系统调用时,还需将ap和fp压栈。第七章 操作系统接口 图 7 - 8 用户核心栈 用户栈指针陷入类型代码操作符系统调用参数表指针调用栈帧指针第七章 操作系统接口 7.4.3 系统调用陷入后需处理的公共问题系统调用陷入后需处理的公共问题 在中断和陷入发生后,先经硬件陷入机构予以处理,再进入trap.s,然后再调用trap.c继续处理。 trap.c程序是一个处理各种陷入情况的c程序文件,共有12种陷入处理要调用trap.c程序。它处理在中断和陷入发生后需处理的若干公共问题。其中包括:确定系统调用号、实现参数传送、转入相应的系统调用处理子程序。在由系统调用处理子程序返回到tr
17、ap.c后,重新计算进程的优先级,对收到的信号进行处理等。第七章 操作系统接口 1. 确定系统调用号确定系统调用号 trap(usp, type, code, pc, psl)其中,参数psl为陷入时处理机状态字长,pc为程序计数器,code为代码操作数,type为陷入类型号,usp为用户栈指针。对陷入的处理可分为多种情况,如果陷入是由于系统调用所引起的,则对此陷入的第一步处理,便是确定系统调用号。通常,系统调用号是包含在代码操作数中,故可利用code来确定系统调用号i。其方法是:令 i=code & 0377 第七章 操作系统接口 若0i64,则i是系统调用号,可根据它和系统调用定义
18、表,转向相应的处理子程序。若i=0,则表示系统调用号未被包含在代码操作数中,应采用间接参数方式,利用间接参数指针来找系统调用号。第七章 操作系统接口 2. 参数传送参数传送 这是对因系统调用引起的陷入的第二步处理。参数传送是指由trap.c程序将系统调用参数表中的内容,从用户区传送到user结构的u.u-arg 中,供系统调用处理程序使用。由于用户程序在执行系统调用命令之前,已将参数表的首址放入r0寄存器中,在进入trap.c程序后,该程序便将该首址赋予u.u-arg 指针,因此,trap.c在处理参数传送时,可读取该指针的内容,以获得用户所提供的参数表,并将之送至u.u-arg 中。应当注意
19、,对不同的系统调用所需传送参数的个数并不相同,trap.c程序应根据在系统调用定义表中所规定的参数个数来进行传送,最多允许10个参数。 第七章 操作系统接口 3. 利用系统调用定义表转入相应的处理程序利用系统调用定义表转入相应的处理程序 在unix系统中,对于不同(编号)的系统调用,都设置了与之相应的处理子程序。为使不同的系统调用能方便地转入其相应的处理子程序,也将各处理子程序的入口地址放入了系统调用定义表即系统调用定义表即sysent中。 该表实际上是一个结构数组,在每个结构中包含三个元素: 第一个元素是相应系统调用所需参数的个数; 第二个元素是系统调用经寄存器传送的参数个数; 第三个元素是
20、相应系统调用处理子程序的入口地址。第七章 操作系统接口 在系统中设置了系统调用定义表之后,便可根据系统调用号i从系统调用定义表中找出相应的表目,再按照表目中的入口地址转入相应的处理子程序,由该程序去完成相应系统调用的特定功能。在该子程序执行完后,仍返回到中断和陷入总控程序中的trap.c程序中,去完成返回到断点前的公共处理部分。 第七章 操作系统接口 4. 系统调用返回前的公共处理系统调用返回前的公共处理 在unix系统中,进程调度进程调度的主要依据,是进程的动态优先级。随着进程执行时间的加长,其优先级将逐步降低。每当执行了系统调用命令、并由系统调用处理子程序返回到trap.c后,都将重新计算
21、该进程的优先级;另外,在系统调用执行过程中,若发生了错误使进程无法继续运行时,系统会设置再调度标志。处理子程序在计算了进程的优先级后,又去检查该再调度标志是否已又被设置。若已设置,便调用switch调度程序,再去从所有的就绪进程中选择优先级最高的进程,把处理机让给该进程去运行。 第七章 操作系统接口 7.5 图形用户接口图形用户接口 7.5.2 桌面、图标和任务栏桌面、图标和任务栏 1. 桌面与图标的初步概念桌面与图标的初步概念 所谓桌面,是指整个屏幕空间,即在运行windows时用户所看到的屏幕。该桌面是由多个任务共享。为了避免混淆,每个任务都通过各自的窗口显示其操作和运行情况,因此,windows允许在桌面上同时出现多个窗口。所谓窗口是指屏幕上的一块
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024个人合同合作协议范本
- 2024工艺品买卖合同范本
- 2024劳动合同法中英文对照上
- 联营创业合同书
- 2024年二手车交易协议
- 户外广告牌租用协议
- 2024房屋装修合同写房屋装修合同协议清单样式
- 2024工程承揽协议合同
- 2024子女抚养协议书
- 2024车辆买卖合同范本大全
- 《人行自动门安全要求》标准
- 广铁集团校园招聘机考题库
- 第一章、总体概述:施工组织总体设想、工程概述、方案针对性及施工标段划分
- 2024-2030年中国语言服务行业发展规划与未来前景展望研究报告
- 2024-2030年白玉蜗牛养殖行业市场发展现状及发展前景与投资机会研究报告
- HGT 2902-2024《模塑用聚四氟乙烯树脂》
- 2024 年上海市普通高中学业水平等级性考试 物理 试卷
- 国家开放大学专科《法理学》(第三版教材)形成性考核试题及答案
- 计量基础知识考核试题及参考答案
- 眼科学基础病例分析
- 混合痔中医护理 方案
评论
0/150
提交评论