版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、10.1 10.1 用户接口用户接口 10.2 shell 10.2 shell 命令语言命令语言 10.3 10.3 联机命令接口的实现联机命令接口的实现 10.4 10.4 系统调用的概念和类型系统调用的概念和类型 10.5 unix10.5 unix系统调用系统调用 10.6 10.6 系统调用的实现系统调用的实现 第十章操作系统接口第十章操作系统接口 10.1 10.1 用户接口用户接口 第十章第十章 操作系统接口操作系统接口 10.1 用户接口 在当今几乎所有的os中,都向用户提供了用户接口,允许用户在 终端上键入命令,或向os提交作业书,来取得os的服务,并控制自 己程序的运行。
2、用户接口的分类用户接口的分类 字符显示式联机用户接口 图形化联机用户接口 脱机用户接口 1. 字符显示式联机用户接口 字符显示式联机用户接口字符显示式联机用户接口 又称为联机命令接口,是指用户通过命令语言,实现对作业的控 制,以及取得操作系统的服务。 命令语言命令语言 以命令为基本单位,指示操作系统完成特定的功能,由诸多命令 组成了命令集,完整的命令集包含了操作系统提供给用户可使用的全 部功能。 命令命令 由一组命令动词和参数组成,具有规定的词法、语法、语义和表 达形式,用户在终端键盘上,以命令行的形式输入,并提交给系统。 不同操作系统所提供的命令语言,在词法、语法、语义及表达形式等 方面各不
3、相同。 1. 字符显示式联机用户接口 命令语言分类命令语言分类 命令行方式命令行方式 以行为单位,输入和显示不同的命令。每行长度一般不超过256个 字符,一般情况下,以回车符作为一个命令的结束标记。 命令的执行方式命令的执行方式 间断式的串行执行方式:间断式的串行执行方式:后一个命令的输入,一般需等到前一 个命令执行结束,如用户键入的一条命令处理完成后,系统发出新的 命令输入提示符,用户才可以继续输入下一条命令。 并行执行方式:并行执行方式:用户可以在命令的结尾,输入特定的标记,将 该命令作为后台命令处理,这样,用户可继续输入下条命令,系统便 可对两条命令进行并行处理。 简单命令的一般形式简单
4、命令的一般形式 command arg1 arg2 argn 其中command 是命令名,又称命令动词,其余为该命令所带的执 行参数,有些命令可以没有参数。 命令语言分类 批命令方式批命令方式 操作系统允许用户预先把一系列命令,组织在一种称为批命令文 件的文件中,一次建立,多次执行。 优点:优点:可减少用户输入命令的次数,节省了时间、减少了出错概 率,方便了用户。 通常批命令文件都有特殊的文件扩展名,如ms-dos系统的.bat文 件。 为此,操作系统还提供了一套控制子命令,以增强对命令文件使 用的支持。用户可以使用这些子命令和形式参数书写批命令文件,使 得这样的批命令文件可以执行不同的命令
5、序列,从而增强了命令接口 的处理能力。 2. 图形化联机用户接口 图形用户接口图形用户接口guigui(graphics user interfacegraphics user interface)的引入)的引入 命令行方式和批命令方式,需要牢记各种命令的动词和参数,必须 严格按规定的格式输入命令,不同操作系统所提供的命令语言的词法、 语法、语义及表达形式是不一样的,这样既不方便又花费时间。于是, 图形化用户接口gui(graphics user interface)便应运而生。 使用使用wimp wimp 技术技术 wimp 技术将窗口(window)、图标(icon)、菜单(menu)、鼠
6、标 (pointing device)和面向对象技术等集成在一起,引入形象的各种图标, 将系统的各项功能、各种应用程序和文件,直观、逼真地表示出来,形成 一个图文并茂的视窗操作环境。 在有了gui后,在桌面上显示了许多常用的图标,每一个图标对应于一 个应用程序,用户为了启动相应的应用程序,只须双击命令的图标即可。 用户还可以轻松地通过选择窗口、菜单、对话框和滚动条,完成对他们作 业和文件的各种控制和操作。 2. 图形化联机用户接口 windowswindows的的guigui简介简介 处理过程处理过程 在系统初始化后,os为终端用户生成了一个运行explorer.exe的进 程,它运行一个具有
7、窗口界面的命令解释程序(即桌面),在“开始” 菜单中罗列了系统的各种应用程序,点击某个程序,则解释程序会产生 一个新进程并弹出一个新窗口,并运行该应用程序。该新窗口的菜单栏 或图标栏会显示应用程序的子命令。用户可进一步选择并点击子命令或 输入参数,命令进入执行处理过程。 事件驱动控制方式事件驱动控制方式 在windows系统中,采用的是事件驱动控制方式,用户通过动作来产 生事件,以驱动程序工作。事件实质就是发送给应用程序的一个消息。 各种命令和系统中所有的资源,都可以定义为一个菜单、一个按钮 或一个图标。所有的程序都拥有窗口界面,窗口中所使用的滚动条、按 钮、编辑框、对话框等各种操作对象,都采
8、用统一的图形显示方式和操 作方法。 3. 联机命令的类型 在联机命令接口中, os向用户提供了几十条甚至上百条的联机命令。 根据这些命令所完成功能的不同,可把它们分成以下几类:系统访问类、 磁盘操作类、文件操作类、目录操作类、通信类,以及其他命令。 系统访问类系统访问类:注册命令login。 文件操作命令:文件操作命令:type、copy、comp、rename、erase等。 目录操作命令:目录操作命令:mkdir、dir、rmdir、tree、chdir等。 其它命令:其它命令:输入输出重定向命令、管道连接、过滤命令、批命令 等。 返回 10.2 shell 10.2 shell 命令语言
9、命令语言 第十章第十章 操作系统接口操作系统接口 10.2 shell 命令语言 shell shell 命令语言命令语言在在 linux系统中,shell是命令语言、命令解释器(程序)及程序设计语言 的统称 作为命令语言,它拥有自己内建的shell命令集,可以为用户提供使用 操作系统的接口,用户利用该接口与机器交互; 作为一种程序设计语言,它支持绝大多数在高级语言中能见到的程序 元素,如函数、变量、数组和程序控制结构。同时,shell作为一种编程语言, 还具有简单易学的特点; 作为一个命令解释器(程序),可对输入的命令解释执行。下面对 shell命令语言做扼要的介绍。 10.2.1 简单命令
10、简介 1.1.简单命令的格式简单命令的格式 命令由小写字母构成,可带有参数表,用于给出执行命令时的附加信息, 每个参数是一个单词: $ command -option argument list 2. 2.简单命令的分类简单命令的分类 一般分类一般分类 系统提供的标准命令:包括调用各种语言处理程序、实用程序等,其 数量随系统版本的不同而有所差异,系统管理员可以增添新的系统标准命令; 用户自定义的命令:系统管理员与用户自行定义的命令,其执行方式 与系统标准命令的执行方式相同。 按是否常驻内存分类按是否常驻内存分类 内部命令:shell中少数标准命令,是包含在shell内部的,作为内部 命令常驻内
11、存; 外部命令:shell中大多数的命令,是存在于文件系统中某个目录下的 单独程序。这样做的好处在于,可以很大程度地节省内存空间。 10.2.2 简单命令的类型 根据简单命令功能的不同,可将它们分成如下几大类: 1.1.进入与退出系统进入与退出系统 2.2.文件操作命令文件操作命令 3.3.目录操作命令目录操作命令 4.4.系统询问命令系统询问命令 5.5.重定向和管道命令重定向和管道命令 6.6.通信命令通信命令mailmail 7. 7.后台命令后台命令 返回 10.3 10.3 联机命令接口的实现联机命令接口的实现 第十章第十章 操作系统接口操作系统接口 10.3 联机命令接口的实现 软
12、件配置软件配置 为了实现人机交互,在系统中必须配置相应的软件: 键盘终端处理程序:键盘终端处理程序:在微机或终端上配置,其最基本的功能是接收 用户从终端键入的命令和数据,将它们暂存在字符缓冲区中; 配置命令解释程序:配置命令解释程序:最基本的功能是对所键入的命令进行识别,然 后再转入相应的命令处理程序去执行。 10.3.1 键盘终端处理程序 在微机或终端上所配置的键盘终端处理程序,应具有下述几方面的功 能: 1.1.字符接收功能字符接收功能 为了实现人机交互,键盘终端处理程序必须能够接收从终端输入的字 符,并将之传送给用户程序。有两种方式来实现: (1)(1)面向字符方式:面向字符方式:驱动程
13、序只接收从终端打入的字符,并且不加修改 地将它传送给用户程序。 (2)(2)面向行方式:面向行方式:终端处理程序将所接收的字符暂存在行缓冲中,并可 对行内字符进行编辑。仅在收到行结束符后,才将一行正确的信息送命令 解释程序。 10.3.1 键盘终端处理程序 2.2.字符缓冲功能字符缓冲功能 为了能暂存从终端键入的字符,以降低中断处理器的频率,在终端处理程 序中,还必须具有字符缓冲功能。字符缓冲可采用以下两种方式之一: (1) (1)专用缓冲方式:专用缓冲方式:为每个终端设置一个缓冲区,200个字符左右,暂存用 户键入的一批字符。这种方式较适合于单用户微机或终端很少的多用户机。 (2)(2)公用
14、缓冲方式:公用缓冲方式:系统只设置一个由多个缓冲区构成的公用缓冲池,其 中的每个缓冲区大小相同,并链接成一个空缓冲区链。利用公用缓冲池方式可 有效地提高缓冲的利用率。 10.3.1 键盘终端处理程序 3.3.回送显示回送显示 指每当用户从键盘输入一个字符后,终端处理程序便将该字符送往屏 幕显示。有两种实现方式: 硬件实现:硬件实现:缺乏灵活性,速度较快。 软件实现:软件实现:可以做到在用户需要时才回显,还可方便地进行字符变 换。 4.4.屏幕编辑屏幕编辑 在终端处理程序中,还应能实现屏幕编辑功能,包括能提供若干个编 辑键。常用的编辑键有:删除字符键、 删除一行键、插入键、移动光标键、 屏幕上卷
15、或下移键等。 10.3.1 键盘终端处理程序 5.5.特殊字符处理特殊字符处理 终端处理程序必须能对若干特殊字符进行及时处理,这些字符是: (1)(1)中断字符:中断字符:当程序在运行中出现异常情况时,用户可通过键入中断 字符的办法来中止当前程序的运行。 (2)(2)停止上卷字符:停止上卷字符:用户键入此字符后,终端处理程序应使正在上卷的 屏幕暂停上卷,以便用户仔细观察屏幕内容。 (3)(3)恢复上卷字符:恢复上卷字符:使停止上卷的屏幕恢复上卷。终端处理程序收到该 字符后,便恢复屏幕的上卷功能。 1. 1.命令解释程序的作用命令解释程序的作用 在屏幕上给出提示符,请用户键入命令,然后读入该命令
16、,识别命令, 再转到相应命令处理程序的入口地址,把控制权交给该处理程序去执行, 并将处理结果送屏幕上显示。若用户键入的命令有错,而命令解释程序未 能予以识别,或在执行中间出现问题时,则应显示出某一出错信息。 2.2.命令解释程序的组成命令解释程序的组成 (1)(1)常驻部分:常驻部分:包括一些中断服务子程序。 (2)(2)初始化部分:初始化部分:随在常驻内存部分之后,在启动时获得控制权。 (3)(3)暂存部分:暂存部分:主要是命令解释程序,并包含了所有的内部命令处理程 序、 批文件处理程序,以及装入和执行外部命令的程序。它们都驻留在内 存中。 10.3.2 ms-dos解释程序 3. 3.命令
17、解释程序的工作流程命令解释程序的工作流程 command.comcommand.com的工作流程的工作流程 10.3.2 ms-dos解释程序 1.shell1.shell命令的特点命令的特点 shell命令的类型多而复杂所致。主要表现如下: 一条命令行中含有多个命令。 具有不同的分隔符。 10.3.3 shell解释程序 2. 2.二叉树结构的命令行树二叉树结构的命令行树 由于shell命令的这些特点,使它不能采用简单的译码方式,而是根据命 令行中分隔符类型的不同,并按照一定的规律构成二叉树结构的命令行树。 采用它的好处是,它能够很好地表示出命令行中所有命令的执行顺序和方式。 命令表型结点命
18、令表型结点 shell命令解释程序按命令行语句的结构顺序进行检查,每当遇到“;” 及“&”分隔符时,为之建立一个命令表型结点,将分隔符左面部分构成该结 点的左子树,右面部分构成右子树。例如: 10.3.3 shell解释程序 对下面的命令行所构成的命令树如图 所示: command 1;command 2;& command 3 由于每一条命令对应了一个处理进程,故 在执行命令树时,对应于每一条命令都需 要为之创建一个进程,由此为命令树生成 一个对应的进程树。 管道文件型结点管道文件型结点 当shell命令解释程序遇到管道算符时“”时,先为之建立一个管道文 件型结点,再将分隔符左面部分构成该结
19、点的左子树,右面部分构成右子树。 例如对下面的命令行所构成的命令树如图10-4所示: command 1 command 2 command 3 2.二叉树结构的命令行树 简单命令型结点简单命令型结点 对于简单命令,在命令行中仅有一条命令,它是属于可以立即执行的命 令,系统无需为无需为它建立二叉树结构的命令行树。当命令解释程序读入 键盘缓冲区中的命令,若判定它是简单命令,再进一步确定是否是内部命令。 shell解释程序本身提供了内部命令的可执行程序,因此若是内部命令, shell便立即执行,此是shell也不需要为该命令创建新进程。如果不是内部 命令也非特殊命令,shell将认为该命令是一个可
20、执行文件,于是将为它创建 一个新进程。并作为shell的子进程执行,直到子进程运行完毕,又恢复 shell运行。 2.二叉树结构的命令行树 3.linux3.linux命令解释程序的工作流程命令解释程序的工作流程 10.3.3 shell解释程序 shellshell基本执行过程基本执行过程 及父子进程之间的关系及父子进程之间的关系 返回 10.4 10.4 系统调用的概念和类型系统调用的概念和类型 第十章第十章 操作系统接口操作系统接口 1. 系统调用的基本概念 在计算机系统中,通常运行着两类程序:系统程序和应用程序,为了防止应 用程序对os的破坏,应用程序和os的内核是运行在不同的状态。即
21、os的内核是运 行在系统态,而应用程序是运行在用户态。 系统态和用户态系统态和用户态 在计算机系统中设置了两种状态:系统态(或称为核心态)和用户态系统态(或称为核心态)和用户态。在 实际运行过程中,处理机会在系统态和用户态间切换。 相应的,现代多数os将cpu的指令集分为特权指令和非特权指令两类。 特权指令:特权指令:是指在系统态运行的指令,它对内存空间的访问范围基本不受 限制,不仅能访问用户空间,也能访问系统空间。如启动外部设备、设置系统时 钟时间、关中断、转换执行状态等。特权指令只允许os使用、不允许应用程序使 用,以避免引起系统混乱。 非特权指令:非特权指令:是在用户态运行的指令。应用程
22、序所使用的都是非特权指令, 它只能完成一般性的操作和任务,不能对系统中的硬件和软件直接进行访问,对 内存的访问范围也局限于用户空间。这样,可以防止应用程序的运行异常对系统 造成破坏。 这种限制是由硬件实现的这种限制是由硬件实现的,如果在应用程序中使用了特权指令,就会发出权 限出错信号,操作系统捕获到这个信号后,将转入相应的错误处理程序,将停止 该应用程序的运行,重新调度。 系统调用系统调用 系统调用它与一般的过程调用的差别系统调用它与一般的过程调用的差别: : 运行在不同的系统状态:运行在不同的系统状态:一般的过程调用,其调用程序和被调用程序运行 在相同的状态系统态或用户态;而系统调用与一般调
23、用的最大区别就在于: 调用程序是运行在用户态,而被调用程序是运行在系统态。 状态的转换:状态的转换:由于一般的过程调用,并不涉及到系统状态的转换,所以可 直接由调用过程转向被调用过程。但在运行系统调用时,由于调用和被调用过程 是工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程,需要通 过软中断机制,先由用户态转换为系统态,经内核分析后,才能转向相应的系统 调用处理子程序。 返回问题:返回问题:在采用了抢占式调度方式的系统中,在被调用过程执行完后, 要对系统中所有要求运行的进程做优先权分析。当调用进程仍具有最高优先级时, 才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最
24、高的进程 优先执行。此时,将把调用进程放入就绪队列。 嵌套调用:嵌套调用:像一般过程一样,系统调用也可以嵌套进行,每个系统对嵌套 调用的深度都有一定的限制,例如最大深度为6。但一般的过程对嵌套的深度则 没有什么限制。 1. 系统调用的基本概念 1. 系统调用的基本概念 中断机制中断机制 系统调用是通过中断机制实现的,并且一个操作系统的所有系统调用,都 通过同一个中断入口来实现。如ms-dos提供了int 21h,应用程序通过该中断获 取操作系统的服务。 对于拥有保护机制的os来说,中断机制本身也是受保护的,但只有授权给应 用程序保护等级的中断号,才是可以被应用程序调用的。 对于未被授权的中断号
25、,如果应用程序进行调用,同样会引起保护异常,而 导致自己被操作系统停止。 1. 系统调用的基本概念 进程控制类系统调用进程控制类系统调用 主要用于对进程控制的系统调用有:创建和终止进程、获得和设置进程属性、 等待某事件出现的系统调用。 文件操纵类系统调用文件操纵类系统调用 对文件进行操纵的主要系统调用:创建和删除文件、打开和关闭文件、读和 写文件 进程通信类系统调用进程通信类系统调用 消息传递方式:在通信前需先打开一个连接,应由源进程发出一条打开连 接的系统调用,而目标进程则应利用接受连接的系统调用表示同意进行通信;然 后,在源和目标进程之间便可开始通信。可以利用发送消息的系统调用或者用接 收
26、消息的系统调用来交换信息。通信结束后,利用关闭连接的系统调用结束通信。 共享存储区方式:通信之前,利用建立共享存储区的系统调用,建立一个 共享存储区,利用建立连接的系统调用,将该共享存储区连接到进程自身的虚地 址空间上,然后利用读和写共享存储区的系统调用实现相互通信。 其他:设备管理类系统调用、信息维护类系统调用。 2. 系统调用的类型 3. posix标准 目前许多操作系统都提供了上面所介绍的各种类型的系统调用,实现的功 能也相类似,但在实现的细节和形式方面却相差很大,这种差异给实现应用程序 与操作系统平台的无关性带来了很大的困难。为解决这一问题,国际标准化组织 iso给出的有关系统调用的国
27、际标准posix1003.1(portable operating system ix),也称为“基于unix 的可移植操作系统接口”。 posix定义了标准应用程序接口(api),用于保证编制的应用程序可以在 源代码一级上在多种操作系统上移植运行。只有符合这一标准的应用程序,才有 可能完全兼容多种操作系统,即在多种操作系统下都能够运行。 posix标准定义了一组过程,这组过程是构造系统调用所必须,通过调用 这些过程所提供的服务,确定了一系列系统调用的功能。一般而言,在posix标 准中,大多数的系统调用是一个系统调用直接映射一个过程,但也有一个系统调 用对应若干个过程的情形,如一个系统调用所
28、需要的过程是其它系统调用的组合 或变形时, 则往往会对应多个过程。 posix标准所定义的一组过程虽然指定了系统调用的功能,但并没有明确 规定系统调用以什么形式实现的,是库函数还是其它形式。 库函数的目的是隐藏访管指令的细节,使系统调用更象过程调用,但一般 地说,库函数属于用户程序而非系统调用程序。 3. posix标准 unix/linux unix/linux 系统程序、库函数、系统调用的分层关系系统程序、库函数、系统调用的分层关系 返回 10.5 unix10.5 unix系统调用系统调用 第十章第十章 操作系统接口操作系统接口 1. 进程控制 进程的创建和终止进程的创建和终止 创建进程
29、创建进程(fork)(fork):一个进程可以利用fork系统调用来创建一个新进程。 终止进程终止进程(exit)(exit):一个进程可以利用exit实现自我终止。、 改变进程映像和等待改变进程映像和等待 执行一个文件执行一个文件(exec)(exec)。exec可使调用者进程的进程映像(包括用户程序 和数据等)被一个可执行的文件覆盖,此即改变调用者进程的进程映像。 等待子进程结束等待子进程结束(wait)(wait):wait用于将调用者进程自身挂起,直至它的某 一子进程终止为止。 其它进程调用其它进程调用 获得进程获得进程idid:unix系统提供了一组用于获得进程标识符的系统调用,如
30、getp-id、getpgrp、getppid等。 获得用户获得用户idid:unix系统提供了一组用于获得用户id的系统调用,如 getuid、geteuid、getgid等。 进程暂停进程暂停(pause)(pause):可用此系统调用将调用进程挂起,直至他收到一个信 号为止。 2. 文件操纵期间 文件的创建和删除文件的创建和删除 创建文件创建文件(creat)(creat):根据用户提供的文件名和许可权方式,来创建一个新 文件或重写一个已存文件。 删除文件:删除文件:在unix系统中没有专门的删除文件的系统调用,故无人可对 文件进行删除。 文件的打开和关闭文件的打开和关闭 打开文件打开文
31、件(open)(open):把有关的文件属性从磁盘拷贝到内存中,以及在用户 和指名文件之间建立一条快捷的通路,并给用户返回一个文件描述符fd。文件被 打开后,用户对文件的任何操作,都只须使用后,用户对文件的任何操作,都只须使用fdfd而非路径名。而非路径名。 关闭文件关闭文件(close)(close):当把一个文件用毕暂不访问时,可调用close将文件 关闭,即断开用户程序与该文件之间已经建立的快捷通路。 2. 文件操纵期间 文件的读和写文件的读和写 读和写文件read和write。仅当用户利用open打开指定文件后,方可调用 read或write对文件执行读或写操作。 两个系统调用都要求用
32、户提供三个输入参数: 文件描述符fd; buf缓冲区首址:对读而言,这是用户所要求的信息传送的目标地址;对 写而言,则是信息传送的源地址; 用户要求传送的字节数nbyte。 系统调用系统调用readread的功能:的功能:是试图从fd所指示的文件中去读入nbyte个字节的 数据,并将它们送至由指针buf所指示的缓冲区中; 系统调用系统调用writewrite的功能的功能:是试图把nbyte个字节数据,从指针buf所指示的 缓冲区中写到由fd所指向的文件中。 2. 文件操纵期间 建立与文件的连接和去连接建立与文件的连接和去连接 连接连接(link)(link):为了实现文件共享,必须记住所有共享
33、该文件的用户数目。 为此,在该文件的索引结点中设置了一个连接计数i.link。每当有一用户要共享 某文件时,须利用系统调用link来建立该用户(进程)与此文件之间的连接,并对 i.link做加1操作。 去连接(去连接(unlink)unlink):当用户不再使用此文件时,应利用系统调用unlink去 断开此连接,亦即做i.link的减1操作。当i.link减1后结果为0时,表示已无用 户需要此文件,此时才能将该文件从文件系统中删除。故在unix系统中并无一条 删除文件的系统调用。 3. 进程通信和信息保护 进程通信进程通信 为了实现进程间的通信,在unix系统中提供了一个用于进程间通信的软件包
34、, 简称ipc。 ipcipc的组成:的组成:消息机制、 共享存储器机制和信号量机制三部分组成。在每 一种通信机制中,都提供了相应的系统调用供用户程序进行进程间的同步与通信 用。 消息机制:消息机制:用户(进程)在利用消息机制进行通信时,必须先利用msgget系 统调用来建立一个消息队列。用户(进程)可利用发送消息的系统调用msgsend向 用户指定的消息队列发送消息;利用msgrcv系统调用从指定的消息队列中接收指 定类型的消息。 共享存储器机制:共享存储器机制:当用户(进程)要利用共享存储器机制进行通信时,必须 先利用shmget系统调用来建立一个共享存储区,再利用shmat将该共享存储区
35、连 接到本进程的虚地址空间上。当进程不再需要该共享存储区时,可利用shmdt系 统调用来拆除进程与共享存储区间的连接。 信号量机制:信号量机制:在unix系统中所采用的信号量机制,与第二章中所介绍的一 般信号量集机制相似。 3. 进程通信和信息保护 信息维护信息维护 设置和获得时间:设置和获得时间:超级用户可利用设置时间的系统调用(stime),来设置 系统的日期和时间;一般用户可利用获得时间的系统调用time来获得当前的日期 和时间。 获得进程和子进程时间获得进程和子进程时间(times)(times):可获得进程及其子进程所使用的cpu时 间,其中包括调用进程在用户空间执行指令所花费的时间
36、,系统为调用进程所花 费的cpu时间、子进程在用户空间所用的cpu时间、系统为各子进程所花费的cpu 时间等,并可将这些时间填写到一个指定的缓冲区。 设置文件访问和修改时间设置文件访问和修改时间(utime)(utime):用于设置指名文件被访问和修改的时 间。如果该系统调用的参数times为null时,文件主和对该文件具有写权限的用 户,可将对该文件的访问和修改时间设置为当前时间;如果times不为null,则 把times解释为指向utim buf结构的指针,此时,文件主和超级用户能将访问时 间和修改时间置入utim buf结构中。 获得当前获得当前unixunix系统的名称系统的名称(u
37、name)(uname):可将有关unix系统的信息存储在 utsname结构中。这些信息包括unix系统名称的字符串、系统在网络中的名称、 硬件的标准名称等。 返回 10.6 10.6 系统调用的实现系统调用的实现 第十章第十章 操作系统接口操作系统接口 10.6 系统调用的实现 系统调用的实现系统调用的实现 借助于陷入机制,控制由应用程序运行的用户态转换为系统态。 陷入机制陷入机制 包括陷入硬件机构及陷入处理程序两部分。 实现的流程简述实现的流程简述 当应用程序使用os的系统调用时,产生一条相应的指令,cpu在执行这条 指令时发生中断,并将有关信号送给中断和陷入硬件机构,该机构收到信号 后
38、,启动相关的陷入处理程序进行处理,实现该系统调用所需要的功能。 10.6.1 系统调用的实现方法 1.1.系统调用号和参数的设置系统调用号和参数的设置 在一个系统中设置了许多条系统调用,并赋予每条系统调用一个唯一的在一个系统中设置了许多条系统调用,并赋予每条系统调用一个唯一的 系统调用号。系统调用号。 每一条系统调用都含有若干个参数,在执行系统调用时,常用的将这些 参数传递给陷入处理机构和系统内部子程序(过程)的实现方式: 陷入指令自带方式:陷入指令自带方式:陷入指令除了携带一个系统调用号外,还要自带 几个参数进入系统内部,由于一条陷入指令的长度是有限的,因此自带的只 能是少量的、有限的参数。
39、 直接将参数送入相应的寄存器中:直接将参数送入相应的寄存器中:ms-dos便是采用的这种方式,即用 mov指令将各个参数送入相应的寄存器中。系统程序和应用程序都可以对这些 寄存器它们进行访问的,但这种寄存器数量有限,限制了参数的数目。 参数表方式:参数表方式:将系统调用所需的参数放入一张参数表中,再将指向该 参数表的指针放在某个指定的寄存器中。当前大多数的os中,如unix系统和 linux系统,便是采用了这种方式。 1.系统调用号和参数的设置 参数表方式参数表方式 该方式又可进一步分成: 直接参数方式:直接参数方式:所有的参数值和参数的个数n,都放入一张参数表中; 间接参数方式:间接参数方式
40、:在参数表中仅存放参数个数和指向真正参数数据表的 指针。 10.6.1 系统调用的实现方法 2.2.系统调用的处理步骤系统调用的处理步骤 在设置了系统调用号和参数后,便可执行一条系统调用命令。不同的系不同的系 统可采用不同的执行方式:统可采用不同的执行方式:在unix系统中,是执行chmk命令;而在ms-dos中 则是执行int 21软中断。 系统调用的处理过程可分成以下三步系统调用的处理过程可分成以下三步: : 将处理机状态由用户态转为系统态;将处理机状态由用户态转为系统态; 由硬件和内核程序进行系统调用的一般性处理:由硬件和内核程序进行系统调用的一般性处理:保护被中断进程的cpu 环境,将
41、用户定义的参数传送到指定的地址保存起来。 分析系统调用类型,转入相应的系统调用处理子程序:分析系统调用类型,转入相应的系统调用处理子程序:内核可利用系 统调用号去查找系统调用入口表,即可找到相应处理子程序的入口地址而转 去执行。 在系统调用处理子程序执行完后,应恢复被中断的或设置新进程的在系统调用处理子程序执行完后,应恢复被中断的或设置新进程的cpucpu 现场,然后返回被中断进程或新进程,继续往下执行。现场,然后返回被中断进程或新进程,继续往下执行。 10.6.1 系统调用的实现方法 3. 3.系统调用处理子程序的处理过程系统调用处理子程序的处理过程 系统调用的功能主要是由系统调用子程序来完
42、成的。对于不同的系统调 用,其处理程序将执行不同的功能。我们以一条在文件操纵中常用的creat命 令为例来说明: 进入creat的处理子程序后,核心将根据用户给定的文件路径名path, 利用目录检索过程,去查找指定文件的目录项。 如果在文件目录中找到了指定文件的目录项,表示用户要利用一个已 有文件来建立一个新文件。但如果在该已有(存)文件的属性中有不允许写属 性,或者创建者不具有对该文件进行修改的权限,便认为是出错而做出错处 理; 若不存在访问权限问题,便将已存文件的数据盘块释放掉,准备写入 新的数据文件。 如未找到指名文件,则表示要创建一个新文件,核心便从其目录文件 中找出一个空目录项,并初
43、始化该目录项,包括填写文件名、文件属性、文 件建立日期等,然后将新建文件打开。 10.6.2 unix系统调用的实现 trap.s trap.s文件文件 在unix系统的内核程序中,是中断和陷入总控程序,用于中断和陷入 的一般性处理。为提高运行效率,该文件采用汇编语言编写。 在trap.s中包含了绝大部分的中断和陷入向量的入口地址。每当系统发 生了中断和陷入情况时,通常都是先进入trap.s程序,由它先处理有关cpu环 境保护的问题。 trap.ctrap.c程序程序 用于处理在中断和陷入发生后需要处理的若干公共问题。是c语言文件, 共有12种陷入的处理(如系统调用、进程调度中断、跟踪自陷非法
44、指令、访问 违章、算术自陷等) 要调用 trap.c程序。 如果因系统调用进入trap.c,它所要进行的处理将包括:确定系统调用 号、实现参数传送、转入相应的系统调用处理子程序。 在由系统调用处理子程序返回到trap.c后,重新计算进程的优先级,对 收到的信号进行处理等。 10.6.2 unix系统调用的实现 1.cpu 1.cpu环境保护环境保护 当用户程序处在用户态,且在执行系统调用命令 (即chmk命令)之前,应在用户空间提供系统调用所需 的参数表,并将该参数表的地址送入r0寄存器。在执 行chmk命令后,处理机将由用户态转为核心态,并由 硬件自动地将处理机状态长字(psl)、程序计数器
45、(pc) 和代码操作数(code)压入用户核心栈,继而从中断和 陷入向量表中取出trap.s的入口地址,然后便转入中 断和陷入总控程序trap.s中执行。 trap.s程序执行后,继续将陷入类型type和用户 栈指针usp压入用户核心栈,接着还要将被中断进程的 cpu环境中的一系列寄存器如r0r11的部分或全部内 容压入栈中。至于哪些寄存器的内容要压入栈中,这 取决于特定寄存器中的屏蔽码,该屏蔽码的每一位都 与r0r11中的一个寄存器相对应。当某一位置成1时, 表示对应寄存器的内容应压入栈中。 10.6.2 unix系统调用的实现 2.ap 2.ap和和fpfp指针指针 为了实现系统调用的嵌套
46、使用,在系统中还设置了 两个指针: 系统调用参数表指针系统调用参数表指针apap:用于指示正在执行的系 统调用所需参数表的地址,通常是把该地址放在某个寄 存器中,例如放在r12中; 调用栈帧指针调用栈帧指针fpfp: 调用栈帧调用栈帧( (或简称栈帧或简称栈帧) ):每个系统调用需要保存 而被压入用户核心栈的所有数据项; 栈帧指针栈帧指针fpfp:用于指示本次系统调用所保存的数 据项。 每当出现新的系统调用时,还须将ap和fp 压入栈 中,当trap.s完成被中断进程的cpu环境和ap及fp指针 的保存后,将会调用公共处理程序trap.c,以继续处理 本次的系统调用所要完成的公共处理部分。 1
47、0.6.2 unix系统调用的实现 3.3.确定系统调用号确定系统调用号 在中断和陷入发生后,是先经硬件陷入机构予以处理,再进入trap.s,在 保护好cpu现场后再调用trap.c继续处理。 其调用形式为:trap(usptrap(usp,typetype,codecode,pcpc,psl)psl),其中参数: psl:陷入时处理机状态字长; pc:程序计数器; code:代码操作数; type:陷入类型号 usp:用户栈指针。 对陷入的处理可分为多种情况,如果陷入是由于系统调用所引起的,则对 此陷入的第一步处理,便是确定系统调用号。 通常,系统调用号是包含在代码操作数中,可利用code来
48、确定系统调用号 i。其方法是:令i=code & 0377,若0i64,此i便是系统调用号,可根据系 统调用号i和系统调用定义表,转向相应的处理子程序。若i=0,则表示系统调 用号并未包含在代码操作数中,此时应采用间接参数方式,利用间接参数指针 来找到系统调用号。 10.6.2 unix系统调用的实现 4. 4.参数传送参数传送 由trap.c程序将系统调用参数表中的内容,从用户区传送到user结构的 u.u-arg中,供系统调用处理程序使用。 由于用户程序在执行系统调用命令之前,已将参数表的首址放入r0寄存 器中,在进入trap.c程序后,该程序便将该首址赋予u.u-arg指针,因此, tr
49、ap.c在处理参数传送时,可读取该指针的内容,以获得用户所提供的参数 表,并将之送至u.u-arg中。 5.5.利用系统调用定义表转入相应的处理程序利用系统调用定义表转入相应的处理程序 在unix系统中,对于不同(编号)的系统调用,都设置了与之相应的处理 子程序,将各处理子程序的入口地址放入了系统调用定义表中将各处理子程序的入口地址放入了系统调用定义表中。在相应的处 理子程序执行完后,仍返回到中断和陷入总控程序中的trap.c程序中,去完 成返回到断点前的公共处理部分。 系统调用定义表:系统调用定义表:一个结构数组sysentsysent ,包含三个元素: 相应系统调用所需参数的个数; 系统调
50、用经寄存器传送的参数个数; 相应系统调用处理子程序的入口地址。 6. 6.系统调用返回前的公共处理系统调用返回前的公共处理 在unix系统中,进程调度的主要依据,是进程的动态优先级。 每当执行了系统调用命令、并由系统调用处理子程序返回到trap.c后, 都将重新计算该进程的优先级; 在系统调用执行过程中,若发生了错误使进程无法继续运行时,系统 会设置再调度标志。 处理子程序在计算了进程的优先级后,又去检查该再调度标志是否已又处理子程序在计算了进程的优先级后,又去检查该再调度标志是否已又 被设置。若已设置,便调用被设置。若已设置,便调用switchswitch调度程序,再去从所有的就绪进程中选择
51、调度程序,再去从所有的就绪进程中选择 优先级最高的进程,把处理机让给该进程去运行。优先级最高的进程,把处理机让给该进程去运行。 当进程的运行是处于系统态时,即使再有其他进程又发来了信号,也 不予理睬;仅当进程已从系统态返回到用户态时,内核才检查该进程是否已 收到了由其他进程发来的信号。若有信号,便立即按该信号的规定执行相应 的动作。在从信号处理程序返回后,还将执行一条返回指令ret,该指令将把 已被压入用户核心栈中的所有数据(如psl、 pc、 fp及ap等)都退还到相应的 寄存器中,这样,控制就将从系统调用返回到被中断进程,后者继续执行下 去。 10.6.2 unix系统调用的实现 10.6
52、.5 linux系统调用 与unix 相似,linux 采用类似技术实现系统调用。 linuxlinux系统的特权级别系统的特权级别 在cpu的保护模式下,提供了四个特权级别,但目前只用到了其中的两个 特权级别: 特权级0:即内核态; 特权级3:即用户态。 用户对系统调用,不能任意拦截和修改,以保证内核的安全性。应用程 序和shell,需要通过系统调用机制访问linux 内核(功能)。 linuxlinux系统调用的组成系统调用的组成 内核函数:内核函数:是实现系统调用功能的(内核)代码,作为操作系统的核心 驻留在内存中,是一种共享代码,用c 语言书写。它运行在内核态,数据也存 放在内核空间,通常它不能再使用系统调用,也不能使用应用程序可用的库函 数。 接口函数:接口函数:是提供给应用程序的api,以库函数形式存在linux的lib.a 中,该库中存放了所有系统调用的接口函数的目标代码,用汇编语言书写。其 主要功能是把:系统调用号、入口参数地址传送给相应的核心函数,并使用户 态下运行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二级建造师考试试题一及答案详解一套
- 人力资源规划测试题及答案
- 国开电大《人力资源管理》形考任务四答案
- 中级会计实务-金融资产(六)-2模拟题
- 2025年安全培训试题及答案【各地真题】
- 低压电工证考试题库低压电工科目一二三四
- 2025年上海普外科主治医师专业实践能力试题
- 2025年度司法考试卷四第二题解析
- 2025年一级建造师考试试题(名校卷)附答案详解
- 圆与扇形测试题及答案
- 污水站述职报告
- 安徽1号卷A10联盟2026届高三上学期11月期中质量检测语文(含答案)
- 2025年生态农业行业有机农业与农村电商发展研究报告及未来发展趋势预测
- 2025中国智能网联汽车技术路线与产业协同发展报告
- 2025年山西万家寨水务控股集团所属企业社会招聘(公共基础知识)复习题库及答案
- 白酒税收政策课件
- 中国新能源轻卡行业发展概况、市场全景分析及投资策略研究报告(2026版)
- 2025年平凡的世界考试题及答案
- 2025消防月消防安全知识培训课件
- 2025及未来5年中国玻璃钢夹砂缠绕管市场调查、数据监测研究报告
- epc合作框架协议书
评论
0/150
提交评论