相关内容
Linux内核设备驱动之Linux内核模块加载机制笔记整理
模块参数在驱动定义变量 static int num = 0; 当加载模块不指定num的值时则为0module_param(变量名, 类型, 权限); 类型: byte, int, uint, short, ushort...text data ... 3. sections table4. symbol table2. export_symbol(函数名变量的地址)把函数或者变量的地址导出到内核的符号表中export_symbol_gpl(函数名...

Linux的内核和模块
linux内核的作用? 管理内存提高效率,管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。 调度任务某些机制执行从用户空间到内核的函数调用。 管理进程内核通过 sci 提供了一个应用程序接口(api)来创建一个新进程,停止进程(kill、exit),并在它们之间进行通信和同步。 网络功能支持大量网络协议,包括...

linux内核设计与实现
线程在linux中的实现4.1 liunx线程概述一组线程共享进程内的内存地址空间,打开的文件和其他资源线程机制支持并发程序设计技术,多处理器上保证真正的并行处理linux实现线程的机制非常独特,从内核角度看,没有线程的概念linux把所有线程都当做进程来实现,内核没有特别的调度算法或数据结构来表征线程,被视为一个...
Linux内核同步机制之completion
linux内核同步机制之completion 内核编程中常见的一种模式是,在当前线程之外初始化某个活动,然后等待该活动的结束。 这个活动可能是,创建一个新的内核线程或者新的用户空间进程、对一个已有进程的某个请求,或者某种类型的硬件动作,等等。 在这种情况下,我们可以使用信号量来同步这两个任务。 然而,内核中提供...
Linux内核管理
(2)内核设计流派 1)单内核设计:把所有功能集成于同一个程序,如linux系统,但充分借鉴了微内核体系的设计的优点,为内核引入了模块化机制。 2)微内核设计:每种功能使用一个单独的子系统实现,如windows系统solaris系统。 (3)linux内核特点 1)支持模块化:.ko (kernel object) 2)支持模块运行时动态装载或 ...
LINUX内核
网络相关代码,实现各种网络相关协议14)scripts:配置内核中脚本文件15)security:主要是selinux模块16)sound:alsa,oss音频中设备的核心代码和常用设备驱动17)usr:实现了用于打包和压缩的cpio等2.linux的内核组成部分2.1 linux主要用进程调度,虚拟文件系统,内存管理,网络接口,进程间通信5个子系统构成1)进程...

Linux内核概述
文章目录linux内核简介操作系统与内核简介linux内核与传统unix内核的比较linux内核版本在什么地方找源码内核没有内存保护机制同步和并发linux内核简介本专栏,用于记录我对linux内核源码的学习,就像stl源码的那个专栏一样,我知道阅读源码对我的意义。 愿者上钩咯,共同进步。 linux克隆了unix,但linux不是unix。 ...

Linux内核同步机制之(二):Per-CPU变量
作者:郭健出处:wowotech前文:linux内核同步机制之(一):原子操作一、源由:为何引入per-cpu变量? 1、lock bus带来的性能问题在arm平台上,armv6之前,swp和swpb指令被用来支持对shared memory的访问:? rn中保存了swp指令要操作的内存地址,通过该指令可以将rn指定的内存数据加载到rt寄存器,同时将rt2寄存器中...

Linux 内核系统架构
即使看了所有的linux 内核文章,估计也还不是很明白,这时候,还是需要fucking the code.----28年前(1991年8月26日)linus公开linux的代码,开启了一个伟大的时代。 这篇文章从进程调度,内存管理,设备驱动,文件系统,网络等方面讲解linux内核系统架构。 linux的系统架构是一个经典的设计,它优秀的分层和模块化...

Linux内核源码分析方法
这种按照具体需要分析内核代码的方式,为快速进入linux内核的世界提供了可能。 通过这种方式,不断的对内核的其他模块分析,最后综合得到自己对linux内核...一本是《linux内核的设计与实现》,该书为读者快速精简的介绍了linux内核的主要功能和实现。 但不会把读者带入linux内核代码的深渊中,是了解内核架构和...
一张图看懂linux内核中percpu变量的实现
但你知道吗,不仅是在编程语言中,在linux内核中,也有一个类似的机制,用来实现类似的目的,它叫做percpu变量。 percpu变量,顾名思义,就是对于同一个变量,每个cpu都有自己的一份,它可以被用来存放一些cpu独有的数据,比如cpu的id,cpu上正在运行的线程等等,因该机制可以非常方便的解决一些特定问题,所以在内核...
Linux内核同步机制之(五):Read Write spin lock
本文主要描述rw spin lock的工作原理及其实现。 需要说明的是linux内核同步机制之(四):spin lock是本文的基础,请先阅读该文档以便保证阅读的畅顺。 二、工作原理1、应用举例我们来看一个rw spinlock在文件系统中的例子:static struct file_system_type *file_systems; static define_rwlock(file_systems_lock); ...
Linux内核的进程负载均衡机制
smp组织 为了更好地利用cache,内核将cpu(如果开启了超线程,那么以逻辑cpu为单位,否则以物理cpu核心为单位)组织成了调度域。 逻辑视角 假设某机器为2路4核8核心cpu,它的cpu调度域逻辑上如下图:2路numa最为简单,如果是4路numa,那么这个视图在numa层级将会复杂很多,因为跨numa访问根据访问距离导致访问延时还不...
如何切入 Linux 内核源代码
毕业的时候,人家跟我说makefile我完全不知,但是一说make love我就来劲了,现在想来依然觉得丢人。 毫不夸张地说,kconfig和makefile是我们浏览内核代码时最为依仗的两个文件。 基本上,linux内核中每一个目录下边都会有一个 kconfig文件和一个makefile文件。 对于一个希望能够在linux内核的汪洋代码里看到一丝曙光...

连接跟踪(conntrack):原理、应用及 Linux 内核实现
本文介绍连接跟踪(connection tracking,conntrack,ct)的原理,应用,及其在 linux 内核中的实现。 代码分析基于内核 4.19。 为使行文简洁,所贴代码只保留了核心逻辑,但都给出了代码 所在的源文件,如有需要请查阅。 水平有限,文中不免有错误之处,欢迎指正交流。 1 引言连接跟踪是许多网络应用的基础。 例如...
Linux内核调度分析(进程调度)
本文是《linux内核设计与实现》第四章的阅读笔记,代码则是摘自最新的4.6版本linux源码(github),转载请注明出处。 多任务并发和并行linux作为一个多任务操作系统,必须支持程序的并发执行。 分类非抢占式多任务除非任务自己结束,否则将会一直执行。 抢占式多任务(linux)这种情况下,由调度程序来决定什么时候停止...
Linux内核机制第二集(字符设备)
struct kobj_map{ struct probe { struct probe *next; * 散列冲突链表的下一个元素 * dev_t dev; * 设备号范围的初始设备号(主、次设备号) * unsigned long range; * 设备号范围的大小 * struct module *owner; * 指向实现设备驱动程序模块的指针(编译进内核就是空指针) * kobj_probe_t *get; * 探测谁拥有这个...
Linux内核高端内存
段页式机制如下图。? linux内核地址空间划分通常32位linux内核地址空间划分0~3g为用户空间,3~4g为内核空间。 注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。? linux内核高端内存的由来当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一...
Linux内核设备驱动之Linux内核基础笔记整理
linux内核驱动模块机制静态加载, 把驱动模块编进内核, 在内核启动时加载 动态加载,把驱动模块编为ko, 在内核启动后,需要用时加载2. 编写内核驱动#include #include static int __init test_init(void){return 0; 返回0表示成功, 返加负数退出加载模块}__init 当内核把驱动初始化完后,释放此函数的代码指令空间 ...

Linux内核Crash分析
在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打印信息,对其进行了分析,使用的内核版本为:linux2. 6.32。 每一个进程的生命周期内,其生命周期的范围为几毫秒到几个月。 一般都是和内核有交互,例如用户空间程序使用系统调用进入内核空间。 这时使用的不再是用户空间的栈空间,使用对应...