读书笔记(chapter17)
设备类型:在所有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)的更多相关文章
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
- LOMA280保险原理读书笔记
LOMA是国际金融保险管理学院(Life Office Management Association)的英文简称.国际金融保险管理学院是一个保险和金融服务机构的国际组织,它的创建目的是为了促进信息交流 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记2
<3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记1
<3D Math Primer for Graphics and Game Development>读书笔记1 本文是<3D Math Primer for Graphics and ...
- 《More Effective C#》读书笔记
<More Effective C#>这本书,大概是四年前看完的,但只整理了一部分读书笔记,后面有时间的话,会陆续补充的. More Effective C# :使用泛型 More Eff ...
随机推荐
- javascript获取DOM对象三种方法
1. getElementByID() getElementByID()方法可返回对拥有指定ID的第一个对象的引用 2. getElementByTagName() getElementByTagNa ...
- 4.1Python数据处理篇之Matplotlib系列(一)---初识Matplotlib
目录 目录 前言 (一)matplotlib的介绍 (二)画一个简单的画布 ==1.源代码== ==2.展示效果== (三)画布按键的功能介绍 ==1.对于画布功能键的排序== ==(1)主页== = ...
- NGINX 安装于配置
just a simple example, for more information -> http://nginx.org/en/docs/.1.vi /etc/yum.repos.d/ng ...
- github拓展,以及ModelForm的使用
github - git init/add/commit/reset/log/status/stash pop/checkout/branch 新入职到公司,地址: git clone h ...
- centos7下安装docker(12.5容器在单个host上的网络总结)
单个host上的容器的网络:通过本章的学习,我们知道docker默认有三种网络,可以通过docker network ls查看: none:封闭的网络,通过--network=none来指定: hos ...
- PHP开发小技巧①①—php实现手机号码显示部分
从个人信息保护性的角度来讲,我们在开发过程中总会想办法去保护用户的一些个人信息.就如本篇博文所讲,我们有时会将用户的手机号码只显示出部分,这是很多网站都有做的功能.这个功能实现起来也是特别的简单,只需 ...
- JS进阶之---函数,立即执行函数
一.函数 函数声明.函数表达式.匿名函数 函数声明:使用function关键字声明一个函数,再指定一个函数名,叫函数声明.function name () { … } 函数表达式:使用function ...
- 从头到尾使用Geth的说明-2-cli可用命令-有2个地方标红,之后查查源码后看看能不能解决
geth - the go-ethereum command line interface 以太坊命令行接口 格式: geth [options] command [command options] ...
- 通过JSP网页连接MySQL数据库,从MySQL数据库中读出一张表并显示在JSP网页中
1.安装所需软件 ①安装java和tomcat,建立JSP网页最基础的软件②安装MySQL数据库(下载地址:https://www.mysql.com/)③安装Navicat Premium来查看数据 ...
- Spring Security 重定向原理分析
本文基于 spring-security-core-5.1.1 和 tomcat-embed-core-9.0.12. 一个用户访问使用表单认证的 Web 应用时,后端的处理流程大致如下: 1.用户访 ...