操作系统提供的基本服务.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统提供的基本服务

操作系统提供的基本服务 操作系统提供的基本服务 创建程序 执行程序 数据I/O 信息存取 通信服务 错误检测和处理 此外,还具有另外一些功能:资源分配、 统计,保护 操作系统提供的用户接口 操作系统的服务和功能可以用不同方式提供给用户,最基本的方式有两种: 程序接口——系统调用(System Call) 由操作系统实现的完成某种特定功能的过程;它是程序与操作系统的接口 操作接口——系统程序(System Program) 操作系统为用户提供的解决使用计算机和计算共性问题的所有服务的集合;它可以看作是操作系统提供给用户的功能级接口 系统调用 系统调用的分类 进程和作业管理 文件操作 设备操作 信息维护 通信 系统调用的实现 陷入处理机制(异常处理机制):操作系统中为控制和实现系统调用的机制 由于系统调用而引起处理器中断的指令称访管指令(Supervisor) ,陷入指令(Trap) 或异常中断指令(Interrupt) 每个系统调用都事先规定了编号,还附带有传递给内部处理程序的参数 系统调用的实现要点 编写系统调用处理程序 设计一张系统调用入口地址表,每个入口地址指向一个系统调用的处理程序,有的系统还包含系统调用自带参数的个数 陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场 系统调用的处理过程 系统调用的参数传递 访管指令或陷入指令自带参数 指令之后的若干单元存放参数,称直接参数 指令之后的若干单元存放参数的地址,称间接参数 通过通用寄存器传递参数 通用寄存器传递参数 通用寄存器传递参数地址,在内存的一个块或表中存放参数 在内存中开辟专用堆栈区域传递参数 传递参数的一种方法 系统调用与过程(函数) 调用的区别 调用形式: 过程(函数) 使用一般调用指令,其转向地址是固定不变的,包含在跳转语句中 系统调用中不包含处理程序入口,而仅仅提供功能号,按功能号调用 被调用代码的位置: 过程(函数) 调用是一种静态调用,程序和被调代码在同一程序内,经过连接编辑后作为目标代码的一部份;当过程(函数) 升级或修改时,必须重新编译连结 系统调用是一种动态调用,系统调用的处理代码在调用程序之外(在操作系统中) ,系统调用处理代码升级或修改时,与调用程序无关 系统调用与过程(函数) 调用的区别 提供方式: 过程(函数) 往往由编译系统提供,不同编译系统提供的过程(函数) 可以不同 系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、种类与数量便固定不变了 调用的实现: 程序使用一般机器指令转子指令来调用过程(函数) ,是在用户态运行的 程序执行系统调用,是通过中断机构来实现,需要从用户态转变到核心态,在管理状态下运行 Linux系统调用 Linux有170个系统调用,其系统调用的组成: 核心函数:运行在核心态,是实现系统调用功能的(内核)代码,作为操作系统的核心驻留在内存中,是一种共享代码,用C语言书写。它运行在核心态,数据也存放在内核空间,通常它不能使用系统调用,也不能使用应用程序可用的库函数 接口函数:是提供给应用程序的API,以库函数形式存在Linux的lib.a中,该库中存放了所有系统调用的接口函数的目标代码,用汇编语言书写。其主要功能是把:系统调用号、入口参数地址传送给相应的核心函数,并使用户态下运行的应用程序陷入核心态 Linux系统调用 Linux的系统调用号就是系统调用入口表中位置的序号,所有系统调用通过接口函数将系统调用号传给内核,内核转入系统调用控制程序再通过调用号位置来定位核心函数,Linux内核的陷入由0x80(int80h)中断实现 系统调用控制程序的主要功能为: 取系统调用号 根据系统调用号定位核心函数地址 根据通用寄存器内容,从用户栈中取入口参数 核心函数执行,把结果返回应用程序 Linux系统调用入口程序entry.s, 是用汇编写的,它包含了系统调用入口地址表,给出了所有系统调用核心函数的名字: ENTRY(sys-call-table) .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)

文档评论(0)

lau158 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档