ch1-1.3操作系统基本服务和用户接口.ppt

ch1-1.3操作系统基本服务和用户接口.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2) 系统调用公共入口 system_call(?)是系统调用的公共入口,功能是:保护现场,进行正确性检查,根据系统调用号跳转到具体内核函数,该内核函数执行完毕时转向下一步。 ret_from_sys_call(?),完成返回用户空间前的最后检查,用RESTORE_ALL宏恢复现场并执行iret 指令返回用户断点。 3)保护现场 系统调用处理时的核心栈内容 … SS ESP EFLAGS CS EIP 系统调用号 ES DS EAX EBP EDI ESI EDX ECX EBX …. 硬件 完成 软件 完成 4) 参数传递 系统调用参数在5个以下。依次存放在寄存器EBX、ECX、EDX、ESI及EDI中。 系统调用返回值放在EAX中返回。 系统调用参数超过5个时,存放在内存参数区,其地址通过寄存器传送。 5) 系统调用号和系统调用表(1) #define _NR_exit 1 #define _NR_fork 2 #define _NR_read 3 #define _NR_write 4 #define _NR_open 5 #define _NR_close 6 … 系统调用号和系统调用表(2) .data 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) /*6*/ … 转跳语句为: call *SYMBOL_NAME(sys_call_table)(,%eax,4) 1.3操作系统基本服务和用户接口 1.3.1 基本服务和用户接口 1.3.2 程序接口与系统调用 1.3.3 操作接口与系统程序 1.3.4 Linux系统调用及实现机制 1.3.1操作系统基本服务 1.基本服务 ?创建程序 ?执行程序 ?数据I/O ?信息存取 ?通信服务 ?错误检测和处理 还具有其他功能:资源分配,统计,保护。 2用户接口 系统调用 (程序接口) 操作命令 操作系统 裸 机 应用程序 系统程序 (操作接口) 1.3.2程序接口与系统调用(1) 什么是系统调用? OS的功能通过一组称为系统调用(system call)的接口呈现给用户,内核提供一系列实现预定功能的内核函数,系统调用把应用程序的请求传达给内核,内核调用对应的内核函数完成请求所需处理后,再将处理结果返回给应用程序。 程序接口与系统调用(2) 系统调用的作用? 系统调用是一种中介角色,把用户与硬件隔离开来,应用程序通过系统调用才能请求系统服务和使用系统资源, 系统调用的作用: 一是内核可基于权限和规则对资源访问进行裁决,保证系统的安全性; 二是系统调用封装资源抽象,提供一致性接口,避免用户使用资源时可能发生的错误,且使编程方便效率高。 程序接口与系统调用(3) 系统调用是应用程序获得操作系统服务的唯一途径。 内核的主体是系统调用的集合,内核可以看成是特殊的公共子程序。 API、库函数、系统调用 应用程序能直接使用系统调用吗? POSIX(Portable Operating System Interface )标准,规定了 约100个API(即OS应提供的服务功能); 库函数和系统调用(通过同名封装函数被调用); API的实现既可用系统调用,也可用库函数; Linux 系统标准C库(glibc)。 库函数和系统调用 从应用程序角度看,库函数与系统调用之间是没有差别的,用户关心的是函数名、参数类型及个数、返回码含义。从系统实现角度看,两者之间存在重大区别。 使用库函数的好处是隐藏访管指令细节,使得系统调用更像函数调用,这样在改动内核时不会影响应用程序的正确性。 应用程序、库函数、系统调用的调用关系链 调用fprintf( ) 应用程序

文档评论(0)

资深分析师 + 关注
实名认证
服务提供商

文档修改,行业分析,IT咨询

1亿VIP精品文档

相关文档