I/O体系结构 总线系统 PCI(Peripheral Component Interconnect) ISA(Industrial Standard Architecture) SBus IEEE1394 USB(Universal Serial Bus) SCSI(Small computer System Interface) 并口与串口(Parallel and Serial Interface) 与外设的交互 I/O端口:处理器管理了一个独立的虚拟地址空间,可用于管理所有I/O地址.…
网络命名空间 struct net { atomic_t count; /* To decided when the network * namespace should be freed. */ atomic_t use_count; /* To track references we * destroy on demand */ struct list_head list; /* list of network namespaces *///所有命名空间链接到net_namespace_li…
使用模块 依赖关系 modutils标准工具集中的depmod工具可用于计算系统的各个模块之间的依赖关系.每次系统启动时或新模块安装后,通常都会运行该程序.找到的依赖关系保存在一个列表中.默认情况下,写入文件/lib/modules/version/modules.dep.格式:首先是目标模块的二进制文件名称,接下来是为正确执行目标模块,包含了所需代码的所有模块的文件名. depmod分析所有可用的模块的二进制代码,对每个模块建立一个列表,包含所有已定义符号和未解决的引用,最后将各个模块的列表彼…
嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最终,当您用尽了之前所有的用户空间选项后,您将发现自己必须编写一个设备驱动程序来访问连接到设备上的硬件.字符驱动程序是最灵活的,应该能满足你90%的需求:网络驱动程序适用于使用网络接口,而块驱动程序用于大容量存储.编写内核驱动程序的任务很复杂,超出了本文的范围.最后有一些参考资料可以帮助你.概述一下与…
Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #include <linux/module.h> // 声明模块的许可证书 MODULE_LICENSE("Dual BSD/GPL"); static __init hello_init(void) { // KERN_ALERT表示的是日志级别 printk(KERN_ALERT &…
一.继续在vmware中安装centos6.9 本次安装是进行最小化安装,即没有图形化界面的安装,如果是新手,建议安装带图形化界面的centos, 具体参考Linux从入门到放弃.零基础入门Linux(第四篇):在虚拟机vmware中安装centos7.7 1.创建空白的虚拟机后界面 2.双击进入设置,点击CD/DVD设置,选择要安装的centos6.9的镜像文件位置 3.打开虚拟机电源,进行安装,进入虚拟机系统安装界面. 界面共有5个选项 Install or upgrade an exist…
如果是新手,建议安装带图形化界面的centos,这里以安装centos7.7的64位为例 一.下载系统镜像 镜像文件下载链接https://wiki.centos.org/Download 阿里云官网:https://mirrors.aliyun.com 现更新为:https://opsx.alibaba.com/mirror 清华软件镜像:https://mirrors.tuna.tsinghua.edu.cn/ 都可以, 下载centos7.7的64位版本镜像文件种子,然后用下载软件下载即可…
中断 中断类型 同步中断和异常.这些由CPU自身产生,针对当前执行的程序 异步中断.这是经典的中断类型,由外部设备产生,可能发生在任意时间. 在退出中断中,内核会检查下列事项. 调度器是否应该选择一个新进程代替旧的进程. 是否有信号必须投递到原进程. 数据结构 IRQ相关信息管理的关键点是一个全局数组,每个数组项对应一个IRQ编号.因为数组位置和中断号是相同的,很容易定位与特定的IRQ相关的数组项:IRQ 0在位置0,IRQ 15在位置15,等等.IRQ最终映射到哪个处理器中断,在这里是不相关的…
proc文件系统 proc文件系统是一种虚拟的文件系统,其信息不能从块设备读取.只有在读取文件内容时,才动态生成相应的信息. /proc的内容 内存管理 系统进程的特征数据 文件系统 设备驱动程序 系统总线 电源管理 终端 系统控制参数 特定于进程的数据 cmdline:用于启动进程的命令行(用0作为分隔符,而不是空格) environ表示为该程序设置的所有环境变量 maps以文本形式,列出了进程使用的所有库的内存映射. status包含了有关进程状态的一般信息(不仅提供了有关UID/GID及进…
内核为块设备提供了两种通用的缓存方案. 页缓存(page cache) 块缓存(buffer cache) 页缓存的结构 在页缓存中搜索一页所花费的时间必须最小化,以确保缓存失效的代价尽可能低廉,因为在缓存失效时,进行搜索的计算时间实际上被浪费了.因而,页缓存设计的一个关键的方面就是,对缓存的页进行高效的组织. 管理和查找缓存的页 对此用途而言,树数据结构是非常流行的,Linux也采用了这种结构来管理页缓存中包含的页,称为基数树(radix tree) 基数树也是不平衡的,换句话说,在树的不同分…