- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 Linux共享内存实现的四种方式
共享内存经常被提起,其实现原理在我脑海中也就记得一些零星的映像,将堆和栈中间的共享内存映射区通过mmap映射到不同进程的地址空间中去,每个进程有其对应的vm_area_struct,而address_space只有一个........共享内存分system V、POSIX、mmap,memfd_creates四种不同的实现机制首先System V和POSIX是啥?System V是一种具体的操作系统POSIX则是一种操作系统接口标准,是可移植的。
2023-07-12 17:25:06
2023
原创 Linux内核启动流程
在 linux内核启动前, boot loader会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 bootloader 配置了 initrd 的情况下,内核启动被分成了两个阶段,第一阶段先执行 initrd 文件系统中的"某个文件",完成加载驱动模块等任务,第二阶段才会执行真正的根文件系统中的 /sbin/init 进程。98D板子,烧固件时用run upt,其实upt是一环境变量。u-boot启动内核的过程。
2023-05-04 16:23:05
5219
原创 学iptables衍生出的疑问
学习Iptable和netfilter中有很多疑问,简单分析了netfilter的原理,以及如何自己注册自定义表和钩子函数
2023-04-19 17:29:10
447
1
原创 浅谈ioremap,vmalloc,mmap三者之间的区别
在应用层使用,在用户虚拟地址空间(0-3G)映射区申请一块可用的虚拟地址(vma),然后将这块虚拟空间的地址范围传入到driver,在driver中实现映射:vma<–>物理地址。在驱动中使用,用于建立内核中虚拟地址空间vmalloc与各其他外设寄存器地址之间的映射,期间并不分配新的物理内存,直接映射已知物理地址(寄存器地址)也在驱动中使用,也是在内核虚拟地址空间vmalloc区申请一段连续的虚拟空间,但物理地址不连续,广泛的用途就是给模块分配内存。
2023-04-14 10:05:03
881
原创 Linux I/O内存访问ioremap(内核如何通过内存地址访问个IIC,SPII控制器的寄存器或外部内存总线上的设备?)
ioremap()与vmalloc()类似,也要建立新的页表,不进行vmalloc()中所执行的内存分配行为。或者外部内存总线上的设备)之前,需首先使用ioremap()函数将设备所处的物理地址映射到虚拟地址上。要使用某个外设前,要申请其所对应的IO内存,表明驱动要访问这块区域。映射的虚拟地址位于vmalloc 映射区域,然后使用readb,writeb读写。1、在内核中访问IO内存(通常是。
2023-04-12 13:35:01
418
原创 RCU读写锁
更新共享数据的操作也不会阻塞读操作,它会先将新版本的数据复制到一个新的位置,再通过一种同步机制保证所有读取旧版本数据的操作完成后,才更新指针以指向新版本的数据。最后,在等待一定时间的延迟删除期之后,才将旧版本的数据删除,以避免删除的数据仍被读取。RCU的核心思想是,不直接删除被共享的数据,而是在新的版本中复制并更新数据,直到所有正在访问旧版本的读操作完成后才删除旧版本。需要注意的是,RCU只适用于读多写少的场景,对于写多的场景,使用RCU可能会导致延迟过高。
2023-03-28 13:52:33
280
原创 Ubuntu22.04 C编程环境搭建
最近想在linux学习C语言编程,捣鼓了几天,还有很多坑没踩完,在这主要记录下安装好Ubuntu后需要做了哪些配置。ubuntu镜像sudo apt-get install build-essentialsudo apt-get install gitgit clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vimvim ~/.vimrc配置.vimrc,自己刚入门c,里面很多函数看不懂更记不住,
2022-04-22 18:48:27
2393
Java写的PCSC+ATR解析工具
2019-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人