设备类型:在所有Unix系统中为了统一普通设备的操作所采用的分类

模块:Linux内核中用于按需加载和卸载目标码的机制

内核对象:内核数据结构中支持面对对象的简单操作,还支持维护对象之间的父子关系

17.1设备类型

  1.在Linux以及所有Unix系统中,设备被分为以下三种类型:

                            块设备;字符设备;网络设备;

    块设备通常缩写为blkdev,它是可寻址的,以块为单位,块大小随设备不同而不同;块设备支持重定位操作,也就是对数据的随机访问;例子有光盘、蓝光光碟等.

    字符设备通常缩写为cdev,它是不可寻址的,仅提供数据的流式访问,就是一个个字符;例子有键盘、鼠标、打印机,还有大部分伪设

    网络设备最常见的类型有时以以太网设备来称呼,它提供了对网络的访问,这是通过一个物理适配器和一种特定的协议进行的。它不是通过设备节点来访问的,而是通过套接字API这样的特殊接口来访问.

    *杂项设备通常简写为miscdev,实际上是一个简化的字符设备

    *伪设备是虚拟的,仅仅提供访问内核功能而已

17.2模块

  1.Linux内核是模块化组成的,它允许内核在运行时动态地向其中插入或从中删除代码(这些代码被一并组合在一个单独的二进制镜像中,即所谓的模块中)

  2.调用module_init()实际上不是真正的函数调用,而是一个宏调用,唯一的参数便是模块的初始化参数。模块的所有初始化参数必须符合int my_init(void);

  3.exit函数负责对Init函数以及在模块生命周期过程中所做的一切事情进行撤销工作,在退出函数返回后,模块就被卸载了;退出函数必须符合void my_exit(void);

  4.构建模块的两种方法:放在内核源代码树中;放在内核代码外

  5.安装模块(make_modules_install),通常需要以root权限运行

  6.Linux模块之间存在依赖性(依赖关系存放在lib/modules/version/modules.dep)

  7.载入模块最简单的方法是通过insmod命令,这是一个功能很有限的命令,它能做的就是请求内核载入指定的模块;加载模块的最佳机制是modprobe命令,不但会加载

指定的模块,而且会自动加载任何它所依赖的有关模块.(也可以从内核卸载模块,当然需要以root身份运行);

  8.管理配置选项、模块参数、导出符号表

17.3设备模型

  1.设备模型的核心部分就是kobject,它有struct_kobject结构体表示,定义于文件<linux/kobject.h>中

  2.ktype的存在是为了描述一族kobject所具有的普遍特性

  3.kset是kobject对象的集合体,有两个功能:第一,其中嵌入的kobject作为kobeject组的基类;第二,kset将相关的kobject集合在一起

  4.kobject通过函数kobject_init进行初始化,用kobject_creat()创建kobject

  5.kobject的主要功能之一是提供统一的引用计数系统

17.4sysfs

  1.sysfs文件系统就是处于内存中的虚拟文件系统,它为我们提供了kobject对象层次结构的视图;sysfs的根目录至少有十个,其中最重要的目录是devices,该目录模型导到用户空间.

  2.sysfs中添加和删除kobject

  3.添加文件:1.默认属性;创建新属性;删除新属性;sysfs约定

  4.内核事件层实现了内核到用户的消息通知系统

  

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. LOMA280保险原理读书笔记

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

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

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

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

    <3D Math Primer for Graphics and Game Development>读书笔记1 本文是<3D Math Primer for Graphics and ...

  10. 《More Effective C#》读书笔记

    <More Effective C#>这本书,大概是四年前看完的,但只整理了一部分读书笔记,后面有时间的话,会陆续补充的. More Effective C# :使用泛型 More Eff ...

随机推荐

  1. Django 项目连接数据库Mysql要安装mysqlclient驱动出错 : Failed building wheel for mysqlclient:

    1,如果直接用 CMD命令:pip install mysqlclient ,会安装出错. 2,解决问题,参考了这个博友的帖子:https://blog.csdn.net/qq_29784441/ar ...

  2. SVPullToRefresh问题解决

    今天在使用SVPullToRefresh时发现当数据太少时,刷新的时候同时进行了上拉和下拉刷新,现解决方法如下: 解决办法: 1.打开iUIScrollView+SVInfiniteScrolling ...

  3. Python3编写网络爬虫07-基本解析库pyquery的使用

    三.pyquery 简介:同样是一个强大的网页解析工具 它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便 安装: pip install pyquery 验证: im ...

  4. 在VUE应用中配置ESLint(代码检查)

    eslint配置方式 注释配置:使用js注释来直接嵌入ESLint配置信息到一个文件里 配置文件:使用一个js文件,JSON或者YAML文件来给整个目录和它的子目录指定配置信息.这些配置可以写在一个文 ...

  5. Spring AOP失效之谜

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 什么是AOP1 AOP(Aspect Oriented Programming),即面向切面编 ...

  6. 「JoyOI1080」N皇后

    这是菜鸡的我第一次写这类题目: 题意:就是在N*N的棋盘上,每一行,每一列,所有的对角线都只能有一个棋子. 先分析:假若N=4: 则为其中的一种答案.要输出左右的解,肯定要枚举出所有的解.那么非常自然 ...

  7. excel中mid函数的用法

    函数名称:MID主要功能:从一个文本字符串的指定位置开始,截取指定数目的字符.使用格式:MID(text,start_num,num_chars)参数说明:text代表一个文本字符串:start_nu ...

  8. ethereum/EIPs-161 State trie clearing

    EIP 161: State trie clearing - makes it possible to remove a large number of empty accounts that wer ...

  9. solidity fallback函数

    什么是fallback函数: 出处:http://me.tryblockchain.org/blockchain-solidity-fallback.html 回退函数是合约里的特殊函数,没有名字,不 ...

  10. day14 Python函数之可变长参数

    函数参数 1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元.因此,形参只在函数内部有效.函数调用结束返回主调用函数后则不能再使用该形参变量 2.实参可以是常量.变量.表 ...