




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、12345678910111213141516编译器或汇编器目标模块源程序其他目标模块主存中运行动态装入的系统库编译时间编译时间连接装配时间连接装配时间动态链接加载运行时间运行时间连接装配程序主存映像文件应用程序处理步骤示意图应用程序处理步骤应用程序处理步骤17181920 操操 作作 系系 统统用户通过操作系统使用计算机示意图21 操作命令:操作命令: 作业控制语言 键盘命令 图形界面 操操 作作 系系 统统系统功能调用系统功能调用操作系统提供的用户接口示意图22实际操作系统实际操作系统: MS-DOS Windows Linux (UNIX)提供什么样的用户界面提供什么样的用户界面?232
2、4 操作系统提供实现各种功能的例行子程序。操作系统提供实现各种功能的例行子程序。应应用用程程序序 i 系统调用系统调用 中中 央央处理机处理机存储器存储器外外 部部设设 备备应应 用用程程 序序计算机系统部件计算机系统部件系统功能调用示意图25 采用统一进管方式采用统一进管方式 系统提供系统提供 访管指令、访管中断访管指令、访管中断 显示一个显示一个字符串字符串读文件读文件 应用程序应用程序 j read( ); 操作系统统功能模块操作系统统功能模块 访管指令访管指令 (自愿进管指令自愿进管指令) svc n svc 表示机器访管指令的操作码记忆符,表示机器访管指令的操作码记忆符,n为地址码为
3、地址码 (功能号功能号)系统功能调用示意图26 访管中断访管中断 当处理机执行到访管指令时发生中断,该中断称为访管中当处理机执行到访管指令时发生中断,该中断称为访管中 断,它表示正在运行的程序对操作系统的某种需求。断,它表示正在运行的程序对操作系统的某种需求。 操作系统提供实现各种功能的例行子程序,其中的每一个功能对应访管 指令的一个功能号。例如: svc 0 显示一个字符显示一个字符 svc 1 打印一个字符串打印一个字符串 系统功能调用是用户在程序一级请求操作系统服务的一种系统功能调用是用户在程序一级请求操作系统服务的一种手段,它是带有一定功能号的手段,它是带有一定功能号的“访管指令访管指
4、令”。其功能是由操。其功能是由操作系统中的程序完成的,即由软件方法实现的。作系统中的程序完成的,即由软件方法实现的。27 a1a0ai例行子程序例行子程序入口地址表入口地址表A+0A+1A+i保护现场;保护现场;取取 i 值;值;按按i 值转移;值转移; 恢复现场;恢复现场;访管中断访管中断处理程序处理程序 svc i 用户程序用户程序+ASub mam例行子程序例行子程序Sub 0Sub 1Sub ia0a1ai系统调用的执行过程编写各服务功能的例行子程序访管中断处理程序:保护现场、调用例行子程序、恢复现场构造例行子程序的入口地址表功能号与例行服务子程序一一对应。用户程序中安排访管指令由陷入
5、指令自带参数:陷入指令的长度有限,且还要携带系统调用功能号,只能自带有限的参数通过有关通用寄存器来传递参数:这些寄存器应是系统程序和用户程序都能访问的,由于寄存器个数限制,无法传递较多的参数在内存中开辟专用堆栈区来传递参数28系统调用方式(系统调用方式(INT)与程序中一般的调用方式的相同点)与程序中一般的调用方式的相同点改变指令流程重复执行和公用改变指令流程后需要返回原处 系统调用方式(系统调用方式(INT)与程序中一般的调用方式的)与程序中一般的调用方式的不不同点同点 运行在不同的系统状态过程调用:调用前后状态相同,用户态或核态系统调用:INT指令,用户态核态返回问题过程调用:正常返回调用
6、过程系统调用:可能引起进程调度系统调用命令中,同一程序中不包含被调用代码:好处?系统调用涉及到PSW:状态管理、标志寄存器29系统调用代码属于OS,库函数由软件开发商提供,由编译工具链入用户程序。系统调用代码的执行引起CPU状态的变化:用户态核心态库函数的执行不会引起CPU状态的变化:用户态303132 abc(); abc(); syscall; system_call: sys_abc SYSEXITsysabc() 用户态用户态核心态核心态用户程序系统调用 在libc标准库中的封装例程系统调用处理程序系统调用服务例程Linux系统调用过程33int main() getuid(); int getuid(void) long_res; int $0 x80; ENTRY(system_call) pushl % esx SAVE_ALL GET_CURRENT(%ebx) call sys_getuid16 RESTORE_ALLasmlinkage longsys_getuid16(void) return high2lowuid (current_uid);用户程序用户程序系统调用处理程序系统调用处理程序标准标准C库库内核例程内核例程getuid系统调用过程3435进入函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论