设备类型:在所有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. javascript获取DOM对象三种方法

    1. getElementByID() getElementByID()方法可返回对拥有指定ID的第一个对象的引用 2. getElementByTagName() getElementByTagNa ...

  2. 4.1Python数据处理篇之Matplotlib系列(一)---初识Matplotlib

    目录 目录 前言 (一)matplotlib的介绍 (二)画一个简单的画布 ==1.源代码== ==2.展示效果== (三)画布按键的功能介绍 ==1.对于画布功能键的排序== ==(1)主页== = ...

  3. NGINX 安装于配置

    just a simple example, for more information -> http://nginx.org/en/docs/.1.vi /etc/yum.repos.d/ng ...

  4. github拓展,以及ModelForm的使用

    github - git  init/add/commit/reset/log/status/stash pop/checkout/branch    新入职到公司,地址:   git clone h ...

  5. centos7下安装docker(12.5容器在单个host上的网络总结)

    单个host上的容器的网络:通过本章的学习,我们知道docker默认有三种网络,可以通过docker network ls查看: none:封闭的网络,通过--network=none来指定: hos ...

  6. PHP开发小技巧①①—php实现手机号码显示部分

    从个人信息保护性的角度来讲,我们在开发过程中总会想办法去保护用户的一些个人信息.就如本篇博文所讲,我们有时会将用户的手机号码只显示出部分,这是很多网站都有做的功能.这个功能实现起来也是特别的简单,只需 ...

  7. JS进阶之---函数,立即执行函数

    一.函数 函数声明.函数表达式.匿名函数 函数声明:使用function关键字声明一个函数,再指定一个函数名,叫函数声明.function name () { … } 函数表达式:使用function ...

  8. 从头到尾使用Geth的说明-2-cli可用命令-有2个地方标红,之后查查源码后看看能不能解决

    geth - the go-ethereum command line interface 以太坊命令行接口 格式: geth [options] command [command options] ...

  9. 通过JSP网页连接MySQL数据库,从MySQL数据库中读出一张表并显示在JSP网页中

    1.安装所需软件 ①安装java和tomcat,建立JSP网页最基础的软件②安装MySQL数据库(下载地址:https://www.mysql.com/)③安装Navicat Premium来查看数据 ...

  10. Spring Security 重定向原理分析

    本文基于 spring-security-core-5.1.1 和 tomcat-embed-core-9.0.12. 一个用户访问使用表单认证的 Web 应用时,后端的处理流程大致如下: 1.用户访 ...