Linux内核

2024/4/13 3:08:02

linux平台驱动

linux简单字符驱动很简单,只需要在初始化时对物理地址进行映射,再注册一个fileopenration操作集,然后就和写裸机程序一样实现操作集就可以了。 问题一:为什么要进行物理地址到虚拟地址的映射? 因为引入了MMU内存管理&#xff0c…

linux内核struct链表程序与分析

struct是编程的重要部分,学好struct非常重要,本文参考网友与自己总结,适合初学者,或者想了解linux内核对struct的利用。 编写的代码在linux下gcc可编译通过。 # gcc mylist.c -o mylist [jinyonglocalhost 888]$ lslist.h myli…

Linux固件子系统的实现机制简介

一、Linux固件子系统概述 固件是硬件设备自身执行的一段程序。固件一般存放在设备flash内。而出于成本和便利性的考虑,通常是先将硬件设备的运行程序打包为一个特定格式的固件文件,存储到终端系统内,通过终端系统给硬件设备进行升级。Linux内…

我的,开始

CSDN一个神奇的网站,号称全球最大的中文IT社区,第一次就被她深深的吸引。进去瞧瞧,very,delicious,哈哈。震撼,这种诱惑力,不亚于当年的哥伦布发现新大陆的激动、喜悦心情。虽然本人不是计算机专业,但对嵌入…

EXPORT_SYMBOL解析

一个模块mod1中定义一个函数func1;在另外一个模块mod2中定义一个函数func2,func2调用func1。 在模块mod1中,EXPORT_SYMBOL(func1); 在模块mod2中,extern int func1(); 就可以在mod2中调用func1了。 EXPORT_SYMBOL只出现在2.6内核中…

Linux进程间通信分类 以及 pipe的原理实现

http://blog.sina.com.cn/s/blog_4a84bd960100by8s.html http://home.lupaworld.com/home-space-uid-296848-do-blog-id-230801.html 一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。…

Argument list too long 错误解决方法汇总

这篇文章是回复前几天在论坛一个朋友提出的问题,今天有空,整理了一下,发布出来,供大家参考! 当Linux下试图传递太多参数给一个系统命令(ls *; cp *; rm *; cat *; etc…)时,就会出现”Argument list too l…

XEN启动过程分析

Xen Hypervisor运行在Ring0&#xff0c;在启动过程中&#xff0c;Xen首先被引导:系统由Grub启动&#xff0c;遵循Multiboot引导规范&#xff1b;然后Linux内核做为module也被引导入内存&#xff0c;同时initrd镜像文件也一样。整个引导过程如下图示&#xff1a; ‍<?xml:na…

超详细分析Bootloader(Uboot)到内核的启动流程(万字长文!)

工科生一枚&#xff0c;热衷于底层技术开发&#xff0c;有强烈的好奇心&#xff0c;感兴趣内容包括单片机&#xff0c;嵌入式Linux&#xff0c;Uboot等&#xff0c;欢迎学习交流&#xff01; 爱好跑步&#xff0c;打篮球&#xff0c;睡觉。 欢迎加我QQ1500836631&#xff08;备…

Linux内核源码阅读之do_fork()

前言 本文主要介绍Linux内核中&#xff0c;一个新的进程/线程是如何诞生的。 主要涉及复制父进程各类资源、设置子进程系统堆栈、构造子进程调度时运行点等。 函数原型 Linux系统中&#xff0c;除第一个进程是被捏造出来的&#xff0c;其他进程都是通过do_fork()复制出来的…

Windows Phone之于Android的基因进化

在移动操作系统市场上&#xff0c;Android可谓风头正劲&#xff0c;它的出现曾一扫Symbian时代的黑暗&#xff0c;并且对苹果iPhone步步进逼。而另一个舞台上&#xff0c;承袭Windows Mobile过往辉煌的Windows Phone 7正在羽翼渐丰。但这两个并不完全封闭的手机生态系统&#x…

TCP拥塞控制算法 优缺点 适用环境 性能分析

公平性 公平性是在发生拥塞时各源端&#xff08;或同一源端建立的不同TCP连接或UDP数据报&#xff09;能公平地共享同一网络资源&#xff08;如带宽、缓存等&#xff09;。处于相同级别的源端应该得到相同数量的网络资源。产生公平性的根本原因在于拥塞发生必然导致数据包丢失&…

利用QEMU+GDB搭建Linux内核调试环境

前言 对用户态进程&#xff0c;利用gdb调试代码是很方便的手段。而对于内核态的问题&#xff0c;可以利用crash等工具基于coredump文件进行调试。 其实我们也可以利用一些手段对Linux内核代码进行gdb调试&#xff0c;qemu就是一种。 qemu是一款完全软件模拟(Binary translat…

如何在编码阶段减少代码中的bug?

前言 作为一名合格的程序员&#xff0c;不写bug是不可能的。如何花费最少的时间来修复bug呢&#xff1f; 在编码阶段借助一些静态分析工具往往可以事半功倍&#xff0c;减少代码中的bug。 静态分析工具能够在代码未运行的情况下分析源代码&#xff0c;发现代码中的bug。在C/…

解密Linux内核神器:内存屏障的秘密功效与应用方法

一、内存屏障简介 现在大多数现代计算机为了提高性能而采取乱序执行&#xff0c;这可能会导致程序运行不符合我们预期&#xff0c;内存屏障就是一类同步屏障指令&#xff0c;是CPU或者编译器在对内存随机访问的操作中的一个同步点&#xff0c;只有在此点之前的所有读写操作都执…

牛客网论坛考研计算机组成原理笔记,GitHub已下载量已过百万

**前言&#xff1a;**看过很多书&#xff0c;但总是忘得很快。知识广度越大越容易接纳新东西&#xff0c;但从考察角度来说&#xff0c;自然是对某个方面了解越深越好。那些大而全的著作虽然每本都是经典中的经典&#xff0c;但实际工作中可能只用到其中的一小部分。我现在越发…

Linux内核模块开发之helloworld

第一步、编写helloworld.c #include <linux/init.h> //所有模块都必须包含的头文件 #include <linux/module.h> //一些宏定义&#xff0c;例如这里的KERN_INFO#define DRIVER_AUTHOR "xzvi-chip.com.cn"#define DRIVER_DESC "A sample driver&quo…

linux内核调度器

O(1):略 BFS:http://www.ibm.com/developerworks/cn/linux/l-cn-bfs/index.html?cadrs- CFS:http://www.ibm.com/developerworks/cn/linux/l-completely-fair-scheduler/

面试官让你讲讲Linux内核的竞争与并发,你该如何回答?

工科生一枚&#xff0c;热衷于底层技术开发&#xff0c;有强烈的好奇心&#xff0c;感兴趣内容包括单片机&#xff0c;嵌入式Linux&#xff0c;Uboot等&#xff0c;欢迎学习交流&#xff01; 爱好跑步&#xff0c;打篮球&#xff0c;睡觉。 欢迎加我QQ1500836631&#xff08;备…

11.LCD驱动

1.LCD显示原理 2.LCD驱动框架&#xff1a; 1.分配fb_info 2.设置 3.注册register_framebuffer 4.硬件相关操作 3.关于fb_info Linux内核将所有的Framebuffer抽象为一个叫做fb_info的结构体&#xff0c;fb_info结构体包含了Framebuffer设备的完整属性和操作集合&#xff0c;因…

Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存

之所以想写这篇文章&#xff0c;是有两个方面原因。其一是内核版有一个关于《内核可以从线性地址直接计算物理地址&#xff0c;用来做什么呢&#xff1f;》的讨论&#xff0c;偶说计算出物理地址可以共享给用户空间读写。dreamice兄说能否说一下详细的应用。其二是alb*版主提到…

linux内核空间与用户空间信息交互方法

linux内核空间与用户空间信息交互方法 本文作者&#xff1a; 康华&#xff1a;计算机硕士&#xff0c;主要从事Linux操作系统内核、Linux技术标准、计算机安全、软件测试等领域的研究与开发工作&#xff0c;现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux软件实验…

《Linux内核代码情景分析》观感

这是一本非常详细的操作系统实现说明&#xff0c;可惜作者太专注于细节&#xff0c; 忽视了更高层次上设计理念的说明&#xff0c;让人有只见树木不见森林的感觉。所以&#xff0c;在网上搜索相关介绍的话&#xff0c;很多人都会推荐和《深入理解Linux内核》一书结合起来看&…

linux之缓存技术(TLB、伙伴系统、Slab缓存)

1. 什么是TLB TLB(Translation Lookaside Buffer)是一个高速缓存,用于优化从虚拟内存到物理内存的地址转换过程。当一个程序需要访问内存时,它会提供一个虚拟地址,然后硬件需要将这个虚拟地址转换成物理地址。此过程通常涉及查找页表(Page Table)并进行一些计算,这是一…

linux进程和内核地址空间

一、 Linux采用了虚拟内存管理技术&#xff0c;使得每个进程都有独立的进程地址空间&#xff0c;该空间是大小为3G&#xff0c;用户看到和接触到的都是虚拟地址。利用这虚拟地址&#xff0c;不但能保护操作系itongde作用&#xff0c;更重要的是用户程序可使用比实际物理地址内存…

《转》linux内核如何管理内存

在仔细审视了进程的虚拟地址布局之后&#xff0c;让我们把目光转向内核以及其管理用户内存的机制。再次从gonzo图示开始&#xff1a; Linux进程在内核中是由task_struct的实例来表示的&#xff0c;即进程描述符。task_struct的mm字段指向内存描述符&#xff08;memory descript…

基于Qtopia_Core的嵌入式Linux_GUI平台移植与开发 (转)

http://wenku.baidu.com/view/27536350f01dc281e53af089.html 一篇很好的在线文档。描述的开发板用的是&#xff1a;s3c2410,嵌入式linux内核&#xff0c;sqlite数据库。

kdump转储的内核实现

前面一篇文章介绍了kexec和kdump的思想&#xff0c;本文着重讲它们的另一个方面&#xff0c;就是kdump到底是如何转储垮掉内核的内存映像的。首先定义一个链表&#xff0c;它很重要。 static LIST_HEAD(vmcore_list); unsigned long long elfcorehdr_addr ELFCORE_ADDR_MAX; /…

Linux内核和用户空间通信的方法(二)— 使用netlink

理论篇在 Linux 2.4 版以后版本的内核中&#xff0c;几乎全部的中断过程与用户态进程的通信都是使用 netlink 套接字实现的&#xff0c;例如iprote2网络管理工具&#xff0c;它与内核的交互就全部使用了netlink&#xff0c;著名的内核包过滤框架Netfilter在与用户空间的通读&am…

linux内核裁剪

对于linux内核的裁剪可分为两类&#xff1a; 第一类是make menuconfig后&#xff0c;对于不需要的模块disable掉&#xff0c;不编译进内核。 这里有一个链接是关于linux 2.6.36的裁剪说明&#xff1a;http://kenwublog.com/docs/linux-kernel-2-6-36-optimization.htm 另一类…

Linux-3.2.0内核—kbuild.txt翻译

2.2 kbuild.txt 文件内容2.2.1 输出文件(1)Modules.order这个文件记录了模块在 Makefiles 中的顺序。工具 modprobe 使用这些顺序来解决匹配多个模块之间的别名问题。(2)modules.builtin该文件列出了要编译到内核中的所有模块。工具 modprobe 使用该文件确保在载入模块的时候不…

android开发及源码编译

eclipse应用程序开发&#xff1a;1.分别下载eclipse-jee-indigo-SR2-linux-gtk.tar.gz&#xff0c;android-sdk_r16-linux.tgz&#xff0c;ADT-16.zip&#xff1b;2.安装ADT&#xff0c;解压eclipse-jee-indigo-SR2-linux-gtk.tar.gz&#xff0c;启动eclipse&#xff0c;help-&…

ARM Linux 中断向量表建立流程

一般编写arm的裸机程序的时候&#xff0c;创建中断向量表就把它放在0x00000000~0x0000001c中&#xff0c;一般都放在这个位置上。但是中断向量表也可以放在0xffff0000~0xffff001c中&#xff0c;知道这是怎么设置的么&#xff1f;开始看到的时候真的有点奇怪&#xff0c;因为在学…

linux内核 - io子系统 - 文件io - io调度

背景 在嵌入式平台实现行车记录仪等产品的录像功能&#xff08;使用SD卡存储&#xff09;时&#xff0c;性能普通&#xff0c;研究确认IO调度是否能提升性能。 调度说明 在linux平台以普通方式&#xff08;缓存io&#xff09;读写文件&#xff0c;读写请求并不是直接发给存储…

中兴AC2746 usb接口的3G上网卡

嵌入式linux是2.6.24版的。主机是AT9261&#xff08;arm926ej-s内核&#xff09;的开发板。 买是市面上常见的中兴AC2746 usb接口的3G上网卡。在windows下使用极方便&#xff0c;可是在linux下使用就麻烦了。首先&#xff0c;要确认你的嵌入式linux系统是可以支持热插拔的系统。…

Linux内核宏__init/__initdata/__exit

在内核模块编程中&#xff0c;或许会发现有这样的一些特殊关键字 __init &#xff0c;&#xff3f;initdata &#xff0c;__exit 等等&#xff0c;其实这些都是gcc的扩展属性: __init宏最常用的地方是驱动模块初始化函数的定义处&#xff0c;其目的是将驱动模块的初始化函数放入…

拒绝造轮子!如何移植并使用Linux内核的通用链表(附完整代码实现)

在实际的工作中&#xff0c;我们可能会经常使用链表结构来存储数据&#xff0c;特别是嵌入式开发&#xff0c;经常会使用linux内核最经典的双向链表 list_head。本篇文章详细介绍了Linux内核的通用链表是如何实现的&#xff0c;对于经常使用的函数都给出了详细的说明和测试用例…

Linux内核中container_of宏的详细解释

上一节拒绝造轮子&#xff01;如何移植并使用Linux内核的通用链表&#xff08;附完整代码实现&#xff09;我们在分析Linux内核链表的时候注意到内核在求解结构体偏移的时候巧妙的使用了container_of宏定义&#xff0c;今天我们来详细剖析下内核到底是如何求解结构体成员变量的…

Android开发入门之路(续篇)

作者&#xff1a;温老师&#xff0c;华清远见3G学院讲师 上次写了一篇文章&#xff0c;谈了谈《Android开发的入门之路》。在那篇文章中&#xff0c;对Android的市场情况谈了谈自己的看法&#xff0c;也对如何学习Android开发提了一些建议。限于篇幅&#xff0c;上次的文章中&a…

Android开发入门之路(初学者必读)

作者&#xff1a;温老师&#xff0c;华清远见3G学院讲师 针对华清远见3G学院&#xff08;www.3g-edu.org&#xff09;很多学员在咨询过程中经常会问到的一些问题&#xff0c;我抽时间整理了一下&#xff0c;希望可以对大家在Android开发入门学习的阶段有所帮助&#xff0c;更希…

Linux系统设备(device)的major和minor number

Linux系的/dev目录下面的的设备文件是用来表示外设的&#xff0c;如/dev/sda1表示第一块硬盘的第一个分区。但是这个/dev/sda1仅仅是方便用户观察&#xff0c;linux内核中表示不同的设备是通过major 和minor number实现的&#xff0c;通过major和minor Number来加载相应的驱动程…

等待队列源码分析

原文&#xff1a;http://edsionte.com/techblog/archives/1895 正如list_head结构那样&#xff0c;等待队列(wait queue)作为linux内核中的基础数据结构&#xff0c;与进程调度紧密结合在一起&#xff1b;在驱动程序中&#xff0c;常常使用等待队列来实现进程的阻塞和进程的唤醒…

Linux内核内存管理源码分析之init-mm.c(2)

接前一篇文章&#xff1a;Linux内核内存管理源码分析之init-mm.c&#xff08;1&#xff09; 本文内容参考&#xff1a;https://www.cnblogs.com/mysky007/p/12317831.html 上回说到了swapper_pg_dir和init_top_gpt。再次给出内核源码中init_top_gpt的说明&#xff0c;在Documen…

嵌入式linux与ARM开发板的入门建议

第一&#xff0c;学习基本的【非法词语被屏蔽】机编程。 对于学硬件的人而言&#xff0c;必须先对硬件的基本使用方法有感性的认识&#xff0c;更必须深刻认识该硬件的控制方式&#xff0c;如果一开始就学 linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学A…

Linux内核源码剖析之kmem_cache_create

写在前面&#xff1a; 版本信息&#xff1a; Linux内核2.6.24&#xff08;大部分centos、ubuntu应该都在3.1。但是2.6的版本适合学习&#xff0c;后续版本本质变化也不是很大&#xff09; 一个操作系统对于内存的管理是非常的重要&#xff0c;关乎到整个系统的运行效率和内存最…

Linux内核 Ramdisk(initrd)机制

转自&#xff1a;http://blog.csdn.net/ruixj/article/details/3772752 摘要:对于Linux用户来说&#xff0c;Ramdisk并不陌生&#xff0c;可是为什么需要它呢&#xff1f;本文对Ramdisk在内核启动过程中的作用&#xff0c;以及它的内部机制进行深入介绍。标题1. initrd 和 init…

Linux下查看内核与发行版本号

Linux下查看内核与发行版本号(以Fedora为例)2009/03/26 18:36.查看Linux内核版本号&#xff1a;1.1 uname -r #查看当前linux系统的内核版本号显示举例&#xff1a;2.6.21-1.3194.fc71.2 uname -a #可以查看包括内核版本号、机器硬件信息、网络节点名、操作系统名字等信息。…

list_for_each_entry()函数分析

在Linux内核源码中&#xff0c;经常要对链表进行操作&#xff0c;其中一个很重要的宏是list_for_each_entry&#xff1a; /*** list_for_each_entry - iterate over list of given type* pos: the type * to use as a loop cursor.* head: the head for your list.* member: t…

浅谈Linux PCI设备驱动(一)

http://blog.csdn.net/linuxdrivers/archive/2010/08/30/5849698.aspx 要弄清楚Linux PCI设备驱动&#xff0c;首先要明白&#xff0c;所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分。不知道读者理不理解这句话&#xff0c;本人觉得这句话很重要&…

Linux内核源码阅读之系统调用sys_write()

本篇文章仅做sys_write()源码阅读后的记录&#xff0c;从自己的思路叙述&#xff0c;比较随意&#xff0c;仅做本人阅读存档。 sys_write()是linux文件系统中核心函数之一&#xff0c;它完成的操作是将用户缓冲区的文件内容写入到文件在磁盘中的对应位置。 1.文件页面缓存 要想…

mkimage制作linux内核映像----uImage是怎么制作的

bootm命令是用来引导经过u-boot的工具mkimage打包后的kernel image的&#xff0c;什么叫做经过u-boot的工具mkimage打包后的kernel image&#xff0c;这个就要看mkimage的代码&#xff0c;看看它做了些什么&#xff0c;虽然我很希望大家不要偷懒&#xff0c;认真地去看看&#…

IMX6ULL驱动开发实战连载系列目录

接下来的一段时间&#xff0c;会基于野火IMX6ULL开发板写一系列实战教程&#xff0c;主要侧重于驱动和内核的调试技巧。这方面的文章&#xff0c;我也是第一次写&#xff0c;过程中可能会踩不少坑&#xff0c;可能更新时间间隔会很。如果有写的不好的&#xff0c;大家可以及时指…

BSP Bootloader

BSP Board Support Package, 和bootloader放到一起&#xff0c;越比较我越糊涂&#xff0c;似乎&#xff0c;就不是一个level&#xff0c;不是一个东西的比较。 在此我还是转载一下别人写的吧&#xff0c;读一读还是很有收获的。 BSP 是板级支持包&#xff08;Board Support …

spinlock 3

好文章 不断&#xff0c;至此&#xff0c;读完spinlock1,2,3 基本上linux内核中的同步应该能有一个比较深入的了解了&#xff0c;任务的调度离不开内核同步&#xff0c;下面要重点看一下任务的调度&#xff0c;进程的调度。内核中的同步与任务调度 本文作者&#xff1a; 康华…

Kdump之makedumpfile源码分析

出自:http://blog.chinaunix.net/uid-10328574-id-2951118.html kexec是一个快速启动机制&#xff0c;允许在已经运行的内核的上下文启动另一个Linux内核&#xff0c;不需要经过BIOS。BIOS可能会消耗很多时间&#xff0c;特别是带有众多数量的外设的大型服务器。这种办法可以为…

《自己动手写操作系统》观感

国内的计算机书籍很少有像这本书一样细致的&#xff0c;语言清晰到位&#xff0c;图表详细&#xff0c;极易理解&#xff0c;看起来让人很是享受。虽然之前已经看了不少操作系统和Linux的书籍&#xff0c;在看过这本书之后&#xff0c;才知道有些细节自己并没有完全搞清楚&…

LKDTM 内核测试框架初探

版权声明&#xff1a;本文为笔者本人「ashimida」在CSDN的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/lidan113lidan/article/details/123361473 更多内容可关注微信公众号 lkd…

编写Linux网络设备驱动(上)

本文介绍基于Realtek 8139芯片PCI接口的网卡驱动程序。我选择了Realtek芯片有两个原因&#xff1a;首先&#xff0c;Realtek提供免费的芯片技术手册&#xff1b; 第二&#xff0c;芯片相当便宜。 本文介绍的驱动程序是最基本的&#xff0c;它只有发送和接收数据包功能&#xf…

linux 内核模块 参数

module_param()理解-------------------------------------------在用户态下编程可以通过main()的来传递命令行参数&#xff0c;而编写一个内核模块则通过module_param()module_param()宏是Linux 2.6内核中新增的&#xff0c;该宏被定义在include/linux/moduleparam.h文件中&am…

《深入理解Linux网络内幕》学习笔记三:第七章 组件初始化内核架构

宏标记 linux内核中绝大多数初始化函数和变量都使用了各种各样的宏标记&#xff0c;形如; static int __init pci_porc_init(void){ ... } static char version[] __devinitdatadrv_name".." module_init(...) 其中__init,module_init,__devinitdata就是宏标…

linux中的信号处理与SROP

版权声明&#xff1a;本文为CSDN博主「ashimida」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/lidan113lidan/article/details/122547854 更多内容可关注微信公众号 一、基本概…

Linux页描述符

系统中的每个物理页面都有一个与之关联的结构页面&#xff0c;以跟踪我们目前使用该页面的内容。 请注意&#xff0c;我们无法跟踪哪些任务正在使用页面&#xff0c;但如果它是页面缓存页面&#xff0c;则rmap结构可以告诉我们谁正在映射它。 struct页面中的对象以双字块组织&…

Linux系统解决“Key was rejected by service”

Linux系统下加载驱动模块出现如上错误提示的原因为&#xff1a;此驱动未经过签名。 方法一、关闭Secure Boot 如果是物理机&#xff0c;需要开机进入BIOS&#xff0c;找到“Secure Boot”的选项&#xff0c;然后关闭。 如果是虚拟机&#xff0c;可以打开虚拟设置&#xff0c…

Linux内核模块LKM的动态加载技术分析

转载自&#xff1a;http://blog.csdn.net/sailor_8318/archive/2008/09/20/2954380.aspx 1 为什么需要LKM&#xff1f; Linux 就是通常所说的单内核&#xff08;monolithic kernel&#xff09;&#xff0c;即操作系统的大部分功能都被称为内核&#xff0c;整个系统内核都…

突破Linux内核模块校验机制

出自&#xff1a;http://hi.baidu.com/wzt85/item/dcea082c90c9ed0942634ad2 1、 为什么要突破模块验证 Linux内核版本很多&#xff0c;升级很快&#xff0c;2个小内核版本中内核函数的定义可能都不一样&#xff0c;为了确保不一致的驱动程序导致kernel oops&#xff0c; 开发…

Android能否引领移动互联网革命

也许在五年前拥有一部智能手机还是件让人羡慕的事&#xff0c;想想那时的诺基亚是何等的威风&#xff0c;对于普通的国人来说&#xff0c;智能手机一定程度上就是诺基亚N系 列&#xff0c;HTC还叫多普达&#xff0c;黑莓貌似压根就不属于我们&#xff0c;智能手机市场的格局很清…

Linux用户空间与内核空间 理解和总结

&#xff08;1&#xff09;让我们忽略Linux对段式内存映射的支持。在保护模式下&#xff0c;我们知道无论CPU运行于用户态还是核心态&#xff0c;CPU执行程序所访问的地址都是虚拟地址&#xff0c;MMU 必须通过读取控制寄存器CR3中的值作为当前页面目录的指针&#xff0c;进而根…

【嵌入式】构建嵌入式Linux系统(uboot、内核、文件系统)

知识架构及层次 Linux内核由三部分构成&#xff1a; Bootloader&#xff1a;启动引导系统&#xff08;可执行文件&#xff09;Kernel&#xff1a;内核&#xff08;可执行文件&#xff09;Root File System&#xff1a;根文件系统嵌入式Linux系统构成及启动略析 嵌入式 Linux …

基于ARM 的Linux 的启动分析报告——ARM+Linux的启动分析(3)

(9) 调用文件misc.c的函数decompress_kernel()&#xff0c;解压内核于缓存结束的地方(r2地址之后)。此时各寄存器值有如下变化&#xff1a;r0为解压后kernel的大小r4为kernel执行时的地址r5为解压后kernel的起始地址r6为CPU类型值(processor ID)r7为系统类型值(architecture ID…

linux内核中断处理的工作队列workqueue机制

linux内核中断处理的工作队列workqueue机制 工作队列&#xff08;workqueue&#xff09;是另外一种将工作 推后执行的形式&#xff0c;它和我们前面讨论的小任务有所不同。工作队列可以把工作推后&#xff0c;交由一个内核线程去执行&#xff0c;也就是说&#xff0c;这个下半部…

小小懒惰程序员的读书史

程序员知识更新快&#xff0c;压力大&#xff0c;得不停的学习。 已读&#xff1a; 《新帝国主义在中国》&#xff0c;《中国大趋势》&#xff0c;《红楼梦-连环画》&#xff0c; 《货币战争》、《货币战争2-金权天下》&#xff0c;《我们台湾这些年》&#xff0c; &#xf…

学习内核---Linux网卡驱动分析

Linux网卡驱动分析 学习应该是一个先把问题简单化&#xff0c;在把问题复杂化的过程。一开始就着手处理复杂的问题&#xff0c;难免让人有心惊胆颤&#xff0c;捉襟见肘的感觉。读Linux网卡驱动也是一样。那长长的源码夹杂着那些我们陌生的变量和符号&#xff0c;望而生畏便是…

linux-3.2.0内核-kconfig.txt翻译

2.3 <kconfig.txt>文档内容这个文件包含了使用"make *config"的一些帮助。使用"make help"列出所有可能的配置目标板。xconfig (qconf) 和 menuconfig (mconf)程序里也包含内置的帮助文档。Be sure to checkit for navigation, search, and other ge…

什么是开放的云计算?

【编者按】Alex Williams是国外科技网站TechCruch的编辑&#xff0c;最近他参加了两个与云计算有关系的活动&#xff1a;一个是在旧金山举行的VMware年度大会&#xff0c;另一个就是由Linux基金会举行的首届与云计算有关的活动CloudOpen。在第二个大会上&#xff0c;他跟技术专…

如何编译和更换Linux系统内核

step0 — 完成编译和安装Linux需要的基本条件 内核源代码 从http://www.kernel.org即可下载代码&#xff0c;注意你需要下载的是完整的源代码包(点击tarball即可下载)&#xff0c;而不是patch或change log之类。 编译需要的软件 编译kernel需要一些基本的develop工具软件&…

ARM嵌入式软件编程经验谈

作者&#xff1a;孙天泽&#xff0c;华清远见嵌入式学院品牌讲师。 ARM 系列处理器是 RISC &#xff08;Reducded Instruction Set Computing&#xff09;处理器。很多基于ARM的高效代码的程序设计策略都源于RISC 处理器。和很多 RISC 处理器一样&#xff0c;ARM 系列处理器的…

epoll原理及使用方法

Linux 2.6内核中提高网络I/O性能的新方法epoll 正如我昨天在“Linux下各类TCP网络服务器的实现源代码”(http://zhoulifa.bokee.com/5345930.html)一文中提到的那样&#xff0c;I/O多路复用技术在比较多的TCP网络服务器中有使用&#xff0c;即比较多的用到select函数。感谢chin…

Linux启动速度优化方法总结

文章目录 一、启动耗时统计printk timeinitcall_debugbootgraphbootchartgpio示波器 二、内核优化方法kernel压缩方式加载位置内核裁剪预设置lpj数值initcall优化内核initcall_module并行减少pty/tty个数内核module 三、其他优化ubootXIP 四、总结 要对Linux系统启动速度进行优…

Linux内核有什么之内存管理子系统有什么第六回 —— 小内存分配(4)

接前一篇文章&#xff1a;Linux内核有什么之内存管理子系统有什么第五回 —— 小内存分配&#xff08;3&#xff09; 本文内容参考&#xff1a; linux进程虚拟地址空间 《趣谈Linux操作系统 核心原理篇&#xff1a;第四部分 内存管理—— 刘超》 特此致谢&#xff01; 二、小…

使用libjpeg在linux内核中压缩JPEG图片

使用libjpeg在linux内核中压缩JPEG图像&#xff0c;支持OMS camera程序拍照。

linux高通内核移植工具十教程

linux高通内核移植工具十教程 相信很多人移植高通内核都遇到很多问题&#xff0c;如移植后的内核开机直接进入fastboot、recovery和卡一屏、无限一屏等等&#xff0c;本人也是这些问题&#xff0c;便去找了大神学习。下面我为大家说下教程&#xff08;超级简单&#xff09;&…

Linux学习笔记——Linux目录配置

Linux下一切都是文件&#xff0c;所以了解Linux下目录所对应的意义与内容就显得极其的重要。下面就来聊一聊Linux目录的配置。讲到目录的配置&#xff0c;就不得不提到Linux目录配置标准&#xff08;FHS&#xff09;。 Linux目录配置标准&#xff1a;FHS 因为利用Linux来开发产…

【嵌入式】Linux开发工具arm-linux-gcc安装及使用

知识架构及层次 — 程序编译及调试 嵌入式交叉编译器安装配置 宿主机 执行编译、链接嵌入式软件的计算机 目标机 运行嵌入式软件的硬件平台 “本地”编译器 用来生成在与编译器本身所在的计算机和操作系统&#xff08;平台&#xff09;相同的环境下运行的目标代码&#xff0c…

保护函数返回的利器——Linux Shadow Call Stack

写在前面 提到内核栈溢出的漏洞缓解&#xff0c;许多朋友首先想到的是栈内金丝雀&#xff08;Stack Canary&#xff09;。今天向大家介绍一项在近年&#xff0c;于Android设备中新增&#xff0c;且默默生效的安全机制——影子调用栈&#xff1a;SCS&#xff08;Shadow Call St…

Linux内核编译与安装

操作环境&#xff1a;RHEL 5.1 一、准备工作 1、获取内核 http://www.kernel.org/ 2、解压缩内核文件&#xff0c;进入解压后内核源代码目录&#xff0c;切换至root用户 tar -xzvf linux-2.6.39.4.tar.bz2 cd /mnt/hgfs/linux-2.6.39.4 su root 二、内核编译 3、内核清…

Linux内核链表基础

1、内核链表的定义在include/linux/list.h struct list_head { struct list_head *next, *prev; }; 容易看出&#xff0c;Linux内核链表为双向链表。 2、Linux链表与普通链表区别 我们通常定义的链表是在链表节点中嵌入元素,比如 struct MyList { int StudentID; /* 被…

浅析Linux 物理内存外碎片化

本文出现的内核代码来自Linux4.19&#xff0c;如果有兴趣&#xff0c;读者可以配合代码阅读本文。 一、Linux物理内存外碎片化概述 什么是Linux物理内存碎片化&#xff1f;Linux物理内存碎片化包括两种&#xff1a; 1.物理内存内碎片&#xff1a;指分配给用户的内存空间中未…

操原作业(一)Ubuntu系统编译一个新的内核

操作系统原理这门课布置了一项作业&#xff0c;要求在Ubuntu系统中编译一个新的内核。下面介绍怎么在Ubuntu系统中编译一个新的内核。 安装Ubuntu系统 如何安装win10Ubuntu双系统&#xff0c;我已经在上一篇文章介绍了&#xff0c;还没安装的&#xff0c;或者感兴趣的&#x…

深入linux内核架构-第一章-简介和概述

一直以来&#xff0c;对linux充满了满满的憧憬。从今天开始&#xff0c;在未来的一段日子里&#xff0c;每天研究一个linux内核的小主题。坚持&#xff01;&#xff01;&#xff01;&#xff01; linux的介绍在这里就不阐述了&#xff0c;几乎每本书籍中都有或多或少的介绍。 &…

编译替换内核_设备树_驱动_IMX6ULL

前言&#xff1a; 使用的开发板为韦东山老师的 IMX6ULL 目录 为什么编译驱动程序之前要先编译内核&#xff1f; 1.驱动程序要用到内核文件&#xff1a; 2.编译驱动时用的内核、开发板上运行到内核&#xff0c;要一致&#xff1a; 3.更换板子上的内核后&#xff0c;板子上…

一文聊聊近些年 CPU 在微架构、IO 速率上的演进过程

在上一篇《一文深入了解 CPU 的型号、代际架构与微架构》 中我们介绍了我手头的一颗 Intel(R) Core(TM) i5 的型号规则&#xff0c;以及它的物理硬件的 Die 图结构。以及它对应的 Skylake 核的微架构实现。 不少同学开始问我其它型号的 CPU 和它比有什么区别呢。考虑到了市场上…

linux-3.2.0内核-README翻译

Linux3.2.0 内核文件夹目录树.├── arch//该目录下主要├── block├── build├── COPYING├── CREDITS├── crypto├── Documentation├── drivers├── firmware├── fs├── HEAD├── hooks├── include├── info├── init├── ipc├── Kbui…

Linux进程切换分析

Linux切换并没有使用X86CPU的切换方法&#xff0c;Linux切换的实质就是cr3切换&#xff08;内存空间切换&#xff0c;在switch_mm函数中&#xff09; 寄存器切换&#xff08;包括EIP&#xff0c;ESP等&#xff0c;均在switch_to函数中&#xff09;。这里我们讲述下switch_to主流…

Linux操作系统汇编指令入门级整理知识点

前言我们大都是被高级语言惯坏了的一代&#xff0c;源源不断的新特性正在逐步添加到各类高级语言之中&#xff0c;汇编作为最接近机器指令的低级语言&#xff0c;已经很少被直接拿来写程序了&#xff0c;不过我还真的遇到了一个&#xff0c;那是之前的一个同事&#xff0c;因为…

Linux内核源码阅读之系统调用mmap()

mmap() 将一个已经打开的文件的内容映射的它的用户空间。 1.解释 “文件的内容映射的它的用户空间”是什么意思&#xff1f; 我们知道linux内核中&#xff0c;物理内存在内存中以页面大小为单位进行维护&#xff0c;而页式内存管理简单的说是给定一个虚拟地址0xA&#xff0…

细说Linux内核中断机制(详)

在技术面前&#xff0c;多问为什么总是好的&#xff0c;知其然不如知其所以然。 为什么要有中断&#xff1f; 1.前言 本文尽量以设计者的角度去介绍中断。 本文着重介绍Linux内核中中断处理的始末流程&#xff0c;因此对一些基本的概念应该有所了解。 2.硬件支持 我们知道…

常见的Linux内核中内存分配函数

1.原理说明 Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型&#xff0c;对于32位系统来说&#xff0c;两级页表足够用了&#xff0c;而在x86_64系 统中&#xff0c;用到了四级页表&#xff0c;如图2-1所示。四级页表分别为&#xff1a; * 页全局目录(Page Glo…

《Linux内核分析》(七)——Linux可执行程序浅析

作者&#xff1a;Sandy 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验环境&#xff1a;cLinux64位 &#xff08;32位系统可能结果会不同&#xff09; 依照学术诚信条款&#xff0c;我保证此回答为本人原创&am…

spinlock2

又发现了一篇更好的文章 前言&#xff1a; 在复习休眠的过程中&#xff0c;我想验证自旋锁中不可休眠&#xff0c;所以编写了一个在自旋锁中休眠的模块。但是在我的ARMv7的单核CPU&#xff08;TI的A8芯片&#xff09;中测试的时候&#xff0c;不会锁死&#xff0c;并且自旋锁可…

写一个块设备驱动 (1)

第1章---------------------------------------------------| 写一个块设备驱动 |---------------------------------------------------| 作者&#xff1a;赵磊 || 网名&#xff1a;OstrichFly、飞翔…

mini2440 uboot201103 系统移植

移植过程主要是根据网上一名为csuwzc的高手提供的方法进行的&#xff0c;他不仅提供了方法&#xff0c;还把移植好的u-boot 2011.03放在网上供人下载&#xff0c;真是要感谢他了。移植过程基本顺利。不过还是有一些问题&#xff0c;我将这此记录下来&#xff0c;以供参考。 准…

深入分析 Linux 内核链表

一、 链表数据结构简介 链表是一种常用的组织有序数据的数据结构&#xff0c;它通过指针将一系列数据节点连接成一条数据链&#xff0c;是线性表的一种重要实现方式。相对于数组&#xff0c;链表具有更好的动态性&#xff0c;建立链表时无需预先知道数据总量&#xff0c;可以随…

Android Power Management

总体上来说 Android 的电源管理还是比较简单的 , 主要就是通过锁和定时器来切换系统的状态 , 使系统的功耗降至最低 , 整个系统的电源管理架构图如下 : ( 注该图来自 Steve Guo) 接下来我们从 Java 应用层面 , Android framework 层面 , Linux 内核层面分别进行详细…

Linux内核驱动模块编写概览——ioctl, class_create, device_create

如果你对内核驱动模块一无所知&#xff0c;请先学习内核驱动模块的基础知识。如果你已经入门了内核驱动模块&#xff0c;但是仍感觉有些模糊&#xff0c;不能从整体来了解一个内核驱动模块的结构&#xff0c;请赏读一下这篇拙文。如果你已经从事内核模块编程N年&#xff0c;并且…

Linux驱动修炼之道-SPI驱动框架源码分析(上)

努力成为linux kernel hacker的人李万鹏原创作品&#xff0c;为梦而战。转载请标明出处 http://blog.csdn.net/woshixingaaa/archive/2011/06/29/6574215.aspx Linux驱动修炼之道-SPI驱动框架源码分析(中) Linux驱动修炼之道-SPI驱动框架源码分析(下) SPI协议是一种同步的串…

linux下让进程运行在指定的cpu上

最近负责的svr压力比较大&#xff0c;业务逻辑有点复杂,能优化的地方已经全部优化了&#xff0c; 目前每秒3k次&#xff0c;cpu负载还是比较高 top看一下&#xff0c;4核的cpu负载不是太均衡&#xff0c;打算考虑一下将业务进程指定到3个cpu上运行&#xff0c;另外一个cpu专门负…

进程的内核空间共享

在2.6内核中&#xff0c;所有进程的内核空间&#xff08;3G&#xff0d;4G&#xff09;都是共享的。   LINUX内核在初始化过程中&#xff0c;内核页表的初始化在保护模式下&#xff0c;但是此时尚未开启分页机制。内核填充PGD表&#xff08;静态数组&#xff09;&#xff0c;…

Linux bootloader 编写方法

1.概述 linux运行在保护模式下&#xff0c;但是当机器启动复位的时候却处于实模式下。所以写bootloader做的工作也是在实模式之下的。 linux的内核有多种格式&#xff0c;老式的zImage和新型的bzImage。它们之间最大的差别是对于内核体积大小的限制。由于zImage内核需要放在实模…

Linux 系统内核空间与用户空间通信的实现与分析

http://www-128.ibm.com/developerworks/cn/linux/l-netlink/?cadwcn-newsletter-linux 多 数的 Linux 内核态程序都需要和用户空间的进程交换数据&#xff0c;但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持。本文总结并比较了几种内核态与用户态…

多进程服务器中,epoll的创建应该在创建子进程之后

转&#xff1a;http://blog.csdn.net/wei801004/archive/2009/06/13/4264031.aspx 看我的测试代码,似乎应该是在创建子进程之后创建epoll的fd,否则程序将会有问题,试将代码中两个CreateWorker函数的调用位置分别调用,一个在创建epoll fd之前,一个在之后,在调用在创建之前的代码…

(转载)使用kgdb调试linux内核及内核模块

使用kgdb调试linux内核及内核模块 创建时间&#xff1a;2005-09-09文章属性&#xff1a;原创文章提交&#xff1a;xcspy (xcspy.com_at_gmail.com) 作者&#xff1a;xcspy成员 ladybugE-mail&#xff1a;xcspy.comgmail.com主页&#xff1a;www.xcspy.com 1. 几种内核调试工具比…

Ubuntu安装VMware Workstation8.0.3

由于使用Ubuntu的人比较少&#xff0c;网上关于Ubuntu的资料也很少&#xff0c;笔者在安装VMware Workstation时就遇到了问题&#xff0c;首先网上关于Ubuntu12.04先行版的内容比较少&#xff0c;其次关于在Ubuntu12.04下安装VMware Workstation8.0.3最新版的资料就更少。 我遇…

写给Linux内核新手-关于Linux内核学习的误区

albcamus http://bbs.chinaunix.net/viewthread.php?tid626486先说句正经的&#xff1a;其实我没资格写这篇文章&#xff0c;因为自己也就一两个月以来才开始有所领悟的。因此&#xff0c;这里与其说是关于Linux内核学习的经验&#xff0c;不如说是自己 的教训吧&#xff0c;希…

Linux和英语资源链接

http://blog.csdn.net/LinuxKerneltravel --- Linux内核设计与实现 翻译者的博客 http://blog.csdn.net/fudan_abc --- Linux内核修炼之道 http://blog.csdn.net/force_eagle --- Linux高手 http://blog.csdn.net/sailor_8318 ----…

[转]Linux TCP 连接数修改

看到一篇文章&#xff0c;还算可以。引自:http://nails.blog.51cto.com/640492/258977 一、 文件数限制修改(1) vi /etc/security/limits.conf* soft nofile 10240 * hard nofile 10240 (2) vi /etc/pam.d/loginsession required /lib/security/pam_limits.so 二、 网络端口限制…

总结STM32嵌入式面试知识点

一、STM32F1和F4的区别&#xff1f; 内核不同&#xff1a;F1是Cortex-M3内核&#xff0c;F4是Cortex-M4内核&#xff1b;主频不同&#xff1a;F1主频72MHz&#xff0c;F4主频168MHz&#xff1b;浮点运算&#xff1a;F1无浮点运算单位&#xff0c;F4有&#xff1b;功能性能&…

最受欢迎的10个Linux发行版

最受欢迎的10个Linux发行版 一、Ubuntu Ubuntu是2004年9月首次公布的。虽然相对来说Ubuntu是发行较晚的Linux发行版&#xff0c;该项目没有其他linux发行版本早&#xff0c;但是其邮件列表 很快被用户的渴望和热情的开发者讨论所填满。在随后几年中&#xff0c;Ubuntu成长为最流…

uboot命令总结

Uboot相关命令介绍 1、bootm bootm [addr [arg ...]] - boot application image stored in memory passing arguments arg ...; when booting a Linux kernel, arg can be the address of an initrd image bootm命令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可…

linux系统时钟和硬件时钟

1、电池驱动 在PC机上&#xff0c;一般都会有由电池驱动的硬件时钟。这个电池的作用是什么呢&#xff1f;它就是保证当我们的Computer没电时&#xff0c;我们的&#xff08;硬件&#xff09;时钟仍然可以工作。 2、那么硬件时钟是怎样设置的呢&#xff1f; a) 硬件时钟可以在…

linux系统时钟和硬件时钟

1、电池驱动 在PC机上&#xff0c;一般都会有由电池驱动的硬件时钟。这个电池的作用是什么呢&#xff1f;它就是保证当我们的Computer没电时&#xff0c;我们的&#xff08;硬件&#xff09;时钟仍然可以工作。 2、那么硬件时钟是怎样设置的呢&#xff1f; a) 硬件时钟可以在…

Linux下spi驱动开发(1)

Linux下spi驱动开发&#xff08;1&#xff09; 作者&#xff1a;刘洪涛,华清远见嵌入式学院讲师。 一、概述 基于子系统去开发驱动程序已经是linux内核中普遍的做法了。前面写过基于I2C子系统的驱动开发。本文介绍另外一种常用总线SPI的开发方法。SPI子系统的开发和I2C有很多…

ALSA架构简介

ALSA &#xff08;Advanced Linux Sound Architecture&#xff08;高级Linux声音体系&#xff09;的缩写&#xff09; 是为声卡提供驱动的Linux内核组件&#xff0c;以替代原先的OSS&#xff08;开放声音系统&#xff09;。ALSA除了像OSS那样提供一组内核驱动程序模块以外&…

Linux 路由三大件

对于 Linux 网络&#xff0c;好奇心强的同学一定思考过两个问题&#xff1a; 当我们发出一个包的时候&#xff0c;Linux 是如何决策该从哪个网卡&#xff08;假设有多个网卡&#xff09;、哪个下一跳发出这个包&#xff0c;用什么 IP 作为 source......当 Linux 收到一个包时&a…

ARM与嵌入式linux入门的建议

由于很多人总问这个问题&#xff0c;所以这里做一个总结文档供大家参考。这里必须先说明&#xff0c;以下的步骤都是针对Linux系统的&#xff0c;并不面向WinCE。也许你会注意到&#xff0c;现在做嵌入式的人中&#xff0c;做linux研究的人远比做WinCE的人多&#xff0c;很多产…

ARM汇编指令的一些总结

ARM汇编指令很多&#xff0c;但是真正常用的不是很多&#xff0c;而且需要认真琢磨的又更少了。比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧。 disable watch dog timer mov r1, #0x53000000 //立即数寻址方式 mov r2, #0x0 str r2…

深入理解Linux网络笔记(一):内核是如何接收网络包的

本文为《深入理解Linux网络》学习笔记&#xff0c;使用的Linux源码版本是3.10&#xff0c;网卡驱动是Intel的igb网卡驱动 Linux源码在线阅读&#xff1a;https://elixir.bootlin.com/linux/v3.10/source 1、内核是如何接收网络包的 1&#xff09;、Linux网络收包总览 在TCP/I…

【android学习】安卓设备实现触摸事件的监听,跨进程事件注入

最近想实现触摸屏的事件记录&#xff0c;并且分别做时间戳标记&#xff0c;类似于adb shell 下的getevent/setevent&#xff0c;查了很多资料&#xff0c;下面是一些总结。 实现方法&#xff1a; 1、利用onclick方法等。这种方法只能用于自己的Activity和View中&#xff0c;如…

mmap内核源码分析,基于内核版本3.10(一)

最近项目需要使用到mmap&#xff0c;因此对mmap内核中的实现进行学习&#xff0c;该博客基于Linux-3.10&#xff0c;相近版本可以做参考&#xff0c;如果版本跨度大需结合对应版本来进行学习。 一个用户态程序可以通过调用libc中的mmap()&#xff0c;将一个已打开文件的内容映…

带你一文搞懂 Linux 网络 Phy 驱动

概述 上图来自 瑞昱半导体 (RealTek) 的 RTL8201F 系列网卡 PHY 芯片手册。按OSI 7层网络模型划分&#xff0c;网卡PHY 芯片(图中的RTL8201F)位于物理层&#xff0c;对应的软件层就是本文讨论的 PHY 驱动层&#xff1b;而 MAC 位于 数据链路层&#xff0c;也是通常软件上所说的…

一文解析Linux进程的睡眠和唤醒

Linux进程的睡眠和唤醒 在Linux中&#xff0c;仅等待CPU时间的进程称为就绪进程&#xff0c;它们被放置在一个运行队列中&#xff0c;一个就绪进程的状 态标志位为 TASK_RUNNING。一旦一个运行中的进程时间片用完&#xff0c; Linux 内核的调度器会剥夺这个进程对CPU的控制权&…

嵌入式Linux下3G模块的驱动和应用

嵌入式Linux下3G模块的驱动和应用 技术 2010-09-25 13:25:13 阅读108 评论0 字号&#xff1a;大中小 订阅 嵌入式Linux下3G模块的驱动和应用 1、 开发资源 1.1、硬件资源&#xff1a; ZTE-mf637u&#xff08;中国联通&#xff09; ZTE-mu351&#xff08;中国移…

linux 64位 寻址空间_Linux 内核系统架构

描述Linux内核的文章已经有上亿字了但是对于初学者&#xff0c;还是应该多学习多看&#xff0c;毕竟上亿字不能一下子就明白的。即使看了所有的Linux 内核文章&#xff0c;估计也还不是很明白&#xff0c;这时候&#xff0c;还是需要fucking the code.28年前(1991年8月26日)Lin…

移植Busybox到Android平台

Busybox想必大家都很熟悉&#xff0c;但是其是基于glibc/uclibc开发&#xff0c;而android采用bionic&#xff0c;另外dns有特殊处理。在android的移植&#xff0c;实际上已经有人做过了&#xff0c;比如https://github.com/CyanogenMod. 但是他的移植不够好&#xff0c;主要有…

挂载PramFS遇到的关于SELinux的问题

挂载PramFS遇到的关于SELinux的问题 执行完mount之后&#xff0c;通过dmesg|tail 命令查看是否挂载成功 但是遇到过如下图的问题 前三行表示挂载pramfs的大小、块大小、节点数、块数目、还有最大的大小。但是最后一行出现了SELinux没有配置标签的错误。 本来认为无伤大雅&…

掌握GDB调试工具,轻松排除bug!

一、什么是GDB gdb是GNU debugger的缩写&#xff0c;是编程调试工具。 GDB官网&#xff1a; https://www.gnu.org/software/gdb/GDB适用的编程语言&#xff1a; Ada / C / C / objective-c / Pascal 等。GDB的工作方式&#xff1a; 本地调试和远程调试。 目前release的最新版…

03.uboot分析之源码第二阶段

首先要明确&#xff1a;uboot目标是从flash读出内核&#xff08;nand read.jffs2 0x30007FC0 kernel;&#xff09;&#xff0c;启动它&#xff08;bootm 0x30007FC0&#xff09;。 一、分析uboot源码 /*初始化nor flash*/ #ifndef CFG_NO_FLASH/* configure available FLASH …

【调试技巧】strace神器的使用方法详解与实践

文章目录1. Strace命令简介2. 什么是系统调用3. Strace的参数4. Strace的基本用法5. Strace实战示例5.1 跟踪特定的系统调用5.2 跟踪正在执行的程序5.3 将strace的输出保存到文件中5.4 打印系统调用摘要5.5 跟踪自己的程序6. 总结1. Strace命令简介 strace命令是一个集诊断、调…

Linux页高速缓存回写机制机制源码分析,基于内核3.8:Writeback

再转一个基于内核版本3.8的&#xff0c;这个版本与3.2的基本一致&#xff0c;这个版本写的比较详细&#xff0c;所以也转过来&#xff0c;供大家比较。 转自&#xff1a;Linux 3.8 Writeback机制源码分析 https://blog.csdn.net/bysun2013/article/details/29243573 writeba…

Linux内核模块参数

一、在用户态编写程序时&#xff0c;我们都应该知道&#xff0c;是可以给程序传递参数的&#xff0c;那么同样在内核模块中也可以有同样的需求&#xff0c;下面的例子展示如何给内核模块传递参数。 二、编写源文件helloworld.c #include <linux/init.h> //所有模块都必须…

(转载)Linux内核网络设备操作部分阅读笔记

原文出处&#xff1a;http://tb.blog.csdn.net/TrackBack.aspx?PostId589444一、网络设备的初始化网络设备初始化就是调用具有__init 前缀的net_dev_init函数完成的&#xff0c;网络设备初始化包含两个部分&#xff08;在linux内核2.4办源代码分析大全一书的第550页有详细说明…

带你一张图了解八种流行的网络协议

网络协议是在网络中两台计算机之间传输数据的标准方法。 本文将通过一张图详解 8 种流行的网络协议。 1、HTTP&#xff08;超文本传输协议&#xff09;&#xff0c;HTTP 是一种用于获取 HTML 文档等资源的协议。它是 Web 上任何数据交换的基础&#xff0c;是一种客户端 - 服务…

一文搞定以太网PHY、MAC及其通信接口

本文主要介绍以太网的 MAC 和 PHY&#xff0c;以及之间的 MII&#xff08;Media Independent Interface &#xff0c;媒体独立接口&#xff09;和 MII 的各种衍生版本——GMII、SGMII、RMII、RGMII等。 简介 从硬件的角度看&#xff0c;以太网接口电路主要由MAC&#xff08;M…

ubuntu11.10 系统下系统没有声音及Gentoo上的ALSA

今天ubuntu 11.10 下突然没了声音&#xff0c;结果sudo /sbin/alsa force-reload就解决问题了&#xff0c;但不知道为什么。 原文连接 点击打开链接 什么是ALSA   ALSA是Advanced Linux Sound Architecture&#xff0c;高级Linux声音架构的简称,它在Linux操作系统上提供了音…

Linux内核模块文件分割

一、模块文件分割 在用户态写程序的时候&#xff0c;会将一个大的程序分割成几个文件&#xff0c;程序脉络清晰。将初始化函数和退出函数分开在两个文件中编写。 1、在start.c源文件中编写初始化函数 #include <linux/kernel.h> /* Were doing kernel work */#include …

Linux内核中内存管理相关配置项的详细解析12

接前一篇文章&#xff1a;Linux内核中内存管理相关配置项的详细解析11 二十四、Support DMA zone 此项只有选中和不选中两种状态&#xff0c;默认为选中。 此项在Kconfig中并无帮助信息。 二十五、Support DMA32 zone 此项默认选中。 此项在Kconfig中并无帮助信息。 二十六…

Linux内核进程的管理与调度

一&#xff0c;前戏1.1 进程调度内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来.调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换.1.2 进程的分…

Linux内核之内存管理分段机制原理与实现(从无到有的过程)

1. 分段机制概述 对于分段机制&#xff0c;要从Intel的微处理器的8086开始说起&#xff0c;刚开始内存空间比较小&#xff0c;内存寻址采用的是直接访问物理地址的方式。由于技术的发展&#xff0c;计算机做的事情越来越多&#xff0c;程序也越来越大&#xff0c;为了更大的内…

IS_ERR()的使用与说明

感谢fudan_abc的分享&#xff0c;本篇文章选自他的《Linux那些事儿之我是Hub(3)一样的精灵不一样的API》 转贴地址&#xff1a;http://blog.csdn.net/fudan_abc/archive/2007/08/09/1734839.aspx 人的无聊,有时候很难用语言表达.以下关于IS_ERR的文字仅献给无聊的你.如果你对内…

《Linux内核分析》(四)——扒开系统调用的三层皮(上)

作者&#xff1a;Sandy 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验环境&#xff1a;cLinux64位 &#xff08;32位系统可能结果会不同&#xff09; 依照学术诚信条款&#xff0c;我保证此回答为本人原创&am…

Linux内核进程管理实时调度与SMP

一&#xff0c;实时调度器类实时调度类有两类进程&#xff1a;循环进程SCHED_RR&#xff1a;循环进程有时间片&#xff0c;随着进程的运行时间会减少。当时间片用完时又将其置为初值&#xff0c;并将进程置于队列末尾。先进先出SCHED_FIFO&#xff1a;没有时间片调度&#xff0…

Linux内核进程管理进程优先级

前言&#xff1a;进程优先级实际上是系统对进程重要性的一个客观评价。根据这个评价的结果来为进程分配不同的系统资源&#xff0c;这个资源包括内存资源和CPU资源。为了保证“公平公正”的评价每个进程&#xff0c;Google工程师为此设计了一套评价系统。为什么要有进程优先级&…

《Linux内核分析》(三)——跟踪分析Linux内核的启动过程

作者&#xff1a;Sandy 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验环境&#xff1a;cLinux64位 &#xff08;32位系统可能结果会不同&#xff09; 依照学术诚信条款&#xff0c;我保证此回答为本人原创&am…

如何编写linux下nand flash驱动

转&#xff1a;http://www.cnblogs.com/shenhaocn/archive/2011/03/10/1980310.html 1. 硬件特性&#xff1a; 【Flash的硬件实现机制】 Flash全名叫做Flash Memory&#xff0c;属于非易失性存储设备(Non-volatile Memory Device)&#xff0c;与此相对应的是易失性存储设备(Vol…

vivi 命令详细

vivi就象DOS一样可以配置板子的硬件资源,DOS有命令行,vivi也有,接下来我们就熟悉一下这些命令,感觉命令有一些多,不过经常用到的不是很多,大家只要多操作几次就会非常上手拉. 4.1 part命令part show 显示分区信息part add partname part_start_addr part_leng 0 添加分区part …

【详解】如何编写Linux下Nand Flash驱动 1/2

【详解】如何编写Linux下Nand Flash驱动 - 1 of 2 版本: 1.2 最后更新日期:2011-03-15 作者&#xff1a;crifan 邮箱:green-waste(At)163.com 目录 1. 正文之前... 1.1. 目的... 1.2. 目标读者和阅读此文的前提... 1.3. 说明... 1.4. …

Linux内核六大进程通信机制原理

初学操作系统的时候&#xff0c;我就一直懵逼&#xff0c;为啥进程同步与互斥机制里有信号量机制&#xff0c;进程通信里又有信号量机制&#xff0c;然后你再看网络上的各种面试题汇总或者博客&#xff0c;你会发现很多都是千篇一律的进程通信机制有哪些&#xff1f;进程同步与…

深入详解CFS任务放置代码

一、前言 本文出现的内核代码来自Linux5.10.61&#xff0c;为了减少篇幅&#xff0c;我们对引用的代码进行了删减&#xff08;例如去掉了NUMA的代码&#xff0c;毕竟手机平台上我们暂时不关注这个特性&#xff09;&#xff0c;如果有兴趣&#xff0c;读者可以配合完整的源代码…

去掉FriendlyARM

KERNELRELEASE 的定义&#xff0c;Linux $(KERNELRELEASE) 分类&#xff1a; linux内核移植/驱动2010-01-13 21:55 1109人阅读 评论(1) 收藏 举报最近用友善之臂的板子&#xff0c;发现内核的名称是&#xff1a;Linux-2.6.29.4-FriendlyARM.后面那个FriendlyARM死活去不掉。后来…

cpio格式 initrd 的解压与压缩

nitrd 的英文含义是 boot loader initialized RAM disk&#xff0c;就是由 boot loader 初始化的内存盘。在 linux内核启动前&#xff0c;boot loader 会将存储介质中的 initrd 文件加载到内存&#xff0c;内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系…

misc设备驱动

在linux设备驱动开发中&#xff0c;由于总是有很多步骤要做&#xff0c;像要在sysfs生成分类文件等&#xff0c;并且很多是分类不明确的&#xff0c;因此linux内核给我们提供了misc设备&#xff0c;可以将要很快捷简单的完成开发。所有的miscdevice共享一个主设备号MISC_MAJOR&…

剖析RedHat Linux中三个重要内核文件

在网络中&#xff0c;不少服务器采用的是Linux系统。为了进一步提高服务器的性能&#xff0c;可能需要根据特定的硬件及需求重新编译Linux内核。编译Linux内核&#xff0c;需要根据规定的步骤进行&#xff0c;编译内核过程中涉及到几个重要的文件。比如对于RedHat Linux&#x…

Linux内核进程管理原理详解

前言&#xff1a;Linux内核里大部分都是C语言。建议先看《Linux内核设计与实现(Linux Kernel Development)》,Robert Love&#xff0c;也就是LKD。Linux是一种动态系统&#xff0c;能够适应不断变化的计算需求。Linux计算需求的表现是以进程的通用抽象为中心的。进程可以是短期…

DRM全解析 —— ADD_FB(3)

接前一篇文章&#xff1a;DRM全解析 —— ADD_FB&#xff08;2&#xff09; 本文参考以下博文&#xff1a; DRM驱动&#xff08;四&#xff09;之ADD_FB 特此致谢&#xff01; 本回开始对于drm_mode_addfb函数进行解析。为了便于理解&#xff0c;再次贴出其代码&#xff0c;在…

一文例说嵌入式 C 程序的内聚和耦合

1 - 原理篇 低耦合&#xff0c;是指模块之间尽可能的使其独立存在&#xff0c;模块之间不产生联系不可能&#xff0c;但模块与模块之间的接口应该尽量少而简单。这样&#xff0c;高内聚从整个程序中每一个模块的内部特征角度&#xff0c;低耦合从程序中各个模块之间的关联关系…

设置文件的特殊属性chattr、lsattr

一、chattr功能介绍 修改ext2和ext3文件系统属性(attribute),它的作用很大&#xff0c;其中一些功能是由Linux内核版本来支持的&#xff0c;如果Linux内核版本低于2.2&#xff0c;那么许多功能不能实现。同样&#xff0d;D检查压缩文件中的错误的功能&#xff0c;需要2.5.19以…

一文讲解关于MCU启动原理的几个关键问题

MCU最开始一启动后去哪里读代码&#xff1f; CPU上电启动后被设计为去地址0x00000000位置处读取代码&#xff1b;首先会连续读取两个字&#xff0c;分别是栈指针初始值和复位异常处理函数的地址&#xff1b;然后跳去执行复位异常处理函数。 当然在一些早期的ARM处理器设计中&a…

LinuxEXPORT_SYMBOL宏的使用

一、前言 EXPORT_SYMBOL宏的使用时出现在Linux-2.6之后&#xff0c;在Linux-2.4内核中&#xff0c;默认的非static 函数和变量都会自动导入到kernel 空间&#xff0c; 都不用EXPORT_SYMBOL() 做标记的。 然后Linux-2.6之后默认不导出所有的符号&#xff0c;所以使用EXPORT_SYMB…

Linux内核模块固定写法之init_module和cleanup_module

一、编写源代码文件helloworld.c #include <linux/init.h> //所有模块都必须包含的头文件 #include <linux/module.h> //一些宏定义&#xff0c;例如这里的KERN_INFO#define DRIVER_AUTHOR "xzvi-chip.com.cn"#define DRIVER_DESC "A sample driv…

中国第1款操作系统 opendesktop 1.0 rc版

opendesktop 1.0 rc版&#xff08;国产第一个桌面操作系统&#xff09; 有点longhorn有点linux风味. 我国针对桌面领域&#xff0c;开发了一系列国际和国内领先的技术&#xff0c;例如&#xff1a;改造了linux内核&#xff0c;设计了新的虚拟内存算法。现在openoffice的内存消耗…

Linux内核上游提交完整流程及示例

参考博客文章&#xff1a; 向linux内核提交代码 - 知乎 一、下载Linux内核源码 通过git下载Linux内核源码&#xff0c;具体命令如下&#xff1a; git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 实际命令及结果如下&#xff1a; penghaoDin…

一款轻量级事件驱动型应用程序框架

QP™/C 实时嵌入式框架 &#xff08;RTEF&#xff09; 是专为实时嵌入式 &#xff08;RTE&#xff09; 系统量身定制的活动对象计算模型的轻量级实现。QP 既是用于构建由活动对象&#xff08;参与者&#xff09;组成的应用程序的软件基础结构&#xff0c;也是用于以确定性方式执…

牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万

原文地址&#xff1a;牛客网论坛最具争议的Linux内核成神笔记&#xff0c;GitHub已下载量已过百万 1、前言 Linux内核是一个操作系统&#xff08;OS&#xff09;内核&#xff0c;本质上定义为类Unix。它用于不同的操作系统&#xff0c;主要是以不同的Linux发行版的形式。Linu…

linux 工作队列

INIT_DELAYED_WORK()是一个宏,我们给它传递了两个参数.&hub->leds和led_work.对设备驱动熟悉的人不会觉得INIT_DELAYED_WORK()很陌生,其实鸦片战争那会儿就有这个宏了,只不过从2.6.20的内核开始这个宏做了改变,原来这个宏是三个参数,后来改成了两个参数,所以经常在网上看…

关于Linux系统内核源代码分析经验谈

Linux的最大的好处之一就是它的源码公开。同时&#xff0c;公开的核心源码也吸引着无数的电脑爱好者和程序员&#xff1b;他们把解读和分析Linux的核心源码作为自己的最大兴趣&#xff0c;把修改Linux源码和改造Linux系统作为自己对计算机技术追求的最大目标。 Linux内核源码是…

Linux内核文件读取流程

本文代码基于Linux5.10。 当上层调用read函数读取一个文件时&#xff0c; Linux 内核究竟如何处理&#xff1f; 本文主要介绍这个问题 数据结构 address_space linux 的文件在磁盘上可能是不连续的&#xff0c; 但文件读取又需要将文件当成一个连续的字节流&#xff0c; 为…

真香!Linux 原来是这么管理内存的

Linux 内存管理模型非常直接明了&#xff0c;因为 Linux 的这种机制使其具有可移植性并且能够在内存管理单元相差不大的机器下实现 Linux&#xff0c;下面我们就来认识一下 Linux 内存管理是如何实现的。 一&#xff0c;基本概念 每个 Linux 进程都会有地址空间&#xff0c;这…

linux 学习- 编程基础之内核配置与编译

linux移植的准备工作 linux 内核配置与编译 1&#xff0c;清楚临时文件 中间文件 配置文件 make clean:::::::::::remove most generated files but keep the config make mrproper:::::::::::remove all generated files config files make distclean:::::::::::mrprop…

Linux内核解读

来自鹅厂架构师 作者&#xff1a;aurelianliu 工作过程中遇到的调度、内存、文件、网络等可以参考。 1.os运行态 X86架构&#xff0c;用户态运行在ring3&#xff0c;内核态运行在ring0&#xff0c;两个特权等级。 &#xff08;1&#xff09;内核、一些特权指令&#xff0c;例…

Linux进程PID散列表

linux系统中每个进程由一个进程id标识&#xff0c;在内核中对应一个task_struct结构的进程描述符&#xff0c;系统中所有进程的task_struct通过链表链接在一起&#xff0c;在内核中&#xff0c;经常需要通过进程id来获取进程描述符&#xff0c;最简单的方法可以通过遍历task_st…

Linux kernel调试 SPI NORFLASH--W25Q128

W25Q128介绍 W25Q128 是华邦公司推出的一款 SPI 接口的 NOR Flash 芯片&#xff0c;其存储空间为 128Mbit&#xff0c;相当于 16M 字节。W25Q128 可以支持 SPI 的模式 0 和模式 3&#xff0c;也就是 CPOL0/CPHA0 和CPOL1/CPHA1 这两种模式。      Flash 写入数据时和 EEPR…

Linux内核Thermal框架详解一、总述

本文部分内容参考万字长文 | Thermal框架源码剖析&#xff0c;特此致谢&#xff01; Linux Thermal Framework是Linux系统下温度控制相关的一套架构&#xff0c;主要用来解决随着设备性能不断增强而引起的日益严重的发热问题&#xff0c;控制系统运行过程中各个器件所产生的热量…

DRM全解析 —— ADD_FB(2)

接前一篇文章&#xff1a;DRM全解析 —— ADD_FB&#xff08;1&#xff09; 本文参考以下博文&#xff1a; DRM驱动&#xff08;四&#xff09;之ADD_FB 特此致谢&#xff01; 上一回围绕libdrm与DRM在Linux内核中的接口&#xff1a; DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB, d…

SYN攻击原理

SYN攻击原理 chinayoung 发表于 - 2005-8-2 10:10:00 0 推荐SYN攻击 最近对SYN Flood特别感兴趣&#xff0c;看到一个关于SYN cookie firewall的文章&#xff0c;在google搜了一下&#xff0c;没中文的&#xff0c;翻译他一下 本文介绍了&#xff14;个概念 一&#xff1a;…

Linux read的核心函数generic_file_buffered_read

内核&#xff1a;5.9.0 流程图 generic_file_buffered_read一种调用路径&#xff08;cat某个文件触发&#xff09;&#xff1a; #0 ondemand_readahead (mapping0xffff888005c61340, ra0xffff888005927598, filp0xffff888005927500, hit_readahead_markerfalse, index0, req…

【Linux内核】图解内核V0.11架构

1.架构 2.进程调度 3.内存划分 4.目录结构 5.boot 6.内核初始化

VSCode+GDB+Qemu调试ARM64 linux内核

俗话说&#xff0c;工欲善其事 必先利其器。linux kernel是一个非常复杂的系统&#xff0c;初学者会很难入门。 如果有一个方便的调试环境&#xff0c;学习效率至少能有5-10倍的提升。 为了学习linux内核&#xff0c;通常有这两个需要 可以摆脱硬件&#xff0c;方便的编译和…

一篇解析context_switch进程切换(针对ARM体系架构)

一. 概述 在最近初学ebpf时&#xff0c;使用到了挂载点finish_task_switch统计内核线程的运行时间&#xff0c;遂进入内核源码对其进行学习分析。 finish_task_switch在context_switch被调用&#xff0c;其功能是完成进程切换的收尾工作&#xff0c;比如地址空间的清理。而co…

轻松突破文件IO瓶颈:内存映射mmap技术

一、mmap基础概念 mmap 即 memory map&#xff0c;也就是内存映射。mmap 是一种内存映射文件的方法&#xff0c;即将一个文件或者其它对象映射到进程的地址空间&#xff0c;实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后&#xff0c…

Linux内核数据包处理流程-数据包接收(1)

数据包的接收作者&#xff1a;kendoKernel&#xff1a;2.6.12一、从网卡说起这并非是一个网卡驱动分析的专门文档&#xff0c;只是对网卡处理数据包的流程进行一个重点的分析。这里以Intel的e100驱动为例进行分析。大多数网卡都是一个PCI设备&#xff0c;PCI设备都包含了一个标…

Linux内核数据包处理流程-数据包接收(3)

五、队列层1、软中断与下半部当用中断处理的时候&#xff0c;为了减少中断处理的工作量&#xff0c;比如&#xff0c;一般中断处理时&#xff0c;需要屏蔽其它中断&#xff0c;如果中断处理时间过长&#xff0c;那么其它中断有可能得不到及时处理&#xff0c;也以&#xff0c;有…

【全面讲解】CPU缓存一致性:从理论到实战(上)

本文从 CPU、缓存、内存屏障、CAS到原子操作&#xff0c;再到无锁实践&#xff0c;逐一详细介绍。 01存储体系结构 速度快的存储硬件成本高、容量小&#xff0c;速度慢的成本低、容量大。为了权衡成本和速度&#xff0c;计算机存储分了很多层次&#xff0c;扬长避短&#xff…

Linux操作系统内存管理之磁盘高速缓存机制

前言&#xff1a;相信通过前面的虚拟文件系统VFS及一个具体的Ext2文件系统博文&#xff0c;大家对基本的VFS体系有一个大致的掌握了吧。从本章开始&#xff0c;我们将讨论一些VFS底层的技术细节&#xff0c;磁盘高速缓存就是其中一个重要的技术。磁盘高速缓存是一种软件机制&am…

Linux内核数据包处理流程-数据包接收(2)

四、网卡的数据接收内核如何从网卡接受数据&#xff0c;传统的经典过程&#xff1a;1、数据到达网卡&#xff1b; 2、网卡产生一个中断给内核&#xff1b; 3、内核使用I/O指令&#xff0c;从网卡I/O区域中去读取数据&#xff1b;我们在许多网卡驱动中&#xff0c;都可以在网卡的…

【linux kernel】linux的SPI框架分析

文章目录 一、linux内核中的SPI框架二、SPI核心的初始化三、SPI核心的数据结构1、struct spi_statistics2、struct spi_delay3、struct spi_device4、struct spi_driver5、struct spi_controller6、struct spi_res7、struct spi_transfer8、struct spi_message9、struct spi_bo…

RK3588调试CAN驱动记录

背景 汽车芯片公司&#xff0c;IP领导随机分配&#xff0c;主要任务是各种IP的硅前验证&#xff0c;包括uboot命令行和Linux kernel验证。工作两年半没什么外设经验也没做过CAN总线(前两年在一家芯片公司做各种加解密IP的开发)&#xff0c;一个人的摸索过程可以说是充满了坎坷…

Linux系统SPI驱动总结(二)

5、数据结构spi_message spi_message表示spi消息&#xff0c;由多个spi_transfer段组成。spi_message用来原子的执行spi_transfer表示的一串数组传输请求。这个传输队列是原子的&#xff0c;这意味着在这个消息完成之前不会有其它消息占用总线。消息的执行总是按照FIFO的顺序。…

基于ARM 的Linux 的启动分析报告——ARM+Linux的启动分析(1)

基于ARM 的Linux 的启动分析报告摘要&#xff1a;本文主要分析基于ARM 的Linux&#xff0d;2.2.26 内核启动过程。将首先从&#xff0f;arch/arm/Makefile着手&#xff0c;介绍三种不同的启动方案&#xff0c;再剖析典型的压缩内核zImage启动方案的代码结构&#xff0c;最后将详…

NOVA文件系统——inode初始化与管理

1、NOVA inode简介 在NOVA论文中对Inode Table进行了一下描述&#xff1a; NOVA将每个inode table初始化为2MB的inode块数组。 每个NOVA inode都以128字节边界对齐&#xff0c;因此给定的inode number NOVA可以轻松地定位目标inode。 NOVA按循环顺序将新的inode分配给每个ino…

NOVA文件系统——空间管理之初始化free-list

NOVA为了让NVMM空间分配与回收更快&#xff0c;它将NVMM分为持久性内存池&#xff08;pools&#xff09;&#xff0c;每个CPU一个内存池&#xff08;pool&#xff09;&#xff0c;并将空闲的NVMM页面lists放置在DRAM中。 如果当前的CPU pool中没有足够的页面可用&#xff0c;那…

security_operations结构体

概述 Linux内核提供了一种灵活的安全模块框架&#xff0c;使得开发人员可以方便地实现自定义的安全策略。其中一个重要的数据结构就是"security_operations"。这个结构体定义在<linux/security.h>头文件中。 在Linux内核中&#xff0c;安全模块是一种动态加载…

一文讲解ARMv8内存属性与类型(Memory types and attributes)简介

ARMv8中将内存分为两种类型&#xff1a;Normal memory和Device memory&#xff0c;Normal memory适用于系统中的大部分内存&#xff0c;而Device memory则适用于外设所使用的内存。 1. Normal Memory Normal memory类型属性适用于系统中的大多数内存。它表示架构允许硬件对这…

Linux ALSA 之十四:ASOC DAPM 之 Widget Path Route 分析

ASOC DAPM 之 Widget & Path & Route 分析 一、概述二、DAPM Context 介绍三、Widget 的注册3.1 Codec & Platform & Machine 中"显式" Widget 的注册3.2 DAI Widgets 的注册3.3 端点 Widgets 四、Path & Routes 的注册&#xff08;完整路径&…

16个桌面Linux用户必须要知道的Shell命令

有些人仍然会有这中愚蠢的想法&#xff0c;他们认为使用Linux就必须使用Linux shell命令。胡说&#xff01;你可以不懂得任何Linux命令&#xff0c;比如说ps&#xff0c;grep&#xff0c;ls等&#xff0c;但是你仍然可以使用很多现代的Linux桌面发行版。Linux的系统管理员与桌面…

tcp_v4_connect函数的解析

源码&#xff1a; int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) {// 解析输入的地址结构struct sockaddr_in *usin (struct sockaddr_in *)uaddr;// 获取 TCP 协议栈的全局 death_row 对象struct inet_timewait_death_row *tcp_death_row;// …

万字详解Linux内核内存规整!超详细!

1.前言 伙伴系统作为内核最基础的物理页内存分配器&#xff0c;具有高效、实现逻辑简介等优点&#xff0c;其原理页也尽可能降低内存外部碎片产生&#xff0c;但依然无法杜绝碎片问题。外部碎片带来的最大影响就是内存足够&#xff0c;但是却无法满足内存分配需求&#xff0c;…

linux进程描述符task_struct详解

本文出自:http://blog.csdn.net/hongchangfirst/article/details/7075026 大家都知道进程&#xff0c;可是知道linux是怎么管理其进程的吗&#xff1f;每一个进程都有一个进程描述符&#xff0c;具体是task_struct结构体存储相关的信息&#xff0c;在linux/sched.h文件里定义&a…

深入理解Linux网络笔记(二):内核和用户进程协作之阻塞方式

本文为《深入理解Linux网络》学习笔记&#xff0c;使用的Linux源码版本是3.10&#xff0c;网卡驱动默认采用的都是Intel的igb网卡驱动 Linux源码在线阅读&#xff1a;https://elixir.bootlin.com/linux/v3.10/source 2、内核是如何与用户进程协作的&#xff08;一&#xff09; …

手把手教你在QEMU上运行RISC-V Linux

今天教大家在QEMU模拟器上运行一个RISC-V Linux 一个RISC-V Linux包括&#xff1a; opensbilinux根文件系统 1、下载RISC-V工具链 自己下载工具链源码进行编译容易配错选项&#xff0c;我们使用编译好的工具链即可。 网址&#xff1a;https://toolchains.bootlin.com 这个…

【linux kernel】linux内核中的debugfs

文章目录 一、&#x1f449;相关文件二、&#x1f449;简介三、&#x1f449;debugfs的API1、在debugfs中创建目录2、在debugfs目录中创建文件3、创建一个具有初始大小的文件4、创建包含单个整数值&#xff08;十进制&#xff09;的文件5、创建包含单个十六进制值得文件&#x…

彻底理解操作系统与内核的区别!

通用底盘技术 Canoo公司有一项核心技术专利&#xff0c;这就是它们的通用电动底盘技术&#xff0c;长得是这个样子&#xff0c;非常像一个滑板&#xff1a; 这个带轮子、有电池、能动的滑板已经包含了一辆车最核心的组件&#xff0c;差的就是一个外壳。这个看起来像滑板的东西…

sniffer 技术原理简介

一 前言SNIFF真是一个古老的话题&#xff0c;关于在网络上采用SNIFF来获取敏感信息已经不是什么新鲜事&#xff0c;也不乏很多成功的案例&#xff0c;那么&#xff0c;SNIFF究竟是什么呢&#xff1f;SNIFF就是嗅探器&#xff0c;就是窃听器&#xff0c;SNIFF静悄悄的工作在网络…

深入理解Linux网络笔记(七):异常TCP连接建立情况、如何查看是否有连接队列溢出发生

本文为《深入理解Linux网络》学习笔记&#xff0c;使用的Linux源码版本是3.10&#xff0c;网卡驱动默认采用的都是Intel的igb网卡驱动 Linux源码在线阅读&#xff1a;https://elixir.bootlin.com/linux/v3.10/source 5、深度理解TCP连接建立过程&#xff08;二&#xff09; 4&…

浅析linux异步io框架 io_uring

前言 Linux内核5.1支持了新的异步IO框架iouring&#xff0c;由Block IO大神也即Fio作者Jens Axboe开发&#xff0c;意在提供一套公用的网络和磁盘异步IO&#xff0c;不过io_uring目前在磁盘方面要比网络方面更加成熟。 目录 背景简介 io_uring 系统API liburing 高级特性…

Linux 17岁生日,重温Linus Torvalds当年信函(中英对照)

郑重声明&#xff1a;本人英语仅过四级&#xff0c;非常之菜。强做翻译&#xff0c;亦为提高自己方便他人之举&#xff0c;错误、不足之处&#xff0c;恳请指正&#xff01; 1991年9月17日,Linus Torvalds公布了Linux 0.0.1,从此计算机行业进入了一个新的阶段,还带来了一个真正…

一文读懂|Linux 虚拟文件系统(VFS)

前言 虚拟文件系统是一个很庞大的架构&#xff0c;如果要分析的面面俱到&#xff0c;会显得特别复杂而笨拙&#xff0c;让人看着看着&#xff0c;就不知所云了&#xff08;当然主要还是笔者太菜&#xff09;&#xff0c;所以这篇博客&#xff0c;以 open() 函数为切入点&#…

Linux2.6内核的vivi分区及内核MTD分区

与Linux2.4内核相比&#xff0c;Linux2.6内核在性能、模块支持、可用性、可测量性等方面有大幅度的提高。Linux2.6内核取代2.4内核是大势所趋。 ARM9 S3C2410微处理器是一款由SAMSUNG公司为手持终端设计的低价格、低功耗、高性能&#xff0c;基于ARM920T核的微处理器。它与Lin…

Shell学习---概念与理解

什么是Shell&#xff1f; Shell是一种具备特殊功能的程序&#xff0c;它提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令&#xff0c;并把它送入内核去执行。内核是Linux系统的心脏&#xff0c;从开机自检时就驻留在计算机的内存中&#xff0c;直到计算机关闭为…

Linux内核源码剖析之TCP保活机制(KeepAlive)

写在前面&#xff1a; 版本信息&#xff1a; Linux内核2.6.24&#xff08;大部分centos、ubuntu应该都在3.1。但是2.6的版本比较稳定&#xff0c;后续版本本质变化也不是很大&#xff09; ipv4 协议 https://blog.csdn.net/ComplexMaze/article/details/124201088 本文使用案例…

探索Linux内核4.4版本带来的网络新特性

本文题目有点大&#xff0c;但其实我只想描述一些我个人一直比较关注的特性&#xff0c;并且不会太详细&#xff0c;跟往常一样&#xff0c;主要是帮忙理清思路的&#xff0c;不会分析源码。这主要是为了哪一天突然忘了的时候&#xff0c;一目十行扫一眼就能记忆当时的理解&…

O(1)调度器:Linux2.6版本的核心算法

上一章学习了O(n)调度器的设计&#xff0c;以及它的核心算法&#xff0c;其主要思路如下&#xff1a; O(n)调度器采用一个Runqueue运行队列来管理所有可运行的进程&#xff0c;在主调度schedule函数中选择一个优先级最高&#xff0c;也就是时间片最大的进程来运行&#xff0c;…

Linux内存初始化-启动阶段的内存初始化

本文代码基于ARM64平台, Linux kernel 5.15 在加载kernel 之前&#xff0c; kernel对于系统是有一定要求的&#xff0c;明确规定了boot阶段必须要把MMU关闭&#xff1a; arch/arm64/kernel/head.S/** Kernel startup entry point.* ---------------------------** The require…

Linux操作系统处理器调度基本准则和实现

1&#xff0c;基本概念在多道程序系统中&#xff0c;进程的数量往往多于处理机的个数&#xff0c;进程争用处理机的情况就在所难免。处理机调度是对处理机进行分配&#xff0c;就是从就绪队列中&#xff0c;按照一定的算法&#xff08;公平、低效&#xff09;选择一个进程并将处…

Linux操作系统进程同步的几种方式及基本原理

1&#xff0c;进程同步的几种方式1.1信号量用于进程间传递信号的一个整数值。在信号量上只有三种操作可以进行&#xff1a;初始化&#xff0c;P操作和V操作&#xff0c;这三种操作都是原子操作。P操作(递减操作)可以用于阻塞一个进程&#xff0c;V操作(增加操作)可以用于解除阻…

mount/unmount命令

http://linux.chinaunix.net/techdoc/system/2007/06/17/960372.shtml mount/unmount命令 来源: ChinaUnix博客  日期&#xff1a; 2007.06.17 10:52 (共有条评论) 我要评论 如果想在运行的Linux下访问其它文件系统中的资源的话&#xff0c;就要用mount命令来实现。 2. …

Linux内核进程管理之进程状态(二种模型)

1&#xff0c;三态模型三态模型&#xff1a;在多道程序系统中&#xff0c;进程在处理器上交替运行&#xff0c;状态也不断地发生变化。进程一般有3种基本状态&#xff1a;运行、就绪和阻塞。&#xff08;1&#xff09;运行&#xff1a;当一个进程在处理机上运行时&#xff0c;则…

Linux内核进程管理几种CPU调度策略

CPU调度我们知道&#xff0c;程序需要获得CPU的资源才能被调度和执行&#xff0c;那么当一个进程由于某种原因放弃CPU然后进入阻塞状态&#xff0c;下一个获得CPU资源去被调度执行的进程会是谁呢&#xff1f;下图中&#xff0c;进程1因为阻塞放弃CPU资源&#xff0c;此时&#…

Linux内核IO基础知识与概念

什么是 IO在计算机操作系统中&#xff0c;所谓的I/O就是 输入&#xff08;Input&#xff09;和输出&#xff08;Output&#xff09;&#xff0c;也可以理解为读&#xff08;Read&#xff09;和写&#xff08;Write)&#xff0c;针对不同的对象&#xff0c;I/O模式可以划分为磁盘…

Linux内核Socket通信原理和实例讲解

关于对 Socket 的认识&#xff0c;大致分为下面几个主题&#xff0c;Socket 是什么&#xff0c;Socket 是如何创建的&#xff0c;Socket 是如何连接并收发数据的&#xff0c;Socket 套接字的删除等。Socket 是什么以及创建过程一个数据包经由应用程序产生&#xff0c;进入到协议…

删除Ubuntu Linux操作系统旧内核的方法

2009-03-25 13:18使用Ubuntu一段时间后&#xff0c;就会发觉由于自动升级&#xff0c;系统里安装了很多内核。像我&#xff0c;竟然安装了下面那么多&#xff0c;这个造成了漫长的启动列表。必须删掉一些不用的。 首先就是使用如下命令&#xff0c;列出所有安装的内核&#xff…

一个Linux驱动工程师必知的内核模块知识

最简单的驱动 #include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h>static int __init my_init(void) {printk("my_init\n");return 0; }static void __exit my_exit(void) {printk("my_exit\n"); }module_in…

Linux内核源码中container_of详解

本文出自:http://blog.csdn.net/hongchangfirst 关于container_of的用法&#xff0c;可参考http://blog.csdn.net/hongchangfirst/article/details/7076225。其实就是解决了”如何通过结构中的某个变量的地址获取结构本身的指针“这样的问题。container_of实现了根据一个结构…

一文解析Systrace 的原理、流程及定制

一、原理和基本流程 Systrace是android性能调试优化的常用工具&#xff0c;它可以收集进程的活动信息&#xff0c;如界面布局、UI渲染、binder通信等&#xff1b;也可以收集内核信息&#xff0c;如cpu调度、IO活动、中断等&#xff1b;这些信息会统一时间轴&#xff0c;在Chro…

CVE-2023-32233 Linux kernel

0x01 漏洞介绍 近日&#xff0c;研究人员发现了Linux内核的NetFilter框架中的新漏洞&#xff08;CVE-2023-32233&#xff09;。该漏洞可被本地用户用于将权限提升为root&#xff0c;并完全控制系统。问题的根源在于tfilter nf_tables是如何处理批处理请求的&#xff0c;经过身…

深入浅析Linux Perf 性能分析工具及火焰图

Perf Event 子系统 Perf 是内置于 Linux 内核源码树中的性能剖析&#xff08;profiling&#xff09;工具。它基于事件采样的原理&#xff0c;以性能事件为基础&#xff0c;支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。可用于性能瓶颈的查找与热点代码的定位…

Linux中与命名空间相关的内核数据结构

【摘要】本文详细讲述了在Linux内核中与命名空间概念相关的内核数据结构及其内在联系。 十、命名空间(namespace)相关数据结构 Linux内核通过数据结构之间互相的连接关系&#xff0c;形成了一套虚拟的命名空间的虚拟化概念。 10.1 struct pid_namespace \linux-2.6.32.63\i…

深度解析Linux读写锁逻辑

一、Linux为何会引入读写锁&#xff1f; 除了mutex&#xff0c;在linux内核中&#xff0c;还有一个经常用到的睡眠锁就是rw semaphore&#xff08;后文简称为rwsem&#xff09;&#xff0c;它到底和mutex有什么不同呢&#xff1f;为何会有rw semaphore&#xff1f;无他&#x…

编写简单Linux驱动程序的条件(Linux内核树)

本文出自:http://blog.csdn.net/hongchangfirst 这几天研究了下怎么在Linux下遍历进程间的关系&#xff0c;包括父子关系&#xff0c;并以可视化的形式&#xff08;树&#xff09;输出出来&#xff0c;因为遍历进程间的关系是要在内核模式下才能拥有的特权&#xff0c…

细说Linux虚拟化KVM-Qemu之virtio驱动

说明&#xff1a; KVM版本&#xff1a;5.9.1QEMU版本&#xff1a;5.0.0工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 前篇文章讲完了Qemu中如何来创建Virtio Device&#xff0c;本文将围绕Guest OS中的Virtio Driver来展开&#xff1b; 看一下Guest OS&…

一文讲解Linux 设备模型 kobject,kset

设备驱动模型 面试的时候&#xff0c;有面试官会问&#xff0c;什么是Linux 设备驱动模型&#xff1f;你要怎么回答&#xff1f; 这个问题&#xff0c;突然这么一问&#xff0c;可能你会愣住不知道怎么回答&#xff0c;因为Linux 设备驱动模型是一个比较整体的概念&#xff0…

linux 定时器_Linux内核定时器

硬件定时器提供时钟源&#xff0c;时钟源的频率可以设置&#xff0c;设置好后便周期性的产生定时中断&#xff0c;系统使用定时中断来计时&#xff0c;中断周期性产生的频率就是系统频率&#xff0c;也叫节拍率&#xff0c;1000Hz,100Hz等等&#xff0c;可以在编译Linux内核的时…

学习linux下的c/c++编程

学习linux下的c/c编程 1&#xff0c;先有linux环境搭minGW和cygwin都有点麻烦&#xff0c;最最简单的办法还是装个真正的linux&#xff0c;用虚拟机也好&#xff0c;在网络上的另一台机器也好。这样不仅快&#xff0c;而且你有了真正的环境。2.会C/C语言&#xff08;估计你会…

一文手把手教你写一个 Makefile 文件

如果我们是在Linux下开发&#xff0c;那Makefile肯定要知道&#xff0c;不懂Makefile&#xff0c;面对较大的工程项目的时候就会比较麻烦&#xff0c;懂得利用开发工具将会大大提高我们的开发效率&#xff0c;也可以说Makefile是必须掌握的一项技能。 一、了解什么是 Makefile…

[动手写操作系统]-01-开机运行系统

文章目录 **概念和目标**概念目标理论源码概念和目标 概念 assembler: 汇编程序BIOS: BIOS(Basic Input Output System,基本输入输出系统)是个可编程的微型操作系统,用于管理计算机中的软硬件,它控制着系统的启动,系统是如何连接外部设备,怎样响应,调整相应操作,都是…

Linux延时队列工作原理与实现

当进程要获取某些资源&#xff08;例如从网卡读取数据&#xff09;的时候&#xff0c;但资源并没有准备好&#xff08;例如网卡还没接收到数据&#xff09;&#xff0c;这时候内核必须切换到其他进程运行&#xff0c;直到资源准备好再唤醒进程。 waitqueue (等待队列) 就是内核…

知其然更要知其所以然,聊聊SQLite软件架构

SQLite是一个非常受欢迎的数据库&#xff0c;在数据库排行榜中已经进入前十的行列。这主要是因为该数据库非常小巧&#xff0c;而且可以支持Linux、Windows、iOS和Andriod的主流的操作系统。 SQLite非常简单&#xff0c;是一个进程内的动态库数据库。其最大的特点是可以支持不同…

ARM+LINUX嵌入式学习路线

嵌入式学习是一个循序渐进的过程&#xff0c;如果是希望向嵌入式软件方向发展的话&#xff0c;目前最常见的是嵌入式Linux方向&#xff0c;关注这个方向&#xff0c;大概分3个阶段&#xff1a; 1、嵌入式linux上层应用&#xff0c;包括QT的GUI开发 2、嵌入式linux系统开发 3、…

玩转Linux内核进程调度,这一篇就够(所有的知识点)

一&#xff0c;进程的分类 在 CPU 的角度看进程行为的话&#xff0c;可以分为两类&#xff1a; CPU 消耗型&#xff1a;此类进程就是一直占用 CPU 计算&#xff0c;CPU 利用率很高IO 消耗型&#xff1a;此类进程会涉及到 IO&#xff0c;需要和用户交互&#xff0c;比如键盘输…

深入理解cache对写好代码至关重要

CACHE的一致性 Cache的一致性有这么几个层面 1. 一个CPU的icache和dcache的同步问题 2. 多个CPU各自的cache同步问题 3. CPU与设备&#xff08;其实也可能是个异构处理器&#xff0c;不过在Linux运行的CPU眼里&#xff0c;都是设备&#xff0c;都是DMA&#xff09;的cache同…

深入理解 kernel panic 的流程

我们在项目开发过程中&#xff0c;很多时候会出现由于某种原因经常会导致手机系统死机重启的情况&#xff08;重启分Android重启跟kernel重启&#xff0c;而我们这里只讨论kernel重启也就是 kernel panic 的情况&#xff09;&#xff0c;死机重启基本算是影响最严重的系统问题了…

多进程与多线程

一.为何需要多进程&#xff08;或者多线程&#xff09;&#xff0c;为何需要并发&#xff1f; 这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说&#xff0c;他们确实无法感受到并发的魅力以及必要性。 我想&#xff0c;只要你不是整天都写那种int mai…

在shell中执行一条可执行程序(./a.out) 系统执行的过程

目录 系统调度过程 用户空间角度&#xff1a; 内核角度 1、调用fork创建一个新进程 2、使用_fo_fork创建新进程 3、父进程调用wake_up_new_task尝试唤醒新进程 4、CPU选择一个合适的进程来运行&#xff1b; 5、运行新进程 6、实现负载均衡 系统调度过程 分析在命令行…

嵌入式Linux

什么是嵌入式Linux 嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改&#xff0c;使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源&#xff0c;又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒…

深入分析Linux虚拟化KVM-Qemu之ioeventfd与irqfd

说明&#xff1a; KVM版本&#xff1a;5.9.1 QEMU版本&#xff1a;5.0.0 工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 ​ 图中的各个模块&#xff0c;只剩下通知机制没讲了&#xff0c;本文来一篇终结者&#xff1b; Guest与KVM及Qemu之间的通知机制&…

Linux页高速缓存缓存回写机制,基于2.6版本内核

注&#xff1a;2.6内核版本使用下列方式&#xff0c;旧版本内核可以参考 内核版本3.2页回写机制可参考&#xff1a; https://blog.csdn.net/SweeNeil/article/details/84993387 之后版本的页回写机制还有待考证。 本文转自&#xff1a; http://oenhan.com/linux-cache-wri…

一文图解|I/O 调度层

当我们使用 read() 和 write() 系统调用向内核提交读写文件操作时&#xff0c;内核并不会立刻向硬盘发送 I/O 请求&#xff0c;而是先将 I/O 请求交给 I/O 调度层进行排序和合并处理。经过 I/O 调度层加工处理后&#xff0c;才会将 I/O 请求发送给块设备驱动进行最终的 I/O 操作…

一些Linux内核内存性能调优笔记!

前言 在工作生活中&#xff0c;我们时常会遇到一些性能问题&#xff1a;比如手机用久了&#xff0c;在滑动窗口或点击 APP 时会出现页面反应慢、卡顿等情况&#xff1b;比如运行在某台服务器上进程的某些性能指标&#xff08;影响用户体验的 PCT99 指标等&#xff09;不达预期…

学习嵌入式的过程和基础

C语言是嵌入式最重要的基础知识&#xff0c;但是掌握了它并不代表你的基础已经很好了&#xff0c;嵌入式学习相关的基础知识主要是这些&#xff1a; 一是程序设计的基础&#xff0c;例如&#xff1a;基本的编程语言基础&#xff0c;至少对数据类型、程序的结构及流程控制等最基…

linux文件目录配置

1、不可与root分区分开的目录 在linux安装的过程中&#xff0c;最重要的就是根目录‘/’所在的分区了&#xff0c;我们也可以将其他的例如/home放在不同的分区中&#xff0c;&#xff0c;但是/etc/ ,/sbin/,./bin/,/dev/,/lib/要放在‘root’目录下。 因为linux在启动时候&…

IMX6ULL驱动开发实战连载-02设备树的编译和加载

哈喽&#xff0c;大家好。今天介绍的是设备树的加载和编译。设备树&#xff0c;我也是第一次接触&#xff0c;在编译的时候&#xff0c;也是遇到了很多问题。折腾了好几次才加载成功。在这里&#xff0c;也想和大家说&#xff0c;遇到问题不要怕&#xff0c;我们现阶段所遇到的…

你真的懂Linux内核中的阻塞和异步通知机制吗?(花了五天整理,墙裂推荐!)

工科生一枚&#xff0c;热衷于底层技术开发&#xff0c;有强烈的好奇心&#xff0c;感兴趣内容包括单片机&#xff0c;嵌入式Linux&#xff0c;Uboot等&#xff0c;欢迎学习交流&#xff01; 爱好跑步&#xff0c;打篮球&#xff0c;睡觉。 欢迎加我QQ1500836631&#xff08;备…

高性能网络I/O框架-netmap源码分析

前几天听一个朋友提到这个netmap&#xff0c;看了它的介绍和设计&#xff0c;确实是个好东西。其设计思想与业界不谋而合——因为为了提高性能&#xff0c;几个性能瓶颈放在那里&#xff0c;解决方法自然也是类似的。 netmap的出现&#xff0c;它既实现了一个高性能的网络I/O框…

Linux用户空间与内核空间通信(Netlink通信机制)

一&#xff0c;什么是Netlink通信机制 Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信&#xff0c;但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式&#xff0c;一般不用Netlink。除非需要…

Linux内核Thermal框架详解三、Thermal Core(2)

本文部分内容参考万字长文 | Thermal框架源码剖析&#xff0c;特此致谢&#xff01; 三、相关源码及分析 Thermal Core主要是初始化driver&#xff0c;注册governor&#xff0c;解析dtsi文件&#xff0c;创建thermal zone和初始通信。相关的文件包括thermal_core.c&#xff08…

浅谈Linux PCI设备驱动(二)

http://blog.csdn.net/linuxdrivers/archive/2010/10/01/5917478.aspx 我们在 浅谈Linux PCI设备驱动&#xff08;一&#xff09;中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组&#xff0c;而Linux PCI初始化就是使用了这些寄存器来进行的。后面我们会举个例子来说明Linux …

linux各文件夹的作用

linux 文件类型&#xff1a; d&#xff1a;目录文件&#xff1b; -&#xff1a;普通文件&#xff1b; l&#xff1a;链接文件&#xff1b; b&#xff1a;块设备文件&#xff1b; c&#xff1a;字符设备文件&#xff1b; p&#xff1a;管道文件&#xff1b; s&#xff1a…

我所认识的EXT2(二)

EXT2中块组的划分 块组是非常重要的概念&#xff0c;首先请朋友们弄清楚分区和块组是完全不同的概念&#xff0c;分区至多只能有4个&#xff08;3个主分区和1个扩展分区&#xff0c;如果4个分区不够用&#xff0c;只能用逻辑分区&#xff09;&#xff0c;分区的作用就是对磁盘…

面对不断升级的内核,如何学习linux设备驱动

面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库&#xff0c;很多linux应用程序 开发人员和linux设备驱动开发人员即兴奋&#xff0c;又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能&#xff0c;烦躁的是适应新软件的特性、搭建新环境是一项 非常繁…

标准linu休眠和唤醒机制分析(二)

三、pm_test属性文件读写 int pm_test_level TEST_NONE; static const char * const pm_tests[__TEST_AFTER_LAST] { [TEST_NONE] "none", [TEST_CORE] "core", [TEST_CPUS] "processors", [TEST_PLATFORM] "platform", [TEST…

Linux内核Thermal框架详解四、Thermal Core(3)

本文部分内容参考Linux Thermal 学习笔记 - 爱码网。特此致谢&#xff01; 接前一篇文章Linux内核Thermal框架详解三、Thermal Core&#xff08;2&#xff09; 三、相关源码及分析 2. thermal_register_governors 原本thermal_register_governors属于下一级函数&#xff0c;在…

简单写写给新手的MMU工作原理!

很多人接触Linux的内存管理是从malloc()这个C语言库函数开始&#xff0c;也是从那时开始就知道了虚拟内存的概念。但很多人可能并不知道虚拟地址是如何转换成物理地址的&#xff0c;今天带你搞懂虚拟地址到物理地址的转换过程&#xff0c;这其实也是MMU的工作原理。 1、预备知…

Linux内核Thermal框架详解十四、Thermal Governor(4)

本文部分内容参考 万字长文 | Thermal框架源码剖析&#xff0c; Linux Thermal机制源码分析之框架概述_不捡风筝的玖伍贰柒的博客-CSDN博客&#xff0c; “热散由心静&#xff0c;凉生为室空” - linux温控的那些事儿_内核工匠的博客-CSDN博客&#xff0c; Linux thermal g…

linux增加自己的模块

您的内核必须已经启用这些选项进行了编译&#xff1a; Loadablemodule support ---> [*]Enable loadable module support [*] Module unloading [] Module versioning support (EXPERIMENTAL) [*] Automatic kernel module loading 如果按照第一篇教程中的说明编译内…

软中断

软中断软中断softirqsoftirq简介提出softirq的机制的目的和老版本的底半部分的目的是一致的&#xff0c;都是将某个中断处理的一部分任务延迟到后面去执行。 Linux内核中一共可以有32个softirq,每个softirq实际上就是指向一个函数。当内核执行softirq(do_softirq),就对这32个so…

spinlock的设计和实现

http://www.linuxforum.net/forum/gshowflat.php?Cat&BoardlinuxK&Number263448&page4&viewcollapsed&sb5&oall&fpart 在Linux的内核中&#xff0c;spin lock用在多处理器环境中。当一个CPU访问一个临界资源 (critical section)的时候&#x…

Linux系统的休眠与唤醒简介

转文地址&#xff1a;http://blog.163.com/jiaguang3010717126/blog/static/1268082432010310103037253/ 系统挂起&#xff08;Suspend&#xff09;是电源管理&#xff08;APM&ACPI&#xff09;的一个特性&#xff0c;给用户带来了很大的方便。Linux在2.6系列核心中对电源管…

Android开发入门_Android整体架构概述

Android整体架构图 Android系统架构之应用程序 Android会同一系列核心应用程序包一起发布&#xff0c;该应用程序包包括email客户端&#xff0c;SMS短消息程序&#xff0c;日历&#xff0c;地图&#xff0c;浏览器&#xff0c;联系人管理程序等。所有的应用程序都是使用JAVA语言…

关于linux内核中的__attribute__ ((packed))

来源&#xff1a; http://jimmy-lee.blog.hexun.com/8001013_d.html __attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。 #define __u8 unsigned char #define __u16 unsigned short /* __attribute__ ((packed)) 的…

2009年终总结与展望

2009年终总结 平淡的一年又要过去&#xff0c;这一年没有感觉到什么特别激动、开心、倒霉的事情&#xff0c;自己也没有做什么东西。还记得去年写总结的时候&#xff0c;一年这么快就过去了了&#xff0c;哎。还是先看看去年都总结了什么&#xff1f;今天我又干了些什么吧&a…

一文解析为什么进程地址空间中包括操作系统?

今天聊聊进程地址空间这点小事。说到进程的地址空间&#xff0c;大家可能都知道这样一张图&#xff1a; 这张图就是Linux程序运行起来后所谓的进程地址空间&#xff0c;这里包括我们熟悉的代码区、数据区、以及堆区和栈区&#xff0c;今天我们不讲解这些区域&#xff0c;而是重…

linux内核调度算法(2)--CPU时间片如何分配

内核在微观上&#xff0c;把CPU的运行时间分成许多分&#xff0c;然后安排给各个进程轮流运行&#xff0c;造成宏观上所有的进程仿佛同时在执行。双核CPU&#xff0c;实际上最多只能有两个进程在同时运行&#xff0c;大家在top、vmstat命令里看到的正在运行的进程&#xff0c;并…

linux内核调度算法(1)--快速找到最高优先级进程

为什么要了解内核的调度策略呢&#xff1f;呵呵&#xff0c;因为它值得我们学习&#xff0c;不算是废话吧。内核调度程序很先进很强大&#xff0c;管理你的LINUX上跑的大量的乱七八糟的进程&#xff0c;同时还保持着对用户操作的高灵敏响应&#xff0c;如果可能&#xff0c;为什…

module_init的加载和释放

像你写C程序需要包含C库的头文件那样&#xff0c; Linux 内核编程也需要包含Kernel头文件&#xff0c;大多的Linux驱动程序需要包含下面三个头文件&#xff1a;#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>其中&#xff0c;i…

Linux内核源码阅读之中断(简)

摘要 本文对Linux2.4.0中中断机制从源码层面进行简要介绍&#xff0c;阅读需要有一定基础&#xff0c;详细版本请参考这里。 这里主要介绍以下几个部分&#xff1a; 1.中断向量表IDT的初始化 主要是设置中断向量表中中断服务的类型&#xff0c;服务程序的入口地址&#xff…

Linux开机启动顺序小结

Linux开机启动十步骤 收藏分享2012-2-6 11:15| 发布者: 红黑魂| 查看数: 1366| 评论数: 0|来自: 比特网 摘要:   开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。  启动第一步--加载…

Linux ALSA 之三:简单的 ALSA Driver 实现

简单的 ALSA Driver 实现一、概述二、Linux ALSA 音频设备驱动实例1、注册 Platform Device & Platform Driver2、创建 card3、PCM 设备相关设定3.1 创建 PCM Device3.2 设置 PCM 操作3.2 PCM HW 初始化4、Control 设备相关设定4.1 定义 snd_kcontrol_new4.2 构造 control5…

一文详解高并发中的线程与线程池

一切要从CPU说起 你可能会有疑问&#xff0c;讲多线程为什么要从CPU说起呢&#xff1f;原因很简单&#xff0c;在这里没有那些时髦的概念&#xff0c;你可以更加清晰的看清问题的本质。CPU并不知道线程、进程之类的概念。CPU只知道两件事:1. 从内存中取出指令2. 执行指令&…

A核与M核异构通信过程解析

现在越来越多的产品具有M core和A core的异构架构&#xff0c;既能达到M核的实时要求&#xff0c;又能满足A核的生态和算力。比如NXP的i.MX8系列、瑞萨的RZ/G2L系列以及TI的AM62x系列等等。虽然这些处理器的品牌及性能有所不同&#xff0c;但多核通信原理基本一致&#xff0c;都…

1.2 内核进程销毁

1&#xff1a;代码版本 Linux-0.11 exit.c 2&#xff1a;销毁流程 销毁函数也是系统调用 die(&#xff09;-> do_exit() 具体过程&#xff1a; 首先会释放进程的代码段和数据段占用的内存进行释放关闭进程打开的文件&#xff0c;对当前的目录和i节点进行同步如果当前要…

1.0-内核进程初始化与创建

1&#xff1a;相关信息 代码&#xff1a;linux 0.11 2&#xff1a; 进程结构体 每个进程在内核中都对应着一个结构体struct task_struct&#xff0c;用来表示进程的状态和相关信息 struct task_struct { /* these are hardcoded - dont touch */long state; /*进程的状态 -…

ubuntu中安装man手册查看函数原型

几天看书&#xff0c;看到用man命令可以查看c语言库函数的函数原型&#xff0c;就今天试了试。可是不行。提示没有我要查找的那个条目。上网搜解决方案。原来ubuntu中man的手册默认没有装。用下面几条命令就行了&#xff1a; sudo apt-get install manpages sudo apt-get ins…

Linux源码阅读进程通信之管道(详)

管道是进程通信的一种方式&#xff0c;这里主要介绍无名管道&#xff08;以后简称管道&#xff09;。 特点 1.这种管道只能在父子进程或兄弟进程之间建立&#xff0c;而命名管道就没有这种限制。 2.管道只能单向流通&#xff0c;对于A,B两个进程&#xff0c;要不A写B读&#xf…

linux中的优先搜索树的实现--prio_tree

linux中的优先搜索树的实现--prio_tree prio_tree在linux内核中被应用于反向内存映射&#xff0c;prio-tree是一棵查找树&#xff0c;它查找的是一个区间&#xff0c;为何将之组织成tree是一个数学问题&#xff0c;简单理解就是根节点包含了所有的区间&#xff0c;父节点代表的…

浅谈Linux中系统调用代码相关

一、系统调用简介 操作系统为用户态的进程与硬件设备进行交互提供了一组接口&#xff0c;在应用程序和硬件之间设置一个额外的层有诸多优点&#xff1a; 1. 使得编程更容易&#xff0c;不需要用户学习硬件设备的低级编程 2. 提高了系统的安全性&#xff0c;内核在满足某个请…

说说UIO

首先,什么是UIO?UIO是运行在用户空间的I/O,那为什么要把I/O放在用户空间呢? 原因有二: 第一,硬件设备可以根据功能分为网络设备&#xff0c;块设备&#xff0c;字符设备&#xff0c;或者根据与CPU相连的方式分为PCI设备&#xff0c;USB设备等。它们被不同的内核子系统支持。…

linux内核cdev_init系列函数

内核中每个字符设备都对应一个 cdev 结构的变量&#xff0c;下面是它的定义&#xff1a; linux-2.6.22/include/linux/cdev.h struct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; // 指向实现驱动的模块 const struct fi…

Linux下PCI设备驱动程序开发

一、PCI总线系统体系结构 PCI是外围设备互连&#xff08;Peripheral Component Interconnect&#xff09;的简称&#xff0c;作为一种通用的总线接口标准&#xff0c;它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范&#xff0c;其目的是描述如…

探索网络通信核心技术,手写TCPIP用户态协议栈,让性能飙升起来!

一、DPDK简介 DPDK&#xff08;Data Plane Development Kit&#xff09;是一个开源的数据平面开发工具包&#xff0c;它提供了一组C语言库和驱动程序&#xff0c;用于快速开发高性能的数据平面应用程序。DPDK使用用户空间的方式来实现网络数据包处理&#xff0c;从而避免了传统…

讲讲几道关于 TCP/UDP 通信的面试题

TCP &#xff08;1&#xff09;TCP 的 accept 发生在三次握手的哪个阶段&#xff1f; 如下图connect和accept的关系&#xff1a; accept过程发生在三次握手之后&#xff0c;三次握手完成后&#xff0c;客户端和服务器就建立了tcp连接并可以进行数据交互了。这时可以调用accep…

I’m lost on my way to Information Security

RT,最近,好像不是,是好长一段时间以来,我对自己学习方向非常迷茫.这几天,在网上看了一些前辈的经历,特别是以下一篇(PS:好像是上学期看到的,我收藏在手机上了),现在再来看,似乎有了点明朗的感觉,不是那么迷茫了.以下是原文(链接:信息安全专业的认识): " 信息安全涉及到的…

什么是系统调用

定义&#xff1a;linux内核中设置了一组用于实现系统功能的子程序&#xff0c;成为系统调用。系统调用和普通库函数调用非常相似&#xff0c;只是系统调用由操作系统核心提供&#xff0c;运行于核心态&#xff0c;而普通的函数调用由函数库或用户自己提供&#xff0c;运行于用户…

【Linux内幕】U-BOOT快速入门

前言 Das U-Boot 是一个主要用于嵌入式系统的引导加载程序&#xff0c;可以支持多种不同的计算机系统结构&#xff0c;包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。 一言以蔽之&#xff0c;uboot的功能就是用户…

用Diff和Patch工具维护源码

用Diff和Patch工具维护源码 级别&#xff1a; 初级 杨沙洲 (pubb163.net)国防科技大学计算机学院 2004 年 3 月 01 日 在Unix系统下&#xff0c;维护源码版本可以使用很多方法&#xff0c;其中最常用的当然是大名鼎鼎的CVS&#xff0c;但实际上&#xff0c;简单的版本维护工作…

《深入理解Linux网络内幕》学习笔记一:内核通知链

大多数内核子系统都是相互独立的&#xff0c;因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求&#xff0c;也即是让某个子系统在发生某个事件时通知其它的子系统&#xff0c;Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用&#xff0c…

linux内核模块的强制删除

一.问题&#xff1a; 前些日子在工作中遇到一个文件&#xff0c;当rmmod一个模块的时候&#xff0c;在模块的exit函数中阻塞了&#xff0c;rmmod进程杀也杀不掉&#xff0c;永远呆在那里&#xff0c;发现它已经是D(disk sleep)状态了&#xff0c;真的无能为力了吗&#xff1f;…

内核启动参数祥解

Linux内核在启动的时候&#xff0c;能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值&#xff0c;可以通过这种方式手动将这些参数传递给内核。   如果不使用启动管理器&#xff0c;比如直接从BIOS或者把内核…

自己动手编写嵌入式Bootloader---基本功能流程

【 IT168 技术文档】CPU上电后会从IO空间的某地址取第一条指令。但此时&#xff1a;PLL没有启动&#xff0c;CPU工作频率为外部输入晶振频率&#xff0c;非常低;CPU工作模式、中断设置等不确定;存储空间的各个BANK(包括内存)都没有驱动&#xff0c;内存不能使用。在这种情况下必…

linux 学习- 编程基础之uboot移植

uboot.bin 生成&#xff1a;1. 对board配置 $make smdk2410_config 2, 进行编译生成u-boot.bin&#xff1a; $make CROSS_COMPILEarm-linux- //完整的arm-liunx的目录 Uboot命令 1&#xff0c;help 查看所有命令 2&#xff0c;printenv 查看环境变量 3&#xff0c;…

嵌入式学习七步曲

第一篇 Linux主机开发环境&#xff08;15天&#xff09; 3 1.1 Linux的安装 41.1.1 Vmvare下Linux的安装&#xff08;优先&#xff09; 41.1.2 Windows下从硬盘安装Linux&#xff08;可选&#xff09; 41.1.3 光盘直接安装&#xff08;可选&#xff09…

Linux页高速缓存内核处理函数,查找页

关于Linux内核页高速缓存的介绍网络上有很多优秀的资源如下&#xff1a; 1、Linux 内核之页高速缓存与页回写 https://www.jianshu.com/p/d33ec2707e7f 2、页高速缓存和页回写 https://blog.csdn.net/yusiguyuan/article/details/12022811 3、《Linux内核设计与实现》读书…

lwp和线程区别

轻量级进程 在计算机操作系统中,轻量级进程&#xff08;LWP&#xff09;是一种实现多任务的方法。与普通进程相比&#xff0c;LWP与其他进程共享所有&#xff08;或大部分&#xff09;它的逻辑地址空间和系统资源&#xff1b;与线程相比&#xff0c;LWP有它自己的进程标识符&am…

linux驱动开发中copy_from_user open read write等常用函数总结

工科生一枚&#xff0c;热衷于底层技术开发&#xff0c;有强烈的好奇心&#xff0c;感兴趣内容包括单片机&#xff0c;嵌入式Linux&#xff0c;Uboot等&#xff0c;欢迎学习交流&#xff01; 爱好跑步&#xff0c;打篮球&#xff0c;睡觉。 欢迎加我QQ1500836631&#xff08;备…

Android下模拟器使用串口进行通讯

由于最近在弄Android串口通讯相关工作&#xff0c;在源码开发模拟下写了个串口通讯程序&#xff0c;首先在Ubutu下使用GCC编译&#xff0c;并且在Linux下与另一台PC的串口工具进行串口通讯测试&#xff0c;一切OK&#xff0c;于是&#xff0c;接着移植到Android环境下&#xff…

SYN-Flood遭遇战——Linux内核SYN-Cookie实现探究

SYN Flood好使啊&#xff0c;成本低廉&#xff0c;简单暴力&#xff0c;杀伤力强&#xff0c;更重要的是&#xff1a;无解&#xff0c;一打一个准&#xff01;这种攻击充分利用了TCP协议的弱点&#xff0c;可以很轻易将你的网络打趴下。如果监控和应急不到位的话&#xff0c;那…

poll, select epoll 原理比较分析

因为需要了解底层设备访问的原理&#xff0c;所以惯用高层应用语言的我&#xff0c;需要了解一下Linux的设备访问机制&#xff0c;尤其是处理一组非阻塞IO的原理方法&#xff0c;标准的术语好像是叫多路复用。以下文章部分句子有引用之处&#xff0c;恕没有一一指出出处。对于接…

Windows CE内核启动分析

移植或者创建一个BSP,也许需要先熟悉Windows CE的内核启动过程. 目录 基于ARM的Windows CE内核启动分析1 1.startup.s2 2.KernelStart2 2.1 ARMInit()3 2.1.1 OALIntrInit3 2.1.2 OALTimerInit4 2.1.2.1 Variable Tick Scheduler4 2.2 KernelInit()4 2.3 FirstSchedu…

D-Bus学习笔记

1. 进程间使用D-Bus通信 D-Bus是一种高级的进程间通信机制&#xff0c;它由freedesktop.org项目提供&#xff0c;使用GPL许可证发行。D-Bus最主要的用途是在Linux桌面环境为进程提供通信&#xff0c;同时能将Linux桌面环境和Linux内核事件作为消息传递到进程。D-Bus的主要概率…

嵌入式linux启动信息完全注释

摘要 我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释&#xff0c;通过我们的讨论&#xff0c;大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解&#xff0c;并且能了解到这些输出信息的来龙去脉。 嵌入式linux的启…

gcc汇编

在Linux的源代码中&#xff0c;有很多C语言的函数中嵌入一段汇编语言程序段&#xff0c;这就是gcc提供的“asm”功能&#xff0c;例如在include/asm-i386/system.h中定义的&#xff0c;读控制寄存器CR0的一个宏read_cr0()&#xff1a; #define read_cr0() ({ \ unsigned int __…

做嵌入式驱动的前途何在

问&#xff1a; 做嵌入式linux驱动的前途何在&#xff1f; 或者说&#xff0c;怎么才能做好这一行&#xff1f; 我做嵌入式驱动开发已经一年多了&#xff0c;感觉没学到多少东西。 从网络驱动到CAN驱动、从dataflash驱动到NAND/NOR FLASH驱动、从CF/IDE驱动到各种嵌入式文件系…

u-boot命令介绍及烧写程序实例(备忘)

Printenv 打印环境变量。 Uboot> printenv baudrate115200 ipaddr192.168.1.1 ethaddr12:34:56:78:9A:BC serverip192.168.1.5 Environment size: 80/8188 bytes Setenv 设置新的变量 Uboot> setenv myboard AT91RM9200DK Uboot> printenv baudrate115200 ipaddr19…

高手链接

http://blog.csdn.net/fudan_abc?viewmodecontents 《Linux那些事儿之我是USB》 《Linux内核修炼之道》 /**************************************************************************************************************/ unbutun的专栏 http://blog.csdn.net/unbutu…

I/O端口 与 I/O内存

MIPS、ARM和PowerPC等平台的I/O和主存采用的是统一编址的方式&#xff0c;它们将I/O空间映射到内存&#xff0c;采用与内存相同的汇编指令(load和store)来读写设备&#xff0c;这种方式称为I/O内存&#xff1b;x86平台的I/O和主存采用的是独立编址的方式&#xff0c;CPU有专门的…

linux ppp上网

本文将说明如何在Linux下用CDMA modem完成拨号上网的工作。首先&#xff0c;读者需要对PPP协议有初步的了解&#xff0c;比如&#xff0c;读者至少应该知道LCP和NCP是什么&#xff0c;以及PAP和CHAP是做什么的&#xff1b;其次&#xff0c;读者可能需要安装pppd和chat两个工具&…

u-boot启动过程分析

从源代码看系统启动过程 为什么要分析源代码&#xff1f;分析优秀的源代码本身就是一个学习的过程&#xff0c;也是进行深入研究的必经之路。不过在此我们的主要目的并非要研究U-boot或Bootloader技术本身&#xff0c;而仅仅是为了成功的并且恰当的将U-Boot移植到我们的开发板…

linux根文件系统与initrd

linux根文件系统与initrd 收藏 1 根文件系统 简单来说&#xff0c;&#xff08;根文件系统&#xff09;就是系统第一个mount的文件系统 Filesystem Handling Like every traditional Unix system, Linux makes use of a system s root filesystem : …

Linux内核源码阅读之系统调用execve()

asmlinkage int sys_execve(struct pt_regs regs) 前言 sys_execve()根据参数中指定的二进制文件路径&#xff0c;执行相应的二进制文件。我们可能会疑惑&#xff0c;参数中是一个pt_regs结构&#xff0c;哪里有文件路径&#xff1f;事实上&#xff0c;系统调用也属于中断&…

kswapd0、kjournald、pdflush、kblocked、migration进程含义

理想情况下&#xff0c;您应该明白在您的系统中运行的每一个进程。要获得所有进程的列表&#xff0c;可以执行命令 ps -ef&#xff08;POSIX 风格&#xff09;或 ps ax&#xff08;BSD 风格&#xff09;。进程名有方括号的是内核级的进程&#xff0c;执行辅助功能&#xff08;比…

【linux kernel】对linux内核设备的注册机制和查找机制分析

文章目录 1、简介2、device_initialize分析3、device_add分析4、总结 &#x1f53a;【linux内核系列文章】 &#x1f449;对一些文章内容进行了勘误&#xff0c;本系列文章长期不定时更新&#xff0c;希望能分享出优质的文章&#xff01; 1、《linux内核数据结构分析之哈希表》…

linux C++编程环境

GCC 中文手册 http://www.nbfan.com/forum/dispbbs....&ID1433&page1 GNU make 指南 http://www.linuxsir.org/bbs/showthr...&threadid40431 autoconf-2.57手册(英文) http://www.gnu.org/software/autocon...toconf_toc.html Autoconf-…

DRM全解析 —— CREATE_DUMB(3)

接前一篇文章&#xff1a;DRM全解析 —— CREATE_DUMB&#xff08;2&#xff09; 本文参考以下博文&#xff1a; DRM驱动&#xff08;三&#xff09;之CREATE_DUMB 特此致谢&#xff01; 上一回讲解了drm_mode_create_dumb函数的前半部分&#xff0c;本回讲解余下的部分。 为…

为Linux正名!

我已经半年没有使用 Windows 的方式工作了。Linux 高效的完成了我所有的工作。 GNU/Linux 不是每个人都想用的。如果你只需要处理一般的事务&#xff0c;打游戏&#xff0c;那么你不需要了解下面这些了。我不是一个狂热的自由软件份子&#xff0c;虽然我很喜欢自由软件。这篇文…

linux内核整体架构分析笔记

一、整体架构与子系统划分 根据内核的核心功能&#xff0c; Linux 内核划分为 5 个子系统&#xff1a; Process Scheduler&#xff0c;也称作进程管理、进程调度&#xff1a;负责管理 CPU 资源&#xff0c;以便让各个进程可以以尽量公平的方式访问 CPU。Memory Manager&#x…

传Google新Chrome OS系统将支持ARM芯片

此前&#xff0c;Google 曾非常明确表示&#xff0c;Chrome OS不会局限于上网本&#xff0c;另外&#xff0c;如果有可能也会支持各种设备&#xff0c;包括基于ARM的智能本和平板机。 我们可以从 Chromium OS 系统项目中看到&#xff0c;Chrome OS将会和以ARM芯片为核心处理器的…

DRM全解析 —— ADD_FB(1)

本文参考以下博文&#xff1a; DRM驱动&#xff08;四&#xff09;之ADD_FB 特此致谢&#xff01; 在笔者之前的libdrm全解析系列文章中&#xff0c;讲到了drmIoctl(fd, DRM_IOCTL_MODE_ADDFB, &f)以及其封装函数drmModeAddFB。对应的文章链接为&#xff1a; libdrm全解…

Linux内存管理--smaps内存

一、内存的两个概念 了解smaps内存之前要先搞清楚Linux内存管理中的虚拟内存&#xff08;Virtual Memory&#xff09;和驻留内存&#xff08;Resident Memory&#xff09;两个概念。 1、虚拟内存 首先需要强调的是虚拟内存不同于物理内存&#xff0c;虽然两者都包含内存字眼…

一文解析超标量处理器

一、引言 处理器&#xff08;central process unit,简称CPU&#xff09;是手机的核心部件&#xff0c;其主要功能是取指令并译码执行。CPU主要包括控制器和运算器两个部件&#xff0c;它对在手机中的所有硬件资源&#xff08;如存储器&#xff0c;输入输出单元&#xff09;进行…

【Linux】页表讲解(一级、二级) 和 vm_area_struct ## 对于我前面博客内容的补充

对于前5篇进程相关知识的补充 前言正式开始页表讲解缺页中断页表是如何映射的页表的真正面目 vm_area_structmm_structvm_area_stuct 前言 前面我的博客中讲了很多关于进程的知识&#xff0c;但是有一些内容需要做一点补充&#xff0c;补充完后我的下一篇博客就开始讲线程相关…

Android高手进阶必备 (一)

20. ARM-Linux原理与移植 20.1ARM-Linux的配置、编译。 20.2ARM-Linux启动代码分析。 20.3ARM-Linux 地址映射的关系。 20.4 Busybox的配置、编译 。 &#xff08;三&#xff09;成为Android高手的十个建议 1、Q&#xff1a;如何成为高手? A&…

一文图解|内存页面迁移技术

1. 概述 页面迁移&#xff08;page migrate&#xff09;最早是为 NUMA 系统提供一种将进程页面迁移到指定内存节点的能力用来提升访问性能。后来在内核中广泛被使用&#xff0c;如内存规整、CMA、内存hotplug等。 页面迁移对上层应用业务来说是不可感知的&#xff0c;因为其迁…

一文读懂|zRAM 内存压缩机制

内存是计算机系统最重要的资源之一&#xff0c;当操作系统内存不足时&#xff0c;进程申请内存将会失败&#xff0c;从而导致其运行异常或者崩溃。 Linux 内核提供 swap 机制来解决内存不足的情况&#xff0c;其原理是&#xff1a; 当系统内存不足时&#xff0c;内核会将进程不…

一文汇总 Linux 内核调试的方法

内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机&#xff0c;很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解。 在调试一个bug之前&#xff0c;我们所要做的准备工作有&#xff1a; 有一个被确认的bug&#xff0c;包含这…

Linux内核有什么之内存管理子系统有什么第三回 —— 小内存分配(1)

接前一篇文章&#xff1a;Linux内核有什么之内存管理子系统有什么第二回 —— 单刀直入 本文内容参考&#xff1a; 内存分配不再神秘&#xff1a;深入剖析malloc函数实现原理与机制 系统调用与内存管理&#xff08;sbrk、brk、mmap、munmap&#xff09; 特此致谢&#xff01;…

如何下载Linux源码,看这篇就够了!

文章目录 前言一、linux官网二、查找发布版本三、下载方式 前言 在工作中&#xff0c;我们难免会遇到需要去找某个版本的linux源码的情况&#xff0c;今天这篇文章就手把手教大家如何找到自己想要的linux源码版本 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例…

linux 的uart驱动框架分析

文章目录 一、底层串行硬件驱动程序二、Console支持三、锁支持四、核心数据结构1、struct uart_driver2、struct uart_port3、struct uart_ops四、常用API总结五、uart驱动示例剖析1、原厂设计的uart驱动2、8250标准uart驱动六、总结🔺【linux内核系列文章】 👉对一些文章内…

深入理解Linux网络笔记(六):深度理解TCP连接建立过程

本文为《深入理解Linux网络》学习笔记&#xff0c;使用的Linux源码版本是3.10&#xff0c;网卡驱动默认采用的都是Intel的igb网卡驱动 Linux源码在线阅读&#xff1a;https://elixir.bootlin.com/linux/v3.10/source 5、深度理解TCP连接建立过程 1&#xff09;、深入理解liste…

2024年linux内核开发会是程序员新的风口吗?

前言 众所周知&#xff0c;linux操作系统一直靠着稳定&#xff0c;安全&#xff0c;开源等优势占据着80%以上的服务器市场。小至私人企业&#xff0c;大至世界百强&#xff0c;都离不开它的身影。以至于无论你擅长的是哪门语言&#xff0c;面试的时候都会或多或少的涉及linux的…

学习如何下载编译Linux Kernel

一、下载安装Linux Kernel源码 进入https://www.kernel.org/&#xff0c;选择需要的版本进行下载。可以通过http或者git下载&#xff0c;也可以下载压缩包通过ftp上传到linux进行解压。 这里选择http的方式下载&#xff08;wget一直time out。。。选择手动下载上传吧&#xff…

Ant

Ant的概念 可能有些读者并不连接什 么是Ant以及入可使用它&#xff0c;但只要使用通过Linux系统得读者&#xff0c;应该知道make这个命令。当编译Linux内核及一些软件的源程序时&#xff0c;经常要用这个命 令。Make命令其实就是一个项目管理工具&#xff0c;而Ant所实现功能与…

一文教你彻底理解什么是协程!

作为程序员&#xff0c;想必你多多少少听过协程这个词&#xff0c;这项技术近年来越来越多的出现在程序员的视野当中&#xff0c;尤其高性能高并发领域。当你的同学、同事提到协程时如果你的大脑一片空白&#xff0c;对其毫无概念。。。 那么这篇文章正是为你量身打造的。话不…

linux下i2c接口的电容触摸屏驱动开发

原文地址&#xff1a; http://hi.baidu.com/god_sperm/blog/item/2aaac228e8a1ece8e7cd400a.html 电容触摸屏 2011-01-14 15:36 1.Kconfig文件    增加宏定义 2.Makefile文件 增加编译处理 3.添加程序源码 Touch screen remote control design document 201…

操作系统经典书籍推荐

看了篇文章&#xff0c;是评述操作系统方面的经典书籍的&#xff0c;其观点我较为同意&#xff0c;特贴出来&#xff0c;其电子版的CSDN下载频道大多都有。 Abraham Silberschatz的两本书&#xff1a; 1&#xff0e; 实用操作系统概念&#xff08;影印版&#xff09; 2&#x…

Linux内存管理 | 六、物理内存分配——伙伴系统

我的圈子&#xff1a; 高级工程师聚集地 我是董哥&#xff0c;高级嵌入式软件开发工程师&#xff0c;从事嵌入式Linux驱动开发和系统开发&#xff0c;曾就职于世界500强企业&#xff01; 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; …

一文读懂|RDMA原理

什么是DMA DMA全称为Direct Memory Access&#xff0c;即直接内存访问。意思是外设对内存的读写过程可以不用CPU参与而直接进行。我们先来看一下没有DMA的时候&#xff1a; 无DMA控制器时I/O设备和内存间的数据路径 假设I/O设备为一个普通网卡&#xff0c;为了从内存拿到需要…

mmap内核源码分析,基于内核版本3.10(三)

之前写了&#xff08;一&#xff09;&#xff08;二&#xff09;其实就梳理到了get_unmapped_area的内容&#xff0c;而且有一点混乱&#xff0c;这里进行第三篇的讲解&#xff0c;讲解在do_mmap_pgoff中除了get_unmapped_area的内容&#xff0c;来了解mmap的具体实现。通过&am…

如何参与Linux内核开发

如何参与Linux内核开发 英文版&#xff1a; http://www.kernel.org/doc/Documentation/HOWTO英文版维护者&#xff1a; Greg Kroah-Hartman <gregkroah.com>翻译者&#xff1a; 李阳 Li Yang <leozh-kernel.org>维护者&#xff1a; 李阳 Li Yang <leozh-ker…

软件开发必读书籍

. C.《C Primer Plus》.《C程序设计语言》.《C和指针》.《C专家编程》.《C陷阱与缺陷》.《C/C高质量编程指南》. 编程思想.《深入理解计算机系统》.《link && loader》.《编译原理》(机械出版社).《深入浅出设计模式》.《代码大全》. C.《C Primer Plus》. 数据结构. 链…

Linux 页高速缓存内核版本3.2回写机制的变革

最近在看《深入理解LINUX内核》书中&#xff0c;介绍了如何把脏页写回磁盘&#xff0c;但是对照着内核版本linux-4.4.4&#xff0c;以及内核版本linux-3.10都没找到相应的接口。在查询资料的过程中&#xff0c;遇到的还都是旧内核版本的&#xff1a;pdflush以及background_writ…

[转]SYN Flood攻击、SYN Cookie防御和Linux/FreeBSD的内核参数修改

看到一篇防御SYN Flood攻击的文章&#xff0c;留存。引自 http://www.yayu.org/look.php?id154 黑客是个令人向往、有前途的职业。我欣赏好黑客&#xff0c;讨厌坏黑客。所谓坏黑客&#xff0c;就是导致对方有人要加班的那种家伙。 SYN Flood攻击是一种典型的拒绝服务型&#…

编译,安装,运行与调试linux内核(真机环境,基于crash调试)

一、内核编译与安装 1、下载内核代码&#xff08;通过官网或者github&#xff09; 2、安装相关依赖 3、设置内核参数 如果需要调试&#xff0c;就需要开启CONFIG_DEBUG_INFOy (2.6以前的内核需要手动在顶层Makefile中添加-g参数) cd linux-x.x.x# 复制本机原本的.config文件 …

初秋西安,终南山Linux内核问道之旅

初秋西安&#xff0c;最美终南山&#xff0c;一众Linux大咖齐聚西安邮电大学&#xff0c;问道Linux&#xff0c;共话内核技术的产学研用。 Linux内核一路走来&#xff0c;从91年发布第一个版本到现在26年来&#xff0c;内核的版本可能达到近千个&#xff0c;迭代速度非常快。面…

linux内核启动过程——zImage自解压

linux内核启动过程——基于S3C2410(1)zImage自解压 linux内核启动过程——基于S3C2410 &#xff08;1&#xff09;zImage自解压 本文以流行的Samsung公司的S3C2410&#xff0c;mini2440平台和linux-2.6.29为例&#xff0c;介绍如何在ZIX嵌入式开发环境下探索linux内核启动过程…

进程相关知识

进程 &#xff08;关于每CPU变量的详细解释可以参照《Linux设备驱动第三版》8.4节&#xff09; 每个线程代表一个进程的执行流。 这里有个例子&#xff1a;就是象棋。其中一个线程是用来对棋盘进行控制&#xff0c;另一个线程…

Linux内核中内存管理相关配置项的详细解析13

接前一篇文章&#xff1a;Linux内核中内存管理相关配置项的详细解析12 二十八、Enable VM event counters for /proc/vmstat 对应配置变量为&#xff1a;CONFIG_VM_EVENT_COUNTERS。 此项只有选中和不选中两种状态&#xff0c;默认为选中。 内核源码详细解释为&#xff1a; …

操原上机(一) 在Linux中增加新的系统调用

要求 在LINUX中增加新的系统调用 1、编写新的系统调用函数&#xff08;指函数实现部分&#xff09; 2、注册新的系统调用&#xff08;声明系统调用函数和编号&#xff09; 3、编译新LINUX内核 4、编译和安装模块 5、启动新的LINUX内核 6、编写应用程序测试新的系统调用 建议…

Linux内核上游提交完整流程及示例中的错误及解决

接前一篇文章&#xff1a;Linux内核上游提交完整流程及示例 上篇文章中提到&#xff0c;在步骤“九、发送邮件”中&#xff0c;在 Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): yes 这一步&#xff0c;根据提示输入“y”或“a”后&#xff0c;在笔者的电脑上实际上并…

Linux内核代码分析集合(持续更新中)

这里将自己各专栏Linux内核代码分析系列内容放一起&#xff0c;以方便快速找到对应内容&#xff0c;持续更新中。 &#xff08;1&#xff09;BLOCK层代码分析 BLOCK层代码分析&#xff08;0&#xff09;存储IO框架介绍_linux解码者的博客-CSDN博客 &#xff08;2&#xff09…

Linux内核超级装备eBPF技术详细研究

定义一&#xff08;http://ebpf.io的定义&#xff09; eBPF (which is no longer an acronym for anything) is a revolutionary technology with origins in the Linux kernel that can run sandboxed programs in a privileged context such as the operating system kernel.…

SNIFF原理解析

SNIFF原理解析本文出自:http://www.xfocus.org 作者: xundi (2001-10-01 15:00:00) 2001-04-01&#xff0e;秋天的树&#xff0e; 一 前言   SNIFF真是一个古老的话题&#xff0c;关于在网络上采用SNIFF来获取敏感信息已经不是什么 新鲜事&#xff0c;也不乏很多成功…

【V4L2】 v4l2框架分析之v4l2_fh

一、v4l2_fh简介 &#x1f53a;相关源码文件&#xff1a; /drivers/media/v4l2-fh.c /drivers/media/v4l2-fh.h 在V4L2中&#xff0c;struct v4l2_fh结构用于保存V4L2框架中使用的文件句柄&#xff08;File Handle&#xff09;的数据&#xff0c;即每个打开的视频设备都会对…

交叉编译Raspberry Pi 内核记

Raspberry Pi 内核编译记 前言 手中的红色树莓派已经买来许久&#xff0c;但还没怎么玩。最近想学习内核的知识&#xff0c;所以开始拿出手中的Pi。从内核编译开始&#xff0c;于是有了这篇文章。内核的编译主要参考这篇博客古作坊和官方教程。下面是根据回忆记录&#xff0c;有…

Linux内核中内存管理相关配置项的详细解析8

接前一篇文章&#xff1a;Linux内核中内存管理相关配置项的详细解析7 十一、Enable KSM for page merging 对应配置变量为&#xff1a;CONFIG_KSM。 此项只有选中和不选中两种状态&#xff0c;默认为选中。 内核源码详细解释为&#xff1a; Enable Kernel Samepage Merging:…

Linux 可重入、异步信号安全和线程安全

可重入函数 当一个被捕获的信号被一个进程处理时&#xff0c;进程执行的普通的指令序列会被一个信号处理器暂时地中断。它首先执行该信号处理程序中的指令。如果从信号处理程序返回&#xff08;例如没有调用exit或longjmp&#xff09;&#xff0c;则继续执行在捕获到信号时进程…

一文浅析Nginx线程池!

Nginx通过使用多路复用IO&#xff08;如Linux的epoll、FreeBSD的kqueue等&#xff09;技术很好的解决了c10k问题&#xff0c;但前提是Nginx的请求不能有阻塞操作&#xff0c;否则将会导致整个Nginx进程停止服务。 但很多时候阻塞操作是不可避免的&#xff0c;例如客户端请求静…

Linux操作系统ARM体系结构处理器机制原理与实现

ARM 的概念ARM(Advanced RISC Machine)&#xff0c;既可以认为是一个公司的名字&#xff0c;也可以认为是对一类微处理器的通称&#xff0c;还可以认为是一种技术的名字。ARM 公司并不生产芯片也不销售芯片&#xff0c;它只出售芯片技术授权。其合作公司针对不同需求搭配各类硬…

linux挂载 安装 fstab 详解

纯粹针对刚刚解封开包的新新手&#xff0c;老鸟们请自觉绕行&#xff0c;否则浪费你的时间你非要逼我做谋杀犯可不光我的事你还没地方说理去。如果你正好是个崭新的新手&#xff0c;就耐心的花点时间看看吧&#xff0c;至少大概看看&#xff0c;不要在一个陌生又黑暗的到处碰壁…

深度解析Linux kernel同步机制(上篇)

在现代操作系统里&#xff0c;同一时间可能有多个内核执行流在执行&#xff0c;因此内核其实像多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问&#xff0c;尤其是在多处理器系统上&#xff0c;更需要一些同步机制来同步不同处理器上的执行单元对共享…

【linux kernel】linux内核设备驱动的注册机制

文章目录 1、简介2、driver_register分析&#x1f449;&#xff08;2-1&#xff09;driver_find分析&#x1f449;&#xff08;2-2&#xff09;bus_add_driver分析 3、总结 &#x1f53a;【linux内核系列文章】 &#x1f449;对一些文章内容进行了勘误&#xff0c;本系列文章长…

罗列一下看过而且喜欢的书

活这么大了&#xff0c;看了不少书&#xff0c;喜欢的书有不少&#xff0c;想想该列一下了&#xff0c;不断会补充吧&#xff0c;给自己一些成就感&#xff0c;也便于发现不足&#xff0c;呵呵。 经典文学&#xff1a;李汝珍的《镜花缘》、曹雪芹的《红楼梦》、孔子《大学》《中…

零基础学Linux内核:1、Linux源码组织架构

文章目录 前言一、Linux内核的特征二、Linux操作系统结构1.Linux在系统中的位置2.Linux内核的主要子系统3、Linux系统主要数据结构 三、linux内核源码组织1、下载Linux源码2、Linux版本号3、linux源码架构目录讲解 前言 这里将是我们从零开始学习Linux的第一节&#xff0c;这节…

深入解析Linux内核网络-拥塞控制系列(二)

上篇文章&#xff1a;深入解析Linux内核网络-拥塞控制系列(一&#xff09;对Linux内核网络中网络拥塞框架的框架进行了分析。本次针对具体的Cubic拥塞控制算法进行简单分析。在进行代码的梳理前&#xff0c;同样还是先来看一下相关概念、原理&#xff1a; 在上一篇文章中也提到…

Linux内核有什么之内存管理子系统有什么——基础篇之struct vm_area(1)

本文内容参考&#xff1a; linux进程虚拟地址空间 《趣谈Linux操作系统 核心原理篇&#xff1a;第四部分 内存管理—— 刘超》 4.6 深入理解 Linux 虚拟内存管理 特此致谢&#xff01; 在Linux内核内存管理核心数据结构为struct mm_struct&#xff0c;该结构的定义在includ…

嵌入式软件研发工程师 学习流程

很多新手学习嵌入式系统&#xff0c;不清楚那么多方向舵知识和参考书&#xff0c;该从哪里开始学习。入手了&#xff0c;却又在该先学习什么后学习什么上失去方向。这里有你想要的答案&#xff0c;帮你指点迷经。 这是我在ITjob培训网上找到的课程大纲&#xff0c;觉得作为嵌入…

S3C2410 MMU(存储器管理单元)详述

MMU,全称Memory Manage Unit, 中文名——存储器管理单元。   许多年以前&#xff0c;当人们还在使用DOS或是更古老的操作系统的时候&#xff0c;计算机的内存还非常小&#xff0c;一般都是以K为单位进行计算&#xff0c;相应的&#xff0c;当时的程序规模也不大&#xff0c;所…

Linux内核中内存管理相关配置项的详细解析9

接前一篇文章&#xff1a;Linux内核中内存管理相关配置项的详细解析8 十三、Enable recovery from hardware memory errors 对应配置变量为&#xff1a;CONFIG_MEMORY_FAILURE。 此项只有选中和不选中两种状态&#xff0c;默认为选中。 内核源码详细解释为&#xff1a; Enab…

Linux内核中断顶半部和底半部的理解

工科生一枚&#xff0c;热衷于底层技术开发&#xff0c;有强烈的好奇心&#xff0c;感兴趣内容包括单片机&#xff0c;嵌入式Linux&#xff0c;Uboot等&#xff0c;欢迎学习交流&#xff01; 爱好跑步&#xff0c;打篮球&#xff0c;睡觉。 欢迎加我QQ1500836631&#xff08;备…

WindowsXP下Ubuntu 12.04硬盘安装方法

分区配置&#xff1a; 在WindowsXP中&#xff0c;将最后一个分区删除&#xff0c;作为自由空间&#xff08;free space&#xff09;&#xff0c;在linux安装过程中&#xff0c;选择自定义分区&#xff0c;分区建议&#xff1a; / 根分区&#xff0c;除了后面的指定…

谈谈进程上下文、中断上下文及原子上下文的一些概念

文章目录基本概念上下文原子为什么会有上下文这种概念进程上下文中断上下文进程上下文 VS 中断上下文原子上下文基本概念 上下文 上下文是从英文context翻译过来&#xff0c;指的是一种环境。相对于进程而言&#xff0c;就是进程执行时的环境&#xff1b;具体来说就是各个变量…

linux中的 IO端口映射和IO内存映射

下面是今天看到两篇关于linux中的 IO端口映射和IO内存映射的文章,时间关系,没来得及深入理解,有空好好看看 CPU地址空间 CPU地址空间 &#xff08;一&#xff09;地址的概念 1&#xff09;物理地址&#xff1a;CPU地址总线传来的地址&#xff0c;由硬件电路控制其具体含义。物…

解析从Linux零拷贝深入了解Linux-I/O(下)

接上文解析从Linux零拷贝深入了解Linux-I/O&#xff08;上&#xff09; 大文件传输场景 零拷贝还是最优选吗 在大文件传输的场景下&#xff0c;零拷贝技术并不是最优选择&#xff1b;因为在零拷贝的任何一种实现中&#xff0c;都会有「DMA 将数据从磁盘拷贝到内核缓存区——P…

长篇连载--arm linux演艺

滚滚长江东四水&#xff0c;浪花淘净英雄。 大家好&#xff0c;许多人和我一样&#xff0c;正在苦读linux源代码&#xff0c;希望有照一日&#xff0c;宝典在手&#xff0c;天下我有。小弟不才&#xff0c;也读了两年&#xff0c;写的几首歪诗。从本级开始&#xff0c;把我所理…

RCU初学参考资料

参考资料&#xff1a; 1.预备知识&#xff1a;QSBR算法 b-tree-QSBR简介 QSBR是通过quiescent state来检测grace period。如果线程T在某时刻不再持有共享对象的引用&#xff0c;那么该线程T在此时就处于quiescent state。如果一个时间区间内&#xff0c;所有线程都曾处于quie…

Java学习之路:不走弯路,就是捷径 .

1&#xff0e;如何学习程序设计&#xff1f; JAVA是一种平台&#xff0c;也是一种程序设计语言&#xff0c;如何学好程序设计不仅仅适用于JAVA&#xff0c;对C等其他程序设计语言也一样管用。有编程高手认为&#xff0c;JAVA也好C也好没什么分别&#xff0c;拿来就用。为什么…

Linux内核-I/O多路复用[select]和I/O事件就绪通知源码分析

文章目录 概要一、了解 Linux1.1、Linux下OSI五层模型1.2、Linux的进程状态转换模型1.3、Linux下的中断之时钟中断 二、select源码解析2.1、select使用案例2.2、select源码2.2.1、相关结构体2.2.2、core_sys_select2.2.3、do_select 三、I/O事件就绪通知源码解析3.1、相关结构体…

与陶宝架构师林昊的交流

林昊&#xff0c;网名BlueDavy&#xff0c;China OSGi User Group Director&#xff0c;淘宝网平台架构部架构师&#xff0c;个人的研究方向主要为 Java模块化、动态化系统的构建以及高性能的大型分布式Java系统的构建。曾编写《OSGi实战》和《OSGi进阶》两篇Opendoc&#xff0…

Linux下tty/pty/pts/ptmx详解

基本概念&#xff1a;1> tty(终端设备的统称):tty一词源于Teletypes&#xff0c;或者teletypewriters&#xff0c;原来指的是电传打字机&#xff0c;是通过串行线用打印机键盘通过阅读和发送信息的东西&#xff0c;后来这东西被键盘与显示器取代&#xff0c;所以现在叫终端比…

《RHL9入门与提高》读书笔记(1)

第1章 Linux概况 1.1 从UNIX谈起 1.1.1 Linux遵循POSIX标准 Linux为什么可以认为是一种UNIX OS&#xff1f;因为Linux完全符合POSIX标准。 1.1.2 开放源代码 1.2 Linux发展简史 1.2.1 Linux的起源 1.2.2 Linux的完善 1.2.3 Linux发行版 1.2.4 RPM出现 最初的RPM是指Red…

嵌入式软件实现定时器的两种方式

简介 在一般的嵌入式产品设计中&#xff0c;介于成本、功耗等&#xff0c;所选型的MCU基本都是资源受限的&#xff0c;而里面的定时器的数量更是有限。在我们软件设计中往往有多种定时需求&#xff0c;例如脉冲输出、按键检测、LCD切屏延时等等 &#xff0c;我们不可能让每一个…

写一个块设备驱动 (7)

第7章 --------------------------------------------------- | 写一个块设备驱动 | --------------------------------------------------- | 作者&#xff1a;赵磊 | | email: zhaoleiddhotmail.co…

Linux内核的pinctrl子系统驱动框架详解

目录 1 引入 2 设备树中的pinctrl 2.1 iomuxc节点 2.2 其他节点怎么使用pinctrl控制器 3 pin controller代码流程以及相关数据结构 4 device client代码流程以及相关数据结构 5 阅读内核源码时的相关疑问 6 费曼学习法&#xff1a;于是我自己录制了一个讲解pinctrl子系…

Linux初学者Patch使用指南

Linux初学者Patch使用指南2008-05-10 16:07简介 本文的目的是向Linux新手介绍一种无价的资源&#xff0c;Larry Wall的patch程序。patch是用来查找文件之间差异的GNU diff命令的一个接口&#xff1b;diff有很多选项&#xff0c;但是该命令最常用的用途是用来生成一个文件&#…

linux的dirty page回写磁盘过程中是否允许并发写入更新page?

概述 众所周知Linux内核write系统调用采用pagecache机制加速写入过程,避免write系统调用长时间block应用进程,用户态进程执行write调用的时候,内核只是将用户态buffer copy到内核的pagecache当中,write系统调用就返回了,完全不需要等待数据完全写入存储设备,因为存储设备…

一文简介Linux固件子系统的实现机制

一、Linux固件子系统概述 固件是硬件设备自身执行的一段程序。固件一般存放在设备flash内。而出于成本和便利性的考虑&#xff0c;通常是先将硬件设备的运行程序打包为一个特定格式的固件文件&#xff0c;存储到终端系统内&#xff0c;通过终端系统给硬件设备进行升级。Linux内…

DRM全解析 —— CREATE_DUMB(2)

接前一篇文章&#xff1a;DRM全解析 —— CREATE_DUMB&#xff08;1&#xff09; 本文参考以下博文&#xff1a; DRM驱动&#xff08;三&#xff09;之CREATE_DUMB 特此致谢&#xff01; 上一回围绕libdrm与DRM在Linux内核中的接口&#xff1a; DRM_IOCTL_DEF(DRM_IOCTL_MOD…

嵌入式软件开发要注意这七种错误!

软件行业的工作经验和你从事这个行业的工作年限直接相关。 这句话在某种程度上是对的&#xff0c;但是你从事这项工作的年限&#xff0c;并不一定代表你获得了相同年限的工作经验&#xff0c;正如一句话所说&#xff1a;“我们以为我们是工作了十年&#xff0c;其实却只有一年…

【linux kernel】linux的platform设备驱动框架分析

文章目录 一、简介二、platform总线三、platform设备和驱动的匹配过程四、platrom驱动和platform设备五、platform驱动设计六、代码示例 &#x1f53a;【linux内核系列文章】 &#x1f449;对一些文章内容进行了勘误&#xff0c;本系列文章长期不定时更新&#xff0c;希望能分享…

图文并茂的讲清楚Linux零拷贝技术

今天我们来聊一聊Linux零拷贝技术&#xff0c;今天我们以一个比较有代表性的技术sendfile系统调用为切入点&#xff0c;详细介绍一下零拷贝技术的原理。 1.零拷贝技术简介 Linux零拷贝技术是一种优化数据传输的技术&#xff0c;它可以减少数据在内核态和用户态之间的拷贝次数&…

深入理解Linux网络笔记(五):深度理解本机网络IO

本文为《深入理解Linux网络》学习笔记&#xff0c;使用的Linux源码版本是3.10&#xff0c;网卡驱动默认采用的都是Intel的igb网卡驱动 Linux源码在线阅读&#xff1a;https://elixir.bootlin.com/linux/v3.10/source 4、深度理解本机网络IO 1&#xff09;、跨机网络通信过程 …

DRM全解析 —— ADD_FB(6)

接前一篇文章&#xff1a;DRM全解析 —— ADD_FB&#xff08;5&#xff09; 本文参考以下博文&#xff1a; DRM驱动&#xff08;四&#xff09;之ADD_FB 特此致谢&#xff01; 上回说到Intel i915、AMD Raedon和AMDGP三类显卡驱动中均调用了drm_framebuffer_init函数。本回就…

Linux操作系统进程的状态和转换(五态模型)

1、进程的状态和装换1.1进程的三态模型按进程在执行过程中的不同情况至少要定义三种状态&#xff1a;运行&#xff08;running&#xff09;态&#xff1a;进程占有处理器正在运行的状态。进程已获得CPU&#xff0c;其程序正在执行。在单处理机系统中&#xff0c;只有一个进程处…

GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析

GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析 一、GCC简介&#xff1a; The GNU Compiler Collection&#xff0c;通常简称GCC&#xff0c;是一套由GNU开发的编译器集&#xff0c;为什么是编辑器集而不是编译器呢&#xff1f;那是因为它不仅支持C语言编译&#xff0c;还支持C, Ada, Ob…

Linux内核中内存管理相关配置项的详细解析1

本文基于kernel 6.1.0&#xff0c;针对于“Linux/x86 6.1.0 Kernel Configuration”中的“Memory Management options”项下的各个子配置项&#xff08;如下图所示&#xff09;进行详细解析。 一、Support for paging of anonymous memory (swap) 这个选项以前位于“General S…

Linux内核有什么之内存管理子系统有什么第七回 —— 小内存分配(5)

接前一篇文章&#xff1a;Linux内核有什么之内存管理子系统有什么第六回 —— 小内存分配&#xff08;4&#xff09; 本文内容参考&#xff1a; linux进程虚拟地址空间 《趣谈Linux操作系统 核心原理篇&#xff1a;第四部分 内存管理—— 刘超》 4.6 深入理解 Linux 虚拟内存…