- 博客(16)
- 收藏
- 关注
原创 open 函数到底做了什么
当我们使用 open 函数,打开设备文件时,会根据该设备的文件的设备号找到相应的设备结构体,从而得到了操作该设备的方法。也就是说如果我们要添加一个新设备的话,我们需要提供一个设备号,一个设备结构体以及操作该设备的方法(file_operations 结构体)。
2024-05-06 21:24:53
1098
原创 搭建linux2.6内核调试环境时,cpu自动跳转到asm volatile(“sti; hlt“ : : :“memory“)问题
调试的时候遇到了个错误,在GDB中的反应是,输入下面这句话后,会直接跳转到一句内敛会变得代码处,查看所属函数,为idle_task,该函数是cpu没有线程可以调度时自动触发的,但是我都还没打段点,他就直接跳转过来一直死循环了,查阅得知,cpu初始化过程中出现错误时也会跳转到此。2.在创建gdb的默认启动命令的地方,文章写入的 > /root/.gdbinit有待商榷,建议去看一下该文件的作用,再去自己撰写,可以通过cat来查看文件内容。错误已经很明显了,ttyS0端口连不上。
2024-03-23 19:21:19
354
原创 RCU(Read-Copy Update)原理
RCU(Read-Copy Update),顾名思义就是读-拷贝修改,是数据同步的一种方式,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据。
2024-03-20 16:12:00
1471
1
原创 linux中断模块
操作系统是中断驱动的,首先,操作系统是个死循环。其实,这个死循环本身做不了什么大事,仅仅是保证操作系统能够周而复始地运行下去,而运行的目的是为了等候某些事情发生。
2024-03-08 14:13:09
1836
1
原创 文件系统中的inode与文件描述符
inode用于描述文件存储相关信息,文件结构用于描述“文件打开”后,文件读写偏移量等信息。文件与 inode一一对应,一个文件仅有一个 inode,一个 inode 仅对应一个文件。一个文件可以被多次打开,因此一个inode 可以有多个文件结构,多个文件结构可以对应同一个 inode。
2024-03-02 16:47:20
1424
原创 MBR(Main Boot Record)及保护模式
在实模式里段中存储的是段基地址,而保护模式中的段基地址已经在段描述符中被描述,所以保护模式中的段中存放的是选择子,可以理解为是一个索引值,用此索引值在段描述符表中索引相应的段描述符,这样,便在段描述符中得到了内存段的起始地址和段界限值等相关信息。是告诉编译器以新的数字作为后面数据的地址的起始值,它本身没改变数据本身在文件中的地址(相对于文件开头的偏移),vstart 只是按照开发人员的意愿安排新的起始地址,不再以文件开头。(2)用户程序所引用的地址都是指向真实的物理地址,也就是说逻辑地址等于物理地址;
2023-12-29 14:00:02
882
1
原创 BIOS启动流程
按 DOS 1.0 要求的最小内存 32KB 来说,MBR 希望给其他程序尽可能多的预留空间,这样也是为了保护自己,免得过早被覆盖。MBR 本身只有 512 字节,但还要为其所用的栈分配点空间,所以其实际所用的内存空间要大于 512 字节,估计 1KB 内存够用了。如果此扇区末尾的两个字节分别是魔数 0x55 和 0xaa,BIOS 便认为此扇区中确实存在可执行的程序(即主引导记录MBR),便加载到物理地址 0x7c00,随后跳转到此地址,继续执行。在开机的一瞬间,即接电的一瞬间,CPU。
2023-12-27 13:38:24
506
1
原创 在用NEON处理输入数据时,剩余数据不足以填满一个NEON寄存器时的处理
在为Neon编码时,一个常见的情况是处理输入数据,该数据不是矢量寄存器中通道数的精确倍数
2023-12-07 16:25:14
465
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人