系统调用

5.1与内核通信

  1.系统调用在用户空间进程和硬件设备之间添加一个中间层。作用有三个:它为用户空间提供了一种硬件的抽象接口;系统调用保证了系统的稳定和安全;系统调用是用户空间访问内核的唯一手段;

  **除异常和陷入外,它们是内核唯一的合法入口;

5.2API、POSIX、和C库

  1.应用程序通过在用户空间实现的应用编程接口(API)而不是直接通过系统调用来编程;内核只跟系统调用打交道;

5.3系统调用

  1.系统调用在用户空间和内核空间有不同的返回值类型,在用户空间为int,在内核空间为long

  2.系统调用号sys_ni_syscall(),除了返回,这个错误号就是专门针对无效的系统调用而设的

  3.系统调用表中的所有注册过的系统调用的列表,存储在sys_call_table中,都明确的定义了这个表,在x86-64中,它定义于arch/i386/kernel/syscall 64.c

  4.系统调用的性能:linux上下文切换时间是一个重要的原因,进出内核都被优化的简洁高效;另一个原因是系统调用处理程序和每个系统调用本身也很简洁

5.4系统调用处理程序

  1.通知内核的机制是靠软中断实现的:通过引发一个异常来促使系统切换到内核态去执行异常处理程序(也就是系统调用处理程序),中断号是128,通过int $0x80指令触发该中断

  2.系统调用号是通过eax寄存器传递给内核的

  3.参数传递:把这些参数也存放在寄存器里;用单独的寄存器存放指向所有这些参数在用户空间地址的指针

5.5系统调用的实现

  1.实现系统调用:注意可移植性和健壮性

  2.参数验证:与文件I/O相关的系统调用必须检查文件描述符是否有效;与进程相关的函数必须检查提供的PID是否有效;还有就是检查用户提供的指针是否有效(接收指针之前必须保证:指针指向的内存区域属于用户空间;指针指向的内存区域在进程的地址空间里;进程决不能绕过内存访问控制);

  3.copy_to_users和copy_from_users()都有可能引起阻塞;进程就会休眠,直到缺页处理程序将该页从硬盘重新换回物理内存

5.6系统调用上下文

  1.内核在执行系统调用的时候处于进程上下文,current指针指向当前任务(也就是引发系统调用的那个进程);在进程上下文中,内核可以休眠

  2.绑定一个系统调用最后步骤:首先,在系统调用表的最后加入一个表项;再者,系统调用号都必须定义于<asm/unitsd.h>;系统调用编译成内核映象

  3.从用户空间访问系统调用

  

读书笔记(chapter5)的更多相关文章

  1. 读书笔记-Coding faster(英文版)

    读书笔记-Coding faster(英文版) Getting More Productive with Microsoft visual Studio Author: Zain Naboulsi S ...

  2. 读书笔记-实用单元测试(英文版) Pragmatic Unit Testing in C# with NUnit

    读书笔记-实用单元测试(英文版) Pragmatic Unit Testing in C# with NUnit Author: Andrew Hunt ,David Thomas with Matt ...

  3. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  4. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  5. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  6. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  7. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  8. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

  9. LOMA280保险原理读书笔记

    LOMA是国际金融保险管理学院(Life Office Management Association)的英文简称.国际金融保险管理学院是一个保险和金融服务机构的国际组织,它的创建目的是为了促进信息交流 ...

  10. 《3D Math Primer for Graphics and Game Development》读书笔记2

    <3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...

随机推荐

  1. 团队作业——Alpha冲刺 6/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:编辑界面完成标题栏的开发,以及与已经完成gallery开发的同学,商讨我负责的界面中,图片滑动的具体措施. 明日任务:除了图像识别内容嵌入 ...

  2. lavarel模板引擎blade学习

    blade 模板学习 特点 主要的两个优点是:模板继承和区块 继承页面布局 布局文件(layout.php) + 详情文件 (page.php) 的组合,即一般到具体的组合.在blade文件之中的体现 ...

  3. Drupal使用

    首先到https://www.drupal.org/download去下载Drupal 更好的办法是使用composer,这个先放着,了解后再添加 然后将解压后的文件夹整个复制到设置的部署路径下,因为 ...

  4. RMAN删除备份

    删除备份--DELETE命令 用于删除RMAN备份记录及相应的物理文件.当使用RMAN执行备份操作时,会在RMAN资料库(RMAN Repository)中生成RMAN备份记录,默认情况下RMAN备份 ...

  5. Spring framework3.2整合hibernate4.1报错:No Session found for current thread

    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransact ...

  6. WorldWind源码剖析系列:下载队列类DownloadQueue

    下载队列类DownloadQueue代表具有优先级的下载队列,该类的存储下载请求的数组链表专门按一定的优先级来存储下载请求的.该类的类图如下. 下载队列类DownloadQueue各个字段的含义说明如 ...

  7. scapy学习笔记(4)简单的sniffing 嗅探

    转载请注明:@小五义:http://www.cnblogs/xiaowuyi 利用sniff命令进行简单的嗅探,可以抓到一些简单的包.当不指定接口时,将对每一个接口进行嗅探,当指定接口时,仅对该接口进 ...

  8. C语言程序设计I—第十三周教学

    第十二周教学总结(26/11-01/12) 第十三周的教学总结在朋友圈发布了,没有及时在此更新,为了保持教学总结的完整性,现补齐. 今日学院有重大外事活动,所有老师停课参加并且不需要补课,但为了保证我 ...

  9. jqgrid 谈谈给表格设置列头事件、行事件、内容事件

    往往我们需要给显示的jqgrid表格赋予事件功能,比如:列头事件.行事件.内容事件.需要的效果可能如下: 如你所见,以上的超链接和按钮均是绑定的事件.那分别如何实现这些事件的绑定呢? 一.行事件 行事 ...

  10. mysql show profiles 使用分析sql 性能

    Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后. 查看一下我的数据库版本 MySQL> Select  version(); +-------- ...