5.1 内核通信

系统调用在用户空间和硬件设备之间添加了一个中间层.

该层主要作用:

1.为用户空间提供了一种硬件的抽象接口.

2.保证了系统的稳定和安全.

3.每个进程都运行在虚拟系统中.

在Linux中,系统调用是用户空间访问内核的唯一手段;除异常和陷入外,它们是内核唯一的合法入口。

5.2 API、POSIX和C库

一般情况下,应用程序通过在用户空间实现的应用编程接口,而不是直接通过系统调用来编程。

一个API定义了一组应用程序使用的编程接口。

1.在Unix世界中,最流行的应用编程接口是基于POSIX标准的。

POSIX是由IEEE的一组标准组成。

2.C库实现了Unix系统的主要API,包括标准C库函数和系统调用接口。所有的C程序都可以使用C库,而其他语言也可以把他们封装起来使用。

3.Unix接口设计中,“提供机制而不是策略”,Unix系统调用抽象出了完成某种确定目的的函数。

5.3系统调用

要访问系统调用,通常通过C库中定义的函数调用来进行。它们通常都需要定义零个、一个或几个参数(输入)而且可能产生一些副作用。

系统调用还会通过一个long类型的返回值来表示成功或者错误。

通常,也不绝对,用一个负的返回值来表明错误。返回一个0值通常表明成功。

系统调用在出现错误的时候C库会把错误码写入error全局变量。通过调用perror()库函数,可以把该量编译成用户可以理解的错误字符串。

如何定义系统调用?

1.限定词。

2.函数返回。注意返回值类型。

3.系统调用在内核中被定义时有命名规则。Get_pid()为sys_getpid()。

5.3.1 系统调用号

指明要执行哪个系统调用,进程不会提及系统调用的名称。

一旦分配就不能再有变更,否则编译好的程序就会崩溃。

如果一个系统调用被删除,它所占用的系统调用号也不允许被回收利用。

Sys_ni_syscall():除了返回-ENOSYS外不做任何其他工作,这个错误号专门针对无效的系统调用而设的。

5.3.2 系统调用的性能

为什么Linux系统调用执行快?

1.Linux的上下文切换时间很短。

2.系统调用处理程序和每个系统调用本身也非常简洁。

5.4 系统调用处理程序

用户空间的程序无法直接执行内核代码。

软中断:应用程序通知系统的机制。通过引发一个异常来促使系统切换到内核态去执行异常处理程序。

5.4.1 指定恰当的系统调用

X86中,系统调用号是通过eax寄存器传递给内核的。

5.4.2 参数传递

在x86-32系统上,ebx\ecx\edx\esi和edi按照顺序存放前五个参数。

给用户空间的返回值存放在eax寄存器中。

5.5 系统调用的实现

5.5.2 参数验证

在接受一个用户空间的指针之前,内核必须保证:

内核无论何时都不能轻率的接受来自用户空间的指针!

5.6 系统调用上下文

在进程上下文中,内核可以休眠,也可以被抢占。

【读书笔记】Linux内核设计与实现(第五章)的更多相关文章

  1. Linux内核设计与实现 第五章

    1. 什么是系统调用 系统调用就是用户程序和硬件设备之间的桥梁. 用户程序在需要的时候,通过系统调用来使用硬件设备. 系统调用的存在意义: 1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备 ...

  2. linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍

    <linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功 ...

  3. 2013337朱荟潼 Linux第一章读书笔记——Linux内核简介

    一.Unix历史 二.Linux足迹 类Linux系统.非商业化产品.用途广泛 三.操作系统和Linux内核简介 1.操作系统 (1)是指在整个最基本功能系统中负责完成最基本功能和系统管理的部分. ( ...

  4. Linux内核设计与实现 第十七章

    1. 设备类型 linux中主要由3种类型的设备,分别是: 设备类型 代表设备 特点 访问方式 块设备 硬盘,光盘 随机访问设备中的内容 一般都是把设备挂载为文件系统后再访问 字符设备 键盘,打印机 ...

  5. 《linux内核设计与实现》第一章

    第一章Linux内核简介 一.unix 1.Unix的历史 Unix是现存操作系统中最强大和最优秀的系统. ——1969年由Ken Thompson和Dernis Ritchie的灵感点亮的产物. — ...

  6. Linux内核设计与实现 第三章

    1. 进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作都是由内核来实现的. Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的 ...

  7. linux及安全《Linux内核设计与实现》第二章——20135227黄晓妍

    第二章:从内核出发 2.1获取源代码 2.1.1使用git Git:内核开发者们用来管理Linux内核源代码的控制系统. 我们使用git来下载和管理Linux源代码. 2.1.2安装内核源代码(如果使 ...

  8. Linux内核设计与实现第五周读书笔记

    第十八章 调试 18.1准备开始 需要的只是: 一个确定的bug.大部分bug通常都不是行为可靠而且定义明确的. 一个藏匿bug的内核版本. 相关的内核代码的知识和运气. 18.2内核中的bug 内核 ...

  9. 【读书笔记】Linux内核设计与实现(第一章&第二章)

    http://pan.baidu.com/s/1hqYAZNQ OneNote做的笔记没法儿带着格式一起导进来.所以上传到百度云,麻烦老师下载一下了. 下次不再用OneNote.

  10. Linux内核设计与实现 第四章

    1. 什么是调度 现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程). 这个管理程序就是调度程序,功能: 决定哪些进 ...

随机推荐

  1. 【CSS】Sass理解

    原文在 https://github.com/zhongxia245/blog , 欢迎 star! Sass理解 时间:2016-09-24 22:56:12 作者:zhongxia 这里就不讲解S ...

  2. 原生JS简单的无缝自动轮播

    最近在不断的加强巩固js.在学习jq和vue之后发现很多东西其实都是不明所以,有些底层的东西自己不懂,到头来也只是一昧的使用,一直在用别人的东西,对自己的成长帮助也不大. 万丈高楼平地起,基础打扎实了 ...

  3. Vue那些事儿之用visual stuido code编写vue报的错误Elements in iteration expect to have 'v-bind:key' directives.

    当用vsc打开我们的vue代码时,在其他编辑器里面本来没有错误,到这个编辑器里面 v-for就出毛病了.如下图所示, 那是因为我们打开了对vue进行Eslint的检查. 搜索vetur.validat ...

  4. Apache Commons Fileupload 反序列化漏洞分析

    下面是k8脚本. # -*- coding: utf-8 -*- # Oracle Weblogic Server (10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3) D ...

  5. asdm不能登录问题;浏览器必须是ie,不能是chrome或者firefox;java的版本,尤其是安全等级和例外需要调整

    asdm不能登录问题:浏览器必须是ie,不能是chrome或者firefox;java的版本,尤其是安全等级和例外需要调整

  6. OpenCV——ORB特征检测与匹配

    原文链接:https://mp.weixin.qq.com/s/S4b1OGjRWX1kktefyHAo8A #include <opencv2/opencv.hpp> #include ...

  7. centos6.4安装 zabbix agent

    1.防火墙设置 允许zabbix-agent的10050端口通过  iptables -A INPUT -p tcp --dport 10050 -j ACCEPT  2.安装zabbix agent ...

  8. DD-WRT

    定时任务: 每日凌晨1點關, 星期1-, 上午7點半開, 8點半關, 晚上9點開 星期6/日, 上午開10點開 administration -> management -> enable ...

  9. cache-fusion笔记

    GRD  (global resource directory)保存着所有实例中资源的分布情况 GCS  (global cache service)具体执行cache fusion 工作的服务,对应 ...

  10. Bagging(R语言实现)—包外错误率,多样性测度

    1.      Bagging Bagging即套袋法,其算法过程如下: 从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次 ...