![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux_内核开发
文章平均质量分 88
Linux内核开发相关的知识
17岁boy想当攻城狮
在时间的大钟上,只有两个字「现在」
展开
-
linux syscall和int 80的区别
syscall和int 80是中断指令,Linux通过对这两个指令的封装为开发者们提供的一种用户态切换至内核态的方法,因为在处理器中用户态是没有权限向更高的权限空间切换的,以x86为例,它只允许,不允许低权限向高权限切换。但是处理器保留了一个机制,就是当产生中断时(无论是任何中断)都会让处理器切换权限并跳转至中断处理函数里,而中断处理函数又由内核注册所以就完成了用户态到内核态的切换。本文以X86架构为例。原创 2024-07-24 13:41:45 · 541 阅读 · 1 评论 -
Linux驱动开发中设备节点、虚拟节点、逻辑节点之间的区别与关系
每个节点都是对某一物理设备或功能抽象或具体的描述原创 2024-07-13 14:40:41 · 408 阅读 · 1 评论 -
详解内核对象
当我们程序被加载内存时会被自动创建一个进程对象用于描述该进程信息进程对象:进程对象有一个进程I D、一个基本优先级和一个退出代码!文件对象是当我们程序使用fopen等代码打开文件时操作系统会自动为要打开的文件创建一个文件对象用于与该文件产生映射关系,也就是我们所说的用户态到内核态之间的切换!而文件对象则拥有一个字节位移、一个共享模式和一个打开模式。内核对象就是在内存中原创 2017-11-14 21:13:11 · 676 阅读 · 0 评论 -
详解SWAP分区
这里来介绍一下Linux下的一个内存管理机制:SWAP分区首先来介绍一下什么是SWAP分区:SWAP分区是指,当内存中没有可用内存时,操作系统会把一些不常用的内存拿出来,放到可用内存池当中,除此之外,操作系统还会把一些在内存中,进程不常用内存拿出来放到内存池当中,且把这些数据存放到磁盘的SWAP分区中,当下次要用时则将内存拿回来,并从SWAP从读取数据存放进去,然后返回进程!但是缺点是在SWAP分...原创 2018-05-09 18:16:08 · 6268 阅读 · 2 评论 -
Linux内核开发_1_编译LInux内核
1. 准备工作1.1 学习环境本系列教程使用的环境如下:操作系统版本:Linux ubuntu 18.04Linux内核版本:cat /proc/versionLinux version 4.15.0-20-generic (buildd@lgw01-amd64-039)\ (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018...原创 2021-07-08 13:37:13 · 8343 阅读 · 12 评论 -
Linux内核开发_3_busybox
Busybox简介busybox是一个开源项目,集合了Linux的常用命令,且体积非常小,一般被用于嵌入式Linux上。busybox在编写初期的思想就是简洁,小巧,强悍,并且设计时从系统资源考虑,节省内存,动态编译busybox工具包总大小才几百kb,如果是静态编译则才1MB左右,非常适合用于嵌入式开发,与发行版不同,发行版使用的不是busybox,一些流行发行版一般使用的都是GNU fileutils、shellutils,这些工具链里包含了对文件,还有一些shell支持的命令,就是我们常用的l原创 2020-05-15 14:15:15 · 761 阅读 · 0 评论 -
Linux内核开发_2_Initramf
目录什么是Initramf?1.1Initramf起源1.1.1tmpfs1.1.2Initramf诞生原因1.2 qemu命令重新说明什么是Initramf?1.1Initramf起源1.1.1tmpfs在最初,Linus(Linux内核的作者)早期想要编写一个能够与chech(CPU缓存)的文件系统,Linus在rasmfs(ram(与内存交互的文件系统)上的chech(缓存功能)上做了封装,使其能够对主板上的L1和L2等不同级别的缓存进行交互,...原创 2020-05-13 18:16:54 · 535 阅读 · 0 评论 -
Linux内核开发_将Linux内核打包成img文件
接着之前两个文章我们已经编译了Linux内核和制作了一个文件系统这一步我们将它们打包成一个img软盘文件1.使用DD命令创建一个镜像的img文件sudo dd if=/dev/zero of=my_linux.img bs=1M count=1282.使用fdisk命令给镜像文件分区sudo fdisk my_linux.img2.1输入n命令创建分区2.2输入p创建主分区2.3分区号设置为1,代表我们的主引导分区2.4第一个扇区大小输入默认值,或原创 2020-11-28 15:59:54 · 4679 阅读 · 0 评论 -
Linux驱动开发_设备文件系统详解
何为设备管理器?设备管理器就是负责管理这台电脑上的外设,当我们通过电脑提供的USB口插入一个键盘、鼠标时设备管理器会与其通讯来确认你插入的到底是一个什么样的设备,然后在创建对应的设备驱动。以上的前提下是你的设备是流行设备且被操作系统的设备管理器支持的情况下,倘若我们有一个未知的设备,或者是我自己开发的硬件产品,如我们自己写的键盘,我们不使用通用键盘通讯协议,我们非要自己创建一套我们键盘自己的协议,包括内部架构、PCB都是我们自己设计的,一个全新的键盘,虽然也是键盘但是协议,与硬件架构不同于ISO标准原创 2021-05-12 11:06:05 · 3185 阅读 · 12 评论 -
Linux内核学习之路_1_编译Linux内核
1.准备工作学习环境建议配置选项环境下载Linux源码学习环境本系列教程使用的环境如下:操作系统版本:Linux ubuntu 18.04Linux内核版本:cat /proc/versionLinux version 4.15.0-20-generic (buildd@lgw01-amd64-039)\ (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018学习的原创 2021-06-20 01:37:39 · 400 阅读 · 0 评论 -
Linux内核开发_内核模块与驱动模块
内核模块是什么?Linux下的内核模块类似于Windows下的DLL动态链接库技术,和我们平常所使用的一些动态链接的SDK库一样,只是调用者是内核而已,不是用户态的程序。内核模块拥有的的权限是和用户态一样吗?内核模块是活跃在Linux内核中的,它的权限更多,与内核空间下的进程一样的权限,比用户态的权限要高,意味着它拥有对物理设备以及内存中其它空间的访问权限,一般嵌入式开发时内核模块用到的比较多,用于开发LED模块等等。内核是如何维护模块的?内核在加载模块时会将模块的符号信息写入一张符号表原创 2020-08-06 10:06:00 · 1126 阅读 · 0 评论