2017-2018-1 20179209《Linux内核原理与分析》第十周作业
设备与模块
设备分类
块设备
块设备可以以块为单位寻址,块大小随设备不同而不同;设备通常支持重定位操作,也就是对数据的随机访问。块设备的例子有外存,光盘等。
字符设备
字符设备不可寻址,仅供数据的流式访问,就是一个个字符,或是一个个字节。字符设备的例子有键盘、鼠标、打印机等。
网络设备
网络设备最常见的类型有时也以以太网设备来称呼,它提供了对网络的访问,这是通过一个物理适配器和一种特定的协议进行的。网络设备打破了Unix的“所有东西都是文件”的设计原则,它不是通过设备节点来访问,而是通过套接字API这样的特殊接口来访问。
模块
- Linux是“单块内核”(整个系统内核都运行于一个单独的保护域中)的操作系统。但是Linux内核是模块化组成的,它允许内核在运行时动态地向其中或从中删除代码。这些代码(包括相关的子例程、数据、函数入口或出口)被一并组合在一个单独的二进制镜像中,即所谓的可装载内核模块中,或简称为模块。支持模块的好处是基本内核镜像可以尽可能的小,因为可选功能和驱动程序可以利用模块形式再提供。
- 模块初始化函数必须符合
int my_init(void)的形式。static可有可无,一般情况下,初始化函数不会被外部函数直接调用,所以可以用static标记;int函数会返回一个int型数值(0或非0)。init函数的主要作用有注册资源、初始化硬件、分配数据结构等。 - 模块初始化函数是模块入口点,exit函数是模块的出口函数,它有module_exit()例程注册到系统,在模块从内存卸载时调用。退出函数的作用是清理资源,保证硬件的一致性。它必须符合
void my_exit(void)的形式。同样它也可以标记为static。
构建模块
放在内核源代码树中
这个方式会把你所编写的模块彻底放入linux内核,使之成为内核源代码树的一部分。不同功能的模块置于不同的位置,设备驱动程序存放于内核源码树根目录下/drivers的子目录下。
放在内核代码外
除了直接将模块添加到内核源码树这种一劳永逸的做法,还可以放在内核代码之外,把模块加载到在自己的源代码树目录下。这种方式是将模块源代码置于home目录下的某个地方,而前一种方式是直接将源代码存于/usr/src/linux下!
设备模型
kobject、ktype、kset之间的关系:kobject引入了诸如引用计数、父子关系和对象名称等基本对象道具,并且是一个统一的方式提供这些功能,它与ktype对象关联,ktype有struct kobj_type结构体表示,在kobject中,ktype字段指向该对象。kobject又归入了称作kset的集和,kset集和由struct kset结构体表示。

虚拟文件系统(sysfs)
sysfs为用户提供了kobject对象层次结构的试图。帮助用户能以一个简单文件系统的方式来观察系统中各种设备的拓扑结构。借助属性结构对象,kobject可以用导出文件的方式,将内核变量提供给用户读取写入。
可移植性
Linux之所以支持很多体系结构是因为在arch目录下存在对不同体系结构所特有的代码目录。

2017-2018-1 20179209《Linux内核原理与分析》第十周作业的更多相关文章
- 20169212《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...
- 20169210《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业
2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...
- 2017-2018-1 20179215《Linux内核原理与分析》第二周作业
20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.c ...
- 2019-2020-1 20199329《Linux内核原理与分析》第九周作业
<Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解 ...
- 2019-2020-1 20209313《Linux内核原理与分析》第二周作业
2019-2020-1 20209313<Linux内核原理与分析>第二周作业 零.总结 阐明自己对"计算机是如何工作的"理解. 一.myod 步骤 复习c文件处理内容 ...
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 《Linux内核原理与分析》第一周作业 20189210
实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件, ...
- 2018-2019-1 20189221《Linux内核原理与分析》第二周作业
读书报告 <庖丁解牛Linux内核分析> 第 1 章 计算工作原理 1.1 存储程序计算机工作模型 1.2 x86-32汇编基础 1.3汇编一个简单的C语言程序并分析其汇编指令执行过程 因 ...
随机推荐
- [React] Use react-rewards to add microinteractions to React app to reward users for some actions
It's important that our users enjoy using our application or website. One way we can make it happen ...
- Shell 同时读取多个文件
现有两个文件 1.txt 2.txt,内容分别如下: [root@SHO-XXW-- readmulti]# .txt [root@SHO-XXW-- readmulti]# .txt a b c ...
- python pip install error
使用pip install的时候报错 解决方法是使用如下的命令进行安装 python -m pip install sqlalchemy 升级pip的命令python2 -m pip install ...
- Vue 事件修饰符 阻止默认事件
阻止默认事件: <a v-on:click.prevent="doThat"></a>
- 使用ByteRef加速String类型DocValues的载入
眼下商户索引DocValues很大,warmup时花费70-80秒(在beta环境),有62秒在载入DocValues,发现当中有54秒时间在载入string docvalues,string doc ...
- Odoo many2many command
CREATE = lambda values: (0, False, values) // (0,False, Values) //创建 UPDATE = lambda id, values: (1, ...
- Unity3d修炼之路:游戏开发中,3d数学知识的练习【1】(不断更新.......)
#pragma strict public var m_pA : Vector3 = new Vector3(2.0f, 4.0f, 0.0f); public var m_pB : Vector3 ...
- 【Excle数据透视表】如何让字段标题不显示“求和项”
我们做好了数据透视表之后是下面这个样子的 这个样子一点都不好看,那么如何去掉"求和项"呢? 步骤 方法① 单击B3单元格→编辑区域输入"数量 "→Enter(也 ...
- eclipse debug调试java程序的九个技巧
九个技巧: 逻辑结构 条件debug 异常断点 单步过滤 跳到帧 Inspect expressions display 远程debug 最早开始用eclipse的debug的时候,只会F5 F6 F ...
- MapReduce小文件处理之CombineFileInputFormat实现
在MapReduce使用过程中.一般会遇到输入文件特别小(几百KB.几十MB).而Hadoop默认会为每一个文件向yarn申请一个container启动map,container的启动关闭是很耗时的. ...