好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第9章操作系统接口剖析.ppt

28页
  • 卖家[上传人]:今***
  • 文档编号:107863499
  • 上传时间:2019-10-21
  • 文档格式:PPT
  • 文档大小:320KB
  • / 28 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第九章 操作系统接口,9.1 用户接口 9.2 Shell 命令语言 9.3 联机命令接口的实现 9.4 系统调用的概念和类型 9.5 UNIX系统调用 9.6 系统调用的实现,9.4 系统调用的概念和类型 通常,在OS的核心中都设置了一组用于实现各种系统功能的子程序(过程),它们是OS系统本身程序模块中的一部分为了保护操作系统程序不被用户程序破坏,一般都不允许用户程序访问操作系统的程序和数据,所以也不允许应用程序采用一般的过程调用方式来直接调用系统过程,而是向应用程序提供了一系列的系统调用命令,让应用程序通过系统调用去调用所需的系统过程 系统调用(system call)构成了用户程序和操作系统之间的接口,即程序接口它是操作系统专门为用户程序设置的,提供给程序员在编程时使用的,也用户程序取得OS服务的唯一途径它是由一组系统调用组成的9.4.1 系统调用的基本概念 1. 系统态和用户态 在计算机系统中运行着两类程序:系统程序和应用程序 为保证系统程序不被应用程序破坏,计算机设置了两种状态:系统态(也称为管态或核心态)和用户态(也称为目态)在实际运行过程中,处理机会在两种装态间切换。

      相应地,现代多数操作系统将CPU的指令集分为特权指令和非特权指令两类1) 特权指令 所谓特权指令,就是在系统态时运行的指令,是关系到系统全局的指令其对内存空间的访问范围基本不受限制,不仅能访问用户存储空间,也能访问系统存储空间,如启动各种外部设备、设置系统时钟时间、关中断、清主存、修改存储器管理寄存器、执行停机指令、转换执行状态等 特权指令只允许操作系统使用,不允许应用程序使用,否则会引起系统混乱2) 非特权指令 非特权指令是在用户态时运行的指令一般应用程序所使用的都是非特权指令,它只能完成一般性的操作和任务,不能对系统中的硬件和软件直接进行访问,其对内存的访问范围也局限于用户空间这样,可以防止应用程序的运行异常对系统造成的破坏 这种限制是由硬件实现的,如果在应用程序中使用了特权指令,就会发出权限出错信号,操作系统捕获到这个信号后,将转入相应的错误处理程序,并将停止该应用程序的运行,重新调度2. 系统调用 如上所述,应用程序不能直接调用操作系统的过程为此,操作系统提供了系统调用,使应用程序可以通过系统调用的方法,间接调用操作系统的相关过程,取得相应的服务 当应用程序中需要操作系统提供服务时,如请求I/O资源或执行I/O操作,应用程序必须使用系统调用命令。

      由操作系统捕获到该命令后,便将CPU的状态从用户态转换到系统态,然后执行操作系统中相应的子程序(例程),完成所需的功能 执行完成后,系统又将CPU状态从系统态转换到用户态,再继续执行应用程序可见,系统调用在本质上是应用程序请求OS内核完成某功能时的一种过程调用,但它是一种特殊的过程调用 它与一般的过程调用有下述的明显差别: (1)运行在不同的系统状态 一般的过程调用,其调用程序和被调用程序都运行在相同的状态——系统态或用户态; 而系统调用与一般调用的最大区别就在于:调用程序是运行在用户态,而被调用程序是运行在系统态2)状态的转换通过软中断进入由于一般的过程调用并不涉及到系统状态的转换,可直接由调用过程转向被调用过程但在运行系统调用时,由于调用和被调用过程是工作在不同的系统状态,通常通过软中断机制,先由用户态转换为系统态,经核心分析后,才能转向相应的系统调用处理子程序 (3)返回问题在采用了抢占式调度方式的系统中,在被调用过程执行完后,要对系统中所有要求运行的进程做优先权分析当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行此时,将把调用进程放入就绪队列。

      4)嵌套调用 像一般过程一样,系统调用也可以嵌套进行,即在一个被调用过程的执行期间,还可以利用系统调用命令去调用另一个系统调用当然,每个系统对嵌套调用的深度都有一定的限制,例如最大深度为6 但一般的过程对嵌套的深度则没有什么限制 图9-6示出了没有嵌套及有嵌套的两种系统调用情况图9-6 系统功能的调用,3. 中断机制 系统调用是通过中断机制实现的,并且一个操作系统的所有系统调用都通过同一个中断入口来实现如MS-DOS提供了INT 21H,应用程序通过该中断获取操作系统的服务 对于拥有保护机制的操作系统来说,中断机制本身也是受保护的,在IBM PC上,Intel提供了多达255 个中断号,但只有授权给应用程序保护等级的中断号,才是可以被应用程序调用的对于未被授权的中断号,如果应用程序进行调用,同样会引起保护异常,而导致自己被操作系统停止 如Linux 仅仅给应用程序授权了4 个中断号:3、4、5以及80h,前三个中断号是提供给应用程序调试所使用的,而80h正是系统调用(system call)的中断号9.4.2 系统调用的类型 1. 进程控制类系统调用 主要用于对进程控制的系统调用有: (1) 创建和终止进程的系统调用。

      (2) 获得和设置进程属性的系统调用 (3) 等待某事件出现的系统调用2. 文件操纵类系统调用 对文件进行操纵的主要系统调用如下: (1) 创建和删除文件 (2) 打开和关闭文件的系统调用 (3) 读和写文件的系统调用3. 进程通信类系统调用 在单处理机系统中,OS经常采用消息传递方式和共享存储区方式 当采用消息传递方式时,在通信前需先打开一个连接为此,应由源进程发出一条打开连接的系统调用,而目标进程则应利用接受连接的系统调用表示同意进行通信;然后,在源和目标进程之间便可开始通信可以利用发送消息的系统调用或者用接收消息的系统调用来交换信息通信结束后,还须再利用关闭连接的系统调用结束通信 除这三类外,还有设备管理类系统调用和信息维护类系统调用9.4.3 POSIX标准 目前许多操作系统都提供了上面所介绍的各种类型的系统调用,实现的功能相类似,但在实现的细节和形式方面却相差很大,这种差异给实现应用程序与操作系统平台的无关性带来了很大的困难 为解决这一问题,国际标准化组织ISO给出的有关系统调用的国际标准 POSIX1003.1(Portable Operating System IX),也称为“基于UNIX的可移植操作系统接口”。

      图9-7 UNIX/Linux系统程序、库函数、系统调用的分层关系,,,9.5 UNIX系统调用 9.5.1 进程控制 该类系统调用包括创建进程的系统调用fork、终止进程的系统调用exit、等待子进程结束的系统调用wait等十多条1. 进程的创建和终止 (1) 创建进程(fork) (2) 终止进程(exit)2. 改变进程映像和等待 (1) 执行一个文件(exec) (2) 等待子进程结束(wait)3. 其它进程调用 (1) 获得进程ID (2) 获得用户ID (3) 进程暂停(pause)9.5.2 文件操纵 用于对文件进行操纵的系统调用是数量最多的一类系统调用,其中包括创建文件、 打开文件、关闭文件、读文件及写文件等二十多条1. 文件的创建和删除 (1) 创建文件(creat) (2) 删除文件2. 文件的打开和关闭 (1) 打开文件(open) (2) 关闭文件(close)3. 文件的读和写 读和写文件的系统调用是read和write仅当用户利用open打开指定文件后,方可调用read或write对文件执行读或写操作两个系统调用都要求用户提供三个输入参数:① 文件描述符fd。

      ② buf缓冲区首址对读而言,这是用户所要求的信息传送的目标地址;对写而言,则是信息传送的源地址③ 用户要求传送的字节数nbyte4. 建立与文件的连接和去连接 (1) 连接(link) (2) 去连接(unlink)9.5.3 进程通信和信息保护 1. 进程通信 (1) 消息机制 (2) 共享存储器机制 (3) 信号量机制2. 信息维护 在UNIX系统中,设置了许多条用于系统维护的系统调用,下面介绍常用的几条 (1) 设置和获得时间 (2) 获得进程和子进程时间(times) (3) 设置文件访问和修改时间(utime) (4) 获得当前UNIX系统的名称(uname)期末考试,28,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.