操作系统基础 邓胜兰 第3章 操作系统内核新.ppt

操作系统基础 邓胜兰 第3章 操作系统内核新.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系统调用机制 系统调用散转表 系统调用机制的重要数据结构 引导系统调用总控程序转向相应的功能函数 系统调用ID 给每个系统调用函数一个唯一的编号 系统调用ID作为系统调用散转表的索引 空入口 exit()入口 fork()入口 read()入口 write()入口 open()入口 ······ 系统调用ID: 0 1 2 3 4 5 n 系统调用机制 参数传递 使用约定的寄存器 调用参数 返回值 数目多时(6),使用指针,需要访问用户地址空间。 核心栈 中断 现场 系统调用机制 系统调用总入口处理程序 保存现场 系统调用散转表 功能函数 功能函数 功能函数 功能函数 ······ 恢复现场 iret 获得系统调用ID 系统调用机制 系统调用过程 用户程序 系统调用ID和参数?约定的寄存器 执行trap指令 从约定的寄存器中取得返回值 操作系统 通过中断/异常机制执行系统调用总控程序 总控程序获得系统调用ID和参数,根据散转表调用相应的系统调用函数。 系统调用函数执行完后,返回总控程序。 总控程序:返回值?约定的寄存器 通过中断/异常机制返回用户程序 系统调用机制 系统调用接口函数库 实现用户程序调用内核功能函数的接口函数,在接口函数中包含了trap指令和系统调用的全过程。 用户程序 打开文件:fopen(...) 系统调用库 main() fopen(...) trap指令 系统调用函数 fopen(...) 用户态 核心态 Linux的系统调用机制 系统调用散转表 在源码中的arch/i386/kernel/entry.S文件中实现: ENTRY(sys_call_table) .long SYMBOL_NAME(sys_ni_syscall) /* 0 空入口*/ .long SYMBOL_NAME(sys_exit) .long SYMBOL_NAME(sys_fork) .long SYMBOL_NAME(sys_read) .long SYMBOL_NAME(sys_write) .long SYMBOL_NAME(sys_open) /* 5 —— 系统调用ID */ .long SYMBOL_NAME(sys_close) ······ Linux的系统调用机制 系统调用总入口程序 在源码中的arch/i386/kernel/entry.S文件中: system_call的主要流程为: ①将eax中的系统调用ID和所有寄存器的值保存到核心栈中。 ②检查eax中的系统调用ID是否为合法的ID。 ③调用sys_call_table[eax]中的功能函数,返回值在eax中。 ④将eax中的返回值保存到核心栈中。 ⑤通过宏语句RESTORE_ALL恢复所有寄存器并执行iret指令。 Linux的系统调用机制 系统调用过程 使用系统调用接口库 包含头文件/usr/include/unistd.h 链接libc.a或libc.so中的系统调用接口函数 直接调用 使用/usr/include/linux/unistd.h文件中的系统调用宏定义 通常用于新增加的系统调用函数 Linux的系统调用机制 调用open()的过程 main() { …… open(...); …… } …… #define __NR_open 5 …… static inline _syscall3(int open, …) …… 用户程序: linux/unistd.h: ENTRY(sys_call_table) …… .long SYMBOL_NAME(sys_open) …… .long SYMBOL_NAME(sys_in_syscall) } 系统调用散转表: …… asmlinkage int sys_open(...) { …… } …… fs/open.c: 核心态 用户态 内核运行流程 操作系统内核结构 硬件 用户程序 设备驱动 程序 系统调用 中断/异常 处理程序 进程管理 内存管理 文件系统 设备管理 安全管理 核心态 用户态 其他底层 处理程序 内核运行流程 在中断/异常事件的驱动下工作 操作系统内核 设备中断 机间中断 时钟中断 系统调用 “陷入”异常 程序错误 异常 硬件故障 存储管理 异常 内核运行流程 操作系统启动过程 加电时,硬件自动执行ROM和磁盘上的系统加载程序。 内核的初始化程序 建立中断向量表、系统调用散转表等内核数据结构 启动运行用户态下的系统程序,如命令解释程序、桌面管理程序等。 命令解释程序和桌面管理程序 等待接受和执行用户的命令。 内核运行流程 内核执行write()功能函数: ①检查设备的使用状

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档