LINUX系统调用的exit实例分析.docVIP

  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文档。上传文档
查看更多
LINUX系统调用的exit实例分析.doc

LINUX系统调用及exit实例分析 计算机系962班 黄山松 9615158 序言: 计算机操作系统课程即将结束, 经过这一学期的学习,我对操作系统 , 尤其是Linux系统有了初步认识 ,虽然限于英语水平, 对外籍参考书较少涉及, 但也深有收获. 特别是分析系统调用的源码 , 揭开了系统核心的神密的面纱. Linux系统的结构 在清华大学出版的操作系统基础 (屠立德.屠祁 编著) 曾经见过这样一幅 Unix 结构图,我觉得对 Linux 同样适用, 经少量改动, 示意如下: 裸机           汇编子程序          全局变量 进程管理(包括对换进程) 存贮管理 文件管理 IO中断 设备管理与 163个系统调用命令 应用程序包子程序 Shell 命令解释程序 用户一 用户二 用户三 :::::::::::::::::::::::: 例图 Linux 系统的结构 Linux 系统 由内核和用户层组成. 内核是Linux 系统的心脏. 由汇编文件和C 语言文件构成. 汇编文件主要用于系统初启 . 中断处理等与硬件细节密切相关的部分, 此处本文不作详解 . 内核按以下功能分块: 存贮管理 进程管理 进程通信 中断 .陷阱 与系统调用 ( 此处陷阱仅狭义为异常 ) 输入输出管理 文件系统 由例图及上面的分类 , 我们至少知道了为什么要有系统调用 . 用最简单的话来说 , 系统调用就是硬件与软件的接口. 或者说 内核与外壳的接口. 实际上, Linux 的系统核心的所有程序都是作为进程的一部分而运行的,被包括在每一个进程的虚拟地址空间里, so 每一个进程都包含着两个部分: 系统程序部分和用户程序部分. 一进程在用户态运行时, 执行的是用户程序;若中断而转入核心态, 执行系统核心程序. 下面就让我们进入 系统调用的流程 大致流程如下: start_kernel ( ) 函数 ( i386/main.c ) trap_init ( ) 函数 ( kernel/trap.c ) 宏 set_grap_gate ( ) 函数 ( asm/system.h ) start_kernel ( ) 提供了各种 trap 入口 . 通过调用 trap_init ( ) 函数 设置, 而 trap_init ( ) 又通过调用 set_ system_gate( 0x80,system_call ) 实现具体操作. 在 Linux 系统调用中, 首先由0x80 号中断进入系统调用入口, 通过系统调用表保存系统调用服务函数的入口地址来实现,那好就从中断开始吧. 1.1关于中断 在386体系结构中,承认两类事件。 异常(exceptions) 中断(interrupts) 他们都会引起“ 上下文转换 ” ,(context switch) 同时建立一个过程 (procedure)或任务(task) 中断可以随时随地发生(包括在执行程序时)所以用来响应硬件信号。 而异常则由指令内部错误引起。 在80386中,又把中断分为两种: 可屏蔽中断(Miscible Interrupt) 如 IO 中断 等 不可屏蔽中断(NonMaskable Interrupt)如 机器内部故障 . 掉电中断 等 异常也分为两种: 处理器异常 如overflow 等 编程(调试)异常 如 trap 指令 或 INT 中断指令 等 0x80 号中断的设置 在Linux中,系统调用的执行是通过中断或异常的方式来进行的,他将 执行相应的机器代码指令,来产生中断或异

文档评论(0)

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

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

1亿VIP精品文档

相关文档