设备类型:在所有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. Linux 小知识翻译 - 「单CD 的linux」

    这次聊聊「单CD Linux」. 所谓「单CD Linux」,就是不用安装,从CD-ROM启动后就可以使用的Linux. 有名的KNOPPIX就是「单CD Linux」,此外还有Puppy Linux ...

  2. February 8th, 2018 Week 6th Thursday

    When you fall in love, friends, let yourself fall. 当你坠入爱河,我的朋友,你就放手去爱吧. To love someone is like movi ...

  3. Beta阶段总结博客(麻瓜制造者)

    Beta冲刺过程中各个成员的贡献百分比: 成员 贡献值 邓弘立 15% 符天愉 14% 江郑 14% 刘双玉 14% 肖小强 13% 李佳铭 11% 汪志彬 11% 伍杰麟 8% 项目的发布说明 本版 ...

  4. Nginx使用教程(一):Nginx编译参数详解

    从源代码编译应用程序时通常有三个步骤:配置,编译和安装. 配置步骤允许您选择一些在程序编译后无法编辑的选项,因为它对程序二进制文件有直接影响. 因此,这是一个非常重要的阶段,你需要仔细选择,如果你想避 ...

  5. Nginx使用教程(一):下载并编译安装Nginx

    安装依赖 <br\>我们已经选择下载程序源代码进行手动编译,而不是使用软件包管理器(如Yum,Aptitude或Yast)进行安装. 这个选择有两个原因. 首先,软件包可能不包含在您的Li ...

  6. kafka libjvm 报错

    kafka集群 kafka-0 出现报错信息 # # A fatal error has been detected by the Java Runtime Environment: # # SIGS ...

  7. mysql-修改字段类型和修改字段名称

    文章转自:https://blog.csdn.net/u010002184/article/details/79354136 mysql修改字段类型: --能修改字段类型.类型长度.默认值.注释 -- ...

  8. 深入理解Java中的final关键字(转)

    文章转自http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量, ...

  9. vscode中iframe的使用

    vscode中iframe由于某种原因不支持本地页面,比如<iframe src ="index.html" width="300" height=&qu ...

  10. node学习之cookie和session

    c什么是cookie Cookie设计的初衷是 维持浏览器和服务端的状态.http是无状态的,服务端不能跟踪客户端的状态. 浏览器第一次向服务器发送请求,服务器会返回一个cookie给客户端浏览器,浏 ...