Chinaunix首页 | 论坛 | 博客
  • 博客访问: 252197
  • 博文数量: 38
  • 博客积分: 2093
  • 博客等级: 大尉
  • 技术积分: 432
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-01 10:29
文章分类

全部博文(38)

文章存档

2011年(10)

2010年(28)

我的朋友

分类: LINUX

2010-09-16 14:45:47

转】read 系统调用剖析
read 系统调用剖析
级别: 初级
赵 健博
(
[email=zhaojianbo@ncic.ac.cn?subject=read 系统调用剖析]zhaojianbo@ncic.ac.cn[/email]
), 硕士, 中国科学院计算技术研究所
大部分程序员可能会有这样的疑问:当在程序中调用库函数 read 时,这个请求是经过哪些处理最终到达磁盘的呢,数据又是怎么被拷贝到用户缓存区的呢?本文介绍了从 read 系统调用发出到结束处理的全过程。该过程包括两个部分:用户空间的处理、核心空间的处理。用户空间处理部分是系统调用从用户态切到核心态的过程。核心空间处理部分则是 read 系统调用在 linux 内核中处理的整个过程。
Read 系统调用在用户空间中的处理过程
Linux 系统调用(SCI,system call interface)的实现机制实际上是一个多路汇聚以及分解的过程,该汇聚点就是 0x80 中断这个入口点(X86 系统结构)。也就是说,所有系统调用都从用户空间中汇聚到 0x80 中断点,同时保存具体的系统调用号。当 0x80 中断处理程序运行时,将根据系统调用号对不同的系统调用分别处理(调用不同的内核函数处理)。系统调用的更多内容,请参见参考资料。
Read 系统调用也不例外,当调用发生时,库函数在保存 read 系统调用号以及参数后,陷入 0x80 中断。这时库函数工作结束。Read 系统调用在用户空间中的处理也就完成了。

管理员在2009年8月13日编辑了该文章文章。
-->
阅读(1752) | 评论(0) | 转发(0) |
0

上一篇:open系统调用

下一篇:linux内核之文件系统

给主人留下些什么吧!~~