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语言程序并分析其汇编指令执行过程 因 ...
随机推荐
- 【转】Linux 中清空或删除大文件内容的五种方法(truncate 命令清空文件)
原文: http://www.jb51.net/article/100462.htm truncate -s 0 access.log -------------------------------- ...
- 一个对比各种开源库的网站 libhunt
https://www.libhunt.com/ https://github.com/LibHunt/awesome-javascript
- SharePoint 2013 表单认证使用ASP.Net配置工具加入用户
前 言 上面一篇博客,我们了解到怎样为SharePoint 2013配置表单身份认证.可是加入用户是一个麻烦事儿:事实上,我们还能够用Asp.Net的配置工具,为SharePoint 2013加入表单 ...
- poj 2506 Tiling(java解法)
题目链接:id=2506">http://poj.org/problem?id=2506 本题用的java解的.由于涉及到大数问题,假设对java中的大数操作不熟悉请点这儿:链接 思路 ...
- PHP奇偶行不同显示不同的背景
有时数据成表格状 为了更加美观会将奇偶行显示不同的背景色. 实现代码: <foreach name="list" item="v" key='k'> ...
- C连接MySql
连接数据库connect.c #include <stdio.h> #include <mysql/mysql.h> int main() { //MYSQL句柄 MYSQL ...
- 【BIEE】09_BIEE控制台乱码问题解决
BIEE安装完成后,点击[启动BI服务] 接着从弹出窗口可以发现,全部汉字都是乱码 出现这种情况,想看一下BIEE启动情况是很费劲的,接着我们处理一下这个问题 1.从路径D:\obiee\user_p ...
- JavaScript Array pop(),shift()函数
pop() 删除数组的最后一个元素并返回删除的元素 shift() 删除并返回数组的第一个元素
- 通过Cloudera Manager安装CDH 5.6
CDH的简介 大家常常说CDH.其全称是:Cloudera's Distribution Including Apache Hadoop.简单的说是Cloudera公司的Hadoop平台,是在Apac ...
- tcpdump command
工作中一直在用tcpdump,感觉非常方便,今天心血来潮百度了一下tcpdump的用法,才发现原来还有这么多强大的功能自己都不知道,那叫一个汗啊. 以此文作为备份,记录一些新知道的用法,各位网友谁有新 ...